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

  • SPF, DKIM, DMARC, письма, letters, почта, mail
  • 0

Если с вашего домена отправляются письма клиентам, сотрудникам или пользователям сайта, стоит правильно настроить SPF, DKIM и DMARC. Без этих записей письма могут чаще попадать в спам, не проходить проверки почтовых серверов или вообще отклоняться.

SPF, DKIM и DMARC решают разные задачи, но работают вместе.

SPF определяет, какие серверы имеют право отправлять письма от имени вашего домена.

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

DMARC определяет, что делать с письмами, которые не проходят проверки SPF или DKIM, а также позволяет получать отчёты об отправке почты от имени вашего домена.

Что нужно подготовить

Перед настройкой SPF, DKIM и DMARC понадобится доступ к DNS-зоне домена.

Также необходимо знать, через какие сервисы отправляется почта.

Например:

  • собственный почтовый сервер;

  • cPanel или другая панель управления;

  • Google Workspace;

  • Microsoft 365;

  • Amazon SES;

  • Mailgun;

  • SendGrid;

  • SMTP-сервер хостинга;

  • другая почтовая платформа.

Это важно, потому что значения SPF и DKIM зависят от используемой системы отправки.

Не копируйте SPF или DKIM с другого домена. Записи должны соответствовать именно вашей почтовой инфраструктуре.

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

SPF (Sender Policy Framework) — это TXT-запись в DNS, которая указывает, какие серверы имеют право отправлять почту от имени домена.

Пример простой SPF-записи:

v=spf1 ip4:203.0.113.10 -all

В данном случае сервер с IP 203.0.113.10 разрешён для отправки почты от имени домена. Остальные серверы не должны проходить SPF-проверку.

Если вы используете сторонний почтовый сервис, он обычно предоставляет готовую SPF-запись.

Например:

v=spf1 include:example-mail.com -all

Точное значение необходимо брать из документации или панели используемого сервиса.

Как добавить SPF-запись

Откройте DNS-зону домена.

Создайте новую запись со следующими параметрами.

Тип:

TXT

Имя / Host:

@

Некоторые DNS-провайдеры вместо @ требуют указать сам домен.

Значение:

v=spf1 ip4:203.0.113.10 -all

Замените IP-адрес на адрес вашего почтового сервера либо используйте SPF-запись, которую предоставил ваш почтовый сервис.

После сохранения дождитесь обновления DNS.

Проверить запись можно через:

dig TXT example.com

или:

nslookup -type=TXT example.com

Замените example.com на свой домен.

Важное правило SPF

Для одного домена обычно должна использоваться только одна SPF-запись.

Например, такая конфигурация неправильная:

v=spf1 ip4:203.0.113.10 -all
v=spf1 include:example-mail.com -all

Если почта отправляется через несколько сервисов, их необходимо объединить в одну запись.

Например:

v=spf1 ip4:203.0.113.10 include:example-mail.com include:another-provider.com -all

Конкретные значения зависят от используемых почтовых сервисов.

Несколько отдельных SPF-записей могут привести к ошибке PermError при проверке SPF.

Ограничение SPF по количеству DNS-запросов

При проверке SPF существует ограничение — не более 10 DNS-запросов.

Проблема может возникнуть, если SPF содержит много include и других механизмов, которые сами обращаются к DNS.

Например:

v=spf1 include:provider1.example include:provider2.example include:provider3.example -all

Каждый из этих сервисов может ссылаться на дополнительные DNS-записи.

Поэтому сложные SPF-записи стоит проверять специальными инструментами перед использованием.

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

DKIM (DomainKeys Identified Mail) добавляет к исходящему письму криптографическую подпись.

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

Когда письмо приходит получателю, его почтовый сервер получает публичный ключ из DNS и проверяет подпись.

DKIM-запись обычно имеет вид:

default._domainkey.example.com

Но селектор может называться по-другому:

google._domainkey.example.com
selector1._domainkey.example.com
mail._domainkey.example.com

Точное название селектора определяет почтовый сервис.

Как включить DKIM

Порядок настройки зависит от используемого почтового сервиса.

Обычно сервис генерирует DKIM-ключ и показывает DNS-запись, которую необходимо добавить в домен.

Например:

Тип:

TXT

Имя / Host:

selector1._domainkey

Значение:

v=DKIM1; k=rsa; p=PUBLIC_KEY

Реальный параметр p= будет содержать длинный публичный ключ.

Не изменяйте ключ вручную. Скопируйте значение непосредственно из панели используемого почтового сервиса.

Некоторые сервисы используют вместо TXT запись типа CNAME. В этом случае необходимо создать именно тот тип записи и указать то значение, которое предоставил сервис.

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

Если письма отправляются через несколько сервисов, у каждого из них может быть собственный DKIM-селектор.

Например:

google._domainkey.example.com
selector1._domainkey.example.com
mail._domainkey.example.com

Это нормально.

Главное, чтобы каждый сервис использовал собственный селектор и соответствующий ему публичный ключ.

Как проверить DKIM

После добавления записи можно проверить её через DNS:

dig TXT selector1._domainkey.example.com

или:

nslookup -type=TXT selector1._domainkey.example.com

Вместо selector1 укажите селектор, который предоставил ваш почтовый сервис.

В результате должен отображаться публичный DKIM-ключ.

Если почтовый сервис по-прежнему сообщает, что DKIM не настроен, проверьте правильность имени записи и самого ключа. Также учитывайте время обновления DNS.

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

DMARC (Domain-based Message Authentication, Reporting, and Conformance) использует результаты SPF и DKIM и позволяет задать политику обработки писем, которые не проходят проверку.

DMARC также проверяет соответствие домена, указанного в адресе отправителя, домену, прошедшему SPF или DKIM-аутентификацию.

Простейшая DMARC-запись:

v=DMARC1; p=none

Она размещается по адресу:

_dmarc.example.com

Как добавить DMARC-запись

Откройте DNS-зону домена и создайте TXT-запись.

Тип:

TXT

Имя / Host:

_dmarc

Значение:

v=DMARC1; p=none

Сохраните запись.

Политика p=none подходит для первоначальной настройки. Она позволяет наблюдать за результатами проверок, не требуя от почтовых серверов отклонять или помещать письма в спам.

Политики DMARC

DMARC поддерживает три основные политики.

None

p=none

Получателю предлагается только собирать информацию о результатах проверки.

Это наиболее безопасный вариант для первоначальной настройки DMARC.

Quarantine

p=quarantine

Письма, которые не проходят DMARC, должны рассматриваться как подозрительные. В зависимости от настроек почтового сервера получателя они могут попасть в спам или карантин.

Reject

p=reject

Письма, которые не проходят DMARC, должны отклоняться.

Это наиболее строгий вариант политики, но включать его сразу не стоит. Сначала необходимо убедиться, что все легитимные отправители правильно настроены.

Как получать отчёты DMARC

DMARC позволяет получать агрегированные отчёты о том, какие серверы отправляют письма от имени вашего домена и проходят ли они проверки.

Например:

v=DMARC1; p=none; rua=mailto:dmarc@example.com

Параметр rua указывает адрес, на который будут отправляться агрегированные отчёты.

Можно использовать более полный вариант:

v=DMARC1; p=none; rua=mailto:dmarc@example.com; adkim=s; aspf=s

Убедитесь, что указанный почтовый ящик существует и доступен.

Если домен используется для большого количества писем, отчётов может приходить довольно много. В таких случаях удобно использовать отдельный почтовый ящик или специализированный сервис анализа DMARC.

Какую DMARC-политику выбрать

При первой настройке рекомендуется начать с:

v=DMARC1; p=none; rua=mailto:dmarc@example.com

После этого необходимо изучить отчёты и определить все легитимные источники отправки почты.

Когда вы убедитесь, что все необходимые сервисы проходят SPF и DKIM, можно перейти к:

v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com

После дополнительной проверки можно использовать:

v=DMARC1; p=reject; rua=mailto:dmarc@example.com

Не рекомендуется сразу устанавливать p=reject, особенно если SPF и DKIM ранее не использовались. В таком случае можно случайно заблокировать настоящие письма от собственного сайта, CRM или других сервисов.

Как SPF, DKIM и DMARC работают вместе

У каждой технологии своя задача.

SPF отвечает на вопрос:

Какие серверы имеют право отправлять почту от имени домена?

DKIM отвечает на вопрос:

Действительно ли письмо было подписано авторизованной системой и не было изменено после отправки?

DMARC отвечает на вопрос:

Что делать с письмом, которое не прошло проверку, и куда отправлять отчёты?

Упрощённо схема выглядит так:

example.com
│
├── SPF
│   └── Разрешённые серверы отправки
│
├── DKIM
│   └── Цифровая подпись письма
│
└── DMARC
    └── Политика проверки и отчёты

Для нормальной защиты домена рекомендуется использовать все три механизма.

Как проверить итоговую конфигурацию

После добавления записей проверьте их через DNS.

SPF:

dig TXT example.com

DKIM:

dig TXT selector1._domainkey.example.com

DMARC:

dig TXT _dmarc.example.com

Также отправьте тестовое письмо на Gmail, Outlook или другой почтовый сервис.

В заголовках письма найдите результаты аутентификации. В идеальном случае они будут выглядеть примерно так:

spf=pass
dkim=pass
dmarc=pass

Формат заголовков зависит от используемого почтового сервиса.

Частые проблемы с SPF

Несколько SPF-записей

Если у домена опубликованы две отдельные SPF-записи, их необходимо объединить.

Неправильно:

v=spf1 ip4:203.0.113.10 -all
v=spf1 include:example-mail.com -all

Правильно:

v=spf1 ip4:203.0.113.10 include:example-mail.com -all

Добавили новый почтовый сервис

Если вы начали отправлять письма через новый сервис, его необходимо добавить в существующую SPF-запись.

Не создавайте для него вторую SPF-запись.

Превышен лимит DNS-запросов

Большое количество include, a, mx и других DNS-механизмов может привести к превышению лимита в 10 запросов.

В этом случае SPF-запись необходимо оптимизировать.

Частые проблемы с DKIM

Неправильный селектор

Имя DNS-записи должно точно соответствовать селектору, который предоставил почтовый сервис.

Например, если сервис требует:

selector1._domainkey.example.com

не нужно создавать:

default._domainkey.example.com

если default не указан в настройках вашего почтового сервиса.

DKIM-ключ скопирован с ошибкой

DKIM-ключ обычно достаточно длинный. Даже один пропущенный или лишний символ может сделать запись недействительной.

Лучше всего копировать значение непосредственно из панели почтового сервиса.

DNS ещё не обновился

После изменения DNS запись может быть доступна не сразу.

Если сервис не видит правильный DKIM, проверьте запись через dig или nslookup и подождите обновления DNS-кэшей.

Частые проблемы с DMARC

Слишком строгая политика

Если сразу установить:

p=reject

можно заблокировать легитимные письма.

При первоначальной настройке лучше использовать:

p=none

и сначала собрать статистику.

Легитимные письма не проходят DMARC

Такое часто происходит, когда письма отправляются не только основным почтовым сервером, но и:

  • сайтом;

  • CRM;

  • формой обратной связи;

  • системой рассылок;

  • Help Desk;

  • внешним SMTP-сервисом.

Необходимо проверить каждый источник отправки и настроить для него SPF и DKIM.

DMARC размещён не там

Запись должна находиться по адресу:

_dmarc.example.com

а не непосредственно в корне домена:

example.com

Если используется несколько сервисов отправки

Для корпоративного домена это обычная ситуация.

Например:

  • Microsoft 365 используется для корпоративной почты;

  • сайт отправляет уведомления самостоятельно;

  • Amazon SES используется для транзакционных писем;

  • отдельная платформа используется для маркетинговых рассылок.

Все эти источники необходимо учитывать.

SPF должен разрешать необходимые сервисы отправки, а каждый сервис может иметь собственный DKIM-селектор.

После этого DMARC проверяет результаты аутентификации.

Перед переходом на p=reject убедитесь, что все легитимные источники почты настроены правильно.

Рекомендуемая конфигурация

Для обычного домена конфигурация может выглядеть следующим образом.

SPF:

v=spf1 ip4:203.0.113.10 include:example-mail.com -all

DKIM:

selector1._domainkey.example.com

При этом публичный ключ должен быть предоставлен вашим почтовым сервисом.

DMARC:

v=DMARC1; p=none; rua=mailto:dmarc@example.com

После проверки отчётов и исправления проблем можно постепенно ужесточить DMARC-политику:

v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com

А затем:

v=DMARC1; p=reject; rua=mailto:dmarc@example.com

Конкретная конфигурация зависит от того, сколько сервисов отправляет письма от имени вашего домена.


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

« Назад