Задача: Хочу разобрать как поднимается почтовый сервис на базе iRedMail сперва на Ubuntu 18.04 Server

Цель которую я преследую данной заметкой и последующими по этой теме — это отойти от использования публичных почтовых серверов (Yandex, Mail, Yahoo) в пользу своего собственного, где я разберу как он устанавливает, настроена безопасность и шифрование, антивирусная защита, резервное копирование и самое главное почта будут хранится исключительно на моих мощностях и никто к ней не сможет получить доступ. Для меня это приоритетная задача. В роли почтового севера для начала буду использовать iRedMail. iRedMail — это скрипт оболочки, который автоматически устанавливает и настраивает все необходимые компоненты почтового сервера на вашем сервере Linux, что само-собой исключает ручную установку и настройку. Но как бы не так, все равно расширенный функционал получается если править конфигурационные файлы. Я согласен на это.

В сборку входят такие пакеты как Postfix+Dovecot+LDAP, MySQL или PostreSQL back-end на выбор)+SpamAssassin+ClamAV+AmaViS+RoundCube .

Более подробно о компонентах и их функциях:

  • Postfix - агент передачи почты (MTA — Mail transfer agent) предоставляет SMTP сервис;
  • Dovecot (MDA/LDA) - свободный и очень безопасный POP3/POP3S и IMAP/IMAPS сервер, служит для получения почты. Использует Sieve для фильтрации почтовых сообщений;
  • MySQL - служит для хранения данных приложений и пользовательских учетных записей, управляется при помощи консоли или phpmyadmin;
  • OpenLDAP - служит для хранения пользовательских учетных записей про протоколу OpenLDAP;
  • Policyd - служба политик сервера Postfix; Policyd v2 — кодовое имя «cluebringer»;
  • Amavisd - используется в качестве интерфейса между Postfix и SpamAssassin.;
  • SpamAssassin - это одна из самых известных программ по борьбе со спамом,
  • ClamAV - антивирус, который в свою очередь применяются для обнаружения вирусов в почтовых сообщениях;
  • Nginx, Apache - web server;
  • Roundcube - пользовательский веб-интерфейс для почтовой системы;
  • Awstats - анализатор лог-файлов для Nginx, Apache и Postfix;
  • iRedAdmin - веб панель администратора;
  • Fail2ban - программа для сканирования лог-файлов, находящихся (как правило) в каталоге /var/log/maillog и блокирующая те ip-адреса, с которых усматриваются признаки попыток подбора паролей к разнообразным службам;

Я реализую вот такую схему в своей тестовой лаборатории.

WAN-IP -> по заметке на обычный компьютер установлен Proxmox, а внутри pfsense, srv-mail (ubuntu 18.04 Server)

Proxmox

  • enp2s0: 78.108.199.93/29
  • vmbr1: 10.0.0.1/30
  • vmbr2: 10.90.90.1/24 (lan network)

srv-gw (pfsense 2.5.5)

  • vmbr1 - 10.0.0.2/30
  • vmbr2 - 10.90.90.2/24

srv-mail (Ubuntu 18.04 Server)

  • vmbr2: 10.90.90.5

Шаг №1: Покупаем доменное имя и арендуем VPS

я купил доменное имя ekzorchik.com на jino.ru

Шаг №2: Прописываем DNS-записи где куплено DNS-имя:

DNS записи на хостере для домена @ekzorchik.com

Шаг №3: Создаем запрос в поддержку кто выдал нам статический WAN-IP адрес с просьбой прописать PTR запись на соответствие mail.ekzorchik.com = 78.108.199.93

PTR-запись сопоставляет IP-адрес вашего сервера с доменным именем, в случае если это не так, вероятнее всего ваши письма будут попадать в спам.

Чтобы проверить выполните следующую команду:

ekzorchik@mail:~$ dig -x 78.108.199.93 +short

В ответ вы должны получать адрес вашего поддомена:

mail.ekzorchik.com.

Шаг №4: Установите FQDN — имя вашей системы:

ekzorchik@ubuntu:~$ sudo hostnamectl set-hostname mail.polygon.local

ekzorchik@ubuntu:~$ cat /etc/hostname

mail.polygon.local

Шаг №5: Перед установкой мы должны привести запись с адресом нашего сервера в файле /etc/hosts к виду

