Настраиваем SPF, DKIM и DMARC на сервере Hmailserver
Цель данной статьи: настроить бесплатный почтовый сервер Hmailserver (Windows) так, чтобы письма отправляемые вашим сервером от имени вашего домена не попадали в СПАМ на других серверах, в том числе на MAIL.RU, YANDEX.RU и GMAIL.COM
Исходные данные
Имеется корпоративный домен вида domainname.tld и локальный почтовый сервер Hmailserver под Windows. С почтовых адресов домена ведется только деловая переписка, общее количество отправляемых писем не превышает 100 штук в сутки, массовые рассылки отсутствуют как класс.
В последнее время все больше и больше получателей стали жаловаться, что отправляемые нами письма у них попадают в СПАМ. При этом у пользователей MAIL.RU попадание в СПАМ было 100% вне зависимости от содержимого письма.
Официальное обращение в MAIL.RU
Я написал письмо в поддержку MAIL.RU. В ответе мне сообщили, что причиной блокировки писем является массовый спам, который отправляется от имени моего домена.
Из рекомендаций полученных от MAIL.RU мне стало ясно, чтобы письма отсылаемые нашим сервером не попадали в СПАМ у получателей мне необходимо настроить SPF, DKIM и DMARC.
Необходимые условия
Для того, чтобы настроить SPF, DKIM и DMARC нам понадобиться доступ к NS серверам управляющими записями для вашего домена и доступ к Windows серверу на котором работает Hmailserver.
Как настроить SPF
Напомню, что SPF-запись указывает список серверов, которые имеют право отправлять письма от имени домена.
Чтобы настроить SPF необходимо добавить TXT запись для вашего домена. Для большинства доменов подойдет следующая универсальная запись:
Хост | Тип | Значение |
---|---|---|
domainname.tld | TXT | v=spf1 +a +mx -all |
где:
- domainname.tld — имя вашего домена;
- v=spf1 — обязательный параметр;
- +a — разрешать письма от серверов указанных в A-записи;
- +mx — разрешать письма от серверов указанных в MX-записи;
- -all — блокировать письма с остальных серверов.
Опубликовав такую запись для своего домена вы даете четкие инструкции всем почтовым серверам в интернете как поступать с письмами с отправителями из вашего домена. Письма отправленные с серверов, IP адреса которых не указаны в записях A и MX, не являются легитимными и могут получателями трактоваться как SPAM письма.
Как настроить DKIM
DKIM-подпись позволяет получателю проверить, что письмо действительно было отправлено с заявленного домена. Для определения отправителя сообщения DKIM добавляет в него цифровую подпись, связанную с именем домена организации. Эта подпись автоматически проверяется на стороне получателя.
При этом используются пары публичных (открытых) и частых (закрытых) ключей шифрования. Открытый ключ указывается в соответствующей TXT записи домена и используется получателями при декодировании подписи, а закрытый ключ используется на стороне почтового сервера для шифрования подписи.
Таким образом, для настройки DKIM нужно сделать следующее:
- Сгенерировать пару ключей;
- Добавить открытый (публичный) ключ в TXT запись вашего домена;
- Добавить закрытый (частный) ключ на почтовый сервер Hmailserver.
Генерация пары ключей
Самый простой способ сгенерировать пару необходимых нам ключей для DKIM — это воспользоваться сервисом https://port25.com/dkim-wizard/
Поле DomainKey Selector позволяет привязать к одному домену несколько DKIM записей для разных нужд, например если у вас несколько почтовых серверов. У меня только один почтовый сервер и в роли селектора я выбрал просто «mail». Нажмите кнопку [CREATE KEYS] и вы получите пару ключей.
Настройка DKIM в Hmailserver
Приватный ключ необходимо сохранить на Windows сервер где установлен Hmailserver. Для имени файла ключа я использовал значение mail.domainname.tld.pem, а сам файл сохранил на сервере в папку C:\pmta.
Далее в настройках домена в Hmailserver необходимо включить поддержку DKIM и указать путь к закрытому ключу.
Не забывайте указать Selector, который вы назначили при генерации ключа.
Настройка DKIM подписи домена
Добавьте подобную TXT запись для вашего домена:
Хост | Тип | Значение |
---|---|---|
mail._domainkey.domainname.tld | TXT | v=DKIM1; k=rsa; t=s; p=MIIBIjANBg |
где:
- domainname.tld — имя вашего домена;
- mail в имени хоста — селектор выбранный при генерации ключей и указанный в настройках Hmailserver;
- p=MIIBIjANBg — открытый ключ.
Настройка политики DMARC
DMARC — это политика действий с пришедшими письмами, у которых в поле From используется публикующий политику домен. DMARC позволяет не только указать, как поступать с такими письмами, но и собрать статистику от всех получателей, поддерживающих серверную часть DMARC.
Опубликуйте DMARC-запись с необходимой политикой для домена
Хост | Тип | Значение |
---|---|---|
_dmarc.domainname.tld | TXT | v=DMARC1;p=reject |
где:
- domainname.tld — имя вашего домена;
- v=DMARC1 — обязательный параметр;
- p=reject — политика DMARC.
Проверка работы почтового сервера
После внесения указанных изменений я оправил тестовое письмо:
Как видите все три настройки произведены правильно.
Благодарности
При написании статьи были использованы следующие источники:
Спасибо
>p=MIIBIjANBg — открытый ключ.
Почему у вас открытый ключ такой короткий?
Андрей К. В статье в качестве примера для удобства приведен короткий, а на самом деле он длинный, в частности для почты домена moonback.ru его длина составляет 216 символов.
Привет, ребята. уже где то неделя не могу отправить рекламные письма, все записи на pass, домен рабочий, может кто нибудь скажет что еще проверить?
Я бы ни в коем случае не стал генерировать ключи на стороннем ресурсе. Это нужно делать при помощи OpenSSL на своем сервере. Если приватный ключ попадет на сторону (что неизбежно с чужим ресурсом), то потом от имени вашего мыла может начаться большая кака.