DMARC, SPF, DKIM и BIMI: полная аутентификация почты

Зачем нужна аутентификация почты

Без аутентификации любой человек может отправить письмо от имени вашего домена. Злоумышленник отправляет фишинговое письмо якобы от director@company.ru, и получатель не может отличить его от настоящего. Это называется email spoofing.

Комплекс из четырёх технологий решает эту проблему:

  • SPF (Sender Policy Framework) — определяет, какие серверы имеют право отправлять почту от вашего домена
  • DKIM (DomainKeys Identified Mail) — добавляет криптографическую подпись к каждому письму
  • DMARC (Domain-based Message Authentication, Reporting and Conformance) — объединяет SPF и DKIM, определяет политику обработки неаутентифицированных писем
  • BIMI (Brand Indicators for Message Identification) — отображает логотип компании рядом с письмом в почтовом клиенте

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

Настройка SPF-записи

SPF — DNS-запись типа TXT, перечисляющая IP-адреса и серверы, которым разрешено отправлять почту от вашего домена.

# Базовая SPF-запись
company.ru.  IN  TXT  "v=spf1 mx a ip4:185.100.50.10 include:_spf.google.com -all"

# Разбор:
# v=spf1       — версия SPF
# mx           — серверы из MX-записей домена могут отправлять
# a            — сервер из A-записи домена может отправлять
# ip4:x.x.x.x — конкретный IP-адрес
# include:...  — включить SPF-запись другого домена (для Google Workspace, Яндекс и т.д.)
# -all         — строгий режим: все остальные серверы НЕ имеют права отправлять

Варианты политики (qualifier):

КвалификаторЗначениеРекомендация
-allFail — отклонитьФинальная настройка
~allSoftFail — пометитьЭтап тестирования
?allNeutral — без действийНе использовать
+allPass — разрешить всемКатегорически нет

Начните с ~all, проанализируйте отчёты DMARC, затем переключитесь на -all.

Распространённые ошибки SPF

Превышение лимита DNS-запросов. SPF допускает максимум 10 DNS-lookup (include, a, mx, redirect). Каждый include — это запрос. При использовании нескольких сервисов (Google + рассылки + CRM) легко превысить лимит:

# Плохо: 12 DNS-запросов (превышен лимит)
v=spf1 include:_spf.google.com include:sendgrid.net include:mailchimp.com 
  include:helpdesk.com mx a ip4:1.2.3.4 -all

# Решение: замените include на ip4, где возможно
# Узнать IP-адреса сервиса:
nslookup -q=txt _spf.google.com
# И подставить IP-адреса напрямую

# Или используйте SPF flattening сервисы (autospf.com)

Несколько SPF-записей. У домена может быть только одна SPF-запись. Две записи — обе будут проигнорированы.

Настройка DKIM-подписи

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

# Генерация ключей DKIM (2048 бит)
openssl genrsa -out dkim_private.key 2048
openssl rsa -in dkim_private.key -pubout -out dkim_public.key

# Формат публичного ключа для DNS (убрать заголовки и переносы)
cat dkim_public.key | grep -v '^-' | tr -d '\n'
# Результат: MIIBIjANBg...long_base64_string...IDAQAB

DNS-запись DKIM:

# Selector._domainkey.domain.  IN  TXT  "v=DKIM1; k=rsa; p=PUBLIC_KEY"
mail._domainkey.company.ru.  IN  TXT  "v=DKIM1; k=rsa; p=MIIBIjANBg...IDAQAB"

mail — это selector (идентификатор ключа). Можно использовать несколько selector-ов для разных серверов: google._domainkey, sendgrid._domainkey.

Настройка OpenDKIM на Postfix

Для почтового сервера на Postfix:

# Установка
apt install opendkim opendkim-tools

# Генерация ключа
mkdir -p /etc/opendkim/keys/company.ru
opendkim-genkey -b 2048 -d company.ru -s mail -D /etc/opendkim/keys/company.ru/
chown -R opendkim:opendkim /etc/opendkim

# /etc/opendkim.conf
Syslog          yes
Mode            sv  # sign and verify
Canonicalization relaxed/simple
Domain          company.ru
Selector        mail
KeyFile         /etc/opendkim/keys/company.ru/mail.private
Socket          inet:8891@localhost

# /etc/postfix/main.cf — подключение OpenDKIM
milter_protocol = 6
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

# Перезапуск
systemctl restart opendkim postfix

# DNS-запись из сгенерированного файла
cat /etc/opendkim/keys/company.ru/mail.txt

Настройка DMARC-политики

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

# DNS-запись DMARC
_dmarc.company.ru.  IN  TXT  "v=DMARC1; p=reject; sp=reject; rua=mailto:dmarc@company.ru; ruf=mailto:dmarc-forensic@company.ru; adkim=r; aspf=r; pct=100; fo=1"

