Перейти к содержимому

SPF и DMARC

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

Работает в вашем браузере. Всё, что вы сюда вставляете или бросаете, никуда не загружается.

Примеры

Никаких DNS-запросов, и это нарочно: ваш домен не покидает браузер. Достаньте запись сами: dig TXT example.com +short, dig TXT _dmarc.example.com +short или nslookup -type=TXT example.com.

1 запись · 1 предупреждение

SPFПубликуется на самом домене (хост @)

v=spf1 +a +mx +ip4:203.0.113.10 include:_spf.google.com ptr ~all

#ЧастьЧто значитЕсли совпалоЗапросы
1v=spf1Помечает TXT-запись как SPF версии 1. Должно идти первым. —
2+aПочта с IP-адресов из A/AAAA-записей домена: обычно это ваш веб-сервер. Passразрешено1
3+mxПочта с MX-серверов домена, тех, что принимают вашу почту. Passразрешено1
4+ip4:203.0.113.10Почта с IP-адреса 203.0.113.10. Passразрешено—
5include:_spf.google.comGoogle Workspace: всё, что разрешает SPF-запись _spf.google.com. Passразрешено1
6ptrОбратный DNS: проходит, если IP отправителя указывает обратно на имя внутри этого домена. Passразрешено1
7~allВсё, что не совпало ни с чем выше. SoftFailпринять с пометкой—
DNS-запросы4 из 10
  • Вниманиеptr объявлен устаревшим в RFC 7208: медленный, и многие получатели его пропускают. Перечислите IP или используйте a и mx.
  • Заметка~all: почта откуда-то ещё получает мягкий провал, обычно её принимают с пометкой. Хорошее начало; переходите на -all, когда список полный.
  • Заметка+ — квалификатор по умолчанию, так что +a и a значат одно и то же.
  • ЗаметкаУ каждого include и redirect свои запросы, и они тоже считаются. Этот инструмент нарочно не ходит в DNS, поэтому их не посчитает: проверьте подключённые записи сами.

Как пользоваться

5 шагов
  1. Вставьте TXT-значение во вкладку Разбор: голую запись, в кавычках или целые строки из dig или файла зоны.
  2. Читайте таблицу сверху вниз. SPF проверяет части слева направо и останавливается на первом совпадении, так что порядок важен.
  3. Сначала исправьте всё, что помечено как Ошибка, потом предупреждения.
  4. Нужна запись с нуля? Откройте Собрать SPF или Собрать DMARC, выберите нужное и скопируйте хост и значение в панель DNS.
  5. Проверьте живую запись: dig TXT example.com +short и dig TXT _dmarc.example.com +short (в Windows: nslookup -type=TXT example.com).

Что он делает

1 мин чтения

SPF, DKIM и DMARC — это TXT-записи в вашем DNS. SPF перечисляет серверы, которым можно отправлять почту от имени домена. DKIM публикует открытый ключ, которым проверяют подпись писем. DMARC говорит получателю, что делать, если проверки не прошли, и куда слать отчёты. Подробнее, с игрушкой, — в посте SPF, DKIM и DMARC: что это такое?

Разбор следует RFC 7208 для SPF и RFC 7489 для DMARC. Он отмечает то, из-за чего получатели отбрасывают запись: вторую запись SPF, больше 10 DNS-запросов, неизвестный механизм, отсутствие p=. И то, что формально допустимо, но неразумно: +all, ptr, p=none без адреса для отчётов. Вставьте ключ DKIM (v=DKIM1) — разберёт и его.

DNS он не запрашивает, и это нарочно. Запрос отдал бы ваш домен резолверу, а всё, что вы вводите здесь, остаётся в браузере. В этом же и предел: он считает запросы в той записи, что вы вставили, но не внутри каждого include:. Если вы близки к 10, достаньте эти записи через dig и вставьте их тоже.

DMARC включайте поэтапно. Начните с p=none и адреса rua, две-четыре недели читайте отчёты и добавьте в SPF и DKIM забытых отправителей. Потом p=quarantine (с pct=25, если страшно) и наконец p=reject.

Вопросы

5 вопросов

Что ставить: ~all или -all?

~all — пока вы ещё выясняете, кто отправляет почту от вашего имени, -all — когда список полный. Если DMARC опубликован, большинство получателей смотрят на его политику, а не на голый результат SPF, так что разница меньше, чем кажется. +all не ставьте никогда: он разрешает слать почту от вашего имени кому угодно.

Что делает p=none?

С почтой — ничего: получатели доставляют её как обычно и присылают отчёты о том, что прошло проверку, а что нет. Это безопасный первый шаг, если добавить rua=mailto:…. Без адреса для отчётов вы ничего не отслеживаете.

Можно ли две записи SPF?

Нет. У домена должна быть ровно одна TXT-запись, начинающаяся с v=spf1. Если их две, получатели возвращают permerror и SPF не проходит ни для одного письма. Объедините их: один v=spf1, все include: и ip4:, один all в конце.

Что за лимит в 10 DNS-запросов у SPF?

Проверяя одну запись SPF, получатель сдаётся после 10 DNS-запросов и возвращает permerror. include, a, mx, ptr, exists и redirect стоят по одному, как и каждый такой же внутри подключённых записей. ip4, ip6 и all бесплатны. Уберите сервисы, которыми больше не пользуетесь, или замените include диапазонами IP за ним.

Почему DMARC не проходит, если SPF прошёл?

Потому что DMARC требует ещё и выравнивания (alignment): домен, прошедший проверку, должен совпадать с доменом в адресе From, который видит человек. SPF проверяет адрес для возвратов (Return-Path), а сервисы рассылок и CRM часто подставляют туда свой домен, так что SPF проходит для их домена, а не для вашего. DMARC проходит, когда SPF или DKIM проходит и выровнен, поэтому обычное решение — DKIM-подпись вашим доменом (большинство сервисов дают для этого записи CNAME или TXT) или свой return-path на вашем поддомене. Мягкое выравнивание, оно по умолчанию, принимает любой поддомен вашего домена; aspf=s и adkim=s требуют точного совпадения.

Ещё инструменты на стене