SPF — это список серверов, которым разрешено отправлять почту от имени вашего домена. Он публикуется в DNS обычной TXT-записью, и по нему получатель решает, верить письму или нет.
Запись начинается с v=spf1, дальше идут механизмы, разрешающие отправку, и заканчивается квалификатором all. Например: v=spf1 include:_spf.yandex.net ip4:203.0.113.10 -all — «письма от Яндекс.Почты и с адреса 203.0.113.10 законны, всё остальное отвергать».
ip4 и ip6 разрешают конкретный адрес или подсеть. a разрешает сервер, на который указывает A-запись домена. mx разрешает почтовые серверы домена. include подключает запись другого домена — так добавляют почтовый сервис, CRM и рассыльщик. all в конце описывает, что делать со всеми остальными.
Первая — две записи v=spf1 на одном домене, из-за чего проверка падает целиком. Вторая — превышение лимита в десять DNS-запросов при раскрытии вложенных include. Третья — забытый отправитель: домен переходит на -all, а рассылка через сторонний сервис в записи не перечислена, и письма клиентам начинают отвергаться.
SPF подтверждает только сервер. Чтобы получатель мог проверить, что письмо не подменили в пути, нужен DKIM, а чтобы задать правило на случай непрохождения проверок — DMARC. Полную картину по домену удобно смотреть в отчёте Deliverability Radar.
После публикации TXT-записи нужно дождаться истечения TTL зоны — обычно от нескольких минут до суток. Пока старая запись не истекла, часть получателей будет видеть её.
Да. Для домена без почты публикуют v=spf1 -all — это прямо запрещает отправку от его имени и мешает использовать домен в фишинге.
Технически можно, и это даже экономит DNS-запросы. Но у почтовых сервисов адреса меняются без предупреждения, поэтому include надёжнее: сервис обновляет свою запись сам.