Вы нашли бесплатный генератор записи SPF, отметили Google Workspace, Mailchimp, свою CRM и сразу вставили результат в DNS. Две недели спустя Gmail отклоняет счета с кодом 550 5.7.26, Outlook возвращает 550 5.7.515, а очередь поддержки растет.
Генератор выдал синтаксически корректный текст, но не проверил работоспособность записи. Именно этот разрыв может нарушить доставляемость. Если вы еще собираете полный набор DNS, начните с настройки почты на своем домене. SPF является частью общей конфигурации MX, DKIM и DMARC.
В этом руководстве разберем, почему автоматические генераторы могут подводить в рабочей среде, как проверить результат за пять минут имеющимися инструментами и как выглядит готовая к эксплуатации запись SPF.
Что на самом деле делает генератор SPF
Генератор SPF представляет собой веб-инструмент, который собирает TXT-запись DNS, объединяя механизмы include: выбранных провайдеров. Вы выбираете отправителей и получаете строку. Инструмент не запрашивает действующий DNS, не считает рекурсивные запросы и не знает, сколько записей SPF уже есть у домена.
Многие бесплатные генераторы являются обычными конструкторами строк. Они создают правдоподобный текст, не проверяя его в вашей DNS-среде. Синтаксическая корректность не равна операционной.
3 типа ошибок, которые пропускает генератор SPF
Серьезные сбои SPF в рабочей среде часто связаны с одной из трех причин. Стандартный генератор их не видит, поскольку у него нет доступа к действующему DNS и логике подсчета, которую применяют получатели.
1. PermError из-за двух записей
У домена должна быть ровно одна запись SPF. RFC 7208 указывает: если сервер получателя находит две записи TXT, начинающиеся с v=spf1, он возвращает PermError. Gmail и Yahoo могут рассматривать PermError так же, как отсутствие SPF. Письма могут возвращаться или незаметно попадать в спам.
Генераторы обычно не проверяют существующие записи. У домена, работающего несколько месяцев, вероятно, уже есть запись от регистратора, прежнего хостинга или старой настройки Google Workspace. Публикация результата без проверки создает дубликат и может сломать работавшую конфигурацию.
2. Лимит рекурсивных запросов
RFC 7208 ограничивает проверку SPF ровно 10 DNS-запросами. Учитываются каждый include:, a, mx, exists и redirect, а также вложенные запросы, запускаемые include. Генератор считает выбранные механизмы, но обычно не считает их содержимое.
| Выбранный провайдер | Подсчет генератора | Реальные запросы |
|---|---|---|
| Google Workspace | 1 | 4 (вложенные _netblocks.google.com и другие) |
| Zendesk | 1 | 2-3 |
| Mailchimp | 1 | 2 |
| Salesforce | 1 | 2-3 |
| Итого | 4 | 10-12 -> PermError |
Генератор показывает 4 запроса, а сервер получателя доходит до #11 и прекращает проверку. SPF может перестать проходить для всего домена без предупреждения в интерфейсе или отдельного уведомления. Нередко проблему обнаруживают по жалобам клиентов.
3. Лимит пустых запросов (RFC 7208 §11.1)
Есть дополнительное ограничение: не более 2 DNS-запросов могут вернуть пустой результат (NXDOMAIN). Одна опечатка в include: создает пустой запрос. Две такие ошибки могут сделать всю запись недействительной, даже если проверка синтаксиса прошла успешно.
Пример:
include:spf.trekmaill.net(лишняя 'l'). Синтаксис допустим, поэтому генератор может назвать запись корректной. Сервер получателя выполняет запрос и ничего не находит: пустой запрос #1. Второй ошибочный include приводит к сбою записи.
Как проверить результат генератора перед публикацией
Перед публикацией выполните три проверки в действующем DNS. Они занимают около пяти минут и находят критические проблемы, которые мог пропустить генератор: дубликаты, чрезмерную глубину запросов и ошибочный синтаксис. Команды работают в macOS, Linux и командной строке Windows.
Шаг 1: найдите существующую запись
До внесения изменений в DNS выполните:
nslookup -type=txt yourdomain.com
Если две строки начинаются с v=spf1, у вас дубликат. Объедините их вручную в одну запись, прежде чем публиковать новую.
# Broken - two records, PermError guaranteed:
"v=spf1 include:_spf.google.com -all"
"v=spf1 include:spf.trekmail.net -all"
# Fixed - merged into one:
v=spf1 include:_spf.google.com include:spf.trekmail.net -all
Шаг 2: посчитайте рекурсивные запросы
Запросите содержимое каждого include: в записи:
dig +short txt _spf.google.com
Результат:
"v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all"
Один include:_spf.google.com запускает 4 реальных запроса. Повторите проверку для каждого провайдера и сложите значения. Если сумма превышает 10, измените структуру, например перенесите транзакционную почту на поддомен (send.yourdomain.com) с более короткой записью.
Шаг 3: проверьте механизмы
Сравните созданную генератором строку с этой таблицей:
| Механизм | Статус | Действие |
|---|---|---|
ptr | Устарел | Удалить. RFC 7208 прямо не рекомендует его: он медленный и ненадежный. |
+all | Небезопасен | Удалить. Он разрешает всему интернету отправлять от имени домена. |
ip4: 1.2.3.4 | Неверный синтаксис | Удалить пробел. Должно быть ip4:1.2.3.4. |
?all | Слабый | Избегать. Нейтральная политика не дает действенной защиты от подмены. |
~all | Допустим | SoftFail. Использовать только во время миграции, а не постоянно. |
-all | Корректен | HardFail. Неавторизованные отправители могут отклоняться; подходит для рабочей среды. |
Контрольный список синтаксиса SPF
Независимо от того, создал первый вариант генератор или вы написали строку вручную, пройдите этот список до изменения DNS. Проверки охватывают дубликаты, рекурсивные лимиты и небезопасные квалификаторы, которые генератор может пропустить.
- Одна запись на домен. Объединить дубликаты и не публиковать вторую.
- Начинается с
v=spf1. Без вариантов, точная строка. - Заканчивается на
-allили~all. Не использовать+allили?all. - IP до include. Механизмы
ip4:иip6:не требуют DNS-запросов. Для более быстрой проверки указывайте их первыми. - Без ссылки на себя.
include:yourdomain.comсоздает бесконечный цикл и должен быть удален. - Без ручного разворачивания IP, если нет автоматического обновления. Когда Google меняет IP, неактуальная запись может незаметно нарушить отправку.
- Всего запросов ≤ 10. Учитывать все, включая вложенные include.
Запись для рабочей среды:
v=spf1 ip4:192.0.2.1 include:spf.trekmail.net include:_spf.google.com -all
Сначала IP без стоимости запроса, затем include, в конце hard fail. Этого достаточно.
Почему агентства и малые компании перерастают генераторы SPF
Генератор подходит для одного домена с одним или двумя отправителями. При росте, например у агентств с десятками клиентов или компаний с полным набором SaaS, отсутствие единого обзора числа запросов и дубликатов превращает его в повторяющийся операционный риск.
Старый подход: уникальная запись каждого клиента из отдельного сеанса генератора без журнала проверок. Один домен достигает лимита, и три дня никто этого не замечает. Репутация доставки клиента может пострадать.
Полную основу защиты почтовой инфраструктуры компании описывает руководство по безопасности корпоративной почты, которое не ограничивается SPF.
Как TrekMail упрощает проблему генератора SPF
Сложность SPF возникает из-за нескольких сторонних отправителей и лимита в 10 запросов. TrekMail может упростить обе задачи для основной почтовой инфраструктуры. Для базового домена отправки не придется постоянно запускать генератор, считать вложенные запросы и повторно проверять механизмы.
Для малых компаний: один include, меньше обслуживания
В плане TrekMail Starter ($3.50/mo) исходящая доставка идет через управляемый SMTP TrekMail. Запись SPF состоит из одной строки:
v=spf1 include:spf.trekmail.net -all
TrekMail управляет сменой IP и репутацией отправителя за этим include. Поэтому менять основную запись требуется реже. Для этого пути отправки также может не понадобиться новый сеанс генератора и аудит запросов после добавления SaaS-инструмента.
Для агентств: один шаблон для клиентов
Старый подход: 100 клиентов, 100 записей SPF из 100 запусков генератора, каждая со своим риском рекурсивных запросов. Любая может выйти из строя без немедленного предупреждения.
Подход TrekMail: один шаблон для клиентских доменов:
v=spf1 include:spf.trekmail.net -all
В плане Agency ($23.25/mo) можно управлять 1,000+ доменами из одной панели. Стандартизация корпоративной почты на TrekMail способна снизить риск рекурсивных запросов для основного канала связи. Изменения в управлении при росте числа доменов описаны в руководстве о мультидоменном почтовом хостинге.
В документе об обязательных записях DNS собраны требования TrekMail к SPF, MX, DKIM и DMARC.
Частые вопросы о генераторе SPF
Эти вопросы возникают, когда первый сеанс генератора дает нерабочую запись. Они связаны с разницей между синтаксической проверкой генератора и операционной проверкой, для которой нужно исследовать действующий DNS.
Можно ли сравнить результат двух генераторов?
Можно, но основной проблемы это не решает. Два инструмента могут выдать разные строки, и ни один не обязан обнаруживать дубликаты в действующем DNS или точно считать рекурсивные запросы. Описанные выше шаги CLI надежнее проверяют эти условия.
Генератор считает запись действительной. Почему письма возвращаются?
Для генератора "действительная" обычно означает синтаксически корректную, а не работоспособную в вашей среде. Две частые причины: дубликат с PermError или более 10 рекурсивных запросов. Обе требуют проверки действующего DNS, а не только интерфейса.
Когда использовать -all, а когда ~all?
В рабочей среде используйте -all (HardFail), чтобы неавторизованные отправители могли отклоняться. ~all (SoftFail) подходит для миграции, когда вы еще не уверены, что перечислили всех отправителей. Это временное состояние. Генератор со значением по умолчанию ?all или +all может отдавать приоритет видимой работоспособности, а не реальному контролю доставки.
Кратко
Бесплатный генератор SPF является разумной отправной точкой для черновика, но недостаточной финальной проверкой для рабочей среды. Три пропущенные проблемы, дубликаты, переполнение рекурсивных запросов и пустые запросы, могут вызвать возвраты и PermError, диагностика которых занимает часы.
Решение не обязательно в другом генераторе, а в пятиминутной проверке CLI: найти дубликаты, посчитать вложенные запросы и проверить механизмы. После этого можно публиковать запись.
Если вы хотите отказаться от генератора, TrekMail объединяет исходящую отправку в один include:. Одна строка DNS, без постоянного подсчета запросов и с меньшим объемом диагностики PermError.
Начните 14-day бесплатный пробный период. Требуется банковская карта; отмена доступна по текущим условиям.