Что такое SPF-запись и зачем она нужна?
Запись SPF (Sender Policy Framework) — это DNS TXT-запись, которая указывает, каким почтовым серверам разрешено отправлять письма от имени вашего домена. Когда сервер получателя принимает сообщение, якобы исходящее с вашего домена, он запрашивает вашу SPF-запись, чтобы проверить, указан ли отправляющий IP. Если IP не авторизован, сообщение могут отклонить или пометить как спам.
SPF — один из трёх базовых стандартов аутентификации email наряду с DKIM и DMARC. Без него кто угодно может подделать ваш домен в поле отправителя конверта, и домен станет мишенью для фишинга и спуфинга. Большинство современных почтовых провайдеров и корпоративных шлюзов проверяют SPF перед приёмом писем.
Синтаксис SPF-записи
Каждая SPF-запись начинается с v=spf1 — это указание версии. Затем добавляют механизмы со списком авторизованных отправителей. Запись завершается квалификатором — механизмом all.
- ip4:x.x.x.x — разрешает один адрес IPv4
- ip4:x.x.x.x/24 — разрешает диапазон IPv4 в нотации CIDR
- ip6:::1 — разрешает адрес IPv6
- include:domain.com — импортирует SPF-запись другого домена (для сторонних отправителей)
- a — разрешает IP из A-записи домена
- mx — разрешает IP из MX-записей домена
Квалификаторы политики SPF
Квалификатор в конце SPF-записи задаёт, как серверы получателя обрабатывают письма от неавторизованных отправителей.
| Квалификатор | Поведение |
|---|
| +all | Все отправители проходят проверку. Не используйте — это полностью обесценивает SPF. |
| ~all | Softfail — неавторизованная почта принимается, но помечается. Используйте при тестировании. |
| -all | Hard fail — неавторизованная почта отклоняется. Используйте в рабочей среде. |
| ?all | Neutral — политика не задана. Почти не применяется. |
Частые директивы include в SPF
Если вы пользуетесь сторонними почтовыми сервисами, добавьте их авторизованные домены отправки через директивы include:. Вот самые распространённые:
- Google Workspace: include:_spf.google.com
- Microsoft 365: include:spf.protection.outlook.com
- Mailchimp: include:servers.mcsv.net
- SendGrid: include:sendgrid.net
- Mailgun: include:mailgun.org
Лимиты DNS-запросов SPF и как в них уложиться
У SPF жёсткий лимит: 10 DNS-запросов за одну проверку. Каждый механизм include:, a и mx считается отдельным запросом. Многие сторонние SPF-записи внутри себя вызывают дополнительные запросы. Если запись превышает 10 запросов в сумме, оценка SPF возвращает PermError, что считается ошибкой. Чтобы уложиться в лимит, по возможности указывайте IP-адреса напрямую и избегайте цепочек вложенных include.
SPF лучше всего работает вместе с DKIM и DMARC
Один SPF защищает только отправителя конверта (Return-Path), но не видимый адрес From. Для полной защиты от спуфинга нужны ещё DKIM — чтобы подписывать письма — и DMARC — чтобы согласовать результаты аутентификации с заголовком From. Вместе эти три стандарта составляют базовый уровень аутентификации email, который ожидают Gmail, Outlook и Yahoo Mail.
После настройки SPF убедитесь, что списки тоже чистые. Верификация email удаляет недействительные и рискованные адреса до отправки, удерживает низкий процент возвратов и защищает репутацию отправителя, которую вы выстраиваете правильной аутентификацией. Адреса также можно проверить пакетно через пакетную верификацию email или встроить проверку прямо в свой стек через API валидации email.