Настройка DKIM, SPF, DMARK. Повышаем уровень доверия к почтовому серверу.

Задачи по настройке DKIM/SPF/DMARK и т.п. довольно распространены на фриланс-сайтах, но в большинстве случаев там все в итоге сводится к настройте мне почтовый сервер для спам рассылок чтобы мои уникальные предложения не попадали в спам. Такие товарищи мне не товарищи и сразу идут лесом, да и кстати сказать, из за них теперь для настройки банального почтового сервера требуется совершать столько приседаний. Чтобы не забыть последовательность действий по настройке почтового сервера письма от которого не будут сразу уходить в спам, я решил написать эту небольшую инструкцию.

 
 
Логотип GITA-DEV

Автор: Черноусов Антон aka Gita-Dev
Опубликовано: 20 Сен 2018 (последние правки 3 месяца)

apt-get cv database dev git install postfix smtp tar yandex

Проверка по спам-листам

Первым делом, проверьте не находится ли IP-адрес вашего сервера в смам-листах и с этого вообще стоит начинать настройку почтового сервера, что бы потом все не переделывать. Пару раз я уже обжигался и мне доставался IP-адрес сильно б/у который забанил Роскомнадзор и он еще и находился во всех известных блэк-листах. Провайдер кстати этот адрес так и не поменял на менее б/у, поэтому пришлось создавать новую виртуалку.

Проверить наличие ip-адреса в блэк-листах можно тут: https://www.dnsbl.info/dnsbl-database-check.php

Проверить на бан от Роскомнадзора можно тут: https://blocklist.rkn.gov.ru/

Проверка основных DNS-записей

Если у вашего почтового сервера не настроены или настроены некорректно MX, A и PTR записи для IP-адреса вашего почтового сервера, то ваше письмо со 99% вероятности попадет в спам или вообще будет отклонено получающим сервером. Почтовые сервера Янедекса и Mail.ru последнее всремя вообще взяли за правило делать вид, что они письмо приняли, но внутренние фильтры его просто удаляют и вам кажется, что почта ушла и была принята принимающим сервером, но на деле ее никто не получит.

Начинаем с проверки MX-записей для домена:

# dig MX gita-dev.ru | grep -v ";" | grep -v "^$"
gita-dev.ru.           3582   IN     MX     10 mail.gita-dev.ru.

Проверяем A-запись для соответствующей MX-записи:

# dig A mail.gita-dev.ru | grep -v ";" | grep -v "^$"
mail.gita-dev.ru.      3599   IN     A      93.170.131.222

И в обратную сторону, проверяем PTR запись для IP-адреса и она должна указывать на DNS-имя сервера:

# nslookup 93.170.131.222 
Server:        8.8.8.8
Address:       8.8.8.8#53

Non-authoritative answer:
222.131.170.93.in-addr.arpa    name = mail.gita-dev.ru.

Настройка DKIM

После того как мы проверили базовые вещи, мы можем переходить к повышению уровня доверия к нашему почтовом у серверу и для этого нам потребуется настроить DKIM. По настройке DKIM есть есть много инструкций и я не буду вдаваться в подробности и скажу лишь, то что этот механизм подразумевает добавление к письму дополнительного заголовка содержащего цифровую подпись которая проверяется по ключу указанному в соответствующей TXT-записи домена. На самом деле, ничего сложного нет, просто следуем представленной ниже инструкции (настройка DKIM для Postfix). Настройку, я как обычно показываю на своем тестовом домене gita-dev.ru и думаю, что вы можете просто изменить этот домен на свой не вдаваясь в особые детали реализации, иначе пошаговое объяснение займет уйму времени.

Устанавливаем необходимые для работы пакеты:

# apt-get install opendkim opendkim-tools

Генерируем ключ для подписи электронной почты и соответствующую DNS-запись:

# mkdir /etc/opendkim/
# opendkim-genkey --bits=1024 -D /etc/opendkim/ -d gita-dev.ru -s mail

Файл конфигурации /etc/opendkim.conf:

Canonicalization relaxed/simple
SyslogSuccess yes
Syslog yes
LogWhy yes
Mode sv
RequireSafeKeys false
KeyTable file:/etc/opendkim/keytable
SigningTable refile:/etc/opendkim/signingtable
X-Header yes

Файлы отвечающие за подпись писем (для каждого домена подпись естественно отдельная).

Файл /etc/opendkim/keytable:

gita-dev.ru gita-dev.ru:mail:/etc/opendkim/mail.private

Файл /etc/opendkim/signingtable:

*@gita-dev.ru gita-dev.ru

Настраиваем OpenDKIM на работу с IP-портом по TCP протоколу (можно оставить и на сокете, но честно говоря с правами доступа лишняя морока) и для этого в файле /etc/default/opendkim меняем параметр:

SOCKET="inet:12345@localhost"

Настраиваем автозапуск DKIM при старте сервера и запускаем сервис:

# systemctl enable opendkim
# systemctl start opendkim

В файле /etc/opendkim/mail.txt находится DNS-запись в формате Bind которую необходимо добавить в панели управления DNS-сервером и в моей панели управления сервером это выглядит следующим образом.

Проверяем, что созданная DNS-запись доступна:

# dig TXT mail._domainkey.gita-dev.ru | grep -v "^;" | grep -v "^$"
mail._domainkey.gita-dev.ru. 3599 IN   TXT    "v=DKIM1; k=rsa; p=MIGfMA0GC.....829KFZe1xFqwIDAQAB"

Проверяем, что закрытый ключ соответствует секретному:

