Skip to main content

Полный и понятный гайд по SPF, DMARC и DKIM

Доброго времени суток, уважаемые!

Сегодня разберем вопросы касательно защиты серверов электронной почты с помощью связки инструментов таких, как: SPF (Sender Policy Framework), DMARC (Domain-based Message Authentication, Reporting and Conformance) и DKIM (Domain Keys Identified Mail).

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

И так, начинаем.

Для того, чтобы прописать необходимые записи с кторыми мы будем работать вам понадобится доступ в консоль управления DNS. Она может быть как локальной (доменной), так и консолью управления на хостинге. Все зависит от вашей конфигурации.



Настраиваем SPF

SPF (Sender Policy Framework) — это специальная подпись, содержащая информацию о серверах, которые могут отправлять письма с вашего домена. Наличие SPF-записи снижает вероятность попадания вашего письма в спам, но стопроцентной грантии не дает!

SPF-запись всегда может быть только одна для одного домена. В одной SPF-записи может быть несколько записей (например, если письма отправляются от нескольких поставщиков услуг электронной почты). Для поддоменов необходимы свои записи.

Пример содержания SPF-записи:
v=spf1 +a +mx -all

Синтаксис SPF:

«v=spf1» — тут указывается версия SPF, обязательный параметр, всегда пишется только spf1 без вариантов;
«+» — принимать письма;
«-» — жесткое отклонение;
«~» — мягкое отклонение (письмо будет принято, но  помечено как спам);
«?» — нейтральное отношение;
«mx» — включает в себя все адреса серверов, указанные в MX-записях домена;
«ip4» — позволяет указать конкретный IP-адрес или сеть IP-адресов;
«a» — IP-адрес в A-записи;
«include» — включает в себя хосты, разрешенные SPF-записью указанного домена;
«all» — все остальные сервера, не перечисленные в SPF-записи;
«ptr» — проверяет PTR-запись IP-адреса отправителя (разрешено отправлять всем IP-адресам, PTR-запись которых направлена на указанный домен) (не рекоммендуется к использованию);
«exists» — выполняется проверка работоспособности доменного имени;
«redirect» — указывает получателю, что нужно проверять SPF-запись указанного домена, вместо текущего домена.

Из-за того, что запись должна быть одна, через параметр include необходимо прописывать все сервера, через которые у вас  отправляется почта.

Пример SPF-записи, если вы пользуетесь одновременно доменным почтовым сервером mail.dlyaprimera.ru и при этом отправляете письма через Google mail:

TXT v=spf1 include:_spf.google.com include:mail.dlyaprimera.ru -all

Ссылка для проверки SPF.

Настраиваем DKIM

DKIM (Domain Keys Identified Mail) — это по сути цифровая подпись, подтверждающая подлинность отправителя и гарантируящая целостность доставленного письма. Эта подпись добавляется в служебные заголовки письма и незаметна для пользователя. DKIM содержит 2 ключа шифрования — открытый и закрытый.

С помощью закрытого ключа формируются заголовки для всей исходящей почты, а открытый ключ как раз добавляется в DNS записи в виде TXT-файла.

Проверка DKIM происходит автоматически на стороне получателя. Если домен в письме не авторизован для отправки сообщений, то письмо может быть помечено подозрительным или помещено в спам, в зависимости от политики получателя.

Записей DKIM может быть несколько — например, если вы пользуетесь одновременно почтовым сервером dlyaprimera.ru и при этом отправляете письма через Google mail, у вас будет 2 записи DKIM с разными селекторами:

для dlyaprimera.ru (селектор — dlyaprimera):
dlyaprimera._domainkey.ваш_домен.
(в некоторых панелях управления можно указывать без вашего домена,
зависит исключительно от вашего хостинга) TXT v=DKIM1; k=rsa;
p=(сгенерированный публичный ключ)


для Gmail (селектор — google):
google._domainkey.ваш_домен. TXT v=DKIM1; k=rsa;
p=(сгенерированный публичный ключ)

Синтаксис DKIM

Обязательные элементы:

«v» — версия DKIM, всегда принимает значение v=DKIM1;
«k» — тип ключа, всегда k=rsa;
«p» — публичный ключ, кодированный в base64.
Необязательные элементы:
«t=y» — режим тестирования. Нужно только для отслеживания результатов;
«t=s» — означает, что запись будет использована только для домена, к которому относится; не рекомендуется, если используются субдомены;
«h» — предпочитаемый hash-алгоритм, может принимать значения «h=sha1» и «h=sha256»;
«s» — тип сервиса, использующего DKIM. Принимает значения «s=email» (электронная почта) и «s=*» (все сервисы). По умолчанию «*»;
«;» — разделитель.

Важно! Некоторые хостинг-центры не поддерживают доменные записи длиннее 255, а то и 200 символов. Тогда вам придется разбить строку переводом.
Некоторые хостинг-центры проставляют кавычки для всех записей самостоятельно — об это можно узнать у своего хостинг-провайдера.

Ссылка для проверки DKIM.



Настраиваем DMARC

DMARC (Domain-based Message Authentication, Reporting and Conformance) — это подпись, которая позволяет принимающему серверу определить, что делать с письмом.

DMARC в работе использует DKIM и SPF. Если отправленное сообщение не прошло проверку DKIM и SPF, то и DMARC проверку тоже не пройдет. А если сообщение успешно прошло хотя бы одну проверку из двух — DKIM или SPF, то DMARC и проверку DMARC сообщение пройдет успешно.

DMARC добавляется только после того, как настроены SPF-записи и DKIM.

Пример содержания записи DMARC:

v=DMARC1; p=reject; sp=reject; ruf=mailto:spam@yourdomain.ru; fo=1

Синтаксис DMARC

«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:spam@yourdomain.ru», также можно указать несколько email через запятую без пробелов.
«ruf» — отчеты для писем, не прошедших проверку DMARC.
Тег «fo» служит для генерации отчетов, если один из механизмов сломается. «fo=0» (используется по умолчанию) — присылать отчет, если не пройден ни один этап аутентификации; «fo=1» — присылать отчет, если не пройден хотя бы один этап аутентификации; «fo=d» — присылать отчет, если не пройдена аутентификация DKIM; «fo=s» — присылать отчет, если не пройдена аутентификация SPF.

Запись DMARC может быть одна для домена и поддоменов, т.к. в ней можно явно указать действия для тега «sp». Если вам требуется специфическая запись для поддоменов, можно создать отдельную запись с наименованием «_dmarc.ваш_поддомен.ваш_домен.».

Ссылка для проверки DMARC.

Вот в принципе и всё, что нужно знать для настройки этих трех параметров при настройке. Воспользуйтесь моей инструкцией и не тратьте кучу времени на чтение полной документации.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *