Цель данной статьи: настроить бесплатный почтовый сервер Hmailserver (Windows) так, чтобы письма отправляемые вашим сервером от имени вашего домена не попадали в СПАМ на других серверах, в том числе на MAIL.RU, YANDEX.RU и GMAIL.COM
Имеется корпоративный домен вида domainname.tld и локальный почтовый сервер Hmailserver под Windows. С почтовых адресов домена ведется только деловая переписка, общее количество отправляемых писем не превышает 100 штук в сутки, массовые рассылки отсутствуют как класс.
В последнее время все больше и больше получателей стали жаловаться, что отправляемые нами письма у них попадают в СПАМ. При этом у пользователей MAIL.RU попадание в СПАМ было 100% вне зависимости от содержимого письма.
Я написал письмо в поддержку MAIL.RU. В ответе мне сообщили, что причиной блокировки писем является массовый спам, который отправляется от имени моего домена.
Ответ службы поддержки MAIL.RU
Для того, чтобы настроить SPF, DKIM и DMARC нам понадобиться доступ к NS серверам управляющими записями для вашего домена и доступ к Windows серверу на котором работает Hmailserver.
Напомню, что SPF-запись указывает список серверов, которые имеют право отправлять письма от имени домена.
Чтобы настроить SPF необходимо добавить TXT запись для вашего домена. Для большинства доменов подойдет следующая универсальная запись:
Хост | Тип | Значение |
---|---|---|
domainname.tld | TXT | v=spf1 +a +mx -all |
Опубликовав такую запись для своего домена вы даете четкие инструкции всем почтовым серверам в интернете как поступать с письмами с отправителями из вашего домена. Письма отправленные с серверов, IP адреса которых не указаны в записях A и MX, не являются легитимными и могут получателями трактоваться как SPAM письма.
DKIM-подпись позволяет получателю проверить, что письмо действительно было отправлено с заявленного домена. Для определения отправителя сообщения DKIM добавляет в него цифровую подпись, связанную с именем домена организации. Эта подпись автоматически проверяется на стороне получателя.
При этом используются пары публичных (открытых) и частых (закрытых) ключей шифрования. Открытый ключ указывается в соответствующей TXT записи домена и используется получателями при декодировании подписи, а закрытый ключ используется на стороне почтового сервера для шифрования подписи.
Таким образом, для настройки DKIM нужно сделать следующее:
Самый простой способ сгенерировать пару необходимых нам ключей для DKIM — это воспользоваться сервисом https://port25.com/dkim-wizard/
Поле DomainKey Selector позволяет привязать к одному домену несколько DKIM записей для разных нужд, например если у вас несколько почтовых серверов. У меня только один почтовый сервер и в роли селектора я выбрал просто «mail». Нажмите кнопку и вы получите пару ключей.
Не забывайте указать Selector , который вы назначили при генерации ключа.
Добавьте подобную TXT запись для вашего домена:
Хост | Тип | Значение |
---|---|---|
mail._domainkey.domainname.tld | TXT | v=DKIM1; k=rsa; t=s; p=MIIBIjANBg |
DMARC - это политика действий с пришедшими письмами, у которых в поле From используется публикующий политику домен. DMARC позволяет не только указать, как поступать с такими письмами, но и собрать статистику от всех получателей, поддерживающих серверную часть DMARC.
С помощью DKIM-подписи получатель письма может удостовериться в том, что оно действительно пришло от предполагаемого отправителя.
Вы можете установить DKIM-подпись для писем, отправляемых с вашего домена: достаточно создать для вашего домена TXT-запись с публичным ключом подписи. Чтобы подписывать письма, которые вы отправляете не через серверы Яндекса, необходима также TXT-запись с секретным ключом. Настраивать её нужно на том сервере, с помощью которого производится отправление писем.
Если вы делегировали домен на Яндекс, DKIM-подпись с публичным ключом будет настроена автоматически. Вы можете просмотреть и отредактировать ее параметры в Коннекта.
Получите TXT-запись с публичным ключом в настройках Почты:
Перейдите на вкладкуDKIM-подписи .
Выберите домен, для которого вы хотите настроить DKIM-подпись и нажмите кнопку Копировать .
Если нужного домена нет в списке, убедитесь, что он подключен и подтвержден .
Откройте панель управления на сайте компании, предоставляющей вам услуги DNS-хостинга.
Создайте TXT-запись со следующими значениями полей:
Имя - «mail._domainkey» . В некоторых панелях управления DNS для публичного ключа DKIM необходимо также указывать домен, например, «mail._domainkey.yourdomain.tld» .
В этой статье будет рассмотрена настройка цифровой подписи для Вашего домена.
Технология DomainKeys Identified Mail (DKIM) - это метод e-mail аутентификации: к отправленному письму добавляется заголовок DKIM-Signature , в котором содержится зашифрованная информация о домене отправителя. Таким образом, содержимое заголовка DKIM-Signature подтверждает отправителя письма. На стороне получателя подпись автоматически проверяется, после чего для определения репутации отправителя применяются "белые списки " и "черные списки ". После оценки репутации отправителя письма это письмо может быть принято, помещено в папку "Спам ", либо отправлено на дополнительную проверку.
На хостинге Beget можно настроить DKIM-подпись для следующих способов отправки писем:
Для создания DKIM-подписи для писем, отправляемых средствами PHP mail() , потребуется выделенный IP-адрес - его стоимость составляет 660 руб./год, подключить можно из , в разделе . Далее для настройки DKIM-подписи необходимо написать тикет из раздела , указав в нём домен сайта.
Для создания DKIM-подписи для писем, отправляемых средствами SMTP , необходимо написать тикет из , раздел , указав в нём домен сайта. Настройка DKIM для SMTP возможна только на оплаченных аккаунтах (минимум на месяц по текущему тарифному плану). Настройка DKIM-подписи с нашей стороны возможна только в том случае, когда рассылки отправляются через наш хостинг и почта работает через нас, то есть, в качестве MX записи у домена, будут значения:
mx1.сайт mx2.сайтРассмотрим внесение нужных записей на примере сервиса unisender.com . Для других сервисов рассылки инструкция будет похожей.
С помощью DKIM-подписи получатель письма может удостовериться в том, что оно действительно пришло от предполагаемого отправителя.
Вы можете установить DKIM-подпись для писем, отправляемых с вашего домена: достаточно создать для вашего домена TXT-запись с публичным ключом подписи. Чтобы подписывать письма, которые вы отправляете не через серверы Яндекса, необходима также TXT-запись с секретным ключом. Настраивать её нужно на том сервере, с помощью которого производится отправление писем.
Если вы делегировали домен на Яндекс, DKIM-подпись с публичным ключом будет настроена автоматически. Вы можете просмотреть и отредактировать ее параметры в DNS-редакторе Почты для домена.
Значения публичного и приватного ключей можно получить с помощью (в интерфейсе доступен только публичный ключ). Управлять TXT-записями обычно можно на странице управления DNS на сайте компании, предоставляющей вам услуги DNS-хостинга.
Получите TXT-запись с публичным ключом в Почте для домена:
В правой колонке страницы найдите раздел Цифровая подпись DKIM и нажмите ссылку Показать содержимое записи . Этого раздела может не быть, если DKIM-подпись уже была настроена ранее. В этом случае публичный ключ можно увидеть в значении записи в DNS-редакторе.
Запись состоит из трех частей:
Имя записи («mail._domainkey» ). В некоторых панелях управления нужно указывать полное имя поддомена, например, «mail._domainkey.yourdomain.tld».
Параметры DKIM:
V=DKIM1; k=rsa; t=s; p=MIGfMA0GCSEBtaCOteH4EBqJlKpe...
Параметр p содержит публичный ключ DKIM.
Указание на домен («DKIM key mail for yourdomain.tld» ).
Скопируйте содержимое записи.
Откройте страницу редактирования DNS в панели управления на сайте компании, предоставляющей вам услуги DNS-хостинга.
Создайте TXT-запись со следующими значениями полей:
Имя - «mail._domainkey» . В некоторых панелях управления DNS для публичного ключа DKIM необходимо также указывать домен, например, «mail._domainkey.yourdomain.tld» .
Значение - параметры DKIM с публичным ключом, полученные в Почте для домена.
Например, «v=DKIM1; k=rsa; t=s; p=MIGfMA0GCSEBtaCOteH4EBqJlKpe...» .
Чтобы подписывать письма, отправляемые с серверов, не принадлежащих Яндексу, нужно также (в рамках нашего сервиса это можно сделать только с помощью API Почты для домена). Полученный ключ нужно указать на том сервере, с помощью которого производится отправление писем.
Подождите, пока изменения в DNS вступят в силу. Этот процесс может длиться до 72 часов.
reg.ru
RU-CENTER (nic.ru)
masterhost.ru
Домен на sweb.ru
Домен на majordomo.ru
Панель управления https://control.majordomo.ru/
Приветствую, Хабр! В этой статье будет инструкция по настройке DKIM/SPF/DMARC записей. А побудило меня написать эту статью полное отсутствие документации на русском языке. Все статьи на эту тему, которые были мной найдены, были крайне не информативны.
Openssl genrsa -out private.pem 1024 //генерируем секретный ключ длинной 1024
openssl rsa -pubout -in private.pem -out public.pem //получаем публичный ключ из секретного
Или можно воспользоваться онлайн-сервисом, чего я крайне не советую.
Примером записей является
mail._domainkey.your.tld TXT "v=DKIM1; k=rsa; t=s; p=<публичный ключ>"
Где
mail - селектор. Можно указать несколько записей с разными селекторами, где в каждой записи будет свой ключ. Применяется тогда, когда задействовано несколько серверов. (на каждый сервер свой ключ)
v - версия DKIM, всегда принимает значение v=DKIM1 . (обязательный аргумент)
k - тип ключа, всегда k=rsa . (по крайней мере, на текущий момент)
p - публичный ключ, кодированный в base64. (обязательный аргумент)
t - Флаги:
t=y - режим тестирования. Такие отличают отличаются от неподписанных и нужны лишь для отслеживания результатов.
t=s - означает, что запись будет использована только для домена, к которому относится запись, не рекомендуется, если используются субдомены.
возможные:
h - предпочитаемый hash-алгоритм, может принимать значения h=sha1 и h=sha256
s - Тип сервиса, использующего DKIM. Принимает значения s=email (электронная почта) и s=* (все сервисы) По-умолчанию "*".
; - разделитель.
Так же стоит прописать ADSP запись, которая позволяет понять, обязательно должно быть письмо подписано или нет.
_adsp._domainkey.example.com. TXT "dkim=all"
Значений может быть три:
all - Все письма должны быть подписаны
discardable - Не принимать письма без подписи
unknown - Неизвестно (что, по сути, аналогично отсутствию записи)
Теперь подробнее о тегах:
v - версия, принимает значение v=DMARC1 (обязательный параметр)
p - правило для домена. (Обязательный параметр) Может принимать значения none , quarantine и reject , где
p=none не делает ничего, кроме подготовки отчетов
p=quarantine добавляет письмо в СПАМ
p=reject отклоняет письмо
Тэг sp отвечает за субдомены и принимает такие же значения, как и p
aspf и adkim позволяют проверять соответствиям записям и могут принимать значения r и s , где r - relaxed более мягкая проверка, чем s - strict.
pct отвечает за кол-во писем, подлежащих фильтрации, указывается в процентах, например, pct=20 будет фильтровать 20% писем.
rua - позволяет отправлять ежедневные отчеты на email, пример: rua=mailto:[email protected] , так же можно указать несколько email через пробел (rua=mailto:[email protected] mailto:[email protected])
Пример отчета
Эта статья - лишь инструкция по самостоятельной настройке записей, своего рода документация. Готовых примеров нет намеренно, ведь каждый сервер уникален и требует своей собственной конфигурации.
Буду рад конструктивной критике и правкам.