# opendkim-testkey -d gita-dev.ru -s mail -vvv
opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: checking key 'mail._domainkey.gita-dev.ru'
opendkim-testkey: key not secure
opendkim-testkey: key OK

И если все правильно, то переходим к настройке Postfix в конфигурацию которого необходимо добавить параметры:

milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:[127.0.0.1]:12345
non_smtpd_milters = inet:[127.0.0.1]:12345

Не забывайте сменить владельца файлов ключей, в противном случае вы получите ошибку доступа с недостатком прав:

# chown -R opendkim:opendkim /etc/opendkim/

Перезапускаем почтовый сервер и отправляем письмо самому себе:

# /etc/init.d/postfix restart

В теле письма должна появиться DKIM-подпись.

Настройка SPF

SPF - это еще одна TXT запись определяющая каким почтовым серверам стоит доверять, есть много статей посвященным тонкостям настройки SPF у разного рода монстроидальных конструкций, они легко гугляться, но для простых реализаций достаточно вот такой записи:

gita-dev.ru. IN TXT v=spf1 a mx ~all 

Настройка DMARK

В случае в DMARK, все аналогично SPF и вы можете использовать DNS-запись аналогичную представленной ниже:

_DMARC.gita-dev.ru IN TXT v=DMARC1; p=none; rua=mailto:postmaster@gita-dev.ru; ruf=mailto:postmaster@gita-dev.ru; fo=1

Или использовать online-конструктор DMARK (или прочитать официальную RFC для особо тяжелых случаев).

Проверка настроек

Неплохой сервис которым можно проверить, что мы все сделали верно находится по адресу: https://www.mail-tester.com/, он правда ограничен по числу запросов в сутки, поэтому перед проверкой убедитесь, что в вашем письме имеется DKIM-подпись, убедиться можно просто визуально открыв письмо в виде исходного текста. Если вы все сделали согласно инструкции, то уровень доверия будет 10 из 10.

Регистрируемся как сервис рассылки

Зарегистрируйте почтовые ящики на основных публичных сервисах, таких как Яндекс, Mail.ru, Hotmail и Рамблер и попробуем отправить письмо на каждый из этих сервисов. Таким образом мы покажем, что такой домен существует и убедимся, что никакие внутренние алгоритмы этих публичных почтовых серверов нас не блокируют.

Следующим этапом мы регистрируемся в службах постмастера для публичных почтовых серверов и это позволит нам помимо получения статистики по рассылкам получить чуть больше доверия от этого почтового сервиса:

Mail.ru - https://postmaster.mail.ru/

Yandex.ru - https://postoffice.yandex.ru/

Gmail - https://postmaster.google.com/

Регистрация доменов в постмастерах не сложная, но для каждого сервиса индивидуальная. В постмастерах дополнительно можно загрузить автарку для ваших писем на этих почтовых серверах, что улучшит узнаваемость вашего бренда для пользователей которые работают в этих сервисах в браузере.

 

Похожие статьи

Установка и обновление сертификата Let's encrypt для почтового сервера Zimbra

Установка и обновление сертификата Let's encrypt для почтового сервера Zimbra

Эта заметка не претендует на истину в первой инстанции и даже обязательно должна быть дополнена некоторыми механизмами авто-продления сертификатов раз в месяц, но так как последнее время на поддержке у меня не осталось Zimbra-серверов я дополню ее по по возможности. Представленный механизм полностью рабочий и многократно апробировался в реальной боевой среде.


Установка и настройка почтового сервера Zimbra (часть первая - основы установки и настройки)

Установка и настройка почтового сервера Zimbra (часть первая - основы установки и настройки)

Сразу предупреждаю, если вам нужен простой почтовый сервер для приема и отправки почты, то лучше собрать его из OpenSource компонентов и он будет отлично работать, но если вам нужна мощная система коллективной работы с поддержкой LDAP-авторизации, календарей, общих почтовых папок и прочих колабрэйшн плюшек которые имеются в проприетарном почтовом сервере MS Exchange, то вам прямая дорога к внедрению Zimbra


Создание почтового домена в Zimbra и подключение почтового клиента

Создание почтового домена в Zimbra и подключение почтового клиента

Как я уже говорил ранее, у меня опять подвернулся проект связанный с Zimbra Collabration Suite и я решил задокументировать типовые операции по управлению почтовым сервером и некоторые подводные камни и грабли с которыми я сталкиваюсь практически на каждом внедрении этого почтового сервера.


Легковесный почтовый сервер с хранением учетных данных в базе Postgresql

Легковесный почтовый сервер с хранением учетных данных в базе Postgresql

До этого я рассказывал исключительно о монстроидальном комплексе совместной работы под названием Zimbra и вы наверное поняли, что запустить его на небольшом VPS у вас не получится, так как он потребляет просто огромное количество системных ресурсов. Но, что же делать, если требуется собственный почтовый сервер и вы сильно ограничены в системных ресурсах? Правильный ответ, это собрать его самому из Opensource-компонентов и полученный результат удивит вас своей легковесностью.


Простой SMTP-сервер (с авторизацией) для почтовой рассылки в дополнение к Yandex почта для домена

Простой SMTP-сервер (с авторизацией) для почтовой рассылки в дополнение к Yandex почта для домена

Яндекс почта для домена, это неплохое решение для небольшой компании у которой нет технического специалиста для поддержки собственного почтового сервера. Вам не придется заботиться о мониторинге того, что ваш сервер может попасть в черный список и еще ряда факторов, но в этой бочке меда есть одна большая ложка дегтя которая перевешивает все положительные факторы.


Отзывы и комментарии