ekzorchik@ubuntu:~$ sudo nano /etc/hosts

127.0.0.1 mail.polygon.local mail localhost

ekzorchik@ubuntu:~$ sudo reboot

Шаг №6: на шлюзе (pfSense) делаем проброс порта

Проброс порта на шлюзе pfSense

На заметку: Port 25 is used for communication between mail servers.

  • 25 — стандартный SMTP (без шифрования или через STARTTLS);
  • 80 — HTTP для порталов iRedAdmin и Roundcube;
  • 110 — стандартный POP3 (без шифрования или через STARTTLS);
  • 143 — стандартный IMAP (без шифрования или через STARTTLS);
  • 443 — защищенный HTTPS для порталов iRedAdmin и Roundcube;
  • 465 — защищенный SMTP через SSL/TLS;
  • 587 — защищенный SMTP через STARTTLS;
  • 993 — защищенный IMAP через SSL/TLS;
  • 995 — защищенный POP3 через SSL/TLS.

Шаг №7: Произвожу скачивание и установку iRedMail:

ekzorchik@mail:~$ wget https://github.com/iredmail/iRedMail/archive/1.4.2.tar.gz

ekzorchik@mail:~$ tar zxf 1.4.2.tar.gz

ekzorchik@mail:~$ cd iRedMail-1.4.2/

ekzorchik@mail:~/iRedMail-1.4.2$ chmod +x iRedMail.sh

ekzorchik@mail:~/iRedMail-1.4.2$ sudo ./iRedMail.sh

Yes,

/var/vmail, Next

Choose a web server you want to run: nginx, Next

Choose preferred backend used to store mail accounts: MariaDB, Next

Password for MySQL administrator: root

Password: <PASSWORD>, Next

Please specify your first mail domain name: ekzorchik.com, Next

Please specify password for the mail domain administrator: <PASSWORD>, Next

Optional components: Roundcubemail, netdata, iRedAdmin

*************************************************************************

***************************** WARNING ***********************************

*************************************************************************

* *

* Below file contains sensitive infomation (username/password), please *

* do remember to *MOVE* it to a safe place after installation. *

* *

* * /home/ekzorchik/iRedMail-1.4.2/config

* *

*************************************************************************

********************** Review your settings *****************************

*************************************************************************

* Storage base directory: /var/vmail

* Mailboxes:

* Daily backup of SQL/LDAP databases:

* Store mail accounts in: MariaDB

* Web server: Nginx

* First mail domain name: ekzorchik.com

* Mail domain admin: postmaster@ekzorchik.com

* Additional components: Roundcubemail netdata iRedAdmin

< Question > Continue? [y|N] y

* URLs of installed web applications:

*

* - Roundcube webmail: https://mail.polygon.lan/mail/

* - netdata (monitor): https://mail.polygon.lan/netdata/

*

* - Web admin panel (iRedAdmin): https://mail.polygon.lan/iredadmin/

*

* You can login to above links with below credential:

*

* - Username: postmaster@ekzorchik.com

* - Password: <PASSWORD>

ekzorchik@mail:~/iRedMail-1.4.2$ sudo reboot

Шаг №8: Чтобы почта начала приходить и отправляться в моем случае

ekzorchik@mail:~$ sudo nano /etc/postfix/main.cf

#myhostname = mail.polygon.local

myhostname = ekzorchik.com

myorigin = mail.polygon.local

#mydomain = mail.polygon.local

mydomain = ekzorchik.com

ekzorchik@mail:~$ sudo systemctl restart postfix

На заметку: если postfix используется не только для доставки почты на локальную машину, нужно в строку mydestination добавить $mydomain.

Шаг №9: Авторизуюсь в Web-интерфейсе администрирования

https://mail.ekzorchik.com/iredadmin/ — авторизуюсь

  • Username: postmaster@ekzorchik.com
  • Password: <PASSWORD>

создаю почтовый ящик

  • @mail: alektest@ekzorchik.com
  • @pass: <PASSWORD>

Шаг №10: Авторизуюсь в почтовом ящике через Web-интерфейс

https://mail.ekzorchik.com/mail/

Авторизуюсь через Web-интерфейс в почтовом ящике

Шаг №11: Письма отправленные и получаемые в Web-интерфейсе отображаются + можно видеть в реальном виде лог обработки писем:

