Синтаксис SPF, как настроить запись для почты и рассылок, связь с DKIM и DMARC и как проверить, что всё работает.
Синтаксис SPF, как настроить запись для почты и рассылок, связь с DKIM и DMARC и как проверить, что всё работает.
SPF-запись — это TXT-запись в DNS домена, которая перечисляет серверы и IP-адреса, имеющие право отправлять письма от имени домена. Она помогает принимающей стороне отличить вашу легитимную почту от подделок и снижает риск попадания писем в спам. Разберём синтаксис, настройку и проверку — с примерами и типичными ошибками.
SPF (Sender Policy Framework) — это TXT-запись в DNS, где вы перечисляете IP-адреса и серверы, которым разрешено отправлять письма от имени вашего домена. Принимающий почтовый сервер запрашивает эту запись и сверяет с ней IP отправителя. Если адрес совпал — письмо получает статус pass, если нет — fail или softfail, и дальше применяется политика получателя: доставка с пометкой, фильтр или отклонение.
SPF не работает в одиночку. Он проверяет адрес отправителя в конверте письма (MAIL FROM), DKIM подтверждает подпись письма, а DMARC объединяет результаты обеих проверок и указывает, что делать при несовпадении. Без DMARC одна SPF-запись не защищает заголовок From — то есть то, что видит получатель в почтовом клиенте.
При проверке принимающий сервер фиксирует один из результатов:
Строка начинается с версии v=spf1, затем идут механизмы и модификаторы, а завершает запись обычно механизм all. Каждый механизм можно дополнить квалификатором: + (pass, по умолчанию), - (fail), ~ (softfail), ? (neutral).
| Элемент | Что означает | Пример |
|---|---|---|
| ip4 / ip6 | Разрешает конкретный IP-адрес | ip4:192.0.2.10 |
| a | Разрешает IP из A-записи домена | a:mail.example.ru |
| mx | Разрешает IP почтовых серверов из MX | mx |
| include | Подключает SPF другого домена (сервиса рассылок) | include:_spf.example.net |
| exists | Проверяет существование записи в DNS | exists:%{i}.spf.example.ru |
| all | Совпадение со всем, что не подошло выше | -all |
Пример для одного сервера: v=spf1 ip4:192.0.2.10 -all. Для нескольких источников: v=spf1 ip4:192.0.2.10 ip4:198.51.100.25 ~all. С подключением сервиса: v=spf1 ip4:192.0.2.10 include:_spf.mailer.example -all.
Принимающий сервер берёт домен из MAIL FROM и запрашивает его TXT-запись. Затем сверяет IP отправителя с механизмами записи слева направо — до первого совпадения. При pass письмо пропускается, при fail — блокируется или помечается в заголовках Received-SPF и Authentication-Results.
У механизма есть ограничения. При пересылке письма на другой адрес IP отправителя меняется на IP сервера пересылки, и SPF может вернуть fail, хотя письмо легитимно. Именно поэтому нужны DKIM (подпись сохраняется при пересылке) и DMARC. Ещё один нюанс: каждый include, a, mx и exists — это DNS-запрос. Всего допускается не более 10 таких запросов на проверку одной записи.
v=spf1 … и TTL.ip4, для сервисов рассылок — include, если почта на хостинге — механизм mx или a.~all на время проверки и перейдите на -all, когда убедитесь, что все источники внесены.При смене провайдера или добавлении нового источника отправки запись нужно обновить: добавьте механизм и заново проверьте, что лимит DNS-lookup не превышен. DNS обновляется от нескольких минут до 24–48 часов в зависимости от TTL.
Механизмы all, ip4 и ip6 не требуют дополнительных DNS-запросов. a, mx, include, exists и модификатор redirect обращаются к DNS и расходуют лимит в 10 запросов, причём include тянет за собой и запросы из подключённой записи. Квалификаторы + - ~ ? сообщают принимающей стороне, как интерпретировать совпадение. Модификаторы redirect и exp применяют реже: redirect перенаправляет проверку на другую запись, exp задаёт пояснение для случаев fail.
Быстрее всего — через DNS: выполните dig TXT example.ru или nslookup -type=TXT example.ru и найдите в ответе строку с v=spf1. Дальше удобно проверить запись через онлайн-анализаторы: они показывают синтаксис и количество DNS-lookup. Затем отправьте тестовое письмо и посмотрите заголовки Received-SPF и Authentication-Results — там будет результат проверки.
Типичные ошибки: несколько SPF-записей у домена (должна быть одна), отсутствие all, превышение лимита lookup, опечатки в механизмах и include. Увидеть все DNS-записи домена сразу, включая SPF и DMARC, можно в проверке DNS-записей nextin.ru.
_dmarc.Проверка бесплатная и без регистрации. Синтаксис и число DNS-запросов внутри SPF инструмент не разбирает — для этого скопируйте запись в специализированный SPF-анализатор. Если нужно узнать регистратора и срок оплаты домена, используйте WHOIS, а настройку HTTPS — проверку SSL.
Если домен не отправляет письма, достаточно записи v=spf1 -all — так вы запрещаете любую отправку от его имени. Жёсткий -all опасен, если легитимные источники не внесены в запись: письма начнут отклоняться. Пересылка писем и сторонние сервисы тоже требуют внимания — добавляйте их include заранее. И помните: без DMARC одна SPF-запись не даёт полной защиты заголовка From.
Возьмите у сервиса рассылок значения include и добавьте их в запись рядом с остальными источниками. Настройте DKIM и DMARC — только вместе они дают предсказуемую доставку. После изменения записи следите за отчётами DMARC, прогревайте домен постепенно и перед массовой отправкой проверьте количество lookup и сделайте тестовую доставку.
Одна. Если TXT-записей с v=spf1 несколько, проверка может завершиться ошибкой — объедините всё в одну строку.
Это запрет на отправку писем от имени домена любыми серверами. Такую запись ставят для доменов, которые не используются для почты.
Чаще всего не хватает DKIM и DMARC, либо в записи пропущен источник отправки. Проверьте заголовки Authentication-Results тестового письма.
SPF проверяет IP отправителя из конверта, DKIM — подпись письма, DMARC объединяет результаты и задаёт политику для заголовка From.
Посмотрите запись в DNS-записях домена или DNS-запросом TXT, проверьте синтаксис и лимит lookup онлайн-анализатором, отправьте тестовое письмо и посмотрите результат в заголовках.
Тип запроса по выдаче Яндекса: коммерческий, информационный или смешанный
Пожалуйста, не закрывайте страницу