#Что происходит и когда применима инструкция
Письма из вашего домена отклоняются или попадают в спам с упоминанием SPF, а в DNS нет подходящей SPF-записи. SPF проверяет разрешённые серверы для домена обратного SMTP-адреса MAIL FROM (или HELO), а не только видимый адрес From; для доставки важно учитывать также DKIM и DMARC.
#Основные причины и их признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| SPF вообще отсутствуетПолучатель не может сверить разрешённые источники отправки; политика получателя различается. | TXT-запрос не возвращает строку v=spf1 | Опубликуйте одну корректную запись после инвентаризации отправителей. |
| Почта уходит с незаявленного сервераСайт, CRM или почтовый провайдер отправляет с IP, не охваченным политикой. | В полученном отчёте SPF fail при внешнем сервисе рассылок | Уточните реальный SMTP-источник и домен envelope-from. |
| SPF синтаксически неверенНесколько SPF-записей, некорректные механизмы или превышение лимита DNS-поисков приводят к ошибке. | В заголовках SPF permerror | Проверьте синтаксис до публикации. |
#Пошаговая диагностика и устранение
- Найдите фактический код отказа письмаОткройте уведомление о недоставке и заголовки тестового сообщения. Запишите ответ SMTP и
Authentication-Results, при наличии — SPF result. Не каждое попадание в спам связано со SPF, и отсутствие записи не гарантирует обязательный отказ у всех получателей.
- Составьте полный перечень отправителейЗапишите используемые SMTP-серверы для сотрудников, сайта, CRM, рассылок и уведомлений. Для каждого выясните домен
MAIL FROM/Return-Path, IP и официальный способ включения в SPF. Не добавляйте все IP подряд без подтверждения роли каждого.
- Проверьте текущий TXT в DNSНа машине с dig запросите доменный TXT и найдите запись, начинающуюся с
v=spf1. Другие TXT по этому имени могут существовать — это нормально; несколько отдельных SPF TXT, начинающихся сv=spf1, создают ошибку. - Терминал с dig; заменить доменLinux · Терминал (Bash)КомандаТерминал с dig; заменить домен. Вывод читается без администратора; запись может быть разбита на несколько строк внутри одного TXT.
dig +short TXT example.com
- Выясните правильную зону DNSСверьте авторитетные NS у регистратора и в DNS-панели. Редактируйте ту зону, которая действительно обслуживает домен. Если SMTP MAIL FROM использует поддомен, SPF может требоваться именно на нём, а не на домене видимого From.
- Соберите одну проверяемую SPF-политикуВпишите только подтверждённые
ip4,ip6,includeи другие необходимые механизмы по документации отправителей. Для переходного периода выберите подходящую заключительную политику после анализа (~allлибо-allпо уровню готовности); не копируйте универсальный шаблон без инвентаризации.
- Проверьте ограничение DNS-поисковПри использовании include/a/mx/exists/redirect SPF ограничен числом DNS-обращений, и слишком длинные цепочки приводят к permerror. Подсчитайте зависимости по фактически опубликованным правилам. Не решайте проблему простым добавлением ещё нескольких include.
- Опубликуйте запись и дождитесь обновленияВ DNS-панели отредактируйте или создайте один TXT с подготовленной политикой, сохраните предыдущий вариант для отката. Проверьте запись через публичный запрос и авторитетные NS после обновления; не удаляйте чужие TXT для DKIM или подтверждения сервисов.
- Отправьте контрольные письма из всех системСделайте безопасную отправку с корпоративного почтового сервера, сайта и каждого сервиса рассылки на адрес, где доступны технические заголовки. Проверьте SPF result и, отдельно, DMARC alignment; SPF pass без выравнивания домена может не дать DMARC pass.
#Проверка результата
У каждого разрешённого отправителя SPF соответствует реально используемому домену MAIL FROM и даёт pass, лишние серверы не авторизованы; тестовые письма успешно доставляются или получают отдельную, понятную причину отказа.
#Если решить проблему не удалось
Если SPF pass есть, а получатель продолжает отклонять письмо, проверьте DKIM, DMARC, репутацию IP и условия конкретного сервиса. Не ослабляйте политику SPF до +all: так любой сервер сможет объявить себя разрешённым.