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

Отметьте сервисы, которые отправляют почту от вашего домена, и получите одну корректную SPF запись вместе с числом DNS запросов, которые она стоит.

Соберите свою SPF запись

Какие сервисы отправляют почту от этого домена

Отметьте каждый сервис, который шлёт письма с адресов этого домена. После названия указан include, который попадёт в запись.

Zoho подставляется со значением европейского дата-центра. Для аккаунта в другом регионе нужен include:zoho.com, поэтому после копирования поменяйте это одно значение вручную.

Ваши собственные серверы

Несколько значений разделяйте пробелом или запятой. Адрес не стоит ни одного DNS запроса, include стоит минимум один.

Что делать с почтой с остальных серверов

Что на самом деле говорит запись

SPF запись, это одна строка текста, опубликованная на домене как TXT запись. В ней перечислены серверы, которым разрешено слать почту с адресов этого домена, а в конце сказано, что делать со всеми остальными.

v=spf1
Помечает строку как SPF запись. TXT запись, которая начинается иначе, к SPF отношения не имеет и игнорируется.
ip4, ip6
Отдельный адрес или диапазон, которому разрешено отправлять. Они не стоят ни одного DNS запроса, поэтому это самый дешёвый способ разрешить собственный сервер.
a, mx
Адреса самого домена и серверы, указанные в его MX записях. По одному DNS запросу на каждое.
include
Передаёт вопрос записи другого домена, и так почтовый сервис сам поддерживает свои адреса отправки в актуальном виде. Минимум один DNS запрос, часто несколько.
-all, ~all
Завершающий термин. Всё, что не совпало ни с одним механизмом до него, попадает сюда.

Термины читаются слева направо, и ответ решает первый совпавший, поэтому в записи сначала идут адреса и только потом include.

Как этот генератор SPF записи считает DNS запросы

RFC 7208 разрешает не больше десяти DNS запросов на одну проверку записи, и запросы внутри include считаются в тех же десяти. Одни сервисы публикуют плоскую запись, которая стоит ровно один запрос. Другие включают в неё свои собственные записи, и тогда одна строка в вашей записи тихо съедает половину из десяти.

Поэтому страница не заканчивается на том, что написала строку. Она проходит по только что собранной записи, разворачивает каждый include так же, как это сделает принимающий почтовый сервер, и рядом с каждым значением показывает его стоимость. Число измеряется на месте, а не берётся из таблицы, потому что записи сервисов меняются никого не предупреждая. Если лимит превышен, получатели отвечают permerror, а его большинство трактует как непройденную проверку: такая запись ничего не защищает и одновременно ломает доставку.

Когда счётчик близок к десяти, выход обычно один из двух: убрать сервис, которым больше не пользуются, или заменить один include на диапазоны ip4, которые за ним стоят. Диапазоны при проверке не стоят ничего, но перестают быть верными в тот день, когда сервис их поменяет, поэтому держите их для своих серверов.

Только одна запись, и никогда +all

У домена может быть ровно одна SPF запись. Две, это permerror для любого получателя, даже если каждая строка сама по себе верна, и именно так чаще всего ломают работающую настройку: добавляют новый сервис, кладут его запись рядом со старой, и почта начинает падать вся. Когда добавляется сервис, его include идёт в ту запись, которая уже есть.

Генератор намеренно отказывается от двух вещей. Он не поставит в запись вторую строку v=spf1 и не напишет +all. Запись, заканчивающаяся на +all, разрешает любому серверу в интернете слать почту от имени вашего домена, и это то же самое, что не публиковать ничего, только выглядит намеренно.

Начните с ~all, закончите на -all

С -all вы заявляете, что другие серверы не авторизованы, и получатель вправе отказать письму сразу. С ~all письмо принимается и помечается как подозрительное, что обычно означает папку со спамом.

Работающий порядок такой: опубликовать запись с известными отправителями, неделю или две посмотреть, что реально не проходит, и после этого поменять последний термин на -all. Настоящую почту теряют те, кто переходит на -all до того, как кто-нибудь проверил биллинг, сервис рассылок и форму обратной связи на сайте. Именно эти три забывают чаще всего.

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

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

Добавьте запись в зону DNS домена как TXT запись на имя @, то есть на сам домен, и дайте резолверам столько времени, сколько указано в TTL.

Частые вопросы

Как создать SPF запись для домена?

Отметьте сервисы, которые шлют почту с вашего адреса, добавьте адреса своего сервера, если он отправляет сам, выберите, что делать с остальными, и скопируйте строку в DNS как TXT запись на сам домен. Ничего устанавливать и нигде регистрироваться не нужно.

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

Нет. Две записи v=spf1 дают permerror, и проверка не проходит целиком, даже когда каждая запись сама по себе верна. Все отправители должны быть собраны в одну запись, что эта страница и делает.

Что делать, если почтовых сервисов несколько?

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

Чем заканчивать запись, -all или ~all?

Заканчивайте на -all, когда уверены, что список отправителей полный, потому что именно на эту версию получатели опираются. Пока список ещё собирается, держите ~all и переходите, как только проверили биллинг, рассылки и формы на сайте.

Почему запросов больше, чем отмеченных сервисов?

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

Страница публикует запись за меня?

Нет. На вашей стороне не меняется ничего: страница читает публичный DNS и составляет строку, а вставляете вы её в свою панель DNS сами. Публикация, это единственный шаг, который должен произойти там, где управляется домен.