SPF-запись
Оригинальное название: Sender Policy Framework (SPF) record
Коротко
Запись в DNS со списком серверов, которым разрешено отправлять почту от имени домена. Принимающий сервер сверяет с ней IP отправителя и решает, доверять ли письму.
Что такое «SPF-запись»
SPF (Sender Policy Framework) появился как ответ на подделку обратного адреса: протокол SMTP сам не мешает кому угодно отправить письмо «от» вашего домена. Владелец домена публикует перечень разрешённых источников, а принимающий сервер проверяет, входит ли в него IP, с которого пришло письмо. Действующая спецификация — RFC 7208.
Технически политика хранится в TXT-записи домена и начинается с v=spf1. Отдельный тип записи SPF когда-то существовал, но признан устаревшим — сейчас используют только TXT. Проверяется адрес из конверта письма (MAIL FROM, он же Return-Path), а не видимое поле «От», поэтому полную защиту даёт только связка с DKIM и DMARC.
Синтаксис политики
- ip4: и ip6: — конкретные адреса или подсети;
- a и mx — адреса из A- и MX-записей домена;
- include: — подключить политику другого домена, например почтового сервиса;
- all в конце — что делать с остальными:
-allотклонять,~allпомечать как подозрительные (мягкий отказ),?allне делать выводов.
Пример для сайта и почты в Яндекс 360
example.ru. 3600 IN TXT "v=spf1 ip4:203.0.113.25 include:_spf.yandex.net ~all"
Здесь разрешены сервер сайта, который шлёт уведомления о заказах, и серверы Яндекса, через которые сотрудники отправляют обычную почту. Остальные источники получают мягкий отказ. Как собрать SPF вместе с DKIM и DMARC и проверить результат, показано в статье о настройке SPF, DKIM и DMARC.
Ограничения и частые ошибки
- У домена должна быть одна SPF-политика. Две TXT-записи с
v=spf1— ошибка, и проверка завершится неудачей. - Не больше 10 DNS-запросов при проверке: каждый include, a и mx расходует лимит. Если подключить много сервисов рассылок, лимит легко превысить.
- Забытый источник: сайт отправляет письма с сервера хостинга, а в SPF указан только почтовый сервис. Письма с сайта начинают попадать в спам.
- Значение
+allразрешает отправку всем подряд и делает запись бессмысленной.

