В предыдущих статьях мы рассказывали о подготовительных работах на сервере и двух способах установки и настройки почтового сервера — с хранением почтовых паролей в файле и в базе данных.
Теперь пришло время повысить лояльность почтовых сервисов к письмам, отправляемым с сервера, чтобы они не попадали в спам. Для этого мы настроим несколько дополнительных параметров.
Настраиваем 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/mailtest.fvds.ru/dkim.txt
:
[root@mailtest ~]# cat /etc/opendkim/keys/mailtest.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:
Теперь при отправлении писем с сервера принимающая сторона не будет расценивать их как спам и ваши сообщения дойдут до адресата.