Проверка SPF, DKIM и DMARC

Проверьте почтовые DNS-записи домена: синтаксис и лимит запросов SPF, политику DMARC, ключ DKIM и MX-серверы

Селектор указан в заголовке DKIM-Signature письма (тег s=). Без него проверим популярные селекторы.

Как проверить SPF, DKIM и DMARC домена

Инструмент читает почтовые DNS-записи домена и разбирает их так, как это делает сервер получателя: находит SPF-запись и считает, сколько DNS-запросов потребует её проверка, разбирает политику DMARC по тегам, проверяет открытый ключ DKIM и показывает MX-серверы. Для каждой записи вы получите статус и список конкретных замечаний.

SPF, DKIM и DMARC решают одну задачу — доказать получателю, что письмо действительно отправил ваш домен. Ошибка в любой из записей ведёт к тому, что рассылки и даже обычные письма попадают в спам, а мошенники могут слать письма от вашего имени.

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

  1. 1Введите домен, с которого отправляется почта, например example.ru — без www и адреса ящика. Можно вставить и ссылку на сайт: протокол и путь будут отброшены.
  2. 2Если знаете DKIM-селектор, укажите его во втором поле. Его видно в заголовке DKIM-Signature любого отправленного письма, в теге s=. Без селектора инструмент переберёт популярные: mail, default, dkim, google, selector1, selector2, k1, s1, s2, mailru, smtp, key1.
  3. 3Нажмите «Проверить». Запросы идут к DNS, сам почтовый сервер не затрагивается, проверка занимает несколько секунд.
  4. 4Начните с красных пунктов: это ошибки, из-за которых проверка у получателя завершается с permerror или политика не применяется вовсе.
  5. 5Исправьте записи у DNS-провайдера и запустите проверку снова. Учтите TTL: старое значение может держаться в кэше резолверов до нескольких часов.

Что такое SPF и как его проверить

SPF (RFC 7208) — TXT-запись домена со списком серверов, которым разрешено отправлять почту от его имени. Получатель берёт домен из адреса возврата (envelope-from), находит запись «v=spf1 …» и по очереди сверяет IP отправителя с механизмами. Отдельный тип DNS-записи SPF устарел — публикуется только TXT.

У домена должна быть ровно одна SPF-запись. Если их две — например, одну добавил хостинг, а вторую сервис рассылок, — проверка завершается с permerror. Записи нужно объединить в одну. Длинную запись можно разбить на несколько строк по 255 символов внутри одной TXT-записи: получатель склеит их без пробелов.

Механизмы SPF и их «стоимость» в DNS-запросах
МеханизмЧто делаетСчитается в лимит 10
ip4, ip6Разрешает адрес или подсетьНет
a, mxРазрешает IP из A- или MX-записей доменаДа, по 1
includeПодключает SPF-запись другого доменаДа, плюс всё внутри неё
redirectПередаёт проверку записи другого доменаДа, если в записи нет all
existsПроверяет наличие A-записи, обычно с макросамиДа
ptrОбратная зона DNS; RFC 7208 советует не использоватьДа
allСрабатывает для всех остальных отправителейНет

Лимит 10 DNS-запросов в SPF

RFC 7208 ограничивает проверку SPF десятью DNS-запросами: в лимит входят механизмы include, a, mx, ptr, exists и модификатор redirect — с учётом всех вложенных записей. При превышении получатель возвращает permerror, и SPF перестаёт работать целиком, а не только для лишних сервисов.

Именно здесь чаще всего ломаются SPF-записи: каждый подключённый сервис — почта, CRM, рассылки, сервис обращений — добавляет свой include, а внутри него бывает ещё несколько. Инструмент рекурсивно раскрывает include и redirect, суммирует запросы и показывает дерево вложенности.

  • Удалите include сервисов, которыми больше не пользуетесь.
  • Замените include с постоянными адресами на ip4 и ip6 — они не расходуют лимит.
  • Не используйте ptr и лишние a и mx, если адреса уже перечислены.
  • Отправляйте маркетинговые рассылки с поддомена со своей SPF-записью — у него отдельный лимит.

Окончание записи: -all, ~all, ?all и +all

Механизм all в конце записи задаёт, что делать с письмами с серверов, которых нет в списке. Квалификатор перед ним определяет строгость. Механизмы, записанные после all, никогда не проверяются.

