webtrajans
ru

Что такое SPF, DKIM и DMARC и почему ваши письма попадают в спам

Самая частая причина, по которой корпоративные письма оказываются в спаме, — отсутствующие или ошибочные записи аутентификации. Три DNS-записи решают эту проблему.

Обновлено: 5 мин чтения

Когда в 1980-х проектировали протокол электронной почты SMTP, механизма проверки отправителя в нём не было. В поле From: можно было написать любой адрес — этим до сих пор пользуются фишеры. SPF, DKIM и DMARC — три слоя защиты, добавленные позже, и все три настраиваются в DNS-записях вашего домена.

Почему письма попадают в спам

Почтовый сервер получателя (Gmail, Яндекс Почта, Mail.ru, Outlook) для каждого письма по сути задаёт три вопроса:

  1. Имеет ли сервер-отправитель право отправлять письма от имени этого домена? (SPF)
  2. Не изменено ли письмо в пути и действительно ли оно подписано этим доменом? (DKIM)
  3. Что, по мнению владельца домена, делать, если проверки не пройдены? (DMARC)

Если ответ «неизвестно» или «нет», письмо попадает в спам или вообще не доставляется. Первыми страдают письма из сторонних сервисов: уведомления формы обратной связи на сайте, заказы интернет-магазина, рассылки через сервисы email-маркетинга, письма из CRM.

Требования крупных почтовых сервисов

С февраля 2024 года Google и Yahoo ввели обязательные правила для отправителей. Для всех: SPF или DKIM, корректные обратные DNS-записи, низкий уровень жалоб на спам. Для массовых отправителей (более 5 000 писем в день на адреса Gmail) дополнительно: SPF и DKIM, запись DMARC (минимум p=none), выравнивание домена From: с SPF или DKIM, отписка в один клик и уровень жалоб ниже 0,3 %.

С 5 мая 2025 года аналогичные требования для отправителей более 5 000 писем в день ввела Microsoft (Outlook.com, Hotmail, Live): несоответствующие письма отклоняются с ошибкой 550 5.7.515.

Российские сервисы — Mail.ru и Яндекс — тоже проверяют SPF, DKIM и DMARC и учитывают их в фильтрации. Для анализа доставляемости писем на ящики Mail.ru есть сервис Postmaster Mail.ru, где видно, сколько писем попадает во входящие и в спам.

SPF: кто может отправлять от имени домена

SPF (Sender Policy Framework) — список серверов, которым разрешено отправлять почту от имени домена. Это TXT-запись на корневом домене:

v=spf1 include:_spf.yandex.net include:_spf.google.com ~all
  • v=spf1 — признак SPF-записи.
  • include: — подключает SPF-список другого сервиса (Яндекс 360, Google Workspace, Microsoft 365, сервис рассылок).
  • ip4: / ip6: — разрешает конкретный IP, например сервер вашего сайта.
  • ~all в конце — «остальные подозрительны» (softfail), -all — «строго отклонять» (fail).

Значения include берите из документации своего почтового провайдера — у каждого сервиса они свои.

Частые ошибки:

Ошибка Результат Решение
Две записи v=spf1 SPF полностью недействителен Объединить в одну
Больше 10 DNS-запросов (цепочка include) permerror Убрать неиспользуемые сервисы
+all Отправлять от вашего имени может кто угодно Использовать ~all или -all
Не добавлен сервер сайта Уведомления с сайта уходят в спам Добавить ip4: хостинга или его include

DKIM: письмо не подделано

DKIM (DomainKeys Identified Mail) добавляет к каждому исходящему письму цифровую подпись, сделанную закрытым ключом сервера. Получатель проверяет подпись, найдя открытый ключ в DNS. Ключ публикуется под именем селектора:

mail._domainkey.example.ru  TXT  "v=DKIM1; k=rsa; p=MIIBIjANBgkqh..."

Ключ DKIM вы не создаёте сами: его выдаёт почтовый сервис. В Яндекс 360 он находится в настройках домена в разделе почты (DKIM-подпись), в Google Workspace — в консоли администратора (Gmail → Аутентификация почты), в Microsoft 365 — в Defender. Каждый отправляющий сервис использует свой селектор, поэтому несколько DKIM-записей у одного домена — это нормально.

DMARC: что делать при неудаче

DMARC связывает SPF и DKIM в единую политику. Он делает две вещи: говорит получателю, что делать с письмами, не прошедшими проверку, и включает отчёты для владельца домена. Это TXT-запись на поддомене _dmarc:

_dmarc.example.ru  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@example.ru"
Политика Значение Когда
p=none Только наблюдать и присылать отчёты Первая настройка, 2–4 недели
p=quarantine Отправлять непрошедшие в спам Когда отчёты чистые
p=reject Отклонять непрошедшие Когда все источники проверены

Чтобы DMARC был пройден, хотя бы одна из проверок — SPF или DKIM — должна не только пройти, но и быть выровнена (aligned) с доменом в адресе From:. Например, если рассылка уходит с сервера сервиса рассылок и подписана его доменом, а не вашим, DMARC не пройдёт — нужно настроить в сервисе подпись DKIM для своего домена.

Отчёты DMARC приходят в формате XML и читать их вручную неудобно. Используйте бесплатные анализаторы отчётов или выделите для них отдельный ящик.

Пошаговая настройка

  1. Проверьте текущее состояние. Введите домен в проверку SPF и DMARC и посмотрите, каких записей не хватает.
  2. Составьте список всех отправителей. Корпоративная почта (Яндекс 360, Google, Microsoft, Mail.ru для бизнеса), сервер сайта (формы), сервис рассылок, интернет-магазин, CRM, 1С.
  3. Создайте одну SPF-запись и добавьте include для каждого сервиса.
  4. Включите DKIM в каждом сервисе и добавьте выданные записи в DNS.
  5. Опубликуйте DMARC с p=none и несколько недель изучайте отчёты.
  6. Ужесточите политику: сначала quarantine, затем reject.
  7. Проверьте записи: через проверку DNS убедитесь, что TXT-записи опубликованы и видны.

Пример для небольшой компании

Компания использует Яндекс 360 для почты, сайт на хостинге с IP 203.0.113.10 (отправляет уведомления о заявках) и сервис рассылок. Итоговый набор записей:

example.ru         TXT  "v=spf1 include:_spf.yandex.net ip4:203.0.113.10 include:<spf-сервиса-рассылок> ~all"
mail._domainkey    TXT  "v=DKIM1; k=rsa; p=..."   (из Яндекс 360)
<селектор>._domainkey  CNAME/TXT  ...             (из сервиса рассылок)
_dmarc             TXT  "v=DMARC1; p=none; rua=mailto:dmarc@example.ru"

Через месяц, если отчёты показывают, что все письма проходят проверку, политика меняется на p=quarantine.

Чек-лист

  • У домена одна запись v=spf1, в пределах лимита 10 DNS-запросов.
  • DKIM включён в каждом сервисе, который отправляет письма.
  • Есть запись _dmarc минимум с p=none и адресом для отчётов.
  • Форма на сайте отправляет письма через SMTP вашего домена, а не через PHP mail().
  • Для массовых рассылок есть отписка в один клик.
  • Срок регистрации домена и его DNS-провайдер известны — это можно проверить через WHOIS.

Про сами DNS-записи — A, MX, TXT, CNAME — подробно рассказано в гайде DNS-записи простыми словами.

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

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

Технически да, но Gmail, Outlook, Яндекс и Mail.ru всё чаще отправляют неаутентифицированные письма в спам или отклоняют их. С 2024 года Google и Yahoo требуют от массовых отправителей SPF, DKIM и DMARC, а с мая 2025 года к ним присоединилась Microsoft.

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

Нет. Если у домена две отдельные записи v=spf1, проверка SPF завершается ошибкой permerror, и получатель ведёт себя так, будто записи нет. Объедините все сервисы в одной записи через include.

Сразу ставить политику DMARC p=reject?

Нет. Сначала несколько недель соберите отчёты с p=none, убедитесь, что все легитимные источники проходят SPF или DKIM, затем перейдите на p=quarantine и только потом на p=reject.

Через сколько времени изменения начнут работать?

DNS-записи обычно расходятся за время от нескольких минут до нескольких часов; при большом TTL — до суток.

Похожие гайды

DNS-записи простыми словами: типы, TTL и смена NS-серверовDNS — телефонная книга интернета: она переводит понятное имя сайта в IP-адрес сервера. От правильных DNS-записей зависит, откроется ли сайт и дойдёт ли почта.Почему не открывается сайт: пошаговая диагностикаПервый вопрос при недоступном сайте — он лежит для всех или только у вас? Ответ подскажет, где искать причину: на сервере, в DNS, в сертификате или на вашей стороне.Индекс массы тела: как рассчитать ИМТ и правильно понять результатИМТ — простой способ оценить, соответствует ли вес росту. Он удобен для скрининга, но не показывает, из чего состоит вес, поэтому его стоит дополнять другими измерениями.Core Web Vitals: как понять и улучшить LCP, INP и CLSCore Web Vitals — три метрики Google, которые описывают, как быстро страница показывает контент, как быстро реагирует на действия и насколько стабилен её макет.