Дополнение для любознательных: работа с DNS-записями

Это теория. Прочитайте этот урок, если хотите лучше понять, как работают DNS-записи, которые вы настроили до этого.

Мы с вами настроили 3 записи. Их настройка снижает вероятность попадания письма в спам: при любых разборах ситуации, когда письмо оказалось в спаме, первым делом проверьте именно настройки этих записей. Как они работают? Какая информация в них содержится? Я использовал удачные описания отсюда и отсюда.

? SPF — определяет, откуда отправляются письма;

? DKIM — подпись для защиты от подделок;

?DMARK — определяет, что делать с подозрительными письмами, которые отправлены с неправильными spf и/или dkim.

Если бы этих механизмов не было, то любой компьютер в сети мог бы отправлять письма от имени любого домена.

SPF (sender policy framework)

Это подпись, содержащая информацию о серверах, которые могут отправлять почту с вашего домена. Наличие SPF снижает вероятность попадания вашего письма в спам.

  • Запись типа txt;
  • Содержит список серверов, которые могут отправлять почту от имени домена (в нашем примере это почта mail.ru и сервис рассылок Unisender);
  • Может включать одиночные сервера или подсети;
  • Может импортировать список с другого домена (это, например, происходит с unisender: мы не знаем все его ip-адреса и в spf даём команду считать его из unisender. Если нужно просто использовать запись с другого домена, не дополняя ее, то лучше всего использовать redirect);
  • У домена может быть только одна spf запись. Это очень частая ошибка в ДЗ!
  • Spf не действует на поддомены, у каждого поддомена должна быть своя spf-запись.

Если интересно, то она расшифровывается так:
v=spf1 ip4:00.00.000.00.0 pinclude:spf.unisender.com ~all

«v=spf1» — версия SPF, обязательный параметр, всегда spf1, никакие другие версии не работают;

«+» — принимать письма (по умолчанию);

«-» — отклонить;

«~» — «мягкое» отклонение (письмо будет принято, но будет помечено как спам);

«?» — нейтральное отношение;

«mx» — включает в себя все адреса серверов, указанные в MXзаписях домена;

«ip4» — позволяет указать конкретный IP-адрес или сеть адресов;

«a» — IP-адрес в A-записи;

«include» — включает в себя хосты, разрешенные SPF-записью указанного домена;

«all» — все остальные сервера, не перечисленные в SPF-записи;

«ptr» — проверяет PTR-запись IP-адреса отправителя (разрешено отправлять всем IP-адресам, PTR-запись которых направлена на указанный домен) (не рекомендуется к использованию согласно RFC 7208);

«exists» — выполняется проверка работоспособности доменного имени;

«redirect» — указывает получателю, что нужно проверять SPF запись указанного домена, вместо текущего домена (redirect:spf.example.com).

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

Посмотреть вашу spf можно тут:

https://easydmarc.com/tools/spf/

DKIM (Domain Keys Identified Mail)

Это цифровая подпись, подтверждающая подлинность отправителя и гарантирующая целостность доставленного письма. Подпись добавляется в служебные заголовки письма и незаметна для пользователя. DKIM хранит 2 ключа шифрования — открытый и закрытый. С помощью закрытого ключа формируются заголовки для всей исходящей почты, а открытый ключ как раз добавляется в DNS записи в виде TXT файла.

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

Записей DKIM может быть несколько — например, если вы пользуетесь одновременно сервисом Unisender и при этом отправляете письма через biz.mail.ru, у вас будет 2 записи 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=*» (все сервисы). По умолчанию «*»;
«;» — разделитель.

Посмотреть записи для своего домена можно здесь:

https://easydmarc.com/tools/dkim/

DMARC (Domain-based Message Authentication, Reporting and Conformance)

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

Пример записи DMARC (не имеет значения, какими сервисами для рассылки вы пользуетесь):

v=DMARC1; p=reject; sp=reject; ruf=mailto:[email protected]; fo=1

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

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

Посмотреть запись можно здесь:

https://easydmarc.com/tools/dmarc/

Немного иллюстраций

1. Посмотреть, как именно для почтовых серверов выглядят DNS-записи (обновились ли записи, которые вы отредактировали) можно при помощи сервиса http://dnstools.fastnext.com/

2. Если написать письмо себе на любой адрес gmail.com, а потом выбрать в меню опцию «Показать оригинал» можно увидеть письмо целиком, с так называемыми техническими заголовками. Уже на этом этапе вы увидите, как прошли проверки.

 

Вот так это выглядит:

Если затем вставить эту абракадабру в сервис https://toolbox.googleapps.com/apps/messageheader/analyzeheader, то можно увидеть, пройдена ли проверка spf (spf PASS) и DIKIM (DIKIM PASS).

Артем Овсянников
Артем Овсянников
Преподаватель

Подпишитесь на рассылку и получите полезный гайд в подарок!

Раз в неделю присылаем интересные материалы, анонсы курсов и вебинары для НКО