Reefox

SPF, DKIM и DMARC

Какие DNS-записи нужны, чтобы письма сервиса доходили до клиентов и не попадали в спам, как их добавить у регистратора и проверить.

Когда письмо приходит в Gmail или Яндекс Почту, почтовый сервер получателя проверяет: правда ли оно от вашего домена? Для этого он смотрит три DNS-записи домена: SPF, DKIM и DMARC. Нет записей — письмо попадёт в «Спам» или вовсе не дойдёт.

Записи добавляются один раз там, где управляются DNS вашего домена: у регистратора (REG.RU, Timeweb и другие), в Cloudflare или в Cloud DNS Яндекса.

Три записи простыми словами

ЗаписьПростыми словамиГде живёт
SPFСписок серверов, которым разрешено слать письма от вашего доменаTXT-запись на домене
DKIMПодпись на каждом письме. Получатель сверяет её с ключом в DNS и видит, что письмо не подделаноTXT или CNAME на имени вида селектор._domainkey
DMARCПравило для получателя: что делать с письмом, если SPF и DKIM не сошлисьTXT-запись на _dmarc

Главная из трёх — DKIM. Без неё Postbox и Resend не подтвердят домен и не начнут отправку.

SPF

SPF — одна TXT-запись на корне домена. Она начинается с v=spf1, дальше перечислены разрешённые отправители, в конце — ~all («остальным не доверять»).

Только одна SPF-запись на домене

Если на домене две записи v=spf1, проверка SPF ломается целиком. Новых отправителей дописывайте в существующую запись, а не создавайте вторую.

Как собрать одну запись из нескольких сервисов:

СервисЧто добавить в SPF
Yandex Postboxinclude:spf.postbox.yandexcloud.net
Почта домена в Яндекс 360include:_spf.yandex.net
Свой сервер (режим «Свой сервер»)ip4:IP-вашего-сервера
Resendничего: Resend ставит SPF на свой поддомен send

Пример: почта домена в Яндекс 360, а письма клиентам — через Postbox:

v=spf1 include:_spf.yandex.net include:spf.postbox.yandexcloud.net ~all

Если других отправителей нет, Яндекс 360 советует короткую запись v=spf1 redirect=_spf.yandex.net. Когда добавляете второй сервис, перепишите её через include, как в примере выше.

DKIM

DKIM — это ключ. Сервис отправки подписывает им каждое письмо, а открытую часть ключа вы кладёте в DNS. Значение DKIM всегда выдаёт сам сервис, его не придумывают.

СервисГде взять DKIMКак выглядит
Yandex PostboxСтраница адреса в Cloud Postbox, блок «Настройка подписи писем (DKIM)»Две CNAME-записи
ResendТаблица в админке Reefox Panel после «Подключить домен» или кабинет ResendTXT на resend._domainkey
Яндекс 360Админка Яндекс 360: «Домены» → «Настроить DKIM»TXT на mail._domainkey
Свой серверФайл на сервере, см. нижеTXT на tmavpn._domainkey

У каждого сервиса своё имя DKIM-записи, поэтому DKIM разных сервисов друг другу не мешают.

DMARC

DMARC говорит получателю, как поступать с письмами, которые не прошли проверку. Начните с мягкого правила — только наблюдать:

ТипИмяЗначение
TXT_dmarcv=DMARC1; p=none

Через пару недель, когда убедитесь, что все письма проходят SPF и DKIM, правило можно ужесточить: p=quarantine — подозрительные письма в спам, p=reject — отклонять. Сразу ставить p=reject не стоит: если вы что-то забыли, перестанут доходить и ваши обычные письма с домена.

Gmail требует DMARC от больших отправителей

Если с домена уходит больше 5 000 писем в день на адреса Gmail, Google требует все три записи — SPF, DKIM и DMARC. Для небольшого сервиса достаточно SPF или DKIM, но DMARC всё равно повышает доверие к письмам.

Записи для режима «Свой сервер»

В режиме «Свой сервер» письма отправляет почтовый сервер внутри Reefox Panel на вашей машине. Ему нужны все записи сразу, плюс PTR. Здесь example.ru — почтовый домен, 203.0.113.10 — IP вашего сервера.

ЗаписьТипИмяЗначение
SPFTXT@v=spf1 a mx ip4:203.0.113.10 ~all
DKIMTXTtmavpn._domainkeyключ из файла на сервере, см. ниже
DMARCTXT_dmarcv=DMARC1; p=none
PTR—IP сервераmail.example.ru

DKIM-ключ сервер создаёт сам при первом запуске. Посмотреть его можно по SSH:

docker exec vpn-app cat /app/data/mail/dkim/example.ru/tmavpn.txt

В файле ключ разбит на несколько кусков в кавычках. Для DNS склейте их в одну строку, начиная с v=DKIM1, без кавычек и скобок.

PTR (обратная запись) связывает IP сервера с именем. Её ставит не регистратор, а хостинг: в панели сервера или через поддержку. Без PTR Gmail, Яндекс и Mail.ru часто отклоняют письма.

Многие хостинги закрывают порт 25

Свой сервер отправляет письма через порт 25. Многие хостинги закрывают его, чтобы с их сетей не шёл спам. Тогда письма теряются молча, хотя админка пишет «отправлено». Если не хотите с этим разбираться, выберите Yandex Postbox: он работает по HTTPS.

Как добавить запись у регистратора

У всех регистраторов форма похожа: тип, имя, значение и иногда TTL.

Откройте управление DNS-записями домена. Обычно это раздел «DNS», «Управление зоной» или «DNS-записи».

Нажмите кнопку добавления записи и выберите тип: TXT, CNAME или MX.

В поле имени (оно может называться «Хост», «Поддомен» или «Name») впишите имя без вашего домена: _dmarc, а не _dmarc.example.ru. Для корня домена — @ или пустое поле, как требует регистратор.

В поле значения вставьте значение целиком, скопировав его из сервиса. TTL оставьте по умолчанию.

Сохраните. Обычно записи начинают отвечать через 5–30 минут. Иногда — до 72 часов.

Где чаще всего ошибаются

  • Домен дважды. Регистратор сам дописывает домен к имени. Если вписать _dmarc.example.ru, получится _dmarc.example.ru.example.ru.
  • Не та панель DNS. Записи работают только там, куда указывают NS-серверы домена. Если домен делегирован в Cloudflare, записи у регистратора ни на что не влияют.
  • Кавычки и пробелы. Лишний пробел или обрезанный ключ ломают DKIM. Копируйте значение кнопкой «Скопировать», а не выделением мышью.
  • Проксирование в Cloudflare. CNAME для почты должны быть «DNS only», серое облако.

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

На Mac и Linux в терминале есть команда dig. Она показывает, что видит весь интернет. Замените example.ru на свой домен.

# SPF — должна быть ровно одна строка с v=spf1
dig +short TXT example.ru

# DMARC
dig +short TXT _dmarc.example.ru

# DKIM Resend
dig +short TXT resend._domainkey.example.ru

# DKIM Яндекс 360
dig +short TXT mail._domainkey.example.ru

# DKIM Postbox: имя CNAME скопируйте из Postbox
dig +short CNAME имя-из-postbox._domainkey.example.ru

# Записи Resend на поддомене send
dig +short MX send.example.ru
dig +short TXT send.example.ru

# PTR для режима «Свой сервер»
dig +short -x 203.0.113.10

Пустой ответ значит, что записи пока нет или она добавлена не туда.

У домена обычно два NS-сервера. Пока запись не появилась на обоих, проверка у почтового сервиса может проходить через раз. Проверьте каждый:

dig +short NS example.ru
dig +short TXT _dmarc.example.ru @ns1.example-dns.ru
dig +short TXT _dmarc.example.ru @ns2.example-dns.ru

Вместо ns1.example-dns.ru и ns2.example-dns.ru подставьте серверы из первой команды.

На Windows вместо dig есть nslookup:

nslookup -type=TXT _dmarc.example.ru

Проверка в самом письме

Самая честная проверка — посмотреть, как письмо принял получатель.

В Reefox Panel откройте Настройки → Сайт → «Почта и вход» и отправьте тест на свой ящик в Gmail.

Откройте письмо в Gmail, нажмите меню из трёх точек и выберите «Показать оригинал».

Вверху будут строки SPF, DKIM и DMARC. Везде должно стоять PASS.

Если где-то FAIL или NONE — эта запись отсутствует или не совпадает. Проверьте её командой dig выше.

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

ПричинаЧто сделать
Нет DKIM или SPFДобавьте записи из этой страницы и проверьте их через dig
Две SPF-записи на доменеСклейте в одну
Нет DMARCДобавьте v=DMARC1; p=none
Email отправителя на другом домене, чем подтверждён в сервисеВ поле «Email» используйте адрес на подтверждённом домене
Домен совсем новыйПервые дни почтовики относятся к нему настороженно. Начните с малого потока, репутация вырастет сама
Режим «Свой сервер» без PTR или с закрытым портом 25Попросите хостинг поставить PTR или перейдите на Yandex Postbox
Клиенты жмут «Это спам» на напоминанияхНе меняйте частоту и тексты на навязчивые. В каждом напоминании есть ссылка «отпишись», коды входа приходят и после отписки
Много писем на несуществующие адресаСервисы снижают доверие и могут остановить отправку. У Resend порог — 4 % возвратов
В тексте слова, похожие на рекламу или спамДержите тексты напоминаний короткими и по делу. Тексты меняются в Настройки → Напоминания

Попадание в «Промоакции» Gmail — не спам. Клиент письмо увидит, но попросите его перетащить письмо во «Входящие»: Gmail это запомнит.

Источники