SPF (Sender Policy Framework) — это механизм аутентификации электронной почты, который позволяет владельцу домена указать, какие почтовые серверы могут отправлять письма от имени его домена. SPF-запись — это DNS-запись типа TXT, которая указывается в настройках домена.
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-записи:
Механизм | Описание |
---|---|
all | Совпадает со всеми адресами. Обычно используется в конце. |
ip4: | IPv4-адрес или подсеть, с которой разрешена отправка. |
ip6: | IPv6-адрес или подсеть. |
a | Разрешены IP-адреса, указанные в A-записи домена. |
mx | Разрешены IP-адреса, указанные в MX-записи домена. |
ptr | Не рекомендуется. Проверяет обратное разрешение IP-адреса. |
exists: | Проверяет существование домена. |
include: | Включает SPF-запись другого домена. |
Квалификаторы указывают, как следует интерпретировать результат проверки:
Символ | Поведение | |
---|---|---|
+ | Pass | Разрешено (по умолчанию). |
- | Fail | Запрещено — письмо отклоняется. |
~ | SoftFail | Не рекомендуется — может быть помечено как спам. |
? | Neutral | Нет четкого правила — оставлено на усмотрение получателя. |
Примеры:
Простой пример:
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
nslookup -type=txt example.com | grep "spf"
Проверка 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