ekzorchik@mail:~$ sudo tail -f /var/log/syslog

Oct 28 10:58:11 mail postfix/amavis/smtp[4354]: 4Hfybj0nTsz40Xf: to=<alektest@ekzorchik.com>, relay=127.0.0.1[127.0.0.1]:10024, delay=2, delays=0.04/0/0/2, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 4Hfybl0cn6z40Xk)

Oct 28 10:58:11 mail postfix/qmgr[4213]: 4Hfybj0nTsz40Xf: removed

Oct 28 10:58:11 mail postfix/pipe[4399]: 4Hfybl0cn6z40Xk: to=<alektest@ekzorchik.com>, relay=dovecot, delay=0.05, delays=0.01/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)

Oct 28 10:58:11 mail postfix/qmgr[4213]: 4Hfybl0cn6z40Xk: removed

Oct 28 11:01:01 mail CRON[4452]: (root) CMD (python3 /opt/iredapd/tools/cleanup_db.py >/dev/null)

Oct 28 11:01:01 mail CRON[4455]: (root) CMD (python3 /opt/www/iredadmin/tools/cleanup_db.py >/dev/null 2>&1)

Oct 28 11:01:01 mail CRON[4454]: (root) CMD (python3 /opt/www/iredadmin/tools/delete_mailboxes.py)

Oct 28 11:01:29 mail postfix/anvil[4388]: statistics: max connection rate 1/60s for (smtpd:77.88.28.108) at Oct 28 10:58:08

Oct 28 11:01:29 mail postfix/anvil[4388]: statistics: max connection count 1 for (smtpd:77.88.28.108) at Oct 28 10:58:08

Oct 28 11:01:29 mail postfix/anvil[4388]: statistics: max cache size 1 at Oct 28 10:58:08

Лог отправляемого из веб интерфейса сообщения от имени alektest@ekzorchik.com на ekzorchik@yandex.ru

Oct 28 11:02:01 mail CRON[4474]: (root) CMD (python3 /opt/iredapd/tools/spf_to_greylist_whitelists.py >/dev/null)

Oct 28 11:02:20 mail postfix/submission/smtpd[4484]: connect from mail.polygon.local[127.0.0.1]

Oct 28 11:02:20 mail postfix/submission/smtpd[4484]: Anonymous TLS connection established from mail.polygon.local[127.0.0.1]: TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)

Oct 28 11:02:20 mail postfix/trivial-rewrite[4486]: warning: do not list domain ekzorchik.com in BOTH mydestination and virtual_mailbox_domains

Oct 28 11:02:20 mail postfix/trivial-rewrite[4486]: warning: do not list domain ekzorchik.com in BOTH mydestination and virtual_mailbox_domains

Oct 28 11:02:20 mail postfix/submission/smtpd[4484]: 4HfyhX6PvLz40Xf: client=mail.polygon.local[127.0.0.1], sasl_method=LOGIN, sasl_username=alektest@ekzorchik.com

Oct 28 11:02:20 mail postfix/cleanup[4492]: 4HfyhX6PvLz40Xf: message-id=<67d389a15f9efb1421f76faa4d11c4a9@ekzorchik.com>

Oct 28 11:02:20 mail roundcube: <i694lht9> User alektest@ekzorchik.com [95.221.47.84]; Message <67d389a15f9efb1421f76faa4d11c4a9@ekzorchik.com> for ekzorchik@yandex.ru; 250: 2.0.0 Ok: queued as 4HfyhX6PvLz40Xf

Oct 28 11:02:20 mail postfix/qmgr[4213]: 4HfyhX6PvLz40Xf: from=<alektest@ekzorchik.com>, size=543, nrcpt=1 (queue active)

Oct 28 11:02:20 mail postfix/submission/smtpd[4484]: disconnect from mail.polygon.local[127.0.0.1] ehlo=2 starttls=1 auth=1 mail=1 rcpt=1 data=1 quit=1 commands=8

Oct 28 11:02:21 mail postfix/10025/smtpd[4502]: connect from mail.polygon.local[127.0.0.1]

Oct 28 11:02:21 mail postfix/trivial-rewrite[4486]: warning: do not list domain ekzorchik.com in BOTH mydestination and virtual_mailbox_domains

Oct 28 11:02:21 mail postfix/10025/smtpd[4502]: 4HfyhY0qvDz40Xk: client=mail.polygon.local[127.0.0.1]