ОкончаниеРезультатОценка
-allfail — письмо не прошло SPFСтрогий вариант, когда все отправители перечислены
~allsoftfail — подозрительное письмоНормально, особенно вместе с DMARC
?allneutral — ничего не утверждаетсяПочти не защищает
+allpass для любого сервераОшибка: разрешает подделку писем
нет all и redirectneutralДобавьте ~all или -all

DMARC: политика и отчёты

DMARC (RFC 7489) публикуется TXT-записью на имени _dmarc.example.ru и связывает SPF и DKIM с адресом в поле From, который видит человек. Письмо проходит DMARC, если SPF или DKIM прошли успешно и их домен выровнен с доменом From. Запись говорит получателю, что делать с письмами, не прошедшими проверку, и куда присылать отчёты.

Безопасный путь внедрения — начать с p=none и тега rua, неделю-две изучать агрегированные отчёты, найти все легитимные источники писем, затем перейти на quarantine и reject. Если на имени _dmarc опубликовано несколько записей, получатели не применяют DMARC вовсе.

Теги DMARC, которые проверяет инструмент
ТегЗначенияЧто означает
pnone, quarantine, rejectПолитика домена; обязательный тег
spnone, quarantine, rejectПолитика для поддоменов, по умолчанию равна p
pct0–100, по умолчанию 100Доля писем, к которым применяется политика
ruamailto:-адресаКуда слать ежедневные агрегированные отчёты
rufmailto:-адресаКуда слать отчёты о сбоях; их отправляют немногие
adkim, aspfr или s, по умолчанию rМягкое или строгое выравнивание доменов

DKIM: селектор и ключ

DKIM (RFC 6376) — цифровая подпись письма. Сервер отправителя подписывает заголовки и тело закрытым ключом, а открытый ключ публикуется в DNS по адресу «селектор._domainkey.домен». Селектор нужен, чтобы у домена могло быть несколько ключей — например, свой у почты и у сервиса рассылок.

Узнать все селекторы домена через DNS нельзя, поэтому инструмент проверяет указанный вами или перебирает популярные. В найденном ключе он измеряет длину RSA-ключа: короче 1024 бит не принимаются по RFC 8301, рекомендуемый размер — 2048 бит. Пустое значение p= означает, что ключ отозван.

Частые вопросы

Как проверить SPF-запись домена?

+

Введите домен в поле выше. Инструмент найдёт TXT-запись, начинающуюся с v=spf1, проверит синтаксис, количество записей, окончание all и посчитает DNS-запросы по всей цепочке include.

Что значит ошибка permerror в SPF?

+

Это постоянная ошибка: запись нельзя корректно проверить. Причины — две SPF-записи, синтаксическая ошибка, больше 10 DNS-запросов или include на домен без SPF-записи. Получатель трактует такое письмо как не прошедшее SPF.

Где найти DKIM-селектор?

+

Откройте исходный текст отправленного письма и найдите заголовок DKIM-Signature. Значение тега s= — селектор, d= — домен подписи. У Google Workspace по умолчанию селектор google, у Microsoft 365 — selector1 и selector2, у Яндекс 360 — mail.

Чем ~all отличается от -all?

+

-all просит отклонять письма с неуказанных серверов, ~all — помечать их как подозрительные. Когда настроен DMARC, окончательное решение принимает его политика, поэтому ~all — распространённый и безопасный выбор.

Какую политику DMARC выбрать?

+

Начните с p=none и адресом в rua, чтобы получать отчёты и ничего не сломать. Когда в отчётах останутся только ваши легитимные отправители, переходите на p=quarantine, а затем на p=reject — она защищает от подделки сильнее всего.

Нужен ли DMARC, если письма уходят нормально?

+

Да. С февраля 2024 года Gmail и Yahoo требуют от массовых отправителей SPF, DKIM и DMARC. Кроме того, без DMARC ничто не мешает рассылать письма с вашим адресом в поле From — фишинг от имени компании бьёт по репутации домена.

Почему изменения в DNS не видны сразу?

+

Резолверы кэшируют записи на время TTL. Если раньше запись отдавалась с TTL 3600, новое значение у части получателей появится в течение часа. Наш инструмент обращается к DNS заново при каждой проверке.

Связанные инструменты