Генератор SPF-записи

Выберите сервисы, которые отправляют вашу почту, и получите одну SPF-запись; DNS-запросы, которых она стоит получателям, считаются вживую, пока вы её собираете.

Обход запросов по RFC 7208, как в нашей проверке SPF · документированные include 71 отправителя · собирается в вашем браузере
Пример

Пример записи для example.com

Введите домен выше, чтобы начать с того, что он публикует сейчас, или измените что угодно ниже. Запись справа обновляется по ходу.

Кто отправляет почту от имени example.com?
Ваши собственные серверы
Адреса или диапазоны IPv4
Адреса или диапазоны IPv6
Другие include
Домен, который велел включить поставщик.
allПочта с любого другого сервера

Серверы вне списка помечаются как подозрительные, но не отклоняются. Если DMARC в режиме quarantine или reject, DMARC решает по DKIM. M3AAWG рекомендует ~all.

Этот домен не отправляет почту
v=spf1 -all: ни одному серверу нельзя отправлять от его имени.

Что получатели тратят на эту запись

Бюджет в 10 запросов · example.com0 из 2 пустых

/ 10 запросов использовано

110

DNS-запрос пустой

Считаем include…

Куда уходят запросы

include:_spf.google.comGoogle Workspace1

Перед публикацией

Готово к публикации

Одна запись, в которой нет ничего, что получатели пропустят или поймут неверно.

Хорошо

Куда это вставить?

Выберите свой DNS-хостинг: поля ниже написаны так, как их ждёт его форма.

Строка файла зоны
example.com. 3600 IN TXT "v=spf1 include:_spf.google.com ~all"

После публикации

Полная проверка: example.comВ ссылке эти настройки, но никогда не ключ. Запрос из вашего браузера: резолвер Cloudflare, Google — для второго мнения.

Как создать SPF-запись?

Перечислите все сервисы, которые отправляют почту от имени вашего домена, поместите их термы include: и адреса ваших собственных серверов в одну TXT-запись у домена и закончите её на ~all.

Ставьте дешёвые термы первыми: IP-адреса не стоят DNS-запросов, a и mx стоят по одному, include стоит один плюс всё, что внутри него.

Затем считайте: получатели останавливаются на 10 DNS-запросах. Генератор проходит каждый include вживую, поэтому счёт — тот, который увидят получатели.

Кто отправляетGoogle WorkspaceMailjet192.0.2.25
Запись в том порядке, в каком её читают получатели
v=spf1ip4:192.0.2.250 запросовinclude:_spf.google.com1 запросinclude:spf.mailjet.com1 запрос~all0 запросов
От отправителей к одной записи
Генератор SPF-записи считает DNS-запросы записи сверх предела 10 и показывает отправителей, которые стоят дороже всегоГенератор SPF-записи считает DNS-запросы записи сверх предела 10 и показывает отправителей, которые стоят дороже всегоСчёт, до которого дойдут получателиКаждый include пройден вживую из вашего браузера, вложенные тоже, ровно как считает получатель.Одна ячейка на запросОкрашена в цвет отправителя, который её тратит; после 10 ячейки заштрихованы: постоянная ошибка.Куда уходят запросыКаждый терм с пометкой, вложенными include и ценой.Кто тратит больше всехСверх 10 — самые затратные и честные пути назад, включая подвох «разворачивания».Отправители, которые живут в другом местеСервисы, чей SPF относится к поддомену или вовсе ни к чему, говорят, куда он относится.
Microsoft 365, Freshdesk, Salesforce, Zendesk и Mimecast в одной записи: каждый include пройден вживую из браузера, далеко за пределом 10, с отправителями, которые стоят больше всего, и путями назад.

Что входит в SPF-запись?

Механизмы, которые называют, кому можно отправлять (ip4, ip6, a, mx, include, exists), и одно окончание, all или redirect, у каждого свой квалификатор; каждый терм, который обращается к DNS, стоит один из 10 запросов.

Квалификатор говорит, что значит совпадение: + pass (по умолчанию), - fail, ~ softfail, ? neutral. Получатели читают слева направо и останавливаются на первом совпадении.

ptr устарел и медленный: не используйте его.

ТермПримерDNS-запросыДля чего
ip4ip4:192.0.2.0/240Ваши собственные серверы IPv4
ip6ip6:2001:db8::/320Ваши собственные серверы IPv6
aa1Собственный адрес домена
mxmx1 + до 10 имёнВходящие серверы, которые тоже отправляют
includeinclude:_spf.google.com1 + своиЗапись сервиса
existsexists:%{i}._spf.example.com1Проверки по адресу (макросы)
redirectredirect=_spf.example.com1Использовать запись другого домена целиком
all~all0Всё остальное (окончание)
+pass-fail~softfail?neutral
Каждый механизм и сколько он стоит

SPF-записи для Google Workspace, Microsoft 365 и других

Для Google Workspace это include:_spf.google.com, для Microsoft 365 — include:spf.protection.outlook.com; большинство сервисов публикуют один терм include:, а некоторым в вашей записи вообще ничего не нужно.