Oct 28 11:02:21 mail postfix/cleanup[4492]: 4HfyhY0qvDz40Xk: message-id=<67d389a15f9efb1421f76faa4d11c4a9@ekzorchik.com>

Oct 28 11:02:21 mail postfix/qmgr[4213]: 4HfyhY0qvDz40Xk: from=<alektest@ekzorchik.com>, size=1786, nrcpt=1 (queue active)

Oct 28 11:02:21 mail postfix/10025/smtpd[4502]: disconnect from mail.polygon.local[127.0.0.1] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5

Oct 28 11:02:21 mail amavis[1931]: (01931-02) Passed CLEAN {RelayedInternal}, ORIGINATING/MYNETS LOCAL [127.0.0.1]:52434 ESMTP/ESMTP <alektest@ekzorchik.com> -> <ekzorchik@yandex.ru>, (), Queue-ID: 4HfyhX6PvLz40Xf, Message-ID: <67d389a15f9efb1421f76faa4d11c4a9@ekzorchik.com>, mail_id: kl1Bzo_KVqot, b: NIvTzhDsA, Hits: -1, size: 543, queued_as: 4HfyhY0qvDz40Xk, Subject: "2222", From: <alektest@ekzorchik.com>, User-Agent: Roundcube_Webmail, helo=localhost, Tests: [ALL_TRUSTED=-1], autolearn=ham autolearn_force=no, autolearnscore=0, dkim_new=dkim:ekzorchik.com, 171 ms

Oct 28 11:02:21 mail postfix/amavis/smtp[4497]: 4HfyhX6PvLz40Xf: to=<ekzorchik@yandex.ru>, relay=127.0.0.1[127.0.0.1]:10026, delay=0.27, delays=0.07/0.01/0/0.18, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 4HfyhY0qvDz40Xk)

Oct 28 11:02:21 mail postfix/qmgr[4213]: 4HfyhX6PvLz40Xf: removed

Oct 28 11:02:21 mail postfix/smtp[4503]: Trusted TLS connection established to mx.yandex.ru[77.88.21.249]:25: TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)

Oct 28 11:02:21 mail postfix/smtp[4503]: 4HfyhY0qvDz40Xk: to=<ekzorchik@yandex.ru>, relay=mx.yandex.ru[77.88.21.249]:25, delay=0.85, delays=0.01/0.02/0.15/0.66, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued on vla5-6df523ac66f4.qloud-c.yandex.net as 1635408141-b6S3LLD0Kq-2Ls0xgcC)

Oct 28 11:02:21 mail postfix/qmgr[4213]: 4HfyhY0qvDz40Xk: removed

тока сообщения попадают в SPAM:

Пока письма отправленные с ящика alektest@ekzorchik.com попадают в СПАМ

содержимое письма с темой 2222

Received: from vla5-6df523ac66f4.qloud-c.yandex.net (vla5-6df523ac66f4.qloud-c.yandex.net [2a02:6b8:c18:348f:0:640:6df5:23ac])

by vla5-ccb8f91e485f.qloud-c.yandex.net with LMTP id roZNN5onXF-RzWAFjJv

for <ekzorchik@yandex.ru>; Thu, 28 Oct 2021 11:02:21 +0300

Received: from ekzorchik.com (78.108.199.93 [78.108.199.93])

by vla5-6df523ac66f4.qloud-c.yandex.net (mxfront/Yandex) with ESMTPS id b6S3LLD0Kq-2Ls0xgcC;

Thu, 28 Oct 2021 11:02:21 +0300

(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))

(Client certificate not present)

Return-Path: alektest@ekzorchik.com

X-Yandex-TimeMark: 1635408141.412

X-Yandex-Fwd: 1

Authentication-Results: vla5-6df523ac66f4.qloud-c.yandex.net; dkim=neutral header.i=@ekzorchik.com

X-Yandex-Spam: 4

X-Yandex-Suid-Status: 4 190115445

Received: from mail.polygon.local (mail.polygon.local [127.0.0.1])

by ekzorchik.com (Postfix) with ESMTP id 4HfyhY0qvDz40Xk

for <ekzorchik@yandex.ru>; Thu, 28 Oct 2021 11:02:21 +0300 (MSK)

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ekzorchik.com; h=

