12 мин чтения Скорость, безопасность, хостинг

SPF-запись: как защитить почту домена от подделки и спама

spf записьspf запись пример
Содержание11

SPF-запись — строка в DNS домена, где перечислены серверы, которым разрешено отправлять почту от его имени. Почтовый сервер получателя сверяет отправителя с этим списком и решает, доверять ли письму. Без SPF письма с вашего домена чаще попадают в спам, а мошенникам проще подделать адрес.

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

SPF расшифровывается как Sender Policy Framework — «система политики отправителя». Это правило, которое владелец домена публикует в DNS: «письма от example.ru отправляют только вот эти серверы». Справка Яндекс 360 описывает настройку так: нужно создать TXT-запись со списком серверов, которые отвечают за отправку почты с вашего домена.

Технически это обычная текстовая запись типа TXT. Стандарт RFC 7208 прямо требует публиковать SPF только как DNS-запись типа TXT: отдельный тип записи SPF когда-то существовал, но от него отказались. В панели регистратора или хостинга вы добавляете TXT-запись для домена, и в её значении пишете правило, которое начинается с v=spf1.

Когда ваше письмо приходит, например, на Яндекс Почту или Gmail, принимающий сервер смотрит, с какого IP-адреса оно пришло, запрашивает SPF-запись домена отправителя и проверяет, есть ли этот адрес в списке. Результат проверки — одно из нескольких значений: pass, fail, softfail, neutral или ошибка. Дальше сервер учитывает его, решая, куда положить письмо.

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

От чего защищает SPF, а от чего нет

Главная польза SPF — доставляемость. По справке Яндекс 360, SPF-запись помогает снизить риск того, что письмо, отправленное с адреса на вашем домене, попадёт в спам у адресата. Крупные почтовые сервисы смотрят на неё в первую очередь.

Google сформулировал требования жёстче: все, кто отправляет письма на личные аккаунты Gmail, должны настроить SPF или DKIM. А отправители массовых рассылок — более 5000 сообщений в день — должны настроить все три механизма: SPF, DKIM и DMARC.

Вторая польза — защита от подделки. Мошенник, который рассылает письма «от вашей компании» со своего сервера, не попадёт в ваш список, и проверка SPF у получателя не пройдёт.

Но у SPF есть важная граница. Стандарт проверяет домен из служебных полей HELO или MAIL FROM, которые сервер передаёт во время доставки, а не адрес в поле «От кого», который видит человек. Злоумышленник может указать в служебном поле свой домен с корректным SPF, а в видимом — ваш. Закрывает эту дыру DMARC, о нём — в разделе про связку SPF, DKIM и DMARC.

Из чего состоит SPF-запись

Запись — это строка из версии и набора правил, которые проверяются слева направо. Первое совпавшее правило определяет результат, а правила после all, по RFC 7208, не проверяются вовсе.

Элемент Что означает Пример
v=spf1 версия, обязательное начало записи v=spf1
ip4, ip6 разрешённый адрес или подсеть ip4:203.0.113.10
a серверы из A-записи домена a
mx серверы из MX-записей домена mx
include взять правила из SPF другого домена include:_spf.yandex.net
redirect полностью заменить правило записью другого домена redirect=_spf.yandex.net
all всё остальное, ставится в конце ~all

Перед каждым механизмом может стоять квалификатор, который задаёт результат при совпадении. По RFC 7208 их четыре: «+» даёт pass, «-» даёт fail, «~» даёт softfail, «?» даёт neutral. Если квалификатор не указан, действует плюс, поэтому ip4:203.0.113.10 и +ip4:203.0.113.10 означают одно и то же.

На практике квалификатор пишут только перед all: ~all или -all. Это правило для всех серверов, которые не попали в список выше. Адрес 203.0.113.10 в примерах — документационный, подставьте свой.

Примеры SPF-записей для Яндекса, Google и сайта

Готовую запись обычно даёт почтовый сервис. Вот типовые варианты:

Кто отправляет почту SPF-запись
Только Яндекс 360 v=spf1 redirect=_spf.yandex.net
Яндекс 360 и свои серверы v=spf1 ip4:IP-1 ip4:IP-2 include:_spf.yandex.net ~all
Только Google Workspace v=spf1 include:_spf.google.com ~all
Почта сервиса и формы сайта с хостинга v=spf1 include:_spf.yandex.net ip4:IP-сервера-сайта ~all
Домен вообще не отправляет почту v=spf1 -all