# Разбор:
# v=DMARC1    — версия
# p=reject    — политика для домена (none/quarantine/reject)
# sp=reject   — политика для поддоменов
# rua=mailto: — адрес для агрегированных отчётов (ежедневно)
# ruf=mailto: — адрес для forensic-отчётов (каждое failed письмо)
# adkim=r     — relaxed alignment для DKIM (домены совпадают нестрого)
# aspf=r      — relaxed alignment для SPF
# pct=100     — политика применяется к 100% писем
# fo=1        — forensic report при любом сбое (SPF или DKIM)

План внедрения DMARC:

  1. Неделя 1-4: p=none — только мониторинг, сбор отчётов
  2. Неделя 5-8: p=quarantine; pct=10 — карантин для 10% неаутентифицированных писем
  3. Неделя 9-12: p=quarantine; pct=100 — карантин для всех
  4. Неделя 13+: p=reject — полная блокировка поддельных писем

Анализ DMARC-отчётов

Агрегированные отчёты приходят в формате XML. Для их анализа используйте:

# Парсинг XML-отчёта
#!/bin/bash
for f in /var/mail/dmarc/*.xml; do
  echo "=== Report: $f ==="
  xmlstarlet sel -t \
    -m "//record" \
    -v "row/source_ip" -o " | " \
    -v "row/count" -o " | SPF:" \
    -v "row/policy_evaluated/spf" -o " | DKIM:" \
    -v "row/policy_evaluated/dkim" -n \
    "$f"
done

# Или используйте веб-сервисы:
# - dmarcian.com (бесплатный базовый план)
# - mxtoolbox.com/DMARCReportAnalyzer
# - parsedmarc (open-source, на Python)

Ключевое: на этапе p=none проанализируйте все источники почты вашего домена. Если какой-то легитимный сервис (CRM, рассылка) не прошёл SPF/DKIM — исправьте до перехода на reject.

Настройка BIMI — логотип в почте

BIMI позволяет отображать логотип компании рядом с аватаром отправителя в поддерживающих почтовых клиентах (Gmail, Apple Mail, Yahoo). Это повышает узнаваемость бренда и доверие к письмам.

Требования для BIMI:

  • DMARC с политикой p=quarantine или p=reject
  • Логотип в формате SVG Tiny PS (Profile Specification)
  • Опционально: VMC-сертификат (Verified Mark Certificate) от DigiCert или Entrust
# Подготовка SVG-логотипа
# SVG должен соответствовать SVG Tiny PS:
# - Без JavaScript
# - Без внешних ссылок
# - Квадратный формат
# - Размер до 32 КБ

# Конвертация существующего SVG
# Используйте https://bimigroup.org/bimi-generator/

# DNS-запись BIMI
default._bimi.company.ru.  IN  TXT  "v=BIMI1; l=https://company.ru/logo/bimi.svg; a=https://company.ru/logo/vmc.pem"

# Без VMC-сертификата (поддерживается Apple Mail, не Gmail):
default._bimi.company.ru.  IN  TXT  "v=BIMI1; l=https://company.ru/logo/bimi.svg"

Важно: Gmail требует VMC-сертификат для отображения логотипа. VMC стоит от $1500/год и требует зарегистрированный товарный знак. Apple Mail и Yahoo отображают логотип без VMC.

Создание SVG для BIMI

BIMI предъявляет строгие требования к SVG. Шаблон корректного файла:

<svg xmlns="http://www.w3.org/2000/svg" 
     version="1.2" baseProfile="tiny-ps"
     viewBox="0 0 100 100">
  <title>Company Logo</title>
  <!-- Ваш логотип -->
  <circle cx="50" cy="50" r="45" fill="#0066CC"/>
  <text x="50" y="55" text-anchor="middle" 
        font-family="sans-serif" font-size="24" fill="white">IT</text>
</svg>

Проверьте SVG на соответствие BIMI через валидатор: https://bimigroup.org/bimi-generator/. Разместите файл на HTTPS-сервере с публичным доступом.

Проверка настройки

После настройки всех записей проведите комплексную проверку:

# Проверка SPF
dig TXT company.ru +short | grep spf
# "v=spf1 mx ip4:185.100.50.10 -all"

# Проверка DKIM
dig TXT mail._domainkey.company.ru +short
# "v=DKIM1; k=rsa; p=MIIBIjANBg..."

# Проверка DMARC
dig TXT _dmarc.company.ru +short
# "v=DMARC1; p=reject; rua=mailto:dmarc@company.ru..."

# Проверка BIMI
dig TXT default._bimi.company.ru +short
# "v=BIMI1; l=https://company.ru/logo/bimi.svg"

# Отправка тестового письма
# Используйте https://www.mail-tester.com/
# Сервис покажет оценку от 1 до 10 с детальным разбором SPF/DKIM/DMARC

# Проверка заголовков полученного письма
# В Gmail: "Показать оригинал" → смотрите Authentication-Results:
# dkim=pass header.d=company.ru
# spf=pass (google.com: domain of sender@company.ru designates ...)
# dmarc=pass (p=REJECT sp=REJECT dis=NONE)

Все три проверки (SPF, DKIM, DMARC) должны показывать pass. Результат fail в любой из них — повод для диагностики до перехода на p=reject.

Мониторинг и поддержка

Настройка аутентификации — не разовое действие. Требуется постоянный мониторинг:

Автоматизация обработки DMARC-отчётов через parsedmarc:

# Установка parsedmarc
pip install parsedmarc

# Конфигурация /etc/parsedmarc.ini
[general]
save_aggregate = True
save_forensic = True

[imap]
host = imap.company.ru
user = dmarc@company.ru
password = SecurePass123
watch = True

[elasticsearch]
hosts = http://localhost:9200

[smtp]
host = localhost
port = 25
from = parsedmarc@company.ru
to = admin@company.ru

# Запуск как systemd-сервис
parsedmarc -c /etc/parsedmarc.ini

parsedmarc автоматически скачивает DMARC-отчёты из почтового ящика, парсит XML и отправляет в Elasticsearch. Подключите Kibana или Grafana для визуализации: график успешных/неуспешных аутентификаций по дням, список IP-адресов, отправляющих от вашего домена, распределение по странам.

Ротация DKIM-ключей: меняйте ключи каждые 6-12 месяцев. Создайте новый selector (например, mail202604), опубликуйте в DNS, переключите сервер, через 48 часов удалите старую запись.

Настройка для популярных почтовых сервисов

Если вы используете облачную почту, настройка имеет свои особенности:

Яндекс 360 для бизнеса:

# SPF
company.ru.  IN  TXT  "v=spf1 include:_spf.yandex.net -all"

# DKIM — ключ генерируется в панели Яндекса:
# admin.yandex.ru → Почта → DKIM-подписи
mail._domainkey.company.ru.  IN  TXT  "v=DKIM1; k=rsa; p=ключ_из_панели"

Google Workspace:

# SPF
company.ru.  IN  TXT  "v=spf1 include:_spf.google.com -all"

# DKIM — генерируется в Admin Console → Gmail → Аутентификация
google._domainkey.company.ru.  IN  TXT  "v=DKIM1; k=rsa; p=ключ_из_консоли"

Комбинация: свой сервер + Яндекс + рассылочный сервис:

# SPF с несколькими источниками
company.ru.  IN  TXT  "v=spf1 ip4:185.100.50.10 include:_spf.yandex.net include:sendgrid.net -all"

# DKIM — отдельный selector для каждого сервиса
mail._domainkey    → ваш сервер
yandex._domainkey  → Яндекс
sendgrid._domainkey → SendGrid

DMARC проверяет alignment — домен в DKIM-подписи и/или в Return-Path (SPF) должен совпадать с доменом в From. Убедитесь, что каждый сервис правильно подписывает письма вашим доменом.

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

Технически да — DMARC требует прохождения либо SPF, либо DKIM (или обоих). Но без DKIM вы теряете защиту от модификации писем при пересылке. Forwarding-серверы часто меняют envelope-from, ломая SPF. DKIM сохраняется при пересылке. Всегда настраивайте оба механизма.

Проверьте DMARC-отчёты — найдите IP-адреса, с которых отправляются легитимные письма с результатом fail. Добавьте эти серверы в SPF-запись или настройте DKIM-подпись на них. Никогда не переключайтесь на p=reject без анализа отчётов минимум 2-4 недели на p=none.

Без VMC — бесплатно: создаёте SVG-файл, публикуете DNS-запись. Логотип будет отображаться в Apple Mail и Yahoo. Для Gmail нужен VMC-сертификат от DigiCert ($1499/год) или Entrust, плюс зарегистрированный товарный знак. Для малого бизнеса BIMI без VMC — разумный компромисс.

Рекомендуется ротация каждые 6-12 месяцев. Создайте новый selector, опубликуйте в DNS, подождите 24-48 часов для распространения, переключите почтовый сервер на новый ключ. Старый selector удаляйте не ранее чем через 48 часов после переключения — чтобы письма «в полёте» ещё могли быть проверены.

Положительно. Google, Yahoo и Microsoft повышают репутацию доменов с корректным DMARC. С 2024 года Gmail и Yahoo требуют SPF/DKIM/DMARC для массовых рассылок (5000+ писем/день). Без аутентификации письма всё чаще попадают в спам даже от легитимных отправителей.

Нужна помощь с настройкой?

Специалисты АйТи Фреш помогут с внедрением и настройкой — 15+ лет опыта, обслуживание от 15 000 ₽/мес

📞 Связаться с нами
#DMARC#SPF#DKIM#BIMI#аутентификация почты#email security#DNS записи почты#защита от спуфинга
Комментарии 0

Оставить комментарий

загрузка...