Почта: Что такое SPF, DKIM, DMARC и как их настроить

Проблема доставляемости электронной почты стоит перед каждым владельцем бизнеса и системным администратором. Вы отправляете письма клиентам, но они попадают в спам? Злоумышленники рассылают фишинг от имени вашего домена? Ответ лежит в плоскости трёх технологий: SPF, DKIM и DMARC.

Эти стандарты аутентификации — «кирпичики» современной email-безопасности. В этой статье для базы знаний хостинга мы разберём, что означает каждая аббревиатура, как связаны записи DNS и работа почтового сервера, а главное — дадим готовые конфигурации для самых популярных панелей управления (cPanel, Plesk, ISPmanager) и ручных настроек (Postfix, Exim).

Данная информация предназначена для услуг: VPS хостинг или Облачный хостинг

Почему недостаточно просто поднять почтовый сервер?

Когда вы отправляете письмо, SMTP-сервер получателя (например, mail.google.com) не знает, действительно ли письмо пришло с вашего сервера или его подделал спамер. Раньше единственной защитой был IP-адрес (Reverse DNS), но с ростом облачных провайдеров и ботнетов этого стало катастрофически мало.

Основные угрозы:

  • Фарминг домена (Domain spoofing): Спамер подменяет Envelope-From на ваш домен.

  • Банкерские трояны: Рассылка от имени вашей поддержки.

  • Bounce-атаки: Возврат неврученных писем (NDR) на ваш легитимный сервер, создающий бэкскаттер.

Три стандарта — SPF, DKIM и DMARC — закрывают эти уязвимости, действуя на разных уровнях протокола SMTP. Важное правило: они работают в связке. Наличие только SPF или только DKIM уже хорошо, но недостаточно для полной защиты.

SPF (Sender Policy Framework) – проверка отправителя по IP

Что такое SPF?

SPF (Sender Policy Framework) — это механизм, позволяющий владельцу домена объявить через DNS-запись, какие именно IP-адреса и серверы имеют право отправлять письма от его имени. Почтовый сервер получателя, проверив SPF, либо принимает письмо, либо помечает его как подозрительное.

Синтаксис SPF-записи

SPF публикуется в виде TXT-записи (тип SPF устарел). Имя записи обычно совпадает с доменом (например, @ или yourdomain.com). Запись начинается с v=spf1 и содержит набор механизмов.

Основные механизмы:

Механизм Значение Пример
a IP адрес A-записи домена a:mail.yourdomain.com
mx Все MX-серверы домена mx
ip4 / ip6 Конкретный IP-адрес ip4:192.0.2.1
include Включить SPF другого домена (например, хостинг-провайдера) include:spf.yourhosting.com
all Действие по умолчанию -all (жесткий fail)

Квалификаторы (префиксы):

  • + (Pass) — разрешить (по умолчанию).

  • - (Fail) — отвергать письмо.

  • ~ (SoftFail) — принимать, но помечать.

  • ? (Neutral) — без оценки.

Примеры SPF для разных ситуаций (H3)

Пример 1. Минимальный SPF для одного сервера:
v=spf1 ip4:192.168.1.1 -all

Пример 2. SPF для сайта на WordPress + Google Workspace:
v=spf1 ip4:192.168.1.1 include:_spf.google.com ~all

Пример 3. SPF для хостинга c несколькими выделенными серверами и почтой Mailchimp:
v=spf1 mx ip4:192.0.2.10 ip4:192.0.2.11 include:servers.mcsv.net -all

Ограничения: DNS-запрос не может содержать более 10 include-механизмов (лимит на обращение к DNS). Если превысить, SPF вернет PermError.

Пошаговая настройка SPF в панели хостинга

Для cPanel/WHM:

  1. Перейдите в раздел Zone Editor.

  2. Выберите ваш домен.

  3. Нажмите Add Record → Тип TXT.

  4. В поле Name оставьте @ или введите ваш домен.

  5. В поле Record вставьте строку: v=spf1 ip4:ВАШ_IP include:_spf.yandex.net -all

  6. Сохраните.

Для ISPmanager:

  1. DNS-зоны → выберите домен.

  2. Добавить ресурсную запись → Тип TXT.

  3. Значение записи: ваша SPF-строка.

Для ручного редактирования в Bind:
yourdomain.com. IN TXT "v=spf1 mx ip4:192.168.1.1 -all"

Проверка SPF

После публикации (до 24 часов на DNS-распространение) используйте:

  • Linux CLI: dig -t TXT yourdomain.com | grep "spf"

  • Онлайн-инструменты: MXToolbox, Kitterman SPF Checker.

  • Анализ заголовка письма: Строка Received-SPF: Pass.


DKIM (DomainKeys Identified Mail) – криптографическая подпись

Принцип работы DKIM

В то время как SPF защищает конверт (Return-Path), DKIM привязывает само тело письма и некоторые заголовки к домену с помощью асимметричной криптографии.

Алгоритм:

  1. На вашем почтовом сервере генерируется пара ключей: приватный (на сервере) и публичный (в DNS).

  2. Перед отправкой MTA (например, Exim или Postfix) хэширует заголовки (FromDateSubject) и тело письма.

  3. Хэш подписывается приватным ключом.

  4. Получатель запрашивает публичный ключ из DNS вашего домена (по селектору) и проверяет подпись.

Если подпись верна — письмо не было изменено в пути и действительно исходит от владельца домена.

Селекторы DKIM

Селектор — это уникальное имя, указывающее на конкретную пару ключей. Например: mail._domainkey.yourdomain.com. Один домен может иметь несколько селекторов (для разных сервисов: mailchimp, google, ваш хостинг).

Генерация и настройка DKIM на сервере

Вариант A: cPanel / Exim

  1. Войдите в Email Deliverability (или Authentication).

  2. Напротив домена нажмите Manage.

  3. Нажмите Generate DKIM Key или Install.

  4. Система автоматически добавит запись в DNS (например, default._domainkey).

  5. Запись будет иметь вид: v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3...

Вариант B: Postfix + OpenDKIM (ручная настройка)

  1. Установите OpenDKIM: apt-get install opendkim opendkim-tools

  2. Сгенерируйте ключ:
    opendkim-genkey -D /etc/opendkim/keys/ -d yourdomain.com -s selector1

     
     
  3. Настройте конфигурацию в /etc/opendkim.conf:
    Domain yourdomain.com
    KeyFile /etc/opendkim/keys/selector1.private
    Selector selector1

     
     
  4. Добавьте в DNS TXT-запись для selector1._domainkey.yourdomain.com содержимое из файла selector1.txt.

  5. Перезапустите Postfix и OpenDKIM.

Вариант C: Exim (стандарт для многих хостингов)

  • Используйте встроенный модуль dkim_private_key.

  • Пример транспорта в exim.conf:
    dkim_domain = ${lc:${domain:$h_from:}}
    dkim_selector = mail
    dkim_private_key = ${if exists{/etc/exim/dkim/${dkim_domain}.pem}{/etc/exim/dkim/${dkim_domain}.pem}{0}}
    dkim_canon = relaxed

     
     

Тестирование DKIM

  • CLI: dig -t TXT selector1._domainkey.yourdomain.com

  • Отправьте письмо на адрес: check-auth@verifier.port25.com — получите подробный отчет.

  • В заголовке письма ищите DKIM-Signature и Authentication-Results: DKIM=pass.

DMARC – политика и отчёты 

Зачем нужен DMARC, если есть SPF и DKIM?

SPF и DKIM по отдельности имеют недостатки:

  • SPF ломается при пересылке письма (forwarding).

  • DKIM подпись может быть валидной, но домен в From может быть другим.

DMARC решает три задачи:

  1. Связывает результат SPF и DKIM с доменом в заголовке From.

  2. Говорит получателю, что делать с письмами, не прошедшими проверку (ничего, поместить в спам или отклонить).

  3. Позволяет получать агрегированные (RUA) и судебные (RUF) отчёты о том, кто шлёт письма от вашего имени.

Синтаксис DMARC-записи

DMARC публикуется как TXT-запись на поддомене _dmarc.yourdomain.com.

Основные теги:

Тег Назначение Пример
v Версия (обязательно) DMARC1
p Политика для домена: none, quarantine, reject p=reject
sp Политика для поддоменов sp=quarantine
pct Процент писем, к которым применять политику pct=100
rua Адрес для агрегированных отчётов (URI) rua=mailto:dmarc@yourdomain.com
ruf Адрес для форензик-отчётов (подробно о каждом fail) ruf=mailto:forensic@yourdomain.com
fo Условия генерации отчётов (0, 1, d, s) fo=1
aspf Выравнивание SPF (r=relaxed, s=strict) aspf=r
adkim Выравнивание DKIM adkim=s

Примеры DMARC-политик

Этап 1. Только мониторинг (без влияния на доставку)
v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com; ruf=mailto:dmarc-forensic@yourdomain.com; fo=1

Используйте эту запись первые 2 недели, чтобы собрать статистику.

Этап 2. Каратин (спам) для 10% трафика
v=DMARC1; p=quarantine; pct=10; rua=mailto:dmarc@yourdomain.com; aspf=r; adkim=r

Этап 3. Жёсткий reject (полный отказ) – рекомендуемый режим для банков и ритейла
v=DMARC1; p=reject; pct=100; rua=mailto:dmarc@yourdomain.com; sp=reject; fo=1

Как добавить DMARC в DNS хостинга (H3)

  1. Откройте редактор DNS вашего домена.

  2. Создайте новую TXT запись.

  3. В поле Name укажите: _dmarc

  4. В поле Value вставьте вашу политику (например, v=DMARC1; p=reject).

  5. Сохраните.

Важно: Для корректной работы DMARC у вас должны быть корректно настроены SPF (с -all или ~all) и активная DKIM-подпись.


Взаимодействие SPF, DKIM и DMARC: Таблица результатов

Почтовый сервер вычисляет «совокупный результат» по правилу: DMARC pass = (SPF pass + выравнивание) ИЛИ (DKIM pass + выравнивание).

SPF Выравнивание SPF DKIM Выравнивание DKIM Действие DMARC
Pass Да Fail Неважно Pass
Fail Неважно Pass Да Pass
Pass Нет Pass Нет Fail (нет выравнивания)
Fail Неважно Fail Неважно Fail

Выравнивание (Alignment) означает, что домен в From совпадает с доменом, прошедшим SPF или DKIM. Строгий режим (s) требует полного совпадения, расслабленный (r) допускает поддомены.


Типичные ошибки при настройке и их решения

Слишком длинный SPF (более 10 lookup)

Признак: В логах permerror или SPF Too Many DNS Lookups.
Решение: Объедините include механизмы, используйте субдомены для разных сервисов.

«Временная ошибка» (Temperror) DKIM

Причина: Публичный ключ в DNS повреждён (содержит пробелы или переносы строк).
Решение: Убедитесь, что в TXT записи ключ записан в одну строку, без кавычек внутри.

DMARC reject при пересылке писем (forwarding)

Причина: SPF ломается при пересылке, а DKIM может сломаться, если пересыльщик меняет заголовки.
Решение: Настройте SRS (Sender Rewriting Scheme) на пересылающем сервере или используйте рассылки через API.

Отсутствие обратной записи PTR

Хотя PTR не входит в SPF/DKIM, многие почтовые системы (например, Mail.ru) требуют, чтобы IP совпадал с PTR записью вашего домена.
Решение: В панели хостинга создайте PTR-запись, указывающую на mail.yourdomain.com.


Пошаговый чек-лист внедрения для администратора хостинга

Для клиентов, которые размещают сайт и почту на вашем хостинге:

  • Шаг 1. Убедитесь, что исходящий IP-адрес сервера не в чёрных списках (RBL).

  • Шаг 2. В панели управления создайте SPF-запись: v=spf1 ip4:IP_СЕРВЕРА -all

  • Шаг 3. Включите DKIM для домена (в cPanel — автоматически, в Postfix — через opendkim).

  • Шаг 4. Опубликуйте DMARC-запись в режиме p=none и настройте получение отчётов на отдельный ящик.

  • Шаг 5. Отправьте тестовое письмо на dmarc@yandex.ru или в Gmail, проанализируйте заголовок Authentication-Results.

  • Шаг 6. Через 48 часов изучите агрегированные отчёты (XML). Если легитимный трафик проходит без ошибок, переведите DMARC в p=quarantine, а через неделю — в p=reject.


Диагностика: как читать заголовки писем

Пример реального заголовка письма от прошедшего проверку сервера:
Authentication-Results: mx.google.com;
    spf=pass (google.com: domain of yourdomain.com designates 192.168.1.1 as permitted sender) smtp.mailfrom=yourdomain.com;
    dkim=pass header.i=@yourdomain.com;
    dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=yourdomain.com

Если видите dmarc=fail — ищите причину в несовпадении доменов или отсутствии подписи.

 

Часто задаваемые вопросы (FAQ)

Вопрос: Нужно ли настраивать SPF, если я использую только исходящую почту через SMTP хостинга?
Ответ: Да. Без SPF получатель увидит, что IP отправителя не совпадает с MX-записью домена, и письмо уйдёт в спам. Включите в SPF IP вашего хостинг-провайдера через include.

Вопрос: Может ли DMARC блокировать легитимные письма?
Ответ: Да, если вы ошиблись в политике. Именно поэтому мы рекомендуем начинать с p=none, анализировать отчёты и только потом включать reject.

Вопрос: Как часто нужно обновлять DKIM-ключи?
Ответ: Рекомендуется раз в 6–12 месяцев. В панелях хостинга (cPanel) это делается одной кнопкой «Rotate Keys». Не забудьте после смены ключа обновить DNS.

Вопрос: Поддерживают ли российские почтовые сервисы DMARC?
Ответ: Да, Yandex, Mail.ru и Rambler полностью поддерживают SPF, DKIM и DMARC. Более того, Mail.ru требует DMARC для отправки на корпоративные ящики с высоким рейтингом.

Вопрос: Что делать, если домен не мой, но я хочу защититься от спама с моего ящика на хостинге?
Ответ: Настройте исходящий фильтр на уровне MTA (например, ограничение количества писем в час с одного домена) и включите проверку SPF на входящих письмах (в Exim это spf = pass).

Заключение

Настройка SPF, DKIM и DMARC — это не прихоть почтовых администраторов, а обязательный стандарт для любого домена, с которого отправляются письма, особенно для коммерческих проектов и интернет-магазинов.

  • 0 Пользователи нашли это полезным

Помог ли вам данный ответ?

Ищете что-то другое?

xvps.ru