Модификатор redirect в SPF-записях: правила, примеры и подводные камни

Что такое redirect в SPF

redirect — это модификатор (не механизм!) SPF-записи, который перенаправляет проверку к SPF-записи другого домена. В отличие от include, который импортирует правила но сохраняет вашу политику all, redirect полностью передаёт управление другой записи.

Ключевое отличие в одном предложении: include — это ссылка, redirect — это полная передача полномочий.

Синтаксис и правила RFC 7208

v=spf1 redirect=_spf.example.com

Правила, установленные в RFC 7208:

Критическое правило: Если в записи присутствует механизм all (в любом месте), модификатор redirect полностью игнорируется.
Это самая частая ошибка администраторов.

Redirect vs Include: сравнение

Критерийredirectinclude
ТипМодификаторМеханизм
Синтаксисredirect=domaininclude:domain
ПрефиксыНетДа (+, -, ~, ?)
Политика allНаследуется из целевой записиСохраняется из текущей записи
Когда срабатываетТолько при отсутствии совпаденийВ порядке следования
КоличествоТолько одинНесколько
ИспользованиеВнутри одной административной зоныДля сторонних сервисов

Когда использовать redirect

Правильные сценарии:
  • Несколько доменов/поддоменов вашей организации используют одинаковую политику
  • Централизованное управление SPF для корпоративной инфраструктуры
  • Делегирование поддоменов (например, mail.example.com_spf.example.com)
Когда НЕ использовать:
  • Для сторонних почтовых сервисов (Google Workspace, Яндекс 360) — используйте include
  • Если вы не контролируете целевой домен
  • Если целевая запись может измениться без вашего ведома

Примеры для российских сервисов

Mail.ru (VK Mail)

; Неправильно — redirect игнорируется из-за all
v=spf1 redirect=spf.mail.ru -all

; Правильно — используем include
v=spf1 include:spf.mail.ru -all

Mail.ru публикует spf.mail.ru для включения в ваши записи. Никогда не используйте redirect на чужие домены — только include.

Яндекс 360 / Яндекс Почта для домена

; Неправильно
v=spf1 redirect=_spf.yandex.net -all

; Правильно
v=spf1 include:_spf.yandex.net -all

Beget

; Неправильно
v=spf1 redirect=_spf.beget.com -all

; Правильно
v=spf1 include:_spf.beget.com -all
Общее правило для хостингов и почтовых сервисов: Все они предоставляют include, а не redirect. redirect предназначен для ваших собственных доменов в рамках одной организации.

Корректный пример redirect в корпоративной среде

; Центральная запись с единой политикой
_spf.example.com. TXT "v=spf1 ip4:198.51.100.10 ip4:198.51.100.11 -all"

; Поддомены делегируют политику центральной записи
mail.example.com. TXT "v=spf1 redirect=_spf.example.com"
news.example.com. TXT "v=spf1 redirect=_spf.example.com"
billing.example.com. TXT "v=spf1 redirect=_spf.example.com"

Преимущества такой схемы:

Типичные ошибки и как их избежать

Ошибка 1: Сочетание redirect и all

Неправильно:
v=spf1 redirect=_spf.example.com -all

Результат: redirect игнорируется, работает только -all. Все письма отклоняются.

Ошибка 2: Redirect на чужой домен

Неправильно:
v=spf1 redirect=_spf.google.com

Проблема: Вы не контролируете политику Google. Если они изменят запись, ваша почта сломается без предупреждения. Используйте include:_spf.google.com.

Ошибка 3: Несколько redirect

Неправильно:
v=spf1 redirect=_spf1.example.com redirect=_spf2.example.com

Результат: RFC 7208 требует permerror — модификатор может быть только один.

Ошибка 4: Отсутствие SPF-записи в целевом домене

Проблема: Если домен _spf.example.com не имеет TXT-записи с v=spf1, результат будет permerror, а не none (как при обычном отсутствии SPF).

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

Модификатор redirect требует один DNS-lookup (поиск TXT-записи целевого домена). Этот lookup входит в общий лимит 10 DNS-запросов на одну проверку SPF.

Если целевая запись содержит include, mx, a — они тоже считаются. Будьте внимательны при проектировании сложных цепочек.

Чек-лист перед публикацией

  • ☐ В записи нет механизма all
  • ☐ Только один redirect в записи
  • ☐ Целевой домен — под вашим контролем
  • ☐ Целевой домен имеет валидную SPF-запись
  • ☐ Общее количество DNS-lookups не превышает 10
  • ☐ Проверена работоспособность через онлайн-валидатор

Заключение

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

Для сторонних сервисов (Mail.ru, Яндекс, Google, Beget) всегда используйте include. redirect оставьте для внутренней инфраструктуры — там, где вы контролируете все участки цепочки.


Источники: RFC 7208 Sender Policy Framework, EasyDMARC SPF Syntax Guide, DMARCPal SPF Redirect vs Include, Mailhardener SPF Redirect Explained