- 4 апреля 2022, 18:26
Инструкция для тех, кто хочет детальнее разобраться, как работает 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» — позволяет отправлять ежедневные отчеты на e-mail, пример: «rua=mailto:[email protected]», также можно указать несколько e-mail через запятую без пробелов.
«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).
Не нашли ответ на свой вопрос? Напишите нам