Как проверить SPF, DKIM и DMARC домена
Инструмент читает почтовые DNS-записи домена и разбирает их так, как это делает сервер получателя: находит SPF-запись и считает, сколько DNS-запросов потребует её проверка, разбирает политику DMARC по тегам, проверяет открытый ключ DKIM и показывает MX-серверы. Для каждой записи вы получите статус и список конкретных замечаний.
SPF, DKIM и DMARC решают одну задачу — доказать получателю, что письмо действительно отправил ваш домен. Ошибка в любой из записей ведёт к тому, что рассылки и даже обычные письма попадают в спам, а мошенники могут слать письма от вашего имени.
Как пользоваться проверкой
- 1Введите домен, с которого отправляется почта, например example.ru — без www и адреса ящика. Можно вставить и ссылку на сайт: протокол и путь будут отброшены.
- 2Если знаете DKIM-селектор, укажите его во втором поле. Его видно в заголовке DKIM-Signature любого отправленного письма, в теге s=. Без селектора инструмент переберёт популярные: mail, default, dkim, google, selector1, selector2, k1, s1, s2, mailru, smtp, key1.
- 3Нажмите «Проверить». Запросы идут к DNS, сам почтовый сервер не затрагивается, проверка занимает несколько секунд.
- 4Начните с красных пунктов: это ошибки, из-за которых проверка у получателя завершается с permerror или политика не применяется вовсе.
- 5Исправьте записи у DNS-провайдера и запустите проверку снова. Учтите TTL: старое значение может держаться в кэше резолверов до нескольких часов.
Что такое SPF и как его проверить
SPF (RFC 7208) — TXT-запись домена со списком серверов, которым разрешено отправлять почту от его имени. Получатель берёт домен из адреса возврата (envelope-from), находит запись «v=spf1 …» и по очереди сверяет IP отправителя с механизмами. Отдельный тип DNS-записи SPF устарел — публикуется только TXT.
У домена должна быть ровно одна SPF-запись. Если их две — например, одну добавил хостинг, а вторую сервис рассылок, — проверка завершается с permerror. Записи нужно объединить в одну. Длинную запись можно разбить на несколько строк по 255 символов внутри одной TXT-записи: получатель склеит их без пробелов.
| Механизм | Что делает | Считается в лимит 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, никогда не проверяются.
| Окончание | Результат | Оценка |
|---|---|---|
| -all | fail — письмо не прошло SPF | Строгий вариант, когда все отправители перечислены |
| ~all | softfail — подозрительное письмо | Нормально, особенно вместе с DMARC |
| ?all | neutral — ничего не утверждается | Почти не защищает |
| +all | pass для любого сервера | Ошибка: разрешает подделку писем |
| нет all и redirect | neutral | Добавьте ~all или -all |
DMARC: политика и отчёты
DMARC (RFC 7489) публикуется TXT-записью на имени _dmarc.example.ru и связывает SPF и DKIM с адресом в поле From, который видит человек. Письмо проходит DMARC, если SPF или DKIM прошли успешно и их домен выровнен с доменом From. Запись говорит получателю, что делать с письмами, не прошедшими проверку, и куда присылать отчёты.
Безопасный путь внедрения — начать с p=none и тега rua, неделю-две изучать агрегированные отчёты, найти все легитимные источники писем, затем перейти на quarantine и reject. Если на имени _dmarc опубликовано несколько записей, получатели не применяют DMARC вовсе.
| Тег | Значения | Что означает |
|---|---|---|
| p | none, quarantine, reject | Политика домена; обязательный тег |
| sp | none, quarantine, reject | Политика для поддоменов, по умолчанию равна p |
| pct | 0–100, по умолчанию 100 | Доля писем, к которым применяется политика |
| rua | mailto:-адреса | Куда слать ежедневные агрегированные отчёты |
| ruf | mailto:-адреса | Куда слать отчёты о сбоях; их отправляют немногие |
| adkim, aspf | r или 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 заново при каждой проверке.