SPF (структура политики отправителей)

Электронная почта и безопасность
Политика электронной почты, перечисляющая серверы, которым разрешено отправлять письма от имени домена.
← Вернуться к глоссарию

Что такое SPF?

SPF (Sender Policy Framework) - DNS-политика, перечисляющая серверы, которым разрешено отправлять почту от имени домена. SPF помогает обнаруживать подделку, но не заменяет DKIM и DMARC.

Почему SPF важен

SPF позволяет принимающему серверу сравнить IP отправителя с опубликованной политикой и классифицировать результат pass, fail, softfail или ошибку.

Как работает SPF

Получатель получает TXT-запись домена отправителя, обрабатывает механизмы и проверяет IP envelope-from. Лимит DNS-запросов и временные ошибки влияют на результат.

Синтаксис SPF-записи

v=spf1 [mechanisms] [qualifier]all

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

Политика начинается с v=spf1 и завершается механизмом all. Пример из исходной документации сохранён ниже.

v=spf1 ip4:203.0.113.50 -all
v=spf1 include:_spf.google.com ~all
v=spf1 include:_spf.google.com include:sendgrid.net ip4:203.0.113.50 -all

Механизмы SPF

ip4, ip6, a, mx, include, exists и redirect описывают разрешённые источники. Используйте include только для доверенных провайдеров.

МеханизмОписаниеПример
ip4IPv4-адрес или диапазонip4:203.0.113.0/24
ip6IPv6-адрес или диапазонip6:2001:db8::/32
includeВключить SPF другой зоныinclude:_spf.google.com
aIP-адреса A-записей доменаa:mail.example.com
mxIP-адреса MX-серверов доменаmx
allСовпадает со всеми (обычно последний)-all, ~all, ?all

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

+, -, ~ и ? задают pass, fail, softfail и neutral. Выбирайте строгую политику после проверки легитимных отправителей.

КвалификаторРезультатЗначение
+ (по умолчанию)PassРазрешённый отправитель
-FailНесанкционированный, отклонить
~SoftFailВероятно несанкционированный, принять с отметкой
?NeutralПолитика не заявлена

Лучшие практики внедрения SPF

Начните с SoftFail

Используйте ~all во время инвентаризации источников и анализа отчётов, не принимая его за полноценную защиту.

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

Перейдите к Fail

После проверки всех сервисов замените политику на -all и отслеживайте неожиданные отказы.

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

Держите DNS lookup ниже 10

RFC ограничивает число DNS-механизмов. Сокращайте include, избегайте циклов и проверяйте permerror.

# Counts as DNS lookups:

include:_spf.google.com # 1 (plus nested includes)

a:mail.example.com # 1

mx # 1

# Does NOT count:

ip4:203.0.113.50 # 0

ip6:2001:db8::1 # 0

Только одна SPF-запись

Публикуйте одну TXT-политику SPF для домена. Несколько записей дают permerror и требуют объединения.

# Wrong - two SPF records

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

v=spf1 include:sendgrid.net ~all

# Correct - combined

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

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

Используйте dig, официальные панели и заголовок Authentication-Results, фиксируя время, resolver, IP и envelope-from.

dig example.com TXT | grep spf
curl "https://domscan.net/v1/health?domain=example.com"

# Returns hasSPF status

Частые проблемы SPF

Слишком много DNS-запросов

Сократите вложенные include, уберите устаревшие сервисы и повторно проверьте лимит.

Нет сторонних сервисов

Добавьте только подтверждённые источники отправки, иначе легитимная почта может получить fail.

Слишком разрешающая политика SPF

?all или ~all не ограничивают подделку так строго, как -all. Выбор должен основываться на проверенных данных и процедуре отката.

Применяйте эти знания на практике

Используйте API DomScan для проверки доступности доменов, их состояния и многого другого.