· 15 мин чтения

Postfix + SPF + DKIM + DMARC: настройка, после которой письма перестают падать в спам

Семёнов Евгений Сергеевич, директор АйТи Фреш. 15+ лет в корпоративном IT. У нас на практике почти каждую неделю приходит запрос «наши письма не доходят до Mail.ru» или «клиенты пишут, что мы в спаме». Причина в 90% случаев — либо отсутствие, либо кривые SPF/DKIM/DMARC записи. В 2025 году без этой тройки провайдеры просто не доверяют вашей почте. В статье — полное руководство по настройке на Postfix, с проверками и типовыми граблями.

Зачем SPF, DKIM, DMARC

Исторически SMTP не содержит никакой аутентификации: любой сервер может отправить письмо от имени boss@gazprom.ru. Это позволило процветать фишингу и спаму. Чтобы ограничить злоупотребления, придумали три дополнительных механизма:

Без них в 2025 году письма из корпоративной почты в лучшем случае попадают в спам, в худшем — отвергаются MX-сервером без уведомления отправителя. Я всегда настраиваю все три + дополнительно MTA-STS и BIMI для крупных брендов.

Готовим Postfix и DNS

Рабочий стенд — Ubuntu 22.04 LTS, Postfix 3.6+, OpenDKIM 2.11. Предполагаем, что базовый Postfix с приёмом и отправкой почты уже поднят (если нет — см. отдельную статью на сайте про postfix+dovecot). Плюс должен быть корректный rDNS (PTR) на IP, совпадающий с HELO Postfix.

cat /etc/postfix/main.cf | grep -E "^(myhostname|mydomain|mynetworks|inet_interfaces|smtpd_tls)"

# Важно: myhostname = mx.yourdomain.ru
# PTR-запись на IP должна вести на mx.yourdomain.ru
dig -x <ваш IP>

SPF: самая простая часть

SPF — это одна TXT-запись в DNS. Для домена example.ru:

example.ru.  IN  TXT  "v=spf1 ip4:203.0.113.10 ip4:203.0.113.11 include:_spf.mail.ru ~all"

Что означает:

Ошибки, которые я вижу чаще всего:

DKIM: подпись через OpenDKIM

DKIM требует установки дополнительного демона — OpenDKIM. Он получает от Postfix исходящие письма через Milter, подписывает их приватным ключом и отдаёт обратно.

apt install -y opendkim opendkim-tools
mkdir -p /etc/opendkim/keys/example.ru

# Генерим ключ
cd /etc/opendkim/keys/example.ru
opendkim-genkey -s mail -d example.ru -b 2048
chown opendkim:opendkim mail.private

# Файл mail.txt содержит TXT-запись для публикации в DNS
cat mail.txt

Пример записи для публикации:

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

Конфиг OpenDKIM — /etc/opendkim.conf:

Syslog                  yes
UMask                   002
Mode                    sv
Canonicalization        relaxed/simple
Selector                mail
Socket                  inet:8891@localhost
PidFile                 /var/run/opendkim/opendkim.pid
OversignHeaders         From
TrustAnchorFile         /usr/share/dns/root.key

KeyTable                /etc/opendkim/KeyTable
SigningTable            refile:/etc/opendkim/SigningTable
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts

Дополнительные файлы:

# /etc/opendkim/KeyTable
mail._domainkey.example.ru example.ru:mail:/etc/opendkim/keys/example.ru/mail.private

# /etc/opendkim/SigningTable
*@example.ru mail._domainkey.example.ru

# /etc/opendkim/TrustedHosts
127.0.0.1
localhost
192.168.0.0/16
10.0.0.0/8

Связываем с Postfix — в /etc/postfix/main.cf:

milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
systemctl enable --now opendkim
systemctl restart postfix

# Тест
opendkim-testkey -d example.ru -s mail -vvv

DMARC: политика поверх SPF+DKIM

DMARC — ещё одна TXT-запись, в поддомене _dmarc:

_dmarc.example.ru.  IN  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@example.ru; ruf=mailto:dmarc@example.ru; fo=1; adkim=r; aspf=r; pct=100"

Параметры:

Я всегда начинаю с p=none и анализирую приходящие XML-отчёты 2–4 недели. Когда видно, что 99%+ писем проходят SPF/DKIM — переключаю на p=quarantine, ещё через 2 недели — на p=reject.

MTA-STS и TLS-RPT: следующий уровень

MTA-STS обязывает другие серверы доставлять вам письма только по валидному TLS. Публикация:

# Публикуем TXT-запись с версией политики
_mta-sts.example.ru.  IN  TXT  "v=STSv1; id=20250311000000"

# HTTPS-endpoint с политикой
# https://mta-sts.example.ru/.well-known/mta-sts.txt
version: STSv1
mode: enforce
mx: mx.example.ru
mx: mx2.example.ru
max_age: 604800

# Дополнительно TLS-RPT для отчётов
_smtp._tls.example.ru.  IN  TXT  "v=TLSRPTv1; rua=mailto:tls-rpt@example.ru"

Для HTTPS-endpoint нужен валидный сертификат (Let's Encrypt) на поддомене mta-sts. Сервер должен отдавать файл /.well-known/mta-sts.txt по HTTPS.

Проверка всех компонентов

Что проверитьИнструмент
SPFdig TXT example.ru, mxtoolbox.com/spf.aspx
DKIMopendkim-testkey -d example.ru -s mail, mxtoolbox.com
DMARCdig TXT _dmarc.example.ru, mxtoolbox.com/dmarc.aspx
Целикомmail-tester.com — дать 10/10, postmaster.mail.ru, postmaster.google.com
TLSchecktls.com, starttls.info
RBLmxtoolbox.com/blacklists.aspx

Самый быстрый комплексный тест: отправить письмо на test@mail-tester.com, получить адрес из ответа, открыть в браузере — увидите оценку 0–10 и детализацию проблем.

Мини-кейс: B2B-рассылки не доходили до Mail.ru

В ноябре 2025 года клиент — оптовая компания в Подмосковье, 85 сотрудников, делает транзакционные рассылки клиентам через собственный Postfix на outlook-совместимом Exchange. Проблема — 40% писем корпоративных клиентов на @mail.ru и @yandex.ru попадают в спам или отвергаются.

Диагностика:

Работа за 2 дня:

Через 72 часа после внесения правок — тест через mail-tester.com: 10/10. Через 2 недели процент доставки по Mail.ru вырос с 58% до 97%, по Yandex — с 62% до 98%. Стоимость работ — 45 000 руб.

Мониторинг и отчёты DMARC

XML-отчёты DMARC приходят раз в сутки от каждого провайдера (mail.ru, yandex, gmail, microsoft). Для удобной работы с ними я ставлю parsedmarc:

pip3 install parsedmarc

# Парсинг ежедневного архива из почтового ящика
parsedmarc --imap-host imap.example.ru --imap-user dmarc@example.ru \
  --imap-password '********' --imap-reports-folder INBOX \
  --elasticsearch-url http://localhost:9200 \
  --elasticsearch-index dmarc-reports

В Grafana/Kibana — дашборд с топ-10 отправителей не проходящих SPF, географией, трендом failure rate. На нашем стенде — на Dell Xeon Platinum 8280 с 40G Mellanox обработка 500 000 DMARC-записей в день занимает меньше 2 минут.

Частые ошибки и как их избежать

Настроим почту вашего домена правильно

Полный аудит и настройка SPF/DKIM/DMARC/MTA-STS на Postfix, Exim, Exchange. Разблокировка IP из RBL, прогрев после смены провайдера, мониторинг отчётов. 15+ лет в корпоративной почте, работаю с доменами от 5 до 500 сотрудников.

Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш

FAQ — частые вопросы по DKIM/SPF/DMARC

Что такое SPF, DKIM и DMARC?
SPF — TXT-запись в DNS, в которой перечислены IP-адреса, которым разрешено отправлять почту от имени домена. DKIM — цифровая подпись каждого письма приватным ключом, публичный ключ публикуется в DNS. DMARC — политика, которая говорит получателю, что делать с письмами, не прошедшими SPF/DKIM: пропускать, класть в спам или отклонять.
Нужно ли всё три?
Да. SPF проверяет отправителя-сервер, DKIM — целостность письма, DMARC — связку между заголовками From и доменом, прошедшим SPF/DKIM. Без всех трёх провайдеры (Mail.ru, Yandex, Gmail) с высокой вероятностью положат ваше письмо в спам или отвергнут.
Какую политику DMARC выбрать?
Начинайте с p=none с rua=mailto:dmarc@yourdomain.ru — только отчёты, без блокировки. Через 2-4 недели, когда увидите, какие легитимные отправители не проходят аутентификацию, переходите на p=quarantine, потом на p=reject.
Что такое MTA-STS?
MTA-STS — политика, обязывающая другие почтовые серверы доставлять вам письма только по TLS с валидным сертификатом. Защищает от downgrade-атак и перехвата. Публикуется как HTTPS-файл на mta-sts.yourdomain.ru и TXT-запись _mta-sts.
Почему письма всё равно в спам?
SPF/DKIM/DMARC — лишь база. Дополнительно важны репутация IP (PTR, RBL), содержание писем, соотношение открытий, отписки, жалобы. Новый IP прогревается 2–6 недель с низких объёмов. Используйте постмастеры Mail.ru и Gmail для анализа.

Подпишитесь на рассылку ITfresh

Раз в неделю — практические гайды для руководителя IT и сисадмина: безопасность, 1С, миграции, резервные копии, лайфхаки из реальных проектов.

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.