Настройка почтового сервера на связке Postfix+Dovecot+MySQL+PostixAdmin+Roundcube на Centos 8. Часть 4

Автор: | 17 января, 2020

Продолжаем.

1. Установка и настройка DKIM

DomainKeys Identified Mail (DKIM) — метод E-mail аутентификации, разработанный для обнаружения подделывания сообщений, пересылаемых по email. Метод дает возможность получателю проверить, что письмо действительно было отправлено с заявленного домена. DKIM упрощает борьбу с поддельными адресами отправителей, которые часто используются в фишинговых письмах и в почтовом спаме.

На момент написания статьи в EPEL нет готового пакета OpenDKIM, будем собирать его сами. Собирать буду на рабочем компе под управлением Fedora 31, чтоб не засорять основной сервер. Подготовим среду для сборки, делаем это на рабочем компе и от имени пользователя!!! 

После перезагрузки, скачиваем opendkim-2.*.src.rpm. Качать будем отсюда, заходим и в поиске пишем opendkim. Вот мой результат.

К сожалению, сборка окончится не удачно, будет ошибка:

Это означает, что в chroot нет хватает пакета ‘opendbx-devel’. Попробуем его добавить в chroot. Для этого скачаем пакет и так же попробуем собрать его. Идем на сайт, ищем наш пакет (opendbx) и ставим.

На этот раз, все прошло хорошо, пакет собрался. Теперь его надо установить в chroot, для этого выполняем:

Теперь попробуем собрать opendkim еще раз, но на этот раз надо добавить параметр —no-clean :

На этот раз сборка прошла без проблем:

По этому пути (/var/lib/mock/epel-8-x86_64/result/) будут лежать готовые пакеты. Необходимо скопировать их на наш сервер и установить:

Настроим DKIM:

Немного теории: В основе DKIM лежит ассиметричный алгоритм шифрования. Сообщения подписываются закрытым ключом, который хранится на сервере, а открытый публикуется в TXT-записи в DNS. Для извлечения открытого ключа из публичной записи необходимо «собрать» доменное имя. Оно состоит из нашего домена, обязательной части технологии DKIM — _domainkey, и имени селектора. Т,е. в нашем случае, получится:

selector._domainkey.samara-it.ru

Начнем с генерации ключей. Для этого надо запустить утилиту opendkim-genkey.

где:

—domain — имя домена (samara-it.ru)

—selector — имя селектора (mail)

В результате, получим 2 файла: mail.private — приватный ключ и mail.txt — пример записи в DNS с публичным ключом. Установим необходимые права на файлы:

Теперь надо добавить запись TXT в DNS. Описывать это не буду, у каждого провайдера своя консоль управления. Для проверки воспользуемся этим:

Важно понимать, что вывод должен совпадать с файлом /etc/opendkim/mail.txt.

Настройки OpenDKIM находятся в файле /etc/opendkim.conf. Сделаем бэкап этого файла, создадим пустой файл

и вставим в него следующие:

Теперь добавим строку в файл /etc/opendkim/KeyTable, в котором задается соответствие селектор — домен — закрытый ключ.

Далее, необходимо внести изменения в файл /etc/opendkim/SigningTable, в котором задается соответствия отправителей и селектора, добавим строку:

Правим файл /etc/opendkim/TrustedHosts. Он определяет список внутренних (InternalHosts) и внешних (ExternalIgnoreList) хостов, с которых всю почту надо подписывать, а не проверять. Приводим этот файл к такому виду:

Теперь необходимо указать postfix, что надо отдавать письма на подпись. Для этого добавим строки в конфиг /etc/postfix/main.cf

Пробуем запустить OpenDKIM. Запускаем службу и перезапускаем postfix

Для проверки, напишем и отправим письмо, проверим логи и заголовки письма. Напомню, что логи находятся в файле /var/log/maillog

Обратите внимание на строку: DKIMSignature field added, это значит, что письмо подписано. Проверяем заголовки в пришедшем письме:

С отправкой все отлично. Проверяем как сервер проверяет входящие письма. Для этого напишем себе письмо, например с ящика gmail и смотрим логи в файле /var/log/maillog

Обращаем внимание на строку DKIM verification successful.

На этом считаем, что настройка OpenDKIM закончена.

2. Настройка SPF

Sender Policy Framework (SPF) — расширение для протокола отправки электронной почты через SMTP. SPF-запись защищает от подделки домен и позволяет предотвратить попадание в спам писем, отправленных с ваших адресов. SPF настраивается для адреса, используемого в envelope-from (SMTP конверте). По сути, это просто запись в DNS.

Создадим TXT запись в DNS следующего вида:

Что будет означать что:

+a +mx — использовать адреса сервера из DNS записей A или MX соответственно

~all — если проверка не прошла, то действовать на усмотрение сервера получателя

Для проверки правильности добавление записи в DNS используем запрос:

Теперь научим наш postfix проверять входящие письма на предмет корректности записи SPF от других серверов. Для этого надо установить pypolicyd-spf. На момент написания статьи его нет в EPEL, по этому действуем способом, как описано выше. После установки, настраиваем. Для этого надо добавить следующие строки в конец файла /etc/postfix/master.cf

Обратите внимание, на путь до файла  /usr/libexec/postfix/policyd-spf, в документации (man policyd-spf) указан другой. В файл /etc/postfix/main.cf добавим следующие строки:

Настройки проверки SPF записи определяются в файле /etc/python-policyd-spf/policyd-spf.conf. Приведем его к такому виду:

Более подробно о всех параметрах можно узнать тут:

Обратите внимание на параметры: Reject_Not_Pass_Domains, Whitelist.

Перезапустим Postfix

Проверяем логи.

Все отлично!

3. Настроим DMARC

Domain-based Message Authentication, Reporting and Conformance (DMARC) — это техническая спецификация, созданная группой организаций для борьбы со спамерами, подделывающими адреса отправителей. Она основана на идентификации почтовых доменов отправителя на основании правил и признаков, заданных на почтовом сервере получателя.

Для того, чтобы Postfix мог проводить DMARC проверки для входящей почты, нужно установить пакет OpenDMARC. На момент написания статьи в EPEL нет готового пакета OpenDMARC, будем собирать его сами по технологии, описанного в п.1. После сборки пакета, установим его на сервер и начнем настраивать. Для этого сделаем бэкап файла настроек и создадим пустой файл

и вставим в него следующие:

Более подробно о всех параметрах можно узнать тут:

Теперь необходимо указать postfix, что письма надо проверять на соответствия. Для этого исправим строки в конфиге /etc/postfix/main.cf. Здесь важна последовательность. В начале указывается Socket для подключения к OpenDKIM, затем к OpenDMARC.

Добавим прав на файл, запустим службу OpenDMARC и добавляем ее в автозапуск, и перезапускаем postfix.

Отправляем себе письмо с другого почтового сервера (к примеру gmail) и проверяем логи:

Как видим, все проверки пройдены. Теперь настроим запись в DNS, чтоб принимающие сервера знали о нашем DMARC, добавим запись TXT следующего содержания:

Описание значений можно найти тут