В предыдущих материалах мы рассмотрели ряд действенных рекомендаций для борьбы со спамом в электронной почте. В данном руководстве мы объясним, как интегрировать OpenDMARC с сервером SMTP Postfix на CentOS/RHEL для предотвращения подделки электронной почты и спама. OpenDMARC представляет собой фильтр DMARC с открытым исходным кодом, предназначенный для MTA (агентов транспортировки сообщений, то есть SMTP-серверов).
Содержание статьи
- 1 DMARC (Domain-based Message Authentication, Reporting & Conformance) — это протокол, который помогает защищать домены от подделки и фишинга, обеспечивая защиту электронной почты. Он позволяет владельцам доменов устанавливать политики проверки подлинности для входящих писем, а также получать отчёты о попытках использования их домена в мошеннических целях.
- 2 Пример подделки электронной почты.
- 3 Предварительные требования
- 4 Установите и настройте OpenDMARC на системе CentOS/RHEL.
- 5 Подключение OpenDMARC к SMTP-серверу Postfix.
- 6 Проверка работоспособности OpenDMARC.
- 7 Проверка OpenDMARC через Telnet
- 8 Интеграция Amavis и Postfix с использованием Milter.
- 9 Заключение
DMARC (Domain-based Message Authentication, Reporting & Conformance) — это протокол, который помогает защищать домены от подделки и фишинга, обеспечивая защиту электронной почты. Он позволяет владельцам доменов устанавливать политики проверки подлинности для входящих писем, а также получать отчёты о попытках использования их домена в мошеннических целях.
DMARC (Аутентификация сообщений на основе домена, отчетность и соответствие) — это стандарт интернета (RFC 7489), который помогает владельцам доменов защищать свои имена от использования злоумышленниками для фальсификации электронной почты. Ранее без DMARC злоумышленники могли легко подделывать адреса отправителей, используя доменные имена других пользователей.
Если владелец домена настроил DNS-запись DMARC для своего доменного имени, а почтовый сервер получателя поддерживает проверку DMARC, злоумышленникам нужно будет пройти проверку SPF или DKIM, чтобы успешно завершить проверку DMARC. В случае, если проверка DMARC не проходит, фальсифицированное сообщение может быть отклонено, и пользователи его не увидят. Пройти проверку SPF или DKIM для злоумышленника достаточно сложно, если только почтовый сервер владельца домена не был взломан.

Пример подделки электронной почты.
Мне пришло письмо от спамера с требованием выкупа, при этом в адресе отправителя указано winsaaluminyumankara.com. Информация о домене winsaaluminyumankara.com доступна для общественности. Очевидно, что спамер не является владельцем этого доменного имени.

На сайте winsaaluminyumankara.com настроена запись DMARC.

После этого я изучил заголовки электронного письма, которые указывают на то, что SPF не прошел. Подпись DKIM отсутствует. В результате проверка DMARC также оказалась неудачной. Это письмо является подделкой.
Это свидетельствует о том, что злоумышленники не ограничиваются только крупными брендами для создания поддельных электронных писем; любое доменное имя в интернете может стать мишенью для плохих актеров. К сожалению, для данного доменного имени установлена политика DMARC — p=none, что означает, что принимающий почтовый сервер не предпринимает никаких особых действий, если проверка DMARC не удалась. Если бы политика была p=reject, мой SMTP-сервер Postfix отклонил бы такое письмо с использованием OpenDMARC.
PayPal и Facebook внедрили политику отказа от DMARC для своего домена.
Мой почтовый сервер, оснащенный OpenDMARC, способен блокировать фальшивые письма, направленные на подделку Paypal или Facebook. В таблице приведено множество других доменных имен, которые также применили политику отклонения DMARC.
Поставщик защищенной электронной почты Protonmail применяет Postfix и OpenDMARC для проверки DMARC на поступающих сообщениях. Я расскажу вам, как реализовать аналогичную функциональность на вашем собственном SMTP-сервере с использованием Postfix.
Предварительные требования
Данный учебник адресован поставщикам почтовых ящиков и администраторам почтовых серверов, с целью защиты пользователей от мошенничества, связанного с подделкой электронных писем. Если вы являетесь владельцем доменного имени и хотите предотвратить его использование злоумышленниками, настоятельно советую ознакомиться с этой статьей, чтобы научиться создавать записи DMARC и анализировать отчеты DMARC. Рекомендую также прочитать материал, если у вас есть вопросы по поводу DMARC.
Перед настройкой OpenDMARC необходимо запустить службу проверки DKIM на почтовом сервере. OpenDMARC следует использовать совместно с OpenDKIM. Если вы применяете Amavis для подписи и проверки DKIM, рекомендуется перейти на OpenDKIM, так как OpenDMARC не может считывать результаты проверки DKIM от Amavis. Полное удаление Amavis не требуется; достаточно отключить DKIM в Amavis и затем установить и настроить OpenDKIM.
Если вы не планируете переходить на OpenDKIM, то необходимо настроить интеграцию Amavis с Postfix с использованием интерфейса milter, что будет подробно описано в конце данной статьи.
Установите и настройте OpenDMARC на системе CentOS/RHEL.
OpenDMARC — это программа с открытым исходным кодом, предназначенная для выполнения проверок и составления отчетов по DMARC. Установить её можно на CentOS/RHEL через репозиторий EPEL.
sudo dnf install epel-release sudo dnf install opendmarc
sudo systemctl start opendmarc
Активируйте автоматический запуск при старте системы.
sudo systemctl enable opendmarc
OpenDMARC работает на 127.0.0.1:8893. Используйте следующую команду для проверки его статуса.
systemctl status opendmarc
●opendmarc.service - Служба аутентификации доменных сообщений, обеспечения отчетности и соблюдения стандартов DMARC (Milter) Загружен: успешно загружен (/usr/lib/systemd/system/opendmarc.service; активирован; предустановлено производителем: отключено) Статус: активен.работоспособен с Вск 2020-03-08 23:52:59 EDT; 1мин 4с назад Документы: man:opendmarc(8) man:opendmarc.conf(5) man:opendmarc-import(8) man:opendmarc-reports(8) http://www. trusteddomain. org/opendmarc/ Главный PID: 19987 (opendmarc) Задачи: 3 (лимит: 5047) Память: 1.1M CGroup: /system. slice/opendmarc.service └─19987 /usr/sbin/opendmarc - c /etc/opendmarc.conf - P /var/run/opendmarc/opendmarc. pid
После этого внесите изменения в главный файл конфигурации, используя текстовый редактор.
sudo nano /etc/opendmarc.conf
Обнаружьте следующую строку:
# AuthservID name
По умолчанию OpenDMARC использует имя хоста MTA в качестве AuthservID, однако рекомендуется выбрать другое название для службы аутентификации. Это связано с тем, что Amavisd-new заменит заголовок результатов аутентификации, который добавляет OpenDMARC. Вы можете изменить его на альтернативное имя, что значительно упростит вам отслеживание того, какая программа добавляет какой заголовок результатов аутентификации.
AuthservID OpenDMARC
Добавьте следующую строку. Замените имя хоста на фактическое имя вашего хоста Postfix. Это указывает OpenDMARC доверять результатам аутентификации с mail.yourdomain.com в ID. Данная настройка необходима, если вы используете OpenDKIM для проверки DKIM. Если имя хоста Postfix отсутствует в списке TrustedAuthservIDs, OpenDMARC не будет учитывать заголовок Authentication-Results, созданный OpenDKIM.
TrustedAuthservIDs mail.yourdomain.com
После этого отыщите следующую строку.
# IgnoreAuthenticatedClients false
Установите значение на true, чтобы игнорировать SMTP-клиентов, которые прошли успешную аутентификацию через SMTP AUTH. Это касается также настольных и мобильных почтовых клиентов, отправляющих исходящие сообщения через порт 587.
IgnoreAuthenticatedClients true
Затем отыщите данную строку:
# RejectFailures false
По умолчанию OpenDMARC не отклоняет сообщения, не соответствующие проверке DMARC, даже если для домена задана политика p=reject. Если вы хотите, чтобы такие письма отклонялись при установленной политике p=reject, раскомментируйте соответствующую строку и замените false на true.
RejectFailures true
Определите следующую строку.
# RequiredHeaders false
RequiredHeaders true
Это приведёт к отклонению сообщений, не соответствующих требованиям заголовков электронной почты, установленным в RFC5322. Например, если входящее сообщение не содержит заголовка From: или заголовка date:, оно будет отклонено. Также будет отклонено поле From:, из которого невозможно извлечь имя домена.
По умолчанию OpenDMARC на CentOS/RHEL игнорирует результаты SPF, содержащиеся в заголовках писем, и проводит проверки SPF самостоятельно. Это управляется двумя параметрами.
SPFIgnoreResults true SPFSelfValidate true
Если вы хотите использовать альтернативный сервис проверки SPF на своем почтовом сервере, сообщите OpenDMARC о необходимости доверять SPF-результатам в заголовках электронной почты и осуществлять проверки SPF только в тех случаях, когда результаты SPF в заголовках отсутствуют.
SPFIgnoreResults false SPFSelfValidate true
Сохраните файл и закройте его. После этого перезапустите OpenDMARC, чтобы изменения начали действовать.
sudo systemctl restart opendmarc
Подключение OpenDMARC к SMTP-серверу Postfix.
При использовании OpenDKIM
Измените главный конфигурационный файл Postfix.
sudo nano /etc/postfix/main.cf
Если вы воспользовались моим руководством по настройке DKIM на CentOS 8 или RHEL 8, то в этом файле должны присутствовать следующие строки. OpenDKIM работает на 127.0.0.1:8891.
# Конфигурация Milter milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters
Теперь вам необходимо подключить сокет OpenDMARC, чтобы Postfix мог взаимодействовать с OpenDMARC. (Убедитесь, что он расположен после сокета OpenDKIM.) OpenDMARC прослушивает адрес 127.0.0.1:8893.
# Конфигурация Milter milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891,inet:127.0.0.1:8893 non_smtpd_milters = $smtpd_milters
Сохраните изменения в файле и закройте его. После этого перезапустите Postfix для применения обновлений.
sudo systemctl restart postfix
Если вы применяете Amavis
Если вы применяете Amavis для подписи и верификации DKIM, как это делается в iRedMail, то OpenDMARC не сможет получить результаты проверки DKIM из Amavis. В этом случае рекомендуется установить OpenDKIM для выполнения проверки DKIM подписи.
Установите OpenDKIM через репозиторий EPEL (дополнительные пакеты для Enterprise Linux).
sudo dnf install epel-release sudo dnf install opendkim
Пакет opendkim на CentOS/RHEL по умолчанию функционирует только в режиме проверки, не добавляя подписи DKIM к исходящим сообщениям. Это именно то, что нам требуется, поскольку подписи DKIM будут добавлены Amavis. Необходимо внести изменения в конфигурационный файл OpenDKIM.
sudo nano /etc/opendkim.conf
Определите следующую строку.
KeyFile /etc/opendkim/keys/default. private
Для того чтобы OpenDKIM не подписывал исходящие электронные письма, необходимо закомментировать данную строку, после чего сохранить изменения и закрыть файл.
Измените главный конфигурационный файл Postfix.
sudo nano /etc/postfix/main.cf
Включите следующие строки в конец данного файла, чтобы Postfix мог взаимодействовать с OpenDKIM через milter-протокол. Учтите, что необходимо использовать 127.0.0.1 в качестве адреса, а не localhost.
# Конфигурация Milter milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891,inet:127.0.0.1:8893 non_smtpd_milters = $smtpd_milters
Сохраните файл и закройте его. После этого включите пользователя postfix в группу opendkim.
sudo gpasswd - a postfix opendkim
Перезапустите почтовый сервис postfix.
sudo systemctl restart postfix
Теперь мы можем активировать службу opendkim.
sudo systemctl start opendkim
И настроить автоматический запуск при старте системы.
sudo systemctl enable opendkim
Проверка работоспособности OpenDMARC.
Теперь отправьте письмо с другого электронного адреса на ваш доменный адрес. Затем проверьте заголовки письма. Если OpenDMARC функционирует корректно, вы увидите результаты проверки DMARC, как указано ниже.
Authentication-Results: OpenDMARC; dmarc=pass (p=none dis=none) header. from=gmail.com
Я направил письмо с аккаунта Gmail на свой доменный адрес, и оно успешно прошло проверку DMARC. Если этот заголовок отсутствует, пожалуйста, проверьте журналы почтовой системы.
sudo nano /var/log/maillog
Ниже вы найдете нечто похожее, что указывает на то, что OpenDMARC функционирует корректно.
opendmarc[26495]: 61DAA3EA44: gmail.com pass
Если вам попалось это сообщение.
ignoring Authentication-Results at 1 from mail.linux16.ru
Это указывает на то, что OpenDMARC не учитывает результаты проверки SPF и DKIM, что приводит к его неработоспособности. Чтобы это исправить, добавьте следующую строку в файл /etc/opendmarc.conf и перезапустите OpenDMARC.
TrustedAuthservIDs mail.yourdomain.com
Если вы измените значение параметра myhostname в Postfix, обязательно внесите новый хостнейм в TrustedAuthservIDs. Несколько хостнеймов можно указать, разделяя их запятой.
TrustedAuthservIDs mail.yourdomain.com, mail2.yourdomain.com
Проверка OpenDMARC через Telnet
Вы можете воспользоваться telnet для подмены доменного имени, например paypal.com. Для начала выполните команду, чтобы установить соединение с портом 25 вашего почтового сервера.
telnet mail.yourdomain.com 25
После этого выполните указанные шаги для отправки изменённого электронного письма.
HELO mail.paypal.com 250 mail.yourdomain.com MAIL FROM:[email protected]> 250 2.1.0 Ok RCPT TO:[email protected] 250 2.1.5 Ok DATA 354 End data with . From: [email protected] To: [email protected] Subject: Пожалуйста, обновите ваш пароль. Нажмите эту ссылку, чтобы обновить ваш пароль. . 550 5.7.1 отклонено политикой DMARC для paypal.com quit
Мой почтовый сервер не принял это сообщение, так как оно не прошло проверку DMARC, а Paypal установил политику p=reject.
Обратите внимание: при настройке политики DMARC домена на p=quarantine, milter OpenDMARC будет помещать подозрительные электронные письма в очередь Postfix на неопределенное время. Постмастер может вывести список всех сообщений в очереди, используя команду postqueue — p, а также воспользоваться утилитой postsuper для освобождения сообщений из этой очереди.
Интеграция Amavis и Postfix с использованием Milter.
Как указано в разделе предварительных условий, я советую осуществить переход с Amavis на OpenDKIM. Однако, если вы не планируете менять систему, необходимо настроить интеграцию Amavis с Postfix через интерфейс milter, чтобы OpenDMARC мог получать результаты проверки DKIM от Amavis.
Установите amavisd-milter на систему CentOS/RHEL.
sudo dnf install amavisd-milter
Запустите сервис.
sudo systemctl start amavisd-milter
Активируйте автоматический запуск при старте системы.
sudo systemctl enable amavisd-milter
Amavisd-milter осуществляет прослушивание Unix-сокета, расположенного по адресу /run/amavisd/amavisd-milter. sock. Внесите изменения в главный файл конфигурации Postfix.
sudo nano /etc/postfix/main.cf
Вставьте указанные строки в конец файла. Убедитесь, что Unix-сокет amavisd-milter расположен перед TCP-сокетом OpenDMARC.
# Конфигурация Milter milter_default_action = accept milter_protocol = 6 smtpd_milters = unix:/run/amavisd/amavisd-milter. sock, inet:127.0.0.1:8893 non_smtpd_milters = $smtpd_milters
Кроме того, прокомментируйте следующую строку, чтобы Postfix не отправлял входящие письма в Amavis дважды.
content_filter = smtp-amavis:[127.0.0.1]:10024
Сохраните файл и закройте его. Далее добавьте пользователя postfix в группу amavis, чтобы обеспечить доступ Postfix к Unix-сокету Amavis.
sudo gpasswd - a postfix amavis
Исходящие сообщения, отправленные пользователями с подтвержденной аутентификацией, не следует направлять в Amavis через интерфейс milter, так как в этом случае не будет добавлена подпись DKIM. Для добавления подписи DKIM они должны использовать 127.0.0.1:10026, как это делалось ранее. Необходимо внести изменения в файл master.cf Postfix.
sudo nano /etc/postfix/master.cf
Найдите элемент submission. Он должен выглядеть именно так, если вы следовали моему руководству по Amavis на CentOS/RHEL.
submission inet n - y - - smtpd - o syslog_name=postfix/submission - o smtpd_tls_security_level=encrypt - o smtpd_tls_wrappermode=no - o smtpd_sasl_auth_enable=yes - o smtpd_relay_restrictions=permit_sasl_authenticated, reject - o smtpd_recipient_restrictions=permit_mynetworks, 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
Теперь добавьте следующую опцию в конце.
-o smtpd_milters=
submission inet n - y - - smtpd - o syslog_name=postfix/submission - o smtpd_tls_security_level=encrypt - o smtpd_tls_wrappermode=no - o smtpd_sasl_auth_enable=yes - o smtpd_relay_restrictions=permit_sasl_authenticated, reject - o smtpd_recipient_restrictions=permit_mynetworks, 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 -o smtpd_milters=
Это приведет к тому, что служба отправки Postfix полностью прекратит использование мильтера, из-за чего письма, отправленные аутентифицированными пользователями, не будут передаваться в Amavis через интерфейс мильтера. Учтите, что пробел перед знаком равенства (=) добавлять нельзя.
Эту строку также необходимо включить в компонент smtps.
smtps inet n - y - - 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_sasl_type=dovecot - o smtpd_sasl_path=private/auth - o content_filter=smtp-amavis:[127.0.0.1]:10026 -o smtpd_milters=
Сохраните файл и закройте его. Перезапустите Postfix, чтобы изменения начали действовать.
sudo systemctl restart postfix
Теперь OpenDMARC будет в состоянии воспринимать результаты проверки DKIM, предоставленные Amavis, в то время как Amavis продолжит добавлять подпись DKIM для пользователей, прошедших аутентификацию.
Заключение
Надеюсь, что данный учебник оказался для вас полезным в настройке OpenDMARC с сервером SMTP Postfix на CentOS/RHEL, что поможет в борьбе с фальсификацией электронных писем и спамом. Как обычно, если вы сочли эту статью информативной, не забудьте подписаться на нашу бесплатную рассылку для получения дополнительных советов и рекомендаций.

