Как работает проверка
Наш сервер запрашивает у публичного резолвера Cloudflare записи MX и TXT домена, TXT-запись в _dmarc, ключи DKIM, адреса первых шести почтовых серверов и записи SPF каждого include, но не более 20. К самим почтовым серверам он не подключается. Затем каждая запись разбирается по правилам своего стандарта: SPF (RFC 7208), DMARC (RFC 7489) и DKIM (RFC 6376).
SPF говорит, какие серверы могут отправлять почту, DKIM подписывает каждое письмо, а DMARC связывает их с адресом, который люди видят в строке From, и сообщает получателям, что делать, если не прошло ни то, ни другое. Крупные почтовые сервисы проверяют все три, поэтому письма домена без них часто попадают в спам.
Пример
Магазин на example.com отправляет почту через Google Workspace и сервис рассылок. Его запись SPF — «v=spf1 include:_spf.google.com include:servers.mcsv.net ~all»: два include, каждый из них — один запрос DNS, плюс то, что они включают, — гораздо меньше 10. Его запись DMARC — «v=DMARC1; p=none; rua=mailto:[email protected]», поэтому отчёты приходят, но поддельная почта всё равно доставляется. Когда после нескольких недель отчёты показывают только собственную почту магазина, он меняет p=none на p=quarantine.
Вопросы
Что такое запись MX?
Запись MX указывает сервер, который принимает e-mail для домена, и числовой приоритет. Отправители сначала пробуют наименьший номер. У домена может быть несколько записей MX для резервирования или распределения нагрузки; если их нет, отправители пробуют собственный адрес домена.
Чем отличаются SPF, DKIM и DMARC?
SPF перечисляет серверы, которым разрешено отправлять почту от имени домена. DKIM добавляет к каждому письму подпись, которую получатели проверяют открытым ключом в DNS. DMARC требует, чтобы хотя бы одна из этих проверок прошла для домена в адресе From, и сообщает получателям, что делать с письмами, не прошедшими проверку: ничего, отправить в спам или отклонить.
Что означает p=none в DMARC?
p=none означает только наблюдение: получатели присылают отчёты на адрес rua, но письма, не прошедшие проверку, доставляют как обычно. Это правильный первый шаг: так вы увидите, какие сервисы отправляют почту от имени вашего домена. Когда отчёты покажут, что ваша собственная почта проходит проверку, переходите на p=quarantine, а затем на p=reject.
Что такое лимит SPF в 10 запросов DNS?
Проверка записи SPF может потребовать не более 10 запросов DNS. Каждый include, a, mx, ptr, exists и redirect считается за один, включая те, что находятся внутри подключённых записей. Если больше 10, получатели останавливаются с постоянной ошибкой, и SPF не проходит для всей вашей почты. Удалите include, которые вам больше не нужны, или замените один из них диапазонами ip4 и ip6, которые за ним стоят.
Чем должен заканчиваться SPF: ~all или -all?
Оба защищают домен. -all требует отклонять почту с серверов, не указанных в записи; ~all — принимать её, но считать подозрительной. При включённом DMARC получатели в любом случае следуют политике DMARC, поэтому чаще выбирают ~all; -all подходит домену, который вообще не отправляет почту.