content-transfer-encoding:content-type:message-id:user-agent

:subject:to:from:date:mime-version; s=dkim; t=1635408140; x=

1638000141; bh=jhrRVKkvcmW2U1JbeDDSIEi+JZqUBTUMU2Ulo7iLZyc=; b=2

fNJB48QySw2xFuzloWt93j9AgnYHOoxAoxThHT0MF4X7SrVoiw8c/5Hx28CgLBtw

AphGq6+E2/0kc12zTNF8nDe2O1LHCA7v6wJySaFe+S6xVz+q/yMJgdZIps1j1mKv

ocwt8W4ycti2zUNEP3nOMRZzAFRNYzmMhLaphnpMt+RpW/Y4bwd3rzl2I6b9DaXI

B6ZApjmO+WutfIerB6Lc+Ao8hdxX1U90rsIkKPZQqUzQE/PsX1M5OLdisNQnDzOB

dWbi4qQoGygpNn1Zmszr9Zi6WQQRlxTcdgWBnIEkVFRlwq+e+kx3lwxSccP6ct+q

c5uBZ4bWITdzt8/vwMiOg==

X-Virus-Scanned: Debian amavisd-new at mail.polygon.local

Received: from ekzorchik.com ([127.0.0.1])

by mail.polygon.local (mail.polygon.local [127.0.0.1]) (amavisd-new, port 10026)

with ESMTP id kl1Bzo_KVqot for <ekzorchik@yandex.ru>;

Thu, 28 Oct 2021 11:02:20 +0300 (MSK)

Received: from localhost (mail.polygon.local [127.0.0.1])

by ekzorchik.com (Postfix) with ESMTPSA id 4HfyhX6PvLz40Xf

for <ekzorchik@yandex.ru>; Thu, 28 Oct 2021 11:02:20 +0300 (MSK)

MIME-Version: 1.0

Date: Thu, 28 Oct 2021 11:02:20 +0300

From: alektest@ekzorchik.com

To: ekzorchik@yandex.ru

Subject: 2222

User-Agent: Roundcube Webmail

Message-ID: <67d389a15f9efb1421f76faa4d11c4a9@ekzorchik.com>

X-Sender: alektest@ekzorchik.com

Content-Type: text/plain; charset=US-ASCII;

format=flowed

Content-Transfer-Encoding: 7bit

X-Yandex-Forward: 49486e59bf228f8857d81b7c0161154a

222

Шаг №12: Сейчас буду устанавливать сертификат Lets Encrypted дабы уйти от Web-строки при обращении к iRedMail что сертификат у меня самоподписанный:

Сейчас при доступе к Web-интерфейсу стоит самоподписанный сертификат

ekzorchik@mail:~$ sudo apt-get install -y python-certbot-nginx

ekzorchik@mail:~$ sudo certbot certificates

Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

No certs found.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

ekzorchik@mail:~$

ekzorchik@mail:~$ hostname

mail.polygon.local

На заметку: Важно чтобы доступ к почтовому серверу mail.ekzorchik.com был открыт при обращении через 80/tcp

ekzorchik@mail:~$ sudo certbot certonly --webroot --agree-tos --email support@ekzorchik.ru -d mail.ekzorchik.com -w /var/www/html/

Saving debug log to /var/log/letsencrypt/letsencrypt.log

Plugins selected: Authenticator webroot, Installer None

Obtaining a new certificate

Performing the following challenges:

http-01 challenge for mail.ekzorchik.com

Using the webroot path /var/www/html for all unmatched domains.

Waiting for verification...

Cleaning up challenges

IMPORTANT NOTES:

- Congratulations! Your certificate and chain have been saved at:

/etc/letsencrypt/live/mail.ekzorchik.com/fullchain.pem

Your key file has been saved at:

/etc/letsencrypt/live/mail.ekzorchik.com/privkey.pem

Your cert will expire on 2022-01-26. To obtain a new or tweaked

version of this certificate in the future, simply run certbot

again. To non-interactively renew *all* of your certificates, run

"certbot renew"

- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate

Donating to EFF: https://eff.org/donate-le

ekzorchik@mail:~$

Шаг №13: Чтобы полученный сертификат от Let's Encrypt обновлялся самостоятельно каждые 90 дней (по умолчанию) нужно:

ekzorchik@mail:~$ sudo crontab -e

@daily letsencrypt renew --quiet && systemctl reload postfix dovecot nginx

Шаг №14: После получения сертификата TLS, давайте сконфигурируем nginx:

ekzorchik@mail:~$ sudo nano /etc/nginx/templates/ssl.tmpl

#ssl_certificate /etc/ssl/certs/iRedMail.crt;

#ssl_certificate_key /etc/ssl/private/iRedMail.key;

ssl_certificate /etc/letsencrypt/live/mail.ekzorchik.com/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/mail.ekzorchik.com/privkey.pem;

ekzorchik@mail:~$ sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

ekzorchik@mail:~

ekzorchik@mail:~$ sudo systemctl restart nginx.service

Шаг №15: Открываем браузер и переходим в веб-интерфейс iredadmin

Теперь сертификат уже от Let's Encrypted

Шаг №16: Гарантируем доставку почты.

Чтобы ваши письма не помечались как спам, в популярных паблик сервисах эл. почты, вы должны установить PTR SPF, DKIM и DMARC-записи.

SPF запись Запись SPF (Sender Policy Framework) указывает, какие хосты или IP-адрес разрешены для отправки сообщений электронной почты от имени домена. Там должен быть указан только адрес вашего VPS.

Эта запись создается в настройках домена, в панели вашего регистратора.

Создайте там TXT-запись со следующим содержанием:

  • Record - TXT
  • Name - @
  • Value - v=spf1 mx ~all
  • TTL - 90 sec

DKIM запись DKIM (DomainKeys Identified Mail) использует закрытый ключ для подписи исходящих сообщений, отправленных с вашего домена. Получающие SMTP-серверы проверяют эту подпись с помощью открытого ключа, который публикуется в -записи DKIM.

Скрипт iRedMail автоматически создает DKIM для вашего сервера. Единственное, что осталось сделать, это создать DKIM запись.

Быстрее всего выполнить команду:

ekzorchik@mail:~$ amavisd-new showkeys

Error in config file "/etc/amavis/conf.d/50-user": Can't open PEM file /var/lib/dkim/ekzorchik.com.pem: Permission denied at /usr/sbin/amavisd-new line 637.

ekzorchik@mail:~$ sudo amavisd-new showkeys

; key#1 2048 bits, i=dkim, d=ekzorchik.com, /var/lib/dkim/ekzorchik.com.pem

dkim._domainkey.ekzorchik.com. 3600 TXT (

"v=DKIM1; p="

"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7nK+lhw/fTWj7YSNAaDR"

"z/wxarXfniTQYj8yct3gRFxkjO5zP3N48kqzk3DxFflYdy3IZyS3jJUAxGXp2f+q"

"mzH+f5Wqr6uibT2dS7Xg++NGig2qsFcAv2UXopUnznVxLC7WNHmLEIam07yF8Ck4"

"zbKjWnJRTJOoL7PIZ/TpDPFK+NGjEQgecapGisMZAv9VH4gZod0cNE41D0tP0Qr5"

"/lVzZUIyMgwrHF04zc0ohOSnI5RR+6ke9Fajk9W7Cp2WrL2LFbnvHzE7A3XrFcgi"

"UbXGJGzfrtkFMSC6jO5mmgkp+uyujiihwRhNZ/lDzeGVSl8zKLe9YhAlhmuzA/0Y"

"YwIDAQAB")

ekzorchik@mail:~$

ekzorchik@mail:~$ cd iRedMail-1.4.2/

ekzorchik@mail:~/iRedMail-1.4.2$ sudo nano iRedMail.tips

record for DKIM support: копируем блок, который начинается на — «v=DKIM1; p=».

Теперь создадим еще одну запись в панели регистратора (у меня на jino.ru) предварительно удалив все кавычки из только что скопированного блока текста.

  • Record type - TXT
  • Name - dkim._domainkey
  • Value - v=DKIM1; p= ваш ключ....
  • TTL - 90 sec

Запись DKIM на хостере

Проверим, что все правильно сделали:

ekzorchik@mail:~/iRedMail-1.4.2$ sudo amavisd-new testkeys

TESTING#1 ekzorchik.com: dkim._domainkey.ekzorchik.com => pass

ekzorchik@mail:~/iRedMail-1.4.2$

DMARC запись — отвечает за проверку подлинности отправителя. В настройках регистратора создадим новую запись:

  • DNS record - TXT
  • Name - _dmarc
  • Value - v=DMARC1; p=none; pct=100; rua=mailto:dmarc-reports@ekzorchik.com
  • TTL - 5 min

DMARC запись для домена @ekzorchik.com

Шаг №17: Чтобы к POP3/IMAP можно было подключаться без STARTTLS нужно открыть файл конфигурации Dovecot:

ekzorchik@mail:~$ sudo nano /etc/dovecot/dovecot.conf

#ssl = required

ssl = yes

#disable_plaintext_auth = yes

disable_plaintext_auth = no

ekzorchik@mail:~$ sudo systemctl restart dovecot

Шаг №18: А теперь реализую вот такую схему работы:

Реализуем схему работы 993/tcp & 465/tcp для подключения почтового ящика

Шаг №19: Установим TLS сертификат в Postfix and Dovecot

ekzorchik@mail:~$ sudo ls /etc/letsencrypt/live/mail.ekzorchik.com

README cert.pem chain.pem fullchain.pem privkey.pem

Открываем main.cf и вместо дефолтных значений указываем путь до файлов созданных под доменное имя почтового сервера:

ekzorchik@mail:~$ sudo nano /etc/postfix/main.cf

#smtpd_tls_key_file = /etc/ssl/private/iRedMail.key

#smtpd_tls_cert_file = /etc/ssl/certs/iRedMail.crt

#smtpd_tls_CAfile = /etc/ssl/certs/iRedMail.crt

smtpd_tls_key_file = /etc/letsencrypt/live/mail.ekzorchik.com/privkey.pem

smtpd_tls_cert_file = /etc/letsencrypt/live/mail.ekzorchik.com/cert.pem

smtpd_tls_CAfile = /etc/letsencrypt/live/mail.ekzorchik.com/chain.pem

smtpd_tls_CApath = /etc/ssl/certs

Перезапускаю Postfix:

ekzorchik@mail:~$ sudo systemctl restart postfix

Отредактируем конфигурационный файл Dovecot:

ekzorchik@mail:~$ sudo nano /etc/dovecot/dovecot.conf

#ssl_cert = </etc/ssl/certs/iRedMail.crt

#ssl_key = </etc/ssl/private/iRedMail.key

ssl_cert = </etc/letsencrypt/live/mail.ekzorchik.com/fullchain.pem

ssl_key = </etc/letsencrypt/live/mail.ekzorchik.com/privkey.pem

Перезапускаю Dovecot:

ekzorchik@mail:~$ sudo systemctl reload dovecot

Шаг №20: Включаю работу отправки почты через SMTPS 465/tcp:

ekzorchik@mail:~$ sudo nano /etc/postfix/master.cf

465     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,rej$
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_sasl_type=dovecot
#  -o smtpd_sasl_path=private/auth
  -o content_filter=smtp-amavis:[127.0.0.1]:10026

ekzorchik@mail:~$ sudo systemctl restart postfix

после смотрим лог

ekzorchik@mail:~$ sudo tail -f /var/log/mail.log

Теперь настройки для подключения к почтовому серверу:

IMAP:

  • mail.ekzorchik.com
  • 993
  • SSL/TLS

SMTP:

  • mail.ekzorchik.com
  • 465
  • SSL/TLS

На заметку: исходя и портов выше которые нужны для работы почтового сервера я оставляю правила проброс порта на pfsense: 25,80,443,465,993

порты: 143,587 — убираю

и произведя настройки на смартфоне Honor 9X письмо отправленное на support@ekzorchik.ru уже попадает в папку "Входящие", а не как раньше "Спам"

Теперь письма в СПАМ не попадают

На заметку: После не забыть посмотреть заметку "Подключение Outlook 2016 к серверу iRedMail домена @ekzorchik.ru"

Итого, я для себя разобрал как поднять почтовый сервер на базе iRedmail, получен сертификат от Let's Encrypt, почтовый ящик подключается через 993/tcp & 465/tcp — сейчас еще потестируем различный функционал, как было ранее сделано с OwnCloud (ранее использовал Dropbox) и переведу сервис почты под свое крыло администрирования дабы не зависеть ни от кого, а полагаться на собственные силы. Тем самым получая опыт и знания. На этом пока заметка завершена, с уважением автор блога Олло Александра aka ekzorchik.