Проверка SPF записи

Проверяем синтаксис SPF, разворачиваем всю цепочку include и считаем DNS запросы по лимиту из RFC 7208.

Лимит в десять DNS запросов

RFC 7208 разрешает во время проверки SPF не более десяти DNS запросов. Их создают механизмы include, a, mx, ptr, exists и redirect. Считаются и те запросы, которые возникают внутри каждого include, в том числе внутри чужих записей, на которые он ссылается.

При превышении лимита результат проверки это permerror, и часть получателей трактует его так же, как непройденную проверку. Инструмент разворачивает всю цепочку и показывает итоговое число.

  • Уберите сервисы, которыми больше не пользуетесь. Старые include живут в записи годами.
  • Замените часть include на конкретные диапазоны ip4 и ip6.
  • Не используйте ptr, он медленный и давно не рекомендуется.
  • В конце ставьте -all или ~all, но не ?all.

SPF настроен, а письма всё равно в спаме

SPF проверяет только одно: имел ли право конкретный сервер отправлять почту от имени домена. Он смотрит на адрес возврата в конверте письма, а не на адрес From, который видит человек. Поэтому запись SPF со статусом pass сама по себе ничего не говорит о том, от кого письмо выглядит отправленным.

Есть и вторая особенность: при пересылке письмо уходит дальше с сервера пересылающего, а не вашего, и SPF на нём закономерно не проходит. Если письмо при этом не подписано DKIM, у получателя не остаётся ни одного доказательства, что письмо ваше.

Поэтому SPF в одиночку почту в папку «Входящие» не приводит. Рабочая связка выглядит так: SPF разрешает ваши серверы, DKIM подписывает письма, DMARC связывает результат с видимым адресом отправителя. Дальше остаются вещи, которые записями в DNS не чинятся: репутация IP и домена, жалобы получателей, чистота списка адресов и само содержимое письма.

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

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

С -all отправитель заявляет, что остальные серверы не авторизованы и письмо можно отклонить. С ~all результат мягче: письмо скорее всего окажется в папке со спамом. Начинайте с ~all и переходите на -all, когда уверены в списке отправителей.

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

Нет. Две записи v=spf1 дают permerror, и проверка проваливается целиком. Все источники нужно объединить в одну запись.

Достаточно ли SPF, чтобы письма не уходили в спам?

Недостаточно. SPF проверяет только сервер отправителя и перестаёт работать при пересылке письма. Вместе с ним нужны DKIM и DMARC, а поверх них репутация отправляющего IP и домена.

Нужен ли SPF домену, с которого не отправляют почту?

Да, и это дешёвая защита от подделок. Такому домену подходит запись v=spf1 -all вместе с пустой записью MX и политикой DMARC.