Настройка SPF, DKIM, DMARC для домена — пошаговое руководство
Что такое SPF, DKIM и DMARC — и почему это главная причина попадания в спам
Представьте, что кто-то отправляет письмо от имени admin@ваш-сайт.ru с другого сервера. Почтовый сервер Яндекса может это проверить? Без SPF, DKIM и DMARC — нет. Он просто не знает, какие серверы имеют право отправлять почту с вашего домена. Результат — любое письмо с вашего домена получает пониженное доверие, а часто идёт сразу в спам.
Вот что делает каждая запись:
Без SPF и DKIM у письма нет «паспорта». Без DMARC получатель не знает, как реагировать на нарушение. Все три должны работать вместе.
Почему это особенно важно для WordPress
WordPress по умолчанию отправляет письма через mail() PHP — без SMTP, без аутентификации, без подписи. Даже если вы уже настроили WP Mail SMTP или Post SMTP, без SPF/DKIM письма всё равно будут улетать в спам. Потому что проблема не в способе отправки, а в том, что получатель не доверяет домену.
Для сайтов на российских хостингах это особенно актуально:
- Beget — общий IP для сотен сайтов. Если сосед рассылал спам, ваш IP в чёрных списках. SPF хотя бы отделит ваш домен от чужого спама.
- Timeweb — почта через встроенный SMTP работает, но письма без DKIM часто режутся на Mail.ru.
- REG.RU — почтовые серверы по умолчанию не требуют DKIM-подписи, но фильтры Mail.ru и Яндекса всё равно снижают доверие.
Как настроить SPF
Шаг 1. Узнать свои серверы отправки
Запишите, откуда отправляете письма:
- Сам хостинг (Beget, Timeweb, REG.RU) — их исходящие SMTP-серверы
- Сторонний SMTP (Яндекс 360, Mail.ru для бизнеса) — их серверы
- CMS / CRM / платёжные системы, которые шлют письма от вашего имени
Шаг 2. Создать TXT-запись SPF
Формат записи:
ваш-домен.ru. IN TXT "v=spf1 include:_spf.yandex.net include:mxsspf.timeweb.ru ~all"
Разберём по частям:
v=spf1— версия SPF, обязательноinclude:_spf.yandex.net— разрешаем Яндекс 360 отправлять письма с доменаinclude:mxsspf.timeweb.ru— разрешаем Timeweb (если хостинг там)~all— мягкий отказ («пропусти, но пометь»). На этапе настройки используйте~all, потом можно заменить на-all(жёсткий отказ)
include для других серверов через пробел. Максимум — 10 DNS-запросов в одном SPF (считаются include, a, mx). Если больше — SPF не работает.Пример SPF для Beget + Яндекс 360:
v=spf1 include:_spf.yandex.net ip4:31.31.196.0/24 ~all
Точные IP-диапазоны Beget смотрите в документации. Для Timeweb: include:mxsspf.timeweb.ru. Для REG.RU: include:_spf.reg.ru.
Как настроить DKIM
Шаг 1. Сгенерировать ключи
На VPS через OpenDKIM:
opendkim-genkey -D /etc/opendkim/keys/ -d ваш-домен.ru -s default
cat /etc/opendkim/keys/default.txt
Если используете Яндекc 360 или Mail.ru для бизнеса — ключи генерируются в их панели управления. Вам не нужно ничего делать в консоли.
Шаг 2. Добавить TXT-запись DKIM в DNS
Для Яндекc 360:
mail._domainkey.ваш-домен.ru. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDC..."
Для Mail.ru:
mail._domainkey.ваш-домен.ru. IN TXT "v=DKIM1; k=rsa; t=s; p=..."
Для VPS с Postfix + OpenDKIM — селектор и значение из сгенерированного файла.
dig TXT mail._domainkey.ваш-домен.ru. Если запись видна — DKIM настроен. Отправьте тестовое письмо и проверьте заголовки — должна быть строка DKIM-Signature.Как настроить DMARC
DMARC — самая простая запись. Добавьте одну TXT-запись:
_dmarc.ваш-домен.ru. IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@ваш-домен.ru; pct=100; sp=quarantine"
Параметры:
p=quarantine— помещать в спам письма, не прошедшие проверку. Можноp=none(не делать ничего, только собирать отчёты) илиp=reject(отклонять полностью)rua=mailto:dmarc@ваш-домен.ru— куда присылать агрегированные отчёты. Заведите отдельный ящикpct=100— применять к 100% писемsp=quarantine— политика для поддоменов
p=reject, можно потерять легитимные письма. Неделю работайте в режиме мониторинга (p=none), проверяйте отчёты, потом переключайтесь на p=quarantine, и только через месяц — на p=reject, если уверены, что всё настроено правильно.Проверка результата
Не доверяйте «на глаз». Используйте инструменты:
- mail-tester.com — отправьте письмо на адрес, который даст сервис. Оценка 9-10 — всё отлично. Если меньше — смотрите, что именно не так.
- MXtoolbox SPF lookup (mxtoolbox.com/spf.aspx) — проверяет синтаксис SPF и количество DNS-запросов
- DKIMvalidator.com — проверяет DKIM-запись
- DMARCly.com — проверка DMARC-политики
Проверьте заголовки реального письма. Отправьте письмо на Яндекс и откройте его — нажмите «Ещё» → «Служебные заголовки». Ищите строки:
Authentication-Results: spf=pass (Яндекс)
Authentication-Results: dkim=pass
Authentication-Results: dmarc=pass
Если хотя бы один fail — разбирайтесь с проблемой.
Когда способ не сработает
mail() без SMTP-аутентификации. На shared-хостингах это часто режется на корню. Обязательно используйте WP Mail SMTP или Post SMTP с реальным SMTP-сервером.admin@gmail.com при домене ваш-сайт.ru) — SPF/DKIM проверяются для домена в From, а не для вашего домена. Указывайте From только на своём домене.include, a, mx — SPF не работает вообще. Оптимизируйте: уберите лишние include, объедините диапазоны.FAQ
include в существующую запись через пробел: v=spf1 include:_spf.yandex.net include:mxsspf.timeweb.ru ~all. Убедитесь, что DNS-запросов меньше 10.rua=mailto:...@ваш-домен.ru, почтовые серверы будут присылать агрегированные XML-отчёты раз в день. Парсить их можно через dmarcian.com или dmarcly.com — сервисы покажут, какие письма проходят проверку, а какие нет.Письма с сайта не доходят?
Настрою SPF, DKIM, DMARC и SMTP за один день. Проверка mail-tester, гарантия 9-10 баллов. Письма пойдут во «Входящие».