Продолжаем настройку почтового сервера Postfix под Arch Linux. В данной записи пойдет речь по настройке OpenDMARC для фильтрации входящих почтовых сообщений.
Устанавливаем пакет OpenDMARC:
pacman -S opendmarc publicsuffix-list
Меняем права запуска. Необходимо сделать override для opendmarc:
systemctl edit opendmarc
Вставляем:
[Service] Group=postfix UMask=0007
Применяем изменения:
systemctl daemon-reload systemctl stop opendmarc rm -f /run/opendmarc/opendmarc.sock systemctl start opendmarc ls -l /run/opendmarc/opendmarc.sock
Делаем бекап конфигурационного файла по умолчанию, и очищаем файл:
cp /etc/opendmarc/opendmarc.conf /etc/opendmarc/opendmarc.conf.old > /etc/opendmarc/opendmarc.conf
Далее открываем файл и добавляем туда базовый конфиг:
# Кто пишет Authentication-Results AuthservID HOSTNAME TrustedAuthservIDs HOSTNAME # Сокет, к которому подключится Postfix (milter) Socket local:/run/opendmarc/opendmarc.sock # Логи Syslog true SyslogFacility mail # Права на сокет UserID opendmarc:postfix UMask 0007 # Public Suffix List (организационные домены) PublicSuffixList /usr/share/publicsuffix/public_suffix_list.dat # --- ВАЖНО ДЛЯ SPF --- # Не доверять SPF-результатам, пришедшим в заголовках, и проверять самим SPFIgnoreResults true SPFSelfValidate true # Чтобы не проверять вашу исходящую почту (через SMTP AUTH) IgnoreAuthenticatedClients true # Режимы реакции: # - false: только добавляет Authentication-Results (мониторинг) # - true: отклоняет письма, которые НЕ прошли DMARC (по политике домена отправителя) RejectFailures true # --- ВАЖНО: карантин не держим --- HoldQuarantinedMessages false
Подготовка /run сокета:
cat >/etc/tmpfiles.d/opendmarc.conf <<'EOF' D /run/opendmarc 0750 opendmarc postfix EOF systemd-tmpfiles --create
Запускаем сервис:
systemctl enable --now opendmarc
Подключаем OpenDMARC в Postfix. Открываем конфиг:
nano /etc/postfix/main.cf
Находим параметр:
smtpd_milters = unix:/run/opendkim/opendkim.sock non_smtpd_milters = $smtpd_milters
Меняем на:
smtpd_milters = unix:/run/opendkim/opendkim.sock, unix:/run/opendmarc/opendmarc.sock non_smtpd_milters = $smtpd_milters
Применяем настройки:
postfix reload
Настраиваем перенос писем не прошедших проверку в спам. Открываем конфиг Dovecot:
nano /etc/dovecot/dovecot.conf
Добавляем в конец файла:
sieve_script dmark_policy_before {
type = before
path = /etc/dovecot/sieve/before.d/10-dmark-to-junk.sieve
}
Открываем файл правил:
nano /etc/dovecot/sieve/10-dmark-to-junk.sieve
Добавляем в содержимое:
require ["fileinto"];
if header :contains "Authentication-Results" "dmarc=fail" {
fileinto "Junk";
stop;
}
Компилируем правила:
sievec /etc/dovecot/sieve/10-dmark-to-junk.sieve
Применяем настройки:
systemctl restart dovecot
Далее настраиваем автостарт сервиса при падении:
mkdir -p /etc/systemd/system/opendmarc.service.d cat > /etc/systemd/system/opendmarc.service.d/restart.conf <<'EOF' [Unit] StartLimitIntervalSec=300 StartLimitBurst=5 [Service] Restart=on-failure RestartSec=5s EOF
Применяем настройки:
systemctl daemon-reload systemctl restart opendmarc