Каждая цена ниже измерена на живой записи сервиса и включает всё вложенное в неё: именно столько тратит получатель.

Сервисы с пометкой «не здесь» отправляют со своим обратным адресом или с вашего поддомена, поэтому их SPF живёт там.

СервисДобавить в записьЗапросыГде
Google Workspaceinclude:_spf.google.com1ваша запись
Microsoft 365include:spf.protection.outlook.com1ваша запись
Zoho Mailinclude:zohomail.com2ваша запись
Amazon SESinclude:amazonses.com1поддомен
SendGridinclude:sendgrid.net2поддомен
Mailguninclude:mailgun.org5поддомен
Mailchimp——добавлять нечего
Brevo—1добавлять нечего
HubSpotinclude:<HubID>.spf0N.hubspotemail.net—ваша запись
Salesforceinclude:_spf.salesforce.com2ваша запись
Zendeskinclude:mail.zendesk.com1ваша запись
Freshdeskinclude:email.freshdesk.com7ваша запись
Postmark—1добавлять нечего
Mimecast (global)include:_netblocks.mimecast.com9ваша запись
Proton Mailinclude:_spf.protonmail.ch2ваша запись
Fastmailinclude:spf.messagingengine.com1ваша запись
Отправители, их include и цена

Что такое предел SPF в 10 запросов?

Получатели останавливаются после 10 термов, которые обращаются к DNS, включая вложенные include, и тогда SPF не проходит с постоянной ошибкой для каждого письма; третий запрос, вернувшийся пустым, тоже приводит к ошибке (RFC 7208).

Вернуться в предел можно, перенеся отправителя на поддомен с собственной записью, убрав a или mx, если эти серверы не отправляют почту, или попросив у поставщика более узкий include.

«Разворачивание», замена include его IP-адресами, экономит запросы, но устаревает в день, когда поставщик меняет адреса: проверяйте её каждый месяц.

12 / 10 · постоянная ошибка

mx1include:spf.protection.outlook.com1include:email.freshdesk.com7include:_spf.salesforce.com2include:mail.zendesk.com1
ПоддоменУбрать a/mxБолее узкий include«Развернуть» (устаревает)
Пять отправителей, 12 запросов

Чем заканчивать SPF: ~all или -all?

Используйте ~all для домена, который отправляет почту, и -all для домена, который не отправляет: при DMARC в режиме применения DMARC решает по DKIM, а -all может привести к отклонению пересланной почты до того, как сработает DMARC.

M3AAWG рекомендует ~all для отправляющих доменов и -all для доменов без почты. Google описывает ~all для Workspace; Microsoft описывает -all для Microsoft 365.

~allsoftfailПринимается с пометкой «подозрительно»; DMARC решает вместе с DKIM
-allfailМожет быть сразу отклонено, даже если DKIM проходит
?allneutralКак будто SPF у вас нет
Письмо с сервера, которого вы не указали

Каким отправителям не нужно быть в вашей записи SPF?

Сервисы, которые отправляют со своим обратным адресом, такие как Mailchimp, Postmark, SparkPost, Klaviyo и Shopify, проходят SPF на своём домене; Amazon SES, SendGrid и Mailgun относятся к поддомену отправки на вашем домене.

SPF проверяет адрес отправителя в конверте (Return-Path), а не адрес From, который видят люди. Для DMARC эти сервисы выравниваются через DKIM, поэтому публикуйте вместо этого их записи DKIM.

From (что видят люди)From: news@example.com
Return-Path (что проверяет SPF)Return-Path: bounce@esp.example.net

Здесь добавлять нечего

MailchimpMandrillPostmarkSparkPostBrevoKlaviyoShopifyDynamics 365

На вашем поддомене

Amazon SESSendGridMailgun
SPF проверяет Return-Path, а не строку From

Может ли у домена быть две SPF-записи?

Нет: если по одному имени две записи v=spf1, получатели останавливаются с постоянной ошибкой и SPF не проходит, поэтому объедините их в одну запись.

Сохраните всех отправителей из обеих, одно окончание и пересчитайте запросы объединённой записи: две записи, каждая из которых укладывается в предел, вместе могут превысить 10.

Опубликовано у example.orgv=spf1 include:_spf.google.com ~allv=spf1 include:spf.protection.outlook.com -all
Одна записьv=spf1 include:_spf.google.com include:spf.protection.outlook.com ~all
Две записи, объединённые в одну

Как длинные SPF-записи работают с DNS-хостингами?

Строка TXT вмещает 255 байт; более длинные записи разбиваются на несколько строк, которые получатели склеивают без промежутков, и большинство DNS-хостингов разбивают их за вас.

Cloudflare и Azure принимают значение целиком в одном поле; Route 53 и Google Cloud DNS хотят строки по 255 байт в кавычках. RFC 7208 просит держать весь ответ меньше 450 байт.

v=spf1 ip4:198.51.100.1 ip4:198.51.100.2 ip4:198.51.100.3 ip4:198.51.100.4 ip4:198.51.100.5 ip4:198.51.100.6 ip4:198.51.100.7 ip4:198.51.100.8 ip4:198.51.100.9 ip4:198.51.100.10 ip4:198.51.100.11 ip4:198.51.100.12 ip4:203.0.113.20 ip4:203.0.113.21 ip4:203.0.113.22 ip4:203.0.113.23 ip4:203.0.113.24 include:_spf.google.com ~all
1255 B272 B
example.com. 3600 IN TXT ( "v=spf1 ip4:198.51.100.1 ip4:198.51.100.2 ip4:198.51.100.3 ip4:198.51.100.4 ip4:198.51.100.5 ip4:198.51.100.6 ip4:198.51.100.7 ip4:198.51.100.8 ip4:198.51.100.9 ip4:198.51.100.10 ip4:198.51.100.11 ip4:198.51.100.12 ip4:203.0.113.20 ip4:203.0.113.21 ip4:203"
	".0.113.22 ip4:203.0.113.23 ip4:203.0.113.24 include:_spf.google.com ~all" )
Длинная запись так, как её хранит DNS

Генератор SPF-записи: частые вопросы

Что такое SPF-запись?

SPF-запись — это TXT-запись у вашего домена, начинающаяся с v=spf1, со списком серверов, которым разрешено отправлять почту с вашим доменом в адресе отправителя конверта. Получатели сравнивают отправляющий сервер с этим списком и выдают письму pass, softfail или fail. Она описана в RFC 7208, а DMARC использует её результат, когда домены совпадают.

Какая SPF-запись у Google Workspace?

v=spf1 include:_spf.google.com ~all. Этот единственный include охватывает отправляющие серверы Google и стоит один DNS-запрос из десяти. Если от имени вашего домена отправляют и другие сервисы, добавьте их include перед окончанием и держите одну запись: вторая запись v=spf1 делает SPF неработающим для всех.

Какая SPF-запись у Microsoft 365?

v=spf1 include:spf.protection.outlook.com -all, как её описывает Microsoft; ~all тоже подходит и мягче к пересланной почте. Этот include стоит один DNS-запрос из десяти допустимых. У государственных облаков свои include: например, у GCC High это spf.protection.office365.us; генератор показывает их как отдельных отправителей.

Можно ли иметь две SPF-записи?

Нет. Если по одному имени две записи v=spf1, получатели останавливаются с постоянной ошибкой, и SPF не проходит для каждого письма. Объедините их: сохраните всех отправителей из обеих в одной записи с одним окончанием. Загрузите свой домен в генератор, и он сам объединит дубликаты, а затем посчитает запросы результата.

Что будет, если в SPF-записи больше 10 запросов?

Получатели останавливаются на одиннадцатом терме, который обращается к DNS, и возвращают постоянную ошибку, поэтому SPF не проходит для каждого письма, включая законные. DMARC всё ещё может пройти через DKIM с выравниванием, но SPF перестаёт помогать. Перенесите отправителя на поддомен, уберите a или mx там, где эти серверы не отправляют почту, или попросите у поставщика более узкий include.

Использовать ~all или -all?

Используйте ~all для домена, который отправляет почту, и -all для домена, который не отправляет. При ~all письма, не прошедшие проверку, помечаются как подозрительные, а DMARC решает по DKIM; при -all некоторые получатели отклоняют их сразу, и это может задеть пересланную почту до запуска DMARC. M3AAWG рекомендует ~all для отправляющих доменов.

Нужна ли поддоменам своя SPF-запись?

Да, если они отправляют почту. SPF не наследуется: news.example.com проверяется по собственной TXT-записи, а не по записи example.com. Поддомен, который ничего не отправляет, должен публиковать v=spf1 -all, а такие сервисы, как Amazon SES или Mailgun, ждут свою запись на поддомене отправки, который вы с ними настроили.

Куда добавить SPF-запись?

У вашего DNS-хостинга, как TXT-запись у самого домена: введите @ в поле имени (Route 53 хочет пустое) и вставьте значение. Если SPF-запись там уже есть, отредактируйте её, а не добавляйте другую. Выберите свой хостинг в генераторе, чтобы увидеть точные названия полей и то, как он принимает длинные значения.

Что такое «разворачивание» SPF и стоит ли его использовать?

«Разворачивание» заменяет термы include IP-адресами, которые в них содержатся, поэтому записи нужно меньше DNS-запросов. Это работает, но копия устаревает, когда поставщик меняет адреса, и письма с новых адресов не проходят SPF. Лучше поддомен или более узкий include; если всё же разворачиваете, проверяйте запись каждый месяц.

Бесплатен ли генератор SPF и уходит ли что-нибудь на ваш сервер?

Он бесплатен, регистрация не нужна. Запись собирается в вашем браузере, а каждый include считается DNS-запросами, которые ваш браузер отправляет по HTTPS резолверу Cloudflare (и Google, когда Cloudflare медлит), поэтому ваш домен и запись не проходят через наш сервер. Ничего из введённого не сохраняется.

Чего-то не хватает?Предложите функцию или новый инструмент