SCROLL
Среднее время на прочтение: 3 мин.

Настройка DMARC в связке с Postfix.

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

Протокол DMARC предлагает владельцам доменов три варианта действий, чтобы указать, как они хотят относиться к письмам, признанным подозрительными после проверки:

  • p=none : письмо обрабатывается так же, как и без проверки DMARC.
  • p=quarantine : письмо принимается, но помещается в папку, отличную от папки Входящие, например, в папку Спам.
  • p=reject : письмо просто отклоняется.

Схема:

Ниже рассмотрим как установить и настроить OpenDMARC в связке с Postfix.

Установка

apt-get install opendmarc -y

На вопрос настроить базу данных для OpenDMARC с помощью dbconfig-common, можно смело выбрать Нет. Настройка базы данных для OpenDMARC нужна только в том случае, если вы хотите создавать отчёты DMARC для других провайдеров почтовых ящиков.

Настройка

Создаем на всякий случай копию файла конфигурации opendmarc.conf:

cp /etc/opendmarc.conf /etc/opendmarc.conf.orig

Файл конфигурации OpenDMARC /etc/opendmarc.conf должен выглядеть следующим образом:

/etc/opendmarc.conf
# This is a basic configuration that can easily be adapted to suit a standard
# installation. For more advanced options, see openmarc.conf(5) and/or
# /usr/share/doc/opendmarc/examples/opendmarc.conf.sample.

AuthservID                    OpenDMARC
TrustedAuthservIDs            smtp.contoso.ru

PidFile                       /run/opendmarc/opendmarc.pid
PublicSuffixList              /usr/share/publicsuffix/public_suffix_list.dat
Socket                        local:/var/spool/postfix/opendmarc/opendmarc.sock
Syslog                        true
SyslogFacility                mail
UMask                         0002
UserID                        opendmarc

RejectFailures                true
SPFIgnoreResults              true
SPFSelfValidate               true
IgnoreAuthenticatedClients    true
IgnoreHosts                   /etc/opendmarc/ignore.hosts

HistoryFile                   /run/opendmarc/opendmarc.dat

Пояснения:

  • AuthservID — Задает параметр «authserv-id» для использования при создании поля заголовка Authentication-Results: после проверки сообщения. По умолчанию используется имя MTA, обрабатывающего сообщение.
  • TrustedAuthservIDs — Предоставляет список идентификаторов authserv, которые должны использоваться для идентификации полей заголовка результатов аутентификации, содержимое которых следует считать допустимыми входными данными для оценки DMARC. Чтобы предоставить список, разделите значения запятыми.
  • PublicSuffixList — Указывает путь к файлу, содержащему домены верхнего уровня (TLD), которые будут использоваться для вычисления организационного домена для заданного доменного имени, как описано в спецификации DMARC. Если этот параметр не указан, фильтр не сможет определить организационный домен, и будет оцениваться только указанный домен.
  • RejectFailures — Если этот параметр установлен, сообщения будут отклоняться, если они не проходят проверку DMARC, или помечаться как временно отклоненные, если проверка не может быть завершена. По умолчанию ни одно сообщение не будет отклонено или помечено как временно отклоненное, независимо от результатов проверки DMARC. Вместо этого будет добавлено поле заголовка Authentication-Results.
  • SPFIgnoreResults — Заставляет фильтр игнорировать любые результаты проверки SPF в заголовке сообщения. Это полезно, если вы хотите, чтобы фильтр сам выполнял проверку SPF, или если вы не доверяете входящему заголовку.
  • SPFSelfValidate — Заставляет фильтр выполнять резервную проверку SPF самостоятельно, если в заголовке сообщения не удается найти результаты SPF. Если также задано SPFIgnoreResults, фильтр никогда не ищет результаты SPF в заголовках и всегда выполняет проверку SPF самостоятельно, если задано это значение.
  • IgnoreAuthenticatedClients — Если установлено, то фильтр будет игнорировать почту от аутентифицированных клиентов (т. е. тех, кто использовал SMTP AUTH).
  • IgnoreHosts — Указывает путь к файлу, содержащему список имён хостов, IP-адресов и/или выражений CIDR, определяющих хосты, SMTP-подключения которых должны игнорироваться фильтром.

Создаем необходимый каталог /var/spool/postfix/opendmarc для размещения сокета opendmarc и назначаем соотвествующие права на каталог:

mkdir -p /var/spool/postfix/opendmarc

chown opendmarc:opendmarc -R /var/spool/postfix/opendmarc 
chmod 750 -R /var/spool/postfix/opendmarc/

Добавляем пользователя postfix в группу opendmarc:

adduser postfix opendmarc

Белый список OpenDMARC

Если вы хотите разрешить другому серверу пересылать электронные письма через порт 25 вашего основного почтового сервера, на котором работает OpenDMARC, вам следует внести IP-адрес другого сервера в белый список OpenDMARC, поскольку OpenDMARC будет проверять домен From: в пересылаемых электронных письмах.

Создаем каталог OpenDmarc:

mkdir /etc/opendmarc

Создаем файл доверенных хостов /etc/opendmarc/ignore.hosts со следующим содержимым:

/etc/opendmarc/ignore.hosts
127.0.0.1
localhost
Далее в данный файл можно добавлять требуемые IP-адреса или разрешенные домены.

По завершению настройки, перезагружаем службу OpenDMARC:

systemctl restart opendmarc

Подключение OpenDMARC к Postfix

В файле конфигурации /etc/postfix/main.cf добавляем следующие строки:

/etc/postfix/main.cf
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:opendmarc/opendmarc.sock
non_smtpd_milters = $smtpd_milters

Если уже настроен OpenDKIM, то в файле /etc/postfix/main.cf должны быть строки, как показано ниже:

/etc/postfix/main.cf
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:opendkim/opendkim.sock,local:opendmarc/opendmarc.sock
non_smtpd_milters = $smtpd_milters

Сохраняем и перезапускаем Postfix, чтобы изменения вступили в силу:

systemctl restart postfix

Тестирование OpenDMARC с помощью Telnet

С помощью telnet можно подменить другое доменное имя, например paypal.com и проверить как отработает DMARC проверка.

telnet mail.yourdomain.ru 25

Затем выполняем следующие действия, чтобы отправить поддельное электронное письмо. (Вводим только отмеченные ниже строки):

HELO mail.paypal.com
250 mail.yourdomain.com
MAIL FROM:<help@paypal.com>
250 2.1.0 Ok
RCPT TO:<someone@yourdomain.com>
250 2.1.5 Ok
DATA
354 End data with .
From:     help@paypal.com
To:       someone@yourdomain.com
Subject:  Please update your password.

Click this link to update your password.
.
550 5.7.1 rejected by DMARC policy for paypal.com

Видим что, почтовый сервер отклонил это письмо, потому что оно не прошло проверку DMARC, а PayPal применил политику p=reject .

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

0 комментариев

Нет комментариев.