Содержание

✉️ SPF

🔐 Что такое SPF-запись?

SPF (Sender Policy Framework) — это механизм аутентификации электронной почты, который позволяет владельцу домена указать, какие почтовые серверы могут отправлять письма от имени его домена. SPF-запись — это DNS-запись типа TXT, которая указывается в настройках домена.

🧱 Формат SPF-записи

SPF-запись размещается в DNS как TXT и выглядит примерно так:

 v=spf1 ip4:192.0.2.1 include:_spf.google.com -all

Разберем её по частям:

Часть Значение
v=spf1Обязательное начало SPF-записи. Указывает на версию SPF. Сейчас актуальна только v=spf1.
ip4:192.0.2.1Разрешено отправлять почту с IP-адреса 192.0.2.1.
include:_spf.google.comРазрешено использовать все IP-адреса, которые указаны в SPF-записи _spf.google.com.
-allВсё остальное запрещено (жесткий отказ).

🔍 Механизмы в SPF

Вот список поддерживаемых механизмов, которые можно использовать в SPF-записи:

МеханизмОписание
allСовпадает со всеми адресами. Обычно используется в конце.
ip4:IPv4-адрес или подсеть, с которой разрешена отправка.
ip6:IPv6-адрес или подсеть.
aРазрешены IP-адреса, указанные в A-записи домена.
mxРазрешены IP-адреса, указанные в MX-записи домена.
ptrНе рекомендуется. Проверяет обратное разрешение IP-адреса.
exists:Проверяет существование домена.
include:Включает SPF-запись другого домена.

✅ Квалификаторы

Квалификаторы указывают, как следует интерпретировать результат проверки:

СимволПоведение
+PassРазрешено (по умолчанию).
-FailЗапрещено — письмо отклоняется.
~SoftFailНе рекомендуется — может быть помечено как спам.
?NeutralНет четкого правила — оставлено на усмотрение получателя.

Примеры:

📌 Примеры SPF-записей

Простой пример:

v=spf1 ip4:203.0.113.5 -all

Только IP 203.0.113.5 может отправлять почту от домена.

Google Workspace:

v=spf1 include:_spf.google.com ~all

Несколько отправителей:

v=spf1 ip4:198.51.100.10 include:mailgun.org include:_spf.google.com -all

🚨 Ограничения SPF

🧪 Проверка SPF

Через команду:

nslookup -type=txt example.com | grep "spf"

Онлайн-инструменты:

📣 SPF и HELO

Проверка SPF осуществляется по домену и это является обязательным. Рекомендованым является проверка по имени хоста, который передаётся в HELO. Например домен mydomain.ru, а имя хоста HELO mail.mydomain.ru. Необходимо продублировать SPF запись для домена mail.mydomain.ru, чтобы проверка по имени хоста тоже проходила.

 mydomain.ru v=spf1 ip4:203.0.113.5 -all
 mail.mydomain.ru v=spf1 ip4:203.0.113.5 -all

💡 Рекомендации

  1. Используй -all только когда точно уверен в списке серверов.
  2. Начни с ~all, протестируй отправку, потом переходи на -all.
  3. Не превышай 10 DNS-запросов (следи за количеством include, a, mx).(я попадал в ситуацию, когда из-за вложений проверок было больше 10 и статутс PermError, письма не доставлялись).
  4. Если у вас внешние ip адреса меняются редко, то лучше не использовать проверки A MX, а указывать только ip4.
  5. Все проверки сводятся к преобразованию A→IP, MX→A→IP, поэтому лучше использовать ipv4
  6. Разбор spf идёт слева направо и если первый IP или преобразование в IP совпадает с IP сервера, то дальше обработка не осуществляется.
  7. Публикуйте запись "v=spf1 -all" для доменов, которые принадлежат вам, но не посылают почту, смотри spf для example.com.