DMARK, DKIM и SPF dns записи. Защита почтового сервера от спама.
SPF (Sender Policy Framework)
Запись SPF – определяет, каким серверам разрешено отправлять электронную почту от имени вашего домена. Она содержит в себе информацию о серверах, уполномоченных отправлять электронную почту от имени вашего домена. Если любой другой сервер попытается отправить электронное письмо от имени вашего домена, он будет отклонен как неавторизованный отправитель. Для одного домена может быть только одна SPF запись. Для каждого субдомена нужна своя отдельная SPF запись.
Как это работает.
Вы записываете ip адреса ваших почтовых серверов, которым разрешено отправлять почту от имени вашего домена. Принимающий почтовый сервер выполняет DNS-запрос к домену отправителя на предмет наличия SPF-записи.
– Если запись SPF отсутствует, то аутентификация не проходит и сообщение не доставляется.
– Если запись SPF есть, то принимающий сервер проверяет наличие в ней разрешенных IP-адресов на имя хоста, указанное в записи SPF.
- Если IP-адреса не указаны, то аутентификация будет провалена.
- Если IP-адрес сервера отправителя совпадает с IP-адресом, указанным в SPF записи, письмо будет доставлено.
Пример записи SPF.
Название записи | Тип | Значение | Описание |
Ваш домен. Так же может подставляться “@” или оставаться пустое поле. | TXT | v=spf1 mx a ip4:10.10.10.10 -all | Типовая SPF запись |
@ | TXT | v=spf1 mx a ip4:10.10.10.10 include:_spf.google.com | Ваш почтовый сервер и все, что перечисленно в SPF записи домена Google.com |
Синтаксис SPF.
“v=spf1” — версия SPF, параметр обязательный, несмотря на то, что никакие другие версии не работают.
“+” — принимать письма (значение по умолчанию).
“-” — отклонить.
“~” — «мягкое» отклонение (письмо будет принято, но помечено как спам).
“?” — нейтральное отношение.
“mx” — включает в себя все адреса серверов, указанных в MX-записях домена.
“ip4” — указывает на ip-адрес или сеть адресов.
“a” — ip-адрес в A-записи.
“include” — включает в себя хосты другого домена, разрешенные SPF-записью другого домена.
“all” — все остальные сервера, не перечисленные в SPF-записи.
“ptr” — PTR-запись IP-адреса отправителя (не рекомендуется к использованию согласно RFC 7208).
“exists” — проверка работоспособности доменного имени.
“redirect” — указывает получателю, что нужно проверять SPF запись указанного домена, вместо текущего домена.
DKIM (Domain Keys Identified Mail)
DKIM — Метод аутентификации электронной почты. Основан на криптографии и работает путем размещения публичного ключа в DNS отправителя и добавления цифровой подписи в заголовок отправляемого письма.
С помощью приватного ключа формируются заголовки для всей исходящей почты, а открытый ключ размещается в DNS в виде TXT записи.
При получении письма, подписанного подписью DKIM, принимающий сервер сверяет подпись с бубличным ключем, размещенным в DNS домена от имени которого пришло письмо и принимает решение о том, пропустить это письмо или отклонить или пометить, как подозрительное или спам.
Пример записи DKIM.
Название записи | Тип | Значение |
_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=*” (все сервисы). По умолчанию “*”.
“;” — разделитель.
Проверить вашу DKIM запись вы можете здесь.
DMARC (Domain-based Message Authentication, Reporting and Conformance)
DMARC – это протокол аутентификации электронной почты, который проверяет отправителей электронной почты и предоставляет информацию для принимающих почтовых серверов. На основании полученной информации, принимающие почтовые сервера могут принимать решение о том, принимать ли данное сообщение или отклонить его.
Настраивается только после настройки SPF и DKIM.
Протокол позволяет владельцам доменов устанавливать политики обработки почты на уровне домена, включая настройку приоритетов для проверки сообщений, ответов на отказы и отчеты.
Другими словами, владельцы доменов могут заявить в политике, что любое письмо отправленное от имени их домена должны обладать следующими качествами и параметрами. Если у входящего письма этих качеств и параметров нет – значит оно поддельное, отклоняйте его.
DMARC работает на уровне домена.
DMARC позволяет владельцам доменов определять протоколы аутентификации по которым принимающие почтовые серверы будут проверять сообщение (SPF и DKIM).
Отчеты обратной связи в конфигурации DMARC позволяют принимающим MTA отправлять XML-отчеты на указанный вами адрес электронной почты. Эти отчеты могут содержать агрегированные или криминалистические данные DMARC.
Пример записи DMARC.
Название записи | Тип | Значение |
_dmarc.Ваш домен | TXT | v=DMARC1; p=quarantine; sp=quarantine; aspf=r; pct=100; fo=0 |
Синтаксис 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:postmaster@YourDomain.ru”, можно указать несколько email через запятую без пробелов.
“ruf” — отчеты для писем, не прошедших проверку DMARC.
“fo” служит для генерации отчетов, если один из механизмов сломается.
“fo=0” (используется по умолчанию) — присылать отчет, если не пройден ни один этап аутентификации.
“fo=1” — присылать отчет, если не пройден хотя бы один этап аутентификации.
“fo=d” — присылать отчет, если не пройдена аутентификация DKIM.
“fo=s” — присылать отчет, если не пройдена аутентификация SPF.
Проверить вашу DMARC запись вы можете здесь, здесь или здесь.