~/charly.cash/ статьи/ spf-dkim-dmarc
инфраструктура

SPF, DKIM, DMARC

// DNS-аутентификация почты:
настраиваем правильно с первого раза.

Три DNS-записи, без которых твои письма идут в спам вне зависимости от качества контента. Не опциональные — обязательные. Настраиваются один раз, работают постоянно.

Зачем это нужно

Почтовые провайдеры (Gmail, Outlook, Yahoo) проверяют каждое входящее письмо на подлинность: действительно ли оно отправлено с того домена, который указан в From? Без этой проверки любой мог бы слать письма от имени bank.com или google.com.

SPF, DKIM и DMARC — три механизма, которые это обеспечивают:

  • SPF — разрешает конкретным IP отправлять от имени домена
  • DKIM — криптографически подписывает письмо, гарантируя, что оно не изменено
  • DMARC — указывает что делать с письмами, которые не прошли SPF/DKIM
Без SPF и DKIM — Google Postmaster покажет репутацию 0. Письма будут отфильтрованы ещё до спама — просто отклонены. С 2024 года Gmail и Yahoo требуют SPF+DKIM как обязательные для любого домена с объёмами от 5000 писем/день.

SPF — Sender Policy Framework

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

Как работает: получатель смотрит на IP отправителя → проверяет SPF-запись домена → если IP в списке — ОК, если нет — fail.

Синтаксис:

// TXT ЗАПИСЬ ДЛЯ example.com
// Базовый вариант — разрешить только сервер домена v=spf1 mx -all // Разрешить конкретный IP v=spf1 ip4:1.2.3.4 -all // Разрешить несколько IP и серверов v=spf1 ip4:1.2.3.4 ip4:5.6.7.8 include:sendgrid.net -all // Мягкий режим (рекомендуется для старта) v=spf1 ip4:1.2.3.4 ~all

Значения в конце:

  • -all — жёсткий: письма не из списка — отклонить (fail)
  • ~all — мягкий: письма не из списка — пометить как suspicious (softfail)
  • +all — разрешить всё (никогда не используй)

Для старта используй ~all (softfail) — меньше шансов случайно заблокировать нужные письма пока настраиваешь.

DKIM — DomainKeys Identified Mail

DKIM добавляет цифровую подпись к каждому письму. Получатель может проверить эту подпись через DNS-запись и убедиться что письмо не было изменено после отправки.

Как работает:

  1. Генерируешь пару ключей: приватный (на сервере) и публичный (в DNS)
  2. При отправке — майлер подписывает письмо приватным ключом
  3. Получатель берёт публичный ключ из DNS и проверяет подпись
  4. Если совпадает — письмо не было изменено при передаче

Генерация ключей:

// КОМАНДЫ НА СЕРВЕРЕ (Linux)
# Генерация приватного ключа openssl genrsa -out dkim_private.pem 2048 # Извлечение публичного ключа openssl rsa -in dkim_private.pem -pubout -out dkim_public.pem

DNS-запись для публичного ключа:

// TXT ЗАПИСЬ: mail._domainkey.example.com
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA... // p= это твой публичный ключ (длинная строка)

Большинство майлеров (AMS, CharlySender, PowerMTA) генерируют DKIM-ключи автоматически и сразу показывают что добавить в DNS. Используй их — не делай вручную без нужды.

Важно: имя записи — selector._domainkey.domain.com. Selector — это любое слово (mail, dkim, default). Можно иметь несколько DKIM-ключей с разными selector-ами.

DMARC — Domain-based Message Authentication

DMARC — политика, которая говорит получателям: «что делать с письмами, которые не прошли SPF или DKIM».

DNS-запись: _dmarc.example.com

// TXT ЗАПИСЬ
// Мониторинг — ничего не блокировать, только отчёты v=DMARC1; p=none; rua=mailto:dmarc@example.com // Карантин — подозрительные письма идут в спам v=DMARC1; p=quarantine; pct=100; rua=mailto:dmarc@example.com // Отклонение — письма без аутентификации отклоняются v=DMARC1; p=reject; pct=100; rua=mailto:dmarc@example.com

Параметры:

  • p=none — только мониторинг, без действий. Начинай с этого
  • p=quarantine — подозрительные письма в спам
  • p=reject — отклонить всё без аутентификации
  • pct=100 — применять политику к 100% писем
  • rua= — адрес для получения отчётов (можно не указывать)

Для рассылок используй p=none. Жёсткие политики нужны легальным компаниям, нам — только мониторинг.

Проверка настроек

После настройки DNS-записи вступают в силу через 5–60 минут (зависит от TTL). Проверяй:

  • mail-tester.com — отправь тестовое письмо, покажет оценку и все проблемы
  • mxtoolbox.com → MX Lookup, SPF Check, DKIM Lookup
  • dmarcanalyzer.com — проверка DMARC-записи
  • Google Admin Toolbox → Check MX — проверяет всё для Gmail

Целевой результат на mail-tester.com — 9/10 или выше. Ниже 7 — серьёзные проблемы.

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

  • Несколько SPF-записей на одном домене — можно только одну. Несколько = fail автоматически
  • Слишком много lookup в SPF — максимум 10 DNS-запросов в одной SPF-записи. Больше = permerror
  • Неправильный selector в DKIM — имя в DNS должно точно совпадать с тем, что указано в настройках майлера
  • TTL слишком высокий — при изменении DNS записей со старым TTL ждёшь часами. Ставь 300–600 секунд
  • Забыли добавить DMARC — без неё Gmail с 2024 года понижает репутацию домена

Вывод

SPF + DKIM + DMARC — это минимальный обязательный набор для любого домена, с которого идёт рассылка. Настраивается за 30 минут, работает годами. Без этого — деньги на ветер.

После настройки — прогрей домен перед запуском объёмов. И следи за репутацией через Google Postmaster Tools.

// Не забывай

Копировать можно, распространять информацию можно, но не забывай указывать первоисточник. Профита тебе бро!