В этой статье мы подробно рассмотрим процесс установки почтового сервера в связке postfix + postfixadmin+ dovecot на операционной системе РЕД ОС сервер.
Настройка почтового сервера на RED OS
Будет несколько статей по настройке почтового сервера, т.к если описывать всё в рамках одной статьи, она будет слишком большая.
Статья частично основана на статье serveradmin.ru
Статья переработана под операционную систему РЕД.ОС Сервер
Почтовый сервер у нас будет размещен в нашей локальной сети.
Вводная информация:
Для начала, необходимо подготовить наш сервер по данной инструкции. В результате у нас должно быть 3 сайта
Адрес phpMyAdmin – pma.srv-adm.ru
Адрес: PostFixAdmin – pfa.srv-adm.ru
IP адрес сервера: 62.113.119.41
Расположение каталогов:
/web/sites/email.srv-adm.ru
/web/sites/pma.srv-adm.ru
/web/sites/pfa.srv-adm.ru
Все почтовые ящики с письмами будем хранить в папке mail – которую создадим в корне. Если вы будете создавать папку в другом месте, в конфигах не забудьте изменить путь на свой
Важно: для корректной работы почты, необходимо переименовать наш RED-OS сервер, в соответствии с наименованием почтового сервера. В нашем случае это email.srv-adm.ru
Для этого выполняем команду
mcedit /etc/hostname
И файле пишем email.srv-adm.ru
Сохраняем
Содержание статьи:
- Установка и настройка PostFixAdmin
- Установка и настройка dovecot.
- Проверка работы почтового сервера
- Настройка DKIM
- Настройка SFP-Записи
- Настройка DMARC
- Финальная проверка работоспособности почтового сервера
1. Установка и настройка PostFixAdmin
Далее сначала нам нужно установить postfixadmin, в репозиториях РЕД.ОС я его не нашел, поэтому будем скачивать его напрямую с Githab
wget https://github.com/postfixadmin/postfixadmin/archive/refs/tags/postfixadmin-3.3.13.tar.gz
Распаковываем
tar xzvf postfixadmin-3.3.13.tar.gz
Далее копируем содержимое в нашу папку pfa
cp -RT postfixadmin-postfixadmin-3.3.13 /web/sites/pfa.srv-adm.ru/www
Далее даем права nginx на каталог
chown -R nginx:nginx /web/sites/pfa.srv-adm.ru
Копируем конфиг для внесения изменений
cp /web/sites/pfa.srv-adm.ru/www/config.inc.php /web/sites/pfa.srv-adm.ru/www/config.local.php
Далее редактируем файл config.local.php и значения параметров приводим к тем, что указаны ниже. Для подключения я использовал root запись mysql и пароль. Вы можете создать отдельного пользователя. Так же необходимо в pma.srv-adm.ru создать базу данных postfix в кодировке utf8mb4_bin
$CONF['configured'] = true; $CONF['default_language'] = 'ru'; $CONF['database_type'] = 'mysqli'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'root'; $CONF['database_password'] = 'ПАРОЛЬ ОТ ROOT mssql'; $CONF['database_name'] = 'postfix'; $CONF['admin_email'] = 'root@srv-adm.ru'; $CONF['encrypt'] = 'md5crypt'; $CONF['domain_path'] = 'YES'; $CONF['domain_in_mailbox'] = 'YES'; $CONF['transport_default'] = 'virtual'; $CONF['show_footer_text'] = 'YES'; $CONF['footer_text'] = 'Return to https://pfa.srv-adm.ru/public/'; $CONF['footer_link'] = 'https://pfa.srv-adm.ru/public/'; $CONF['default_aliases'] = array ( 'abuse' => 'root', 'hostmaster' => 'root', 'postmaster' => 'root', 'webmaster' => 'root' );
Для работы панели управления нужна директория templates_c с правами на запись для web сервера nginx.
mkdir /web/sites/pfa.srv-adm.ru/www/templates_c
chown -R nginx:nginx /web/sites/pfa.srv-adm.ru/www/templates_c
Далее, переходим по адресу: https://pfa.srv-adm.ru/public/setup.php
Если всё сделано правильно, мы увидим вот такую картину
Кроме того, можно посмотреть в phpMyAdmin в базе данных postfix – появились таблицы.
Нам необходимо указать пароль установки, на основе которого будет сгенерирован hash, который нужно будет добавить в config.local.php. Для этого в форму Generate setup_password введите два раза пароль.
После генерации пароля, под формой появится строка конфига:
$CONF['setup_password'] = '$2y$10$44XGC0NF3i5jjFwT1rv7Re.qRf21UVN3RCxUVD2sgIYWROh5GaIOQby';
Значение этой строки нужно вписать в соответствующий пункт $CONF[‘setup_password’] = в файле config.local.php
Далее обновляем страницу в браузере.
Если всё было сделано верно, то отобразится страница
У вас не должно быть замечаний к конфигурации, кроме предупреждений по поводу PostgreSQL, так как мы её не настраивали. А все остальные проверки должны быть пройдены. Если есть какие-то ошибки, то необходимо их исправить. Обычно забывают или неправильно указывают параметры доступа к MySQL и прочее.
Далее в открывшейся форме, в поле Setup password вводим пароль, который мы указывали на предыдущем шаге, когда получали hash
В поле Админ – вводим адрес администратора, у меня он root@srv-adm.ru
В поле пароль, придумываем ваш пароль
В конце, нажимаем “Добавить администратора”. Внизу страницы будет сообщение “Администратор root@srv-adm.ru успешно добавлен!”
После этого открываем в браузере: https://pfa.srv-adm.ru/public/login.php должна открыться форма ввода.
Вводим свои данные и попадаем в панель управления.
Если вы попали в панель управления, то файл /web/sites/pfa.srv-adm.ru/www/public/setup.php – можно переместить или удалить.
Теперь нам необходимо добавить наш домен srv-adm.ru в список почтовых доменов. Идем в раздел Список доменов -> Новый домен и добавляем свой домен.
Далее создадим почтовый ящик администратора — root@srv-adm.ru . Для этого идем в раздел Обзор -> Создать ящик.
Переходим к настройке PostFix
dnf install postfix postfix-mysql ca-certificates
Далее редактируем конфиг postfix /etc/postfix/main.cf При желании, можно сделать резервную копию.
soft_bounce = no queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix mail_owner = postfix myhostname = email.srv-adm.ru mydomain = srv-adm.ru myorigin = $myhostname inet_interfaces = all inet_protocols = ipv4 mydestination = localhost.$mydomain, localhost unknown_local_recipient_reject_code = 550 mynetworks = 127.0.0.0/8 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases smtpd_banner = $myhostname ESMTP $mail_name debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 setgid_group = postdrop html_directory = no relay_domains = mysql:/etc/postfix/mysql/relay_domains.cf virtual_alias_maps = mysql:/etc/postfix/mysql/virtual_alias_maps.cf, mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf virtual_mailbox_domains = mysql:/etc/postfix/mysql/virtual_mailbox_domains.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf smtpd_discard_ehlo_keywords = etrn, silent-discard smtpd_forbidden_commands = CONNECT GET POST broken_sasl_auth_clients = yes smtpd_delay_reject = yes smtpd_helo_required = yes smtp_always_send_ehlo = yes disable_vrfy_command = yes smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname smtpd_data_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_pipelining, reject_multi_recipient_bounce, smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, reject_unknown_sender_domain smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_multi_recipient_bounce, reject_unauth_destination, smtp_tls_security_level = may smtp_tls_loglevel = 1 smtpd_tls_security_level = may smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s smtp_tls_session_cache_database = btree:$data_directory/smtp_tls_session_cache smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt smtpd_tls_key_file = /etc/letsencrypt/live/email.srv-adm.ru/privkey.pem smtpd_tls_cert_file = /etc/letsencrypt/live/email.srv-adm.ru/fullchain.pem tls_random_source = dev:/dev/urandom smtpd_tls_mandatory_ciphers = low smtpd_tls_ciphers = low smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3 smtp_tls_mandatory_protocols = !SSLv2,!SSLv3 smtp_tls_ciphers = low smtp_tls_mandatory_ciphers = low smtp_tls_protocols = !SSLv2,!SSLv3 smtp_tls_note_starttls_offer = yes message_size_limit = 20000000 smtpd_soft_error_limit = 10 smtpd_hard_error_limit = 15 smtpd_error_sleep_time = 20 anvil_rate_time_unit = 60s smtpd_client_connection_count_limit = 20 smtpd_client_connection_rate_limit = 30 smtpd_client_message_rate_limit = 30 smtpd_client_event_limit_exceptions = 127.0.0.0/8 smtpd_client_connection_limit_exceptions = 127.0.0.0/8 maximal_queue_lifetime = 1d bounce_queue_lifetime = 1d smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_type = dovecot smtpd_sasl_path = private/dovecot-auth # Директория для хранения почты virtual_mailbox_base = /mail virtual_minimum_uid = 1100 virtual_uid_maps = static:1100 virtual_gid_maps = static:1100 virtual_transport = dovecot dovecot_destination_recipient_limit = 1 sender_bcc_maps = hash:/etc/postfix/sender_bcc_maps recipient_bcc_maps = hash:/etc/postfix/recipient_bcc_maps compatibility_level=2
На данном этапе, необходимо обратить внимание на параметры, которые выделил жирным цветом. Это адрес домена, это путь, где будут храниться наши ящики, и пусть до сертфикатов, которые мы выпустили для сайта email.srv-adm.ru
Теперь необходимо создать каталоги и конфигурационное файлы
mkdir /etc/postfix/mysql && cd /etc/postfix/mysql
Далее создаем необходимые файлы. Обращаю внимание, что в них в поле user и поле password необходимо указывать данные от БД postfix, которые мы создавали выше. Все файлы у нас создаются в каталоге /etc/postfix/mysql
Создаем и редактируем файл relay_domains.cf и приводим его к виду:
mcedit /etc/postfix/mysql/relay_domains.cf
hosts = localhost:3306 user = root password = пароль от root dbname = postfix query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1'
Создаем и редактируем файл virtual_alias_domain_maps.cf и приводим его к виду:
mcedit /etc/postfix/mysql/virtual_alias_domain_maps.cf
hosts = localhost:3306 user = root password = пароль от root dbname = postfix query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1
Создаем и редактируем файл virtual_alias_maps.cf и приводим его к виду:
mcedit /etc/postfix/mysql/virtual_alias_maps.cf
hosts = localhost:3306 user = root password = пароль от root dbname = postfix query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
Создаем и редактируем файл virtual_mailbox_domains.cf и приводим его к виду:
mcedit /etc/postfix/mysql/virtual_mailbox_domains.cf
hosts = localhost:3306 user = root password = пароль от root dbname = postfix query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'
Создаем и редактируем файл virtual_mailbox_maps.cf и приводим его к виду:
mcedit /etc/postfix/mysql/virtual_mailbox_maps.cf
hosts = localhost:3306 user = root password = пароль от root dbname = postfix query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
Продолжаем настройку почтового сервера postfix. Редактируем файл /etc/postfix/master.cf Нам надо раскомментировать строки, submission inet n – n – – smtpd чтобы почтовый сервер работал на 587 порту. Приводим данную секцию к следующему виду.
mcedit /etc/postfix/master.cf
submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_tls_auth_only=yes -o smtpd_reject_unlisted_recipient=no -o smtpd_sasl_security_options=noanonymous -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
Добавим еще настройки для поддержки протокола SSL/TLS и порта 465
smtps inet n - n - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination -o milter_macro_daemon_name=ORIGINATING
В этот же файл добавляем еще одну настройку, которая будет указывать postfix, что доставкой почты у нас будет заниматься dovecot
dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
Теперь создадим файлы для информации об ящиках, куда будет собираться вся входящая и исходящая почта.
Для понимания, что мы делаем.
Когда кто-то, будет писать на любой ящик вашего домена, например user@srv-adm.ru – это письмо, по мимо ящика user попадёт в ящик all_in, и наоборот, любое письмо, отправленное с любого ящика будет попадать в общий ящик all_out
mcedit /etc/postfix/recipient_bcc_maps
В сам файл вносим строку: @srv-adm.ru all_in@srv-adm.ru
mcedit /etc/postfix/sender_bcc_maps
В сам файл вносим строку: @srv-adm.ru all_out@srv-adm.ru
Создаем индексированные базы данных из этих файлов. Это нужно делать каждый раз, после любого изменения этих файлов
postmap /etc/postfix/recipient_bcc_maps /etc/postfix/sender_bcc_maps
Теперь необходимо создать два почтовых ящика all_in@srv-adm.ru и all_out@srv-adm.ru через postfixadmin.
2. Установка и настройка dovecot
dovecot — сервер доставки почты по протоколам pop3 и imap.
Устанавливаем необходимые для dovecot пакеты.
dnf install dovecot*
Редактируем файл конфигурации.
mcedit /etc/dovecot/dovecot.conf
Приводим файл к следущему виду:
listen = * mail_plugins = mailbox_alias acl protocols = imap pop3 sieve lmtp mail_uid = 1100 mail_gid = 1100 first_valid_uid = 1100 last_valid_uid = 1100 auth_verbose = yes log_path = /var/log/dovecot/main.log info_log_path = /var/log/dovecot/info.log debug_log_path = /var/log/dovecot/debug.log ssl_min_protocol = SSLv3 verbose_ssl = yes ssl_cert = </etc/letsencrypt/live/email.srv-adm.ru/fullchain.pem ssl_key = </etc/letsencrypt/live/email.srv-adm.ru/privkey.pem ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA ssl_prefer_server_ciphers = yes disable_plaintext_auth = no mail_location = maildir:/mail/%d/%u/ auth_default_realm = srv-adm.ru auth_mechanisms = PLAIN LOGIN service auth { unix_listener /var/spool/postfix/private/dovecot-auth { user = postfix group = postfix mode = 0666 } unix_listener auth-master { user = vmail group = vmail mode = 0666 } unix_listener auth-userdb { user = vmail group = vmail mode = 0660 } } service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { user = postfix group = postfix mode = 0600 } inet_listener lmtp { address = 127.0.0.1 port = 24 } } userdb { args = /etc/dovecot/dovecot-mysql.conf driver = sql } passdb { args = /etc/dovecot/dovecot-mysql.conf driver = sql } auth_master_user_separator = * plugin { auth_socket_path = /var/run/dovecot/auth-master acl = vfile acl_shared_dict = file:/mnt/mail/shared-folders/shared-mailboxes.db sieve_dir = ~/.sieve/ mailbox_alias_old = Sent mailbox_alias_new = Sent Messages mailbox_alias_old2 = Sent mailbox_alias_new2 = Sent Items } protocol lda { mail_plugins = $mail_plugins sieve auth_socket_path = /var/run/dovecot/auth-master deliver_log_format = mail from %f: msgid=%m %$ log_path = /var/log/dovecot/lda-errors.log info_log_path = /var/log/dovecot/lda-deliver.log lda_mailbox_autocreate = yes lda_mailbox_autosubscribe = yes # postmaster_address = root } protocol lmtp { info_log_path = /var/log/dovecot/lmtp.log mail_plugins = quota sieve postmaster_address = postmaster lmtp_save_to_detail_mailbox = yes recipient_delimiter = + } protocol imap { mail_plugins = $mail_plugins imap_acl imap_client_workarounds = tb-extra-mailbox-sep mail_max_userip_connections = 30 } protocol pop3 { mail_plugins = $mail_plugins pop3_client_workarounds = outlook-no-nuls oe-ns-eoh pop3_uidl_format = %08Xu%08Xv mail_max_userip_connections = 30 } service imap-login { service_count = 1 process_limit = 500 } service pop3-login { service_count = 1 } service managesieve-login { inet_listener sieve { port = 4190 } } service stats { unix_listener stats-reader { user = vmail group = vmail mode = 0660 } unix_listener stats-writer { user = vmail group = vmail mode = 0660 } } namespace { type = private separator = / prefix = inbox = yes mailbox Sent { auto = subscribe special_use = \Sent } mailbox "Sent Messages" { auto = no special_use = \Sent } mailbox "Sent Items" { auto = no special_use = \Sent } mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Trash { auto = subscribe special_use = \Trash } mailbox "Deleted Messages" { auto = no special_use = \Trash } mailbox Junk { auto = subscribe special_use = \Junk } mailbox Spam { auto = no special_use = \Junk } mailbox "Junk E-mail" { auto = no special_use = \Junk } mailbox Archive { auto = no special_use = \Archive } mailbox Archives { auto = no special_use = \Archive } } namespace { type = shared separator = / prefix = Shared/%%u/ location = maildir:%%h:INDEX=%h/shared/%%u subscriptions = yes list = children }
Создаем директорию для плагина acl и назначаем необходимые права
mkdir /mail/shared-folders
chown -R vmail:vmail /mail
Создаем группу и пользователя с указанными в конфиге uid 1100 + назначаем права на каталог /mail
groupadd -g 1100 vmail
useradd -d /mail/ -g 1100 -u 1100 vmail
usermod -a -G dovecot vmail
chown vmail:vmail /mail
Создаем конфигурационные файлы для доступа к mysql базе.
mcedit /etc/dovecot/dovecot-mysql.conf
Приводим файл к следующему виду:
driver = mysql default_pass_scheme = CRYPT connect = host=127.0.0.1 dbname=postfix user=root password=ВАШ ПАРОЛЬ ОТ root user_query = SELECT '/mail/%d/%u' as home, 'maildir:/mail/%d/%u' as mail, 1100 AS uid, 1100 AS gid, concat('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u' AND active = '1' password_query = SELECT username as user, password, '/mail/%d/%u' as userdb_home, 'maildir:/mail/%d/%u' as userdb_mail, 1100 as userdb_uid, 1100 as userdb_gid, concat('*:bytes=', quota) AS userdb_quota_rule FROM mailbox WHERE username = '%u' AND active = '1'
Создадим директорию и файлы для логов.
mkdir /var/log/dovecot
cd /var/log/dovecot && touch main.log info.log debug.log lda-errors.log lda-deliver.log lmtp.log
chown -R vmail:dovecot /var/log/dovecot
На этом основная настройка почтового сервера завершена. Выполняем следующей команды для перезапуска и включения служб.
systemctl restart postfix
systemctl start dovecot
systemctl enable postfix
systemctl enable dovecot
Обе службы должны запуститься без ошибок.
Что бы убедиться в этом, можно выполнить команды и посмотреть, что служба запущена и ошибок нет.
systemctl status postfix
systemctl status dovecot
Настройка logrotate для dovecot
Для того, чтобы логи Dovecot не разрослись до бесконечности, их имеет смысл периодически ротировать с помощью logrotate. Для этого создадим файл конфигурации /etc/logrotate.d/dovecot следующего содержания:
mcedit /etc/logrotate.d/dovecot
/var/log/dovecot/*.log { weekly rotate 3 compress missingok notifempty postrotate doveadm log reopen endscript create 0644 vmail dovecot }
3. Проверка работы почтового сервера
Для проверки работы почтового сервера — отправляем на него письмо. Я буду отправлять со своего почтового адреса на адрес root@srv-adm.ru. Вот что должно быть в логе, если у вас все правильно настроено и почтовый сервер нормально работает.
Что бы посмотреть логи postfix в режиме реального времени, выполняем команду
tail -f /var/log/maillog
Вывод лога:
Jun 27 16:02:51 email postfix/smtpd[118651]: connect from mail-lf1-f45.google.com[209.85.167.45] Jun 27 16:02:51 email postfix/smtpd[118651]: Anonymous TLS connection established from mail-lf1-f45.google.com[209.85.167.45]: TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256 Jun 27 16:02:52 email postfix/smtpd[118651]: 0389C160943: client=mail-lf1-f45.google.com[209.85.167.45] Jun 27 16:02:52 email postfix/cleanup[118751]: 0389C160943: message-id=<8ada43ba-af2c-95d1-9e85-4e9d10cf1a61@gmail.com> Jun 27 16:02:52 email postfix/qmgr[118632]: 0389C160943: from=, size=3254, nrcpt=2 (queue active) Jun 27 16:02:52 email postfix/smtpd[118651]: disconnect from mail-lf1-f45.google.com[209.85.167.45] ehlo=2 starttls=1 mail=1 rcpt=1 bdat=1 quit=1 commands=7 Jun 27 16:02:52 email postfix/pipe[118753]: 0389C160943: to= , relay=dovecot, delay=0.11, delays=0.05/0.01/0/0.05, dsn=2.0.0, status=sent (delivered via dovecot service) Jun 27 16:02:52 email postfix/pipe[118754]: 0389C160943: to= , relay=dovecot, delay=0.14, delays=0.05/0.04/0/0.06, dsn=2.0.0, status=sent (delivered via dovecot service) Jun 27 16:02:52 email postfix/qmgr[118632]: 0389C160943: removed
Здесь видно, что было установлена подключение с сервера гугла mail-lf1-f45.google.com[209.85.167.45]
Видно, что адрес отправителя from=
так же, в логе мы видим что письмо попало в 2 ящика all_in@srv-adm.ru и root@srv-adm.ru
В директории /mail была создана директория с именем нашего домена srv-adm.ru, а в ней создана папка с именем ящика root@srv-adm.ru и ящика all_in@srv-adm.ru
Непрочитанные письма, лежат здесь – /mail/srv-adm.ru/root@srv-adm.ru/new
Прочитанные письма /mail/srv-adm.ru/root@srv-adm.ru/cur
Теперь попробуем подключиться к нашему серверу через программу Mozilla Thunderbird.
Указываем следующие настройки
Пока письма не отправляем, т.к почтовый сервер до конца ещё не настроен.
4. Настройка DKIM
DKIM – метод аутентификации электронной почты, при использовании которого в исходящие письма добавляется цифровая подпись. На серверах получателей писем сообщения, подписанные с использованием DKIM, рассматриваются как надежные, поскольку DKIM гарантирует, что письма действительно отправлены с указанного адреса. DKIM также удостоверяет, что содержимое письма не менялось после отправки.
Устанавливаем необходимые пакеты
dnf install opendkim opendkim-tools
Создаем директорию для хранения ключей:
mkdir -p /etc/postfix/dkim && cd /etc/postfix/dkim
Генерируем ключи для домена srv-adm.ru:
opendkim-genkey -D /etc/postfix/dkim/ -d srv-adm.ru -s email
srv-adm.ru – домен почтового сервера
email – имя почтового сервера, оно у нас везде во всех конфигах email.srv-adm.ru
На выходе получаете пару файлов — закрытый (приватный) и открытый ключ. Закрытый останется на сервере, открытый будет опубликован в DNS. Для удобства сразу переименуем эти 2 файла
mv email.private email.srv-adm.ru.private
mv email.txt email.srv-adm.ru.txt
Создаем файл с таблицей ключей
mcedit keytable
email._domainkey.srv-adm.ru srv-adm.ru:email:/etc/postfix/dkim/email.srv-adm.ru.private
Так же мы создаем еще один файл, в котором будет описано, каким ключом подписывать письма нашего домена
mcedit signingtable
*@srv-adm.ru email._domainkey.srv-adm.ru
Выставляем права доступа на данные все файлы:
chown root:opendkim *
chmod u=rw,g=r,o= *
Настраиваем конфиг службы opendkim
mcedit /etc/opendkim.conf
AutoRestart yes AutoRestartRate 10/1h Umask 022 Syslog yes SyslogSuccess yes LogWhy yes Mode sv UserID opendkim:opendkim Socket inet:8891@localhost PidFile /var/run/opendkim/opendkim.pid Canonicalization relaxed/relaxed Selector default MinimumKeyBits 1024 KeyFile /etc/postfix/dkim/email.srv-adm.ru.private KeyTable /etc/postfix/dkim/keytable SigningTable refile:/etc/postfix/dkim/signingtable
Добавляем в конфигурационный файл postfix следующие параметры:
mcedit /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters milter_default_action = accept milter_protocol = 2
Перезапускаем postfix и dkim + dkim добавляем в автозагрузку.
systemctl restart postfix
systemctl restart opendkim.service
systemctl enable opendkim.service
Теперь необходимо нам добавить открытый ключ в DNS, в панели вашего хостинга.
Добавлять мы будем новую TXT запись.
Ее содержание берем из файла /etc/postfix/dkim/email.srv-adm.ru.txt
Содержимое данного файла, нельзя просто вставить в TXT запись, его нужно отредактировать, убрать “” пробелы.
Вот так выглядит моя запись ДО преобразования
email._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClbILChI3QrjYgjppos6IU6Q2DhPUxUcx6/U69OYV/JzoS0ddr+VrxKTpPOwfbW4SIdXWLlMDxvqfSO2CnuIUwRPVISB++NKHa42j3DjAAYxxtlC8ZjfGyBKisjOROHayKLcwhJU2ihY3ZHQQf/bcGJzcn45ETZZ1F0g7SLbEWoQIDAQAB" ) ; ----- DKIM key email for srv-adm.ru
А вот так должна выглядеть после, её мы и вставляем в TXT запись
v=DKIM1; k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClbILChI3QrjYgjppos6IU6Q2DhPUxUcx6/U69OYV/JzoS0ddr+VrxKTpPOwfbW4SIdXWLlMDxvqfSO2CnuIUwRPVISB++NKHa42j3DjAAYxxtlC8ZjfGyBKisjOROHayKLcwhJU2ihY3ZHQQf/bcGJzcn45ETZZ1F0g7SLbEWoQIDAQAB
Теперь необходимо проверить корректность отправки.
Запускаем просмотр логов
tail -f /var/log/maillog
и отправляем письмо себе на другую почту. И видим в логе
Jun 27 17:59:07 email opendkim[2866]: 66F21160105: DKIM-Signature field added (s=email, d=srv-adm.ru)
5. Настройка SFP-Записи
SPF — это DNS-запись, содержащая список ваших доверенных серверов, с которых может отправляться почта вашего домена, и сведения о механизме обработки писем, отправленных с других серверов. Корректная настройка SPF позволит снизить вероятность рассылки спама злоумышленниками от вашего имени.
Идём в панель управления dns и добавляем новую TXT запись.
6. Настройка DMARC
Domain-based Message Authentication, Reporting and Conformance (идентификация сообщений, создание отчётов и определение соответствия по доменному имени) или DMARC — это техническая спецификация, созданная группой организаций, предназначенная для снижения количества спамовых и фишинговых электронных писем, основанная на идентификации почтовых доменов отправителя на основании правил и признаков, заданных на почтовом сервере получателя (Wiki). То есть почтовый сервер сам решает, хорошее сообщение или плохое (допустим, исходя из политик выше) и действует согласно DMARC записи.
Для настройки DMARC на самом почтовом сервере необходимо создать ящик dmarc@srv-adm.ru.
Добавляем TXT записи в DNS. Запись будет такая:
v=DMARC1; p=none; rua=mailto:dmarc@srv-adm.ru
7. Финальная проверка работоспособности почтового сервера
Важно: Перед это проверкой, желательно подождать некоторое время, пока обновятся все записи DNS, которые мы сделали. Иногда обновление DNS занимает до суток.
Теперь нам необходимо убедиться, что наш почтовый сервер настроен правильно, и другие почтовые сервисы не будут помечать ваши письма, как спам.
Осуществлять проверку, мы будем на сайте https://www.mail-tester.com
Копируем данный адрес, и пишем письмо
Совет: Сайт иногда, если вы в теме или теле письма укажите слово “тест” “проверка” и тп – может посчитать это за ошибку, поэтому пишите что-то нейтральное.
После отправки письма – нажимаем на сайте “Проверить”
По итогу у нас должно получиться следующее
Если у вас иной результат, сайт покажет, какие именно ошибки.
Их обязательно нужно устранить. Без устранения ошибок – не рекомендуется использовать почтовый сервер.
Так же обратите внимание, что данный сайт в сутки позволят выполнить бесплатно проверку только 5 раз, имейте это ввиду.
В Следующей статье рассмотрим установку WEB-Интерфейса roundcube