Ваше сообщение не подписано dkim. Настраиваем SPF, DKIM и DMARC на сервере Hmailserver

С помощью DKIM-подписи получатель письма может удостовериться в том, что оно действительно пришло от предполагаемого отправителя.

Вы можете установить DKIM-подпись для писем, отправляемых с вашего домена: достаточно создать для вашего домена TXT-запись с публичным ключом подписи. Чтобы подписывать письма, которые вы отправляете не через серверы Яндекса, необходима также TXT-запись с секретным ключом. Настраивать её нужно на том сервере, с помощью которого производится отправление писем.

Если вы делегировали домен на Яндекс, DKIM-подпись с публичным ключом будет настроена автоматически. Вы можете просмотреть и отредактировать ее параметры в DNS-редакторе Почты для домена.

Значения публичного и приватного ключей можно получить с помощью (в интерфейсе доступен только публичный ключ). Управлять TXT-записями обычно можно на странице управления DNS на сайте компании, предоставляющей вам услуги DNS-хостинга.

    Получите TXT-запись с публичным ключом в Почте для домена:

    1. В правой колонке страницы найдите раздел Цифровая подпись 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 часов.

Инструкции по настройке DKIM-подписи у некоторых хостинг-провайдеров

reg.ru

RU-CENTER (nic.ru)

masterhost.ru

Домен на sweb.ru

Домен на majordomo.ru

Панель управления https://control.majordomo.ru/

С помощью DKIM-подписи получатель письма может удостовериться в том, что оно действительно пришло от предполагаемого отправителя.

Вы можете установить DKIM-подпись для писем, отправляемых с вашего домена: достаточно создать для вашего домена TXT-запись с публичным ключом подписи. Чтобы подписывать письма, которые вы отправляете не через серверы Яндекса, необходима также TXT-запись с секретным ключом. Настраивать её нужно на том сервере, с помощью которого производится отправление писем.

Если вы делегировали домен на Яндекс, DKIM-подпись с публичным ключом будет настроена автоматически. Вы можете просмотреть и отредактировать ее параметры в Коннекта.

Общая инструкция по настройке DKIM-подписи

    Получите TXT-запись с публичным ключом в настройках Почты:

    1. Перейдите на вкладкуDKIM-подписи .

      Выберите домен, для которого вы хотите настроить DKIM-подпись и нажмите кнопку Копировать .

      Если нужного домена нет в списке, убедитесь, что он подключен и подтвержден .

    Откройте панель управления на сайте компании, предоставляющей вам услуги DNS-хостинга.

    Создайте TXT-запись со следующими значениями полей:

    • Имя - «mail._domainkey» . В некоторых панелях управления DNS для публичного ключа DKIM необходимо также указывать домен, например, «mail._domainkey.yourdomain.tld» .

В этой статье будет рассмотрена настройка цифровой подписи для Вашего домена.

Технология DomainKeys Identified Mail (DKIM) - это метод e-mail аутентификации: к отправленному письму добавляется заголовок DKIM-Signature , в котором содержится зашифрованная информация о домене отправителя. Таким образом, содержимое заголовка DKIM-Signature подтверждает отправителя письма. На стороне получателя подпись автоматически проверяется, после чего для определения репутации отправителя применяются "белые списки " и "черные списки ". После оценки репутации отправителя письма это письмо может быть принято, помещено в папку "Спам ", либо отправлено на дополнительную проверку.

Настройка DKIM при отправке рассылок через хостинг Beget

На хостинге Beget можно настроить DKIM-подпись для следующих способов отправки писем:

Для создания DKIM-подписи для писем, отправляемых средствами PHP mail() , потребуется выделенный IP-адрес - его стоимость составляет 660 руб./год, подключить можно из , в разделе . Далее для настройки DKIM-подписи необходимо написать тикет из раздела , указав в нём домен сайта.

Для создания DKIM-подписи для писем, отправляемых средствами SMTP , необходимо написать тикет из , раздел , указав в нём домен сайта. Настройка DKIM для SMTP возможна только на оплаченных аккаунтах (минимум на месяц по текущему тарифному плану). Настройка DKIM-подписи с нашей стороны возможна только в том случае, когда рассылки отправляются через наш хостинг и почта работает через нас, то есть, в качестве MX записи у домена, будут значения:

mx1.сайт mx2.сайт

Настройка DKIM при отправке рассылок через сторонний сервис (на примере unisender.com)

Рассмотрим внесение нужных записей на примере сервиса unisender.com . Для других сервисов рассылки инструкция будет похожей.

Приветствую, Хабр! В этой статье будет инструкция по настройке DKIM/SPF/DMARC записей. А побудило меня написать эту статью полное отсутствие документации на русском языке. Все статьи на эту тему, которые были мной найдены, были крайне не информативны.

1. DKIM

DKIM (DomainKeys Identified Mail) - это метод e-mail аутентификации, основанный на проверке подлинности цифровой подписи. Публичный ключ хранится TXT записи домена.

Зачем же он нужен?

DKIM необходим для того, чтобы почтовые сервисы могли проверять, является ли отправитель достоверным или нет. Т.е. защищает получателя письма от различных мошеннических писем (которые отправлены с подменой адреса отправителя).

Настройка DKIM подписи и DNS записей

Для это нам необходимо создать пару ключей:

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 - Неизвестно (что, по сути, аналогично отсутствию записи)

2. SPF

SPF (Sender Policy Framework) - расширение для протокола отправки электронной почты через SMTP. SPF определен в RFC 7208 (Wiki). Если простым языком, то SPF - механизм для проверки подлинности сообщением, путем проверки сервера отправителя. Как по мне, данная технология полезна в связке в другими (DKIM и DMARC)

Настройка SPF записей

Примером обычной SPF записи является your.tld. TXT "v=spf1 a mx ~all"
Здесь:
v=spf1 является версией, всегда spf1
a - разрешает отправляет письма с адреса, который указан в A и\или AAAA записи домена отправителя
mx - разрешает отправлять письма c адреса, который указан в mx записи домена
(для a и mx можно указать и другой домен, например, при значении a:example.com , будет разрешена а запись не домена отправителя, а example.com )
Так же можно добавлять и отдельные ip адреса, используя ip4: и ip6: . Например, ip4:1.1.1.1 ip6: 2001:0DB8:AA10:0001:0000:0000:0000:00FB . Еще есть include: (include:spf.example.com), позволяющий дополнительно подключать spf записи другого домена. Это все можно комбинировать через пробел. Если же нужно просто использовать запись с другого домена, не дополняя её, то лучше всего использовать redirect: (redirect:spf.example.com)
-all - означает то, что будет происходить с письмами, которые не соответствуют политике: "-" - отклонять, "+" - пропускать, "~" - дополнительные проверки, "?" - нейтрально.

3.DMARC

Domain-based Message Authentication, Reporting and Conformance (идентификация сообщений, создание отчётов и определение соответствия по доменному имени) или DMARC - это техническая спецификация, созданная группой организаций, предназначенная для снижения количества спамовых и фишинговых электронных писем, основанная на идентификации почтовых доменов отправителя на основании правил и признаков, заданных на почтовом сервере получателя (Wiki). То есть почтовый сервер сам решает, хорошее сообщение или плохое (допустим, исходя из политик выше) и действует согласно DMARC записи.

Настройка DMARC записей

Типичная запись выглядит так: _dmarc.your.tld TXT "v=DMARC1; p=none; rua=mailto:[email protected]"
В ней не предпринимаются никакие действия, кроме подготовки и отправки отчета.

Теперь подробнее о тегах:
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])

Пример отчета

1.1.1.1 1 none your.tld your.tld pass your.tld pass 1.1.1.1 1 none forwarded your.tld your.tld pass your.tld pass


ruf - отчеты писем, не прошедшие проверку DMARC. В остальном все так же, как и выше.

Эпилог

Мы научились настраивать DKIM/SPF/DMARC и противостоять спуфингу. К сожалению, это не гарантирует безопасность в случае взлома сервера или же отправки писем на серверы, не поддерживающие данные технологии. Благо, что популярные сервисы все же их поддерживают (а некоторые и являются инициаторами данных политик).

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

Буду рад конструктивной критике и правкам.

Цель данной статьи: настроить бесплатный почтовый сервер 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 нам понадобиться доступ к 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». Нажмите кнопку и вы получите пару ключей.

Настройка DKIM в Hmailserver

Не забывайте указать 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.