Проблема доставляемости электронной почты стоит перед каждым владельцем бизнеса и системным администратором. Вы отправляете письма клиентам, но они попадают в спам? Злоумышленники рассылают фишинг от имени вашего домена? Ответ лежит в плоскости трёх технологий: 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:
-
Перейдите в раздел Zone Editor.
-
Выберите ваш домен.
-
Нажмите Add Record → Тип TXT.
-
В поле Name оставьте
@или введите ваш домен. -
В поле Record вставьте строку:
v=spf1 ip4:ВАШ_IP include:_spf.yandex.net -all -
Сохраните.
Для ISPmanager:
-
DNS-зоны → выберите домен.
-
Добавить ресурсную запись → Тип TXT.
-
Значение записи: ваша 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 привязывает само тело письма и некоторые заголовки к домену с помощью асимметричной криптографии.
Алгоритм:
-
На вашем почтовом сервере генерируется пара ключей: приватный (на сервере) и публичный (в DNS).
-
Перед отправкой MTA (например, Exim или Postfix) хэширует заголовки (
From,Date,Subject) и тело письма. -
Хэш подписывается приватным ключом.
-
Получатель запрашивает публичный ключ из DNS вашего домена (по селектору) и проверяет подпись.
Если подпись верна — письмо не было изменено в пути и действительно исходит от владельца домена.
Селекторы DKIM
Селектор — это уникальное имя, указывающее на конкретную пару ключей. Например: mail._domainkey.yourdomain.com. Один домен может иметь несколько селекторов (для разных сервисов: mailchimp, google, ваш хостинг).
Генерация и настройка DKIM на сервере
Вариант A: cPanel / Exim
-
Войдите в Email Deliverability (или Authentication).
-
Напротив домена нажмите Manage.
-
Нажмите Generate DKIM Key или Install.
-
Система автоматически добавит запись в DNS (например,
default._domainkey). -
Запись будет иметь вид:
v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3...
Вариант B: Postfix + OpenDKIM (ручная настройка)
-
Установите OpenDKIM:
apt-get install opendkim opendkim-tools -
Сгенерируйте ключ:
opendkim-genkey -D /etc/opendkim/keys/ -d yourdomain.com -s selector1 -
Настройте конфигурацию в
/etc/opendkim.conf:Domain yourdomain.com
KeyFile /etc/opendkim/keys/selector1.private
Selector selector1 -
Добавьте в DNS TXT-запись для
selector1._domainkey.yourdomain.comсодержимое из файлаselector1.txt. -
Перезапустите 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 решает три задачи:
-
Связывает результат SPF и DKIM с доменом в заголовке
From. -
Говорит получателю, что делать с письмами, не прошедшими проверку (ничего, поместить в спам или отклонить).
-
Позволяет получать агрегированные (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)
-
Откройте редактор DNS вашего домена.
-
Создайте новую TXT запись.
-
В поле Name укажите:
_dmarc -
В поле Value вставьте вашу политику (например,
v=DMARC1; p=reject). -
Сохраните.
Важно: Для корректной работы 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 — это не прихоть почтовых администраторов, а обязательный стандарт для любого домена, с которого отправляются письма, особенно для коммерческих проектов и интернет-магазинов.