Доставка писем

Доставляемость почты на Postfix (SPF + DKIM + DMARC)

16.12.25

Если письма с собственного сервера то не доходят, то попадают в спам, почти всегда причина в «доверии» к домену (DNS‑аутентификация отправителя и корректная политика DMARC). Практический минимум для нормальной доставляемости это связка SPF + DKIM + DMARC, а уже потом антиспам и репутация IP.

Что понадобится

Шаг 1. Настройте SPF (TXT)

SPF отвечает на вопрос: «какие сервера имеют право отправлять почту от имени домена». В DNS добавляется TXT‑запись для корня домена (или поддомена, если отправка идёт с него).

Пример минимальной SPF-записи (если отправляет только ваш сервер по A‑записи домена):

v=spf1 a mx ~all

Если отправляет конкретный IP:

v=spf1 ip4:YOUR_SERVER_IP ~all

Рекомендации:

  • Начинайте с ~all (softfail), чтобы не «уронить» доставку при ошибках, затем можно ужесточать до -all.
  • У домена должна быть одна SPF TXT-запись, не делайте несколько — это частая ошибка.

Шаг 2. Проверьте DKIM (подпись писем)

DKIM подтверждает, что письмо действительно подписано вашим доменом, и его не изменили по дороге. По сути это «цифровая подпись» на уровне заголовков письма, построенная на асинхронном шифровании.

Что проверить быстро:

  • В исходниках доставленного письма должен быть заголовок DKIM-Signature.
  • В заголовках часто появляется Authentication-Results, где видно dkim=pass/fail (формат зависит от принимающего сервера).

Если DKIM «иногда pass, иногда fail», то типовая причина в том, что часть писем уходит через другой исходящий сервер (relay/SMTP у сайта/приложения). Проверьте, откуда реально отправляются письма (логи Postfix).

Шаг 3. Добавьте DMARC (TXT) — и делайте rollout безопасно

DMARC связывает SPF и DKIM и говорит получателю: «что делать, если проверка не прошла». Главная ошибка новичков — сразу ставить p=reject и получать внезапные отказы доставки. Правильнее раскатывать DMARC постепенно.

Стартовая DMARC-запись (мягкий режим, сбор отчётов):

  • Host/Name: _dmarc
  • TXT value: v=DMARC1; p=none; rua=mailto:dmarc@YOURDOMAIN; adkim=s; aspf=s; fo=1; pct=100

Пояснения:

  • p=none — ничего не блокируем, только наблюдаем.
  • rua= — куда будут приходить агрегированные отчёты (XML).
  • adkim/aspf — режим выравнивания (alignment). Строгие значения полезны, но требуют аккуратности (чтобы домены реально совпадали).

Через 1–2 недели, когда видно что всё «pass», обычно переходят на p=quarantine, затем p=reject (по ситуации).

Шаг 4. Научитесь читать DMARC отчёты (RUA), чтобы понимать, что ломается

Агрегированные отчёты DMARC приходят в виде XML и показывают статистику: кто отправлял, с каких IP, и что прошло/не прошло SPF/DKIM/DMARC. Это лучший способ найти «теневых отправителей» — CRM, формы сайта, сторонние SMTP, рассыльщики, которые шлют от вашего домена и т.д.

Что искать в отчётах в первую очередь:

  • Неизвестные IP‑адреса отправителей (значит письма идут не только с вашего сервера).
  • dkim=fail при spf=pass (или наоборот): часто проблема в домене Return-Path/From, селекторе DKIM или в том, что письмо меняет промежуточный сервис.
  • Резкие всплески fail — повод проверить компрометацию/спуфинг.

Если отчёты неудобно разбирать руками, можно подключить любой парсер/агрегатор DMARC-репортов (хотя бы временно) — логика остаётся той же: найти источники fail и привести их к pass.

Шаг 5. Быстрый чек‑лист «письма в спаме»

Если SPF/DKIM/DMARC настроены, но всё равно проблемы:

  1. Проверьте PTR (reverse DNS) на IP сервера и соответствие имени хоста (часто влияет на доверие).
  2. Проверьте TLS на исходящей почте (получатели любят «аккуратные» TLS‑конфиги).
  3. Проверьте контент. Если сайт шлет короткие письма со ссылками, трекингом и «маркетинговыми» словами, то эти письма вероятно триггерят фильтры даже при pass‑аутентификации. Переработайте структуру писем магазина, добавьте информации и контента.