Коротко. SPF (Sender Policy Framework) — это TXT-запись в DNS, которая перечисляет серверы, имеющие право отправлять почту от вашего домена. Запись начинается с v=spf1, содержит механизмы (include, a, mx, ip4) и завершается квалификатором ~all (softfail) или -all (hardfail). На домене может быть только одна SPF-запись.
Зачем нужен SPF
Без SPF любой может отправить письмо, указав ваш домен в адресе отправителя. SPF даёт почтовику получателя список разрешённых IP, чтобы он проверил, легитимен ли отправляющий сервер. Это первая линия защиты от подделки и важный сигнал доставляемости.
Синтаксис SPF-записи
example.com. IN TXT "v=spf1 include:_spf.google.com ip4:203.0.113.10 ~all"
# Проверка:
dig txt example.com
# или короче:
dig +short txt example.com
Механизмы SPF
- v=spf1 — обязательная версия в начале записи.
- include:домен — подключает SPF другого провайдера (Google, Mailgun).
- a — разрешает IP из A-записи домена.
- mx — разрешает IP из MX-записей домена.
- ip4 / ip6 — явно указанный адрес или подсеть.
- all — финальный механизм, применяется ко всему остальному.
~all vs -all: в чём разница
| Квалификатор | Имя | Действие при провале | Когда применять |
|---|---|---|---|
| -all | hardfail | Отклонить письмо | Когда вы уверены, что все отправители учтены |
| ~all | softfail | Принять, но пометить как подозрительное | На этапе настройки и тестирования |
| ?all | neutral | Никаких действий | Почти бесполезно, не рекомендуется |
| +all | pass | Разрешить всем | Опасно — открывает домен для подделки |
Начинайте с~allи собирайте DMARC-отчёты. Когда убедитесь, что все легитимные источники проходят SPF, переходите на-allдля строгой защиты.
Типичные ошибки
- Несколько SPF-записей — допустима только одна TXT с
v=spf1, иначе результат permerror. - Превышение лимита в 10 DNS-запросов — слишком много include. См. как исправить.
- Нет финального all — запись неполная, почтовики трактуют по-разному.
- +all по ошибке — фактически отключает защиту.
SPF проверяет домен из конверта (MAIL FROM), а не из видимого поля From. Поэтому SPF в одиночку не защищает от спуфинга — нужны DKIM и DMARC поверх него.
Как enterno.io помогает с SPF
Инструмент /email-check разбирает вашу SPF-запись, показывает все механизмы, считает количество DNS-запросов и подсвечивает ошибки: дубли, превышение лимита, отсутствие all. Это быстрее, чем читать запись вручную. MX-lookup покажет, какие серверы реально получают почту, чтобы вы не забыли их в SPF. enterno диагностирует — саму TXT-запись в зоне правит владелец домена. Бесплатно — 48+ инструментов и DNS-проверка.
Частые вопросы
Можно ли иметь две SPF-записи?
Нет. Должна быть ровно одна TXT-запись с v=spf1. Несколько объединяйте в одну через дополнительные механизмы include.
Чем ~all отличается от -all на практике?
При ~all подозрительное письмо обычно доставляется в спам; при -all — отклоняется на этапе приёма. Строгий -all сильнее против подделки, но рискованнее при неучтённых отправителях.
Нужен ли SPF, если есть DKIM?
Да. DMARC требует прохождения хотя бы одного из SPF или DKIM с выравниванием по домену. Лучшая практика — настроить оба механизма.
Проверьте свою SPF: запустите /email-check и убедитесь, что запись корректна. См. также лимит 10 запросов и настройку DKIM.