Настройка SPF, DKIM и DMARC без панели для postfix

В предыдущих статьях мы рассказывали о подготовительных работах на сервере и двух способах установки и настройки почтового сервера — с хранением почтовых паролей в файле и в базе данных

Теперь пришло время повысить лояльность почтовых сервисов к письмам, отправляемым с сервера, чтобы они не попадали в спам. Для этого мы настроим несколько дополнительных параметров. 

Настраиваем spf

SPF-запись указывает, с каких серверов может отправляться почта для домена.

Для домена нужно добавить TXT-запись на серверах имён следующего вида:
Имя: ВАШ_ДОМЕН.
Значение: v=spf1 ip4:IP_ПОЧТОВОГО_СЕРВЕРА a mx ~all
Где вместо IP_ПОЧТОВОГО_СЕРВЕРА нужно указать ip вашего сервера.

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

Настраиваем DKIM

DKIM добавляет в заголовки письма цифровую подпись, которая подтверждает подлинность отправителя и гарантирует целостность письма.

Устанавливаем opendkim:

Centos:

yum install opendkim -y

Debian/Ubuntu:

apt install opendkim opendkim-tools -y

Запускаем службу и добавляем ее в автозагрузку:

systemctl start opendkim
systemctl enable opendkim

Создаём директорию, где будут лежать ключи:

mkdir -p /etc/opendkim/keys/mailtest.fvds.ru

Генерируем ключи:

opendkim-genkey --directory /etc/opendkim/keys/mailtest.fvds.ru/ --domain mailtest.fvds.ru --selector dkim

*домен mailtest.fvds.ru нужно заменить на свой домен

Правим права на ключи:

chown -R opendkim:opendkim /etc/opendkim/keys/mailtest.fvds.ru

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

AutoRestart             Yes
AutoRestartRate         10/1h
Umask                   002
Syslog                  yes
SyslogSuccess           Yes
LogWhy                  Yes
Canonicalization        relaxed/simple
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
SigningTable            refile:/etc/opendkim/SigningTable
Mode                    sv
PidFile                 /var/run/opendkim/opendkim.pid
SignatureAlgorithm      rsa-sha256
UserID                  opendkim:opendkim
Socket                  inet:8891@localhost

В файл /etc/opendkim/TrustedHosts вносим наш домен:

*.mailtest.fvds.ru

Файл должен выглядеть таким образом:

127.0.0.1
localhost
*.mailtest.fvds.ru

Открываем файл /etc/opendkim/KeyTable и приводим к такому виду:

dkim._domainkey.mailtest.fvds.ru mailtest.fvds.ru:dkim:/etc/opendkim/keys/mailtest.fvds.ru/dkim.private

Нужно заменить домен на свой и указать ваш путь до приватного ключа.

Правим файл /etc/opendkim/SigningTable и указываем в нём следующие данные:

*@mailtest.fvds.ru dkim._domainkey.mailtest.fvds.ru

Домен также нужно поменять на свой.

Для Debian/Ubuntu указываем порт, на котором будет работать opendkim:

echo 'SOCKET="inet:8891@localhost"' >> /etc/default/opendkim

И добавляем работу с DKIM в настройку postfix:

postconf -e 'milter_default_action=accept'
postconf -e 'milter_protocol=2'
postconf -e 'smtpd_milters=inet:127.0.0.1:8891'
postconf -e 'non_smtpd_milters=inet:127.0.0.1:8891'

Перезапускаем службы для применения настроек:

systemctl restart opendkim
systemctl restart postfix

Теперь нужно разместить публичный ключ на серверах имён домена, узнать его можно в файле /etc/opendkim /keys/mailtes.fvds.ru/dkim.txt:

[root@mailtest ~]# cat /etc/opendkim/keys/mailtes.fvds.ru/dkim.txt
dkim._domainkey    IN    TXT    ( "v=DKIM1; k=rsa; "
     "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPhCR8eKoZBzR1M/4DeSxvdAtToJobrb30ZNMvj3vKSNn5T+StS5IsE0+JsHTOWRbYcn7wgXnigwVFqXch7JIgNHKHp31YS9w80WcNXtsFBIuroiNlGknxmTaH0yvrP9QgSw8Y8xaEZjB1V+CnfuDR9PzkZEujcIyOHGteso5JywIDAQAB" )  ; ----- DKIM key dkim for mailtest.fvds.ru

Запись должна быть следующего вида:
Имя: dkim._domainkey.ВАШ_ДОМЕН.
Значение (подставить свой ключ): v=DKIM1; k=rsa;

p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPhCR8eKoZBzR1M/4DeSxvdAtToJobrb30ZNMvj3vKSNn5T+StS5IsE0+JsHTOWRbYcn7wgXnigwVFqXch7JIgNHKHp31YS9w80WcNXtsFBIuroiNlGknxmTaH0yvrP9QgSw8Y8xaEZjB1V+CnfuDR9PzkZEujcIyOHGteso5JywIDAQAB

 

Пример, как это выглядит в нашей панели управления записями доменов:

Настраиваем DMARC

DMARC — это ещё одна настройка, которая позволяет идентифицировать отправителя и снизить количество спама и фишинга.

На серверах имён нужно разместить TXT-запись со следующим содержанием:
Имя: _dmarc.ВАШ_ДОМЕН.
Значение: v=DMARC1; p=none; aspf=r; sp=none

Вот так это будет выглядеть в DNSmanager:

Теперь при отправлении писем с сервера принимающая сторона не будет расценивать их как спам и ваши сообщения дойдут до адресата.