Вариант с redirect подходит, только если всю почту отправляет один сервис: redirect передаёт проверку целиком его записи. Как только появляется второй отправитель — рассыльщик, CRM, формы сайта, — переходите на include. Справка Яндекс 360 даёт для этого случая формат v=spf1 ip4:IP-1 ip4:IP-2 ip4:IP-3 include:_spf.yandex.net ~all, где IP-1, IP-2 и IP-3 — адреса дополнительных серверов.

Частый случай на корпоративных сайтах — письма с форм заявок. Их отправляет сервер хостинга, и если его нет в SPF, уведомления о заявках уходят в спам у самой компании. Узнайте IP-адрес почтового сервера у хостера и добавьте его через ip4 или через include, если хостер публикует свою SPF-запись. При переезде сайта адрес сервера меняется, поэтому SPF входит в чек-лист из статьи как перенести сайт на другой хостинг.

Последняя строка таблицы важна для неиспользуемых доменов. Если вы купили домен для защиты бренда и почту с него не отправляете, запись v=spf1 -all сообщает получателям, что любое письмо от этого домена поддельное.

Мнение. Если у компании больше одного отправителя почты, не используйте redirect: перечислите всех через include и ip4 и закончите запись ~all. Это проще поддерживать, когда добавится новый сервис.

Что выбрать: ~all или -all?

Разница — в том, насколько уверенно вы говорите получателю «остальным не верить». По RFC 7208 результат fail — явное заявление, что сервер не уполномочен отправлять почту домена. Softfail — слабое заявление, что сервер, вероятно, не уполномочен. Решение, что делать с письмом, в обоих случаях принимает получатель.

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

Когда -all уместен:

  • Домен не отправляет почту — запись v=spf1 -all без механизмов.
  • Полный контроль над отправителями — вы точно знаете все сервисы и сверили их с отчётами DMARC.
  • Домен часто подделывают — и вы готовы к тому, что ошибка в записи отрежет часть легитимной почты.

Знак «?all» почти бесполезен: он означает «ничего не утверждаю» и не защищает от подделки. А «+all» — опасная ошибка: он разрешает отправлять от вашего имени кому угодно.

Как добавить SPF-запись в DNS домена?

SPF настраивают там, где управляют DNS-зоной домена: у регистратора, хостера или в кабинете почтового сервиса, если домен делегирован ему. По справке Яндекс 360, при делегировании домена на серверы Яндекса SPF-запись будет настроена автоматически.

Порядок для ручной настройки:

  1. Соберите всех отправителей

    Почтовый сервис, сервер сайта, CRM, сервис рассылок, онлайн-касса. Google в справке советует включить всех, кто отправляет почту от имени домена.

  2. Проверьте, нет ли уже SPF

    Если запись есть, её правят, а не добавляют вторую.

  3. Создайте TXT-запись

    Хост — @ или имя домена, значение — строка SPF. Если панель просит TTL, Яндекс советует указать 21600.

  4. Настройте поддомены отдельно

    По справке Google, если вы используете поддомены, необходимо добавить запись SPF для каждого поддомена.

  5. Подождите обновления

    Яндекс предупреждает, что DNS-серверы в интернете могут обмениваться данными о новых записях до 72 часов, а Google пишет, что начало работы SPF может занять до 48 часов.

Если домен куплен через нашу студию, DNS-записи для почты мы добавим сами — это часть регистрации домена. Как устроены домен, его зоны и записи, рассказывали в статье что такое домен сайта.

Лимит в 10 запросов и другие ограничения

У SPF есть жёсткие технические ограничения, и именно они ломают записи у растущих компаний. Главное — лимит DNS-запросов. По RFC 7208 запросы порождают механизмы include, a, mx, ptr, exists и модификатор redirect, а проверяющий сервер обязан ограничить число таких запросов десятью. Если лимит превышен, проверка возвращает permerror — ошибку, при которой запись считается неработающей.

Подвох в том, что include считается вместе с вложенными. Запись почтового сервиса сама может содержать несколько include, и три-четыре сервиса легко дают больше десяти запросов. Механизмы ip4, ip6 и all запросов не порождают, поэтому постоянные адреса выгоднее писать через ip4.

Второе ограничение — одна запись на домен. RFC 7208 запрещает домену иметь несколько записей, из которых проверка выбрала бы больше одной. Две TXT-записи с v=spf1 — частая ошибка после смены почты: старую забыли удалить, новую добавили рядом. Результат — та же ошибка permerror.

Третье — порядок. Всё, что стоит после all, игнорируется, поэтому all всегда пишут последним.

Факт. По RFC 7208 при проверке SPF допускается не больше 10 DNS-запросов от include, a, mx, ptr, exists и redirect вместе, иначе запись считается ошибочной.

Как проверить SPF-запись?

Проверка нужна дважды: сразу после настройки и после каждого нового сервиса-отправителя.

Сначала убедитесь, что запись опубликована. Подойдёт любой онлайн-сервис проверки DNS или команда nslookup -type=txt example.ru в терминале. В ответе должна быть ровно одна строка, начинающаяся с v=spf1.

Затем проверьте, как запись работает на реальном письме. Отправьте письмо с корпоративного адреса на личный ящик в Gmail или Яндекс Почте и откройте его служебные заголовки — в Gmail это пункт «Показать оригинал». Ищите строку Authentication-Results с результатом spf=pass. Если там softfail или fail, сервер, который отправил письмо, не попал в запись.

Повторите тест для каждого отправителя: письма с формы сайта, уведомления из CRM, тестовая рассылка. Именно они чаще всего оказываются вне SPF, потому что их настраивали разные люди в разное время.

SPF, DKIM и DMARC: зачем нужны все три

SPF — только первая из трёх проверок, и по отдельности он закрывает не всё. Почтовые сервисы смотрят на связку.

  • SPF — проверяет, что письмо пришло с разрешённого сервера.
  • DKIM — цифровая подпись письма. Сервер отправителя подписывает письмо закрытым ключом, а открытый ключ лежит в DNS; в Яндекс 360 это TXT-запись mail._domainkey.
  • DMARC — политика домена: что делать с письмом, если проверки не прошли, и куда присылать отчёты. Она сверяет видимый адрес отправителя с доменом, прошедшим SPF или DKIM, и закрывает подделку поля «От кого».

У DMARC три режима. По RFC 7489 политика none ничего не требует от получателя, quarantine просит считать не прошедшие проверку письма подозрительными, reject — отклонять их. Начинают обычно с none и отчётов: они покажут, кто ещё отправляет почту от вашего имени, а уже потом политику ужесточают.

Если почта на домене только заводится, настройте все три записи сразу: почтовые сервисы дают их готовыми, и это занимает меньше времени, чем потом разбираться с письмами в спаме.

Источники

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

Где взять SPF-запись для своей почты?

В справке почтового сервиса: Яндекс 360, Google Workspace и другие публикуют готовую строку. Если почта на хостинге, запись даёт хостер. Если домен делегирован почтовому сервису, запись обычно создаётся автоматически.

Можно ли сделать две SPF-записи, для почты и для сайта?

Нет. У домена должна быть одна SPF-запись. Все отправители — почтовый сервис, сервер сайта, рассыльщик — перечисляются в ней через include и ip4.

Почему письма уходят в спам, хотя SPF настроен?

SPF — только один из сигналов. Письма могут попадать в спам без DKIM и DMARC, из-за плохой репутации IP-адреса, содержания письма или жалоб получателей. Проверьте все три записи и заголовки письма.

Поделиться
ВКонтакте Telegram MAX
Рубрика статьи
Скорость, безопасность, хостинг
Ещё 35 статей в рубрике →
Рядом в разделе
Запросить Бриф на e-mail Уже есть концепция?
Запросите бриф на проект, чтобы мы могли объективно просчитать стоимость Вашего будущего проекта.
Нужна консультация?
Мы постараемся ответить на все ваши вопросы

Расскажите о задаче — посчитаем смету

Ответьте на несколько вопросов: что за компания, какие разделы нужны, есть ли тексты и фотографии. Этого хватит, чтобы посчитать смету с фиксированной ценой и сроком — она бесплатна и ни к чему не обязывает.
Написать