Настройка SPF DKIM DMARC для корпоративной почты на своём сервере
Содержание
Зачем нужны SPF, DKIM и DMARC

Настройка SPF DKIM DMARC — обязательный шаг при развёртывании корпоративного почтового сервера. Без этих трёх записей письма с вашего домена будут попадать в спам или отклоняться получателями. Google, Microsoft и Яндекс с 2024 года требуют наличие всех трёх механизмов для массовой рассылки.
SPF указывает, какие серверы имеют право отправлять письма от имени домена. DKIM подписывает каждое письмо цифровой подписью. DMARC объединяет оба механизма в единую политику и определяет, что делать с письмами, не прошедшими проверку.
В этой статье — пошаговая инструкция по настройке SPF DKIM DMARC для Postfix на Linux-сервере с примерами DNS-записей, конфигурационных файлов и командами проверки. Если вы предпочитаете делегировать настройку — настройка корпоративной почты под ключ включает полную конфигурацию всех трёх протоколов.
SPF — разрешаем серверам отправлять почту
SPF (Sender Policy Framework, RFC 7208) — DNS TXT-запись, которая перечисляет IP-адреса и серверы, имеющие право отправлять почту от имени вашего домена. Принимающий сервер проверяет SPF-запись и решает, доверять ли отправителю.
Структура SPF-записи:
v=spf1— версия протокола (обязательно)ip4:1.2.3.4— разрешить IP-адресmx— разрешить все IP из MX-записей доменаinclude:_spf.google.com— включить SPF другого домена (каждый include = 1 DNS-lookup)-all— отклонить все остальные (hard fail) или~all(soft fail)
Критическое ограничение: максимум 10 DNS-lookup (RFC 7208 §4.6.4). Каждый include:, a:, mx:, redirect= — это один lookup. Превышение лимита = PermError, SPF-проверка провалена. При настройке почтового сервера используйте ip4:/ip6: вместо include: где возможно.

DKIM — подписываем каждое письмо
DKIM (DomainKeys Identified Mail, RFC 6376) добавляет цифровую подпись в заголовок каждого исходящего письма. Принимающий сервер проверяет подпись, загружая публичный ключ из DNS-записи домена.
Компоненты DKIM:
- Приватный ключ — хранится на почтовом сервере, подписывает письма
- Публичный ключ — публикуется в DNS как TXT-запись
selector._domainkey.example.com - Selector — идентификатор ключа (например,
mail,dkim2026), позволяет ротировать ключи
Требования к ключу: минимум 1024 бит (принимается), рекомендуется 2048 бит (стандарт с 2024 года). Google и Microsoft понижают рейтинг писем с 1024-битными ключами. При выборе почтового сервера убедитесь, что он поддерживает 2048-битные DKIM-ключи.
# Установка OpenDKIM на Ubuntu/Debian
apt install opendkim opendkim-tools
# Генерация ключевой пары 2048 бит
mkdir -p /etc/opendkim/keys/example.com
opendkim-genkey -b 2048 -d example.com -s mail -D /etc/opendkim/keys/example.com/
# Результат: mail.private (приватный ключ) и mail.txt (DNS-запись)
chown opendkim:opendkim /etc/opendkim/keys/example.com/mail.private
# Конфигурация OpenDKIM (/etc/opendkim.conf)
Syslog yes
UMask 007
Mode sv
SubDomains no
AutoRestart yes
AutoRestartRate 10/1M
Background yes
DNSTimeout 5
SignatureAlgorithm rsa-sha256
KeyTable /etc/opendkim/key.table
SigningTable refile:/etc/opendkim/signing.table
InternalHosts /etc/opendkim/trusted.hosts
# /etc/opendkim/key.table:
mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private
# /etc/opendkim/signing.table:
*@example.com mail._domainkey.example.com
# /etc/opendkim/trusted.hosts:
127.0.0.1
::1
localhost
example.com

DMARC — объединяем SPF и DKIM в политику
DMARC (Domain-based Message Authentication, Reporting and Conformance, RFC 7489) — DNS TXT-запись, которая указывает принимающему серверу, что делать с письмами, не прошедшими SPF и/или DKIM. Без DMARC настройка SPF DKIM DMARC неполна — принимающие серверы могут игнорировать провалы SPF/DKIM.
Параметры DMARC:
v=DMARC1— версия (обязательно)p=none|quarantine|reject— политика: мониторинг / карантин / отклонениеrua=mailto:dmarc@example.com— адрес для агрегированных отчётовruf=mailto:dmarc-forensic@example.com— адрес для детализированных отчётовsp=— политика для поддоменов (если отличается от основной)pct=100— процент писем, к которым применяется политика
Рекомендованный путь внедрения:
- Начните с
p=none; rua=...— собирайте отчёты 2-4 недели - Анализируйте отчёты: убедитесь, что все легитимные письма проходят SPF и DKIM
- Переключите на
p=quarantine— неподтверждённые письма в спам - После стабилизации —
p=reject— полная защита от подделки
Подробнее — в нашей статье мониторинг настроек через Zabbix.
# Пример SPF-записи для Postfix-сервера
# DNS TXT-запись для example.com:
v=spf1 ip4:193.187.96.108 mx -all
# Если используете дополнительные сервисы (Google Workspace, Яндекс):
v=spf1 ip4:193.187.96.108 include:_spf.google.com include:_spf.yandex.net mx -all
# Внимание: 2 include = 2 DNS-lookup из лимита 10
# Проверка SPF-записи
dig TXT example.com +short | grep spf
# Ожидаемый результат: "v=spf1 ip4:193.187.96.108 mx -all"
# Подсчёт DNS-lookup (утилита spf-tools или Python pyspf):
python3 -c "
import spf
result = spf.check(i='193.187.96.108', s='user@example.com', h='mail.example.com')
print(result)
"
# Или онлайн: mxtoolbox.com/spf.aspx
# DNS TXT-запись DMARC для example.com
# Запись публикуется для _dmarc.example.com:
# Этап 1: Мониторинг (первые 2-4 недели)
_dmarc.example.com. IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com; ruf=mailto:dmarc-forensic@example.com; pct=100"
# Этап 2: Карантин (после анализа отчётов)
_dmarc.example.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; pct=100"
# Этап 3: Полная защита
_dmarc.example.com. IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com; sp=reject; pct=100"
# Проверка DMARC-записи
dig TXT _dmarc.example.com +short
# Ожидаемый результат: "v=DMARC1; p=reject; rua=mailto:dmarc@example.com; sp=reject; pct=100"
# Анализ агрегированных отчётов (XML → человекочитаемый формат):
# Отчёты приходят в формате XML, используйте парсер:
pip3 install dmarc-visualizer
# Или бесплатные сервисы: dmarcian.com, easydmarc.com
Типичные ошибки при настройке SPF DKIM DMARC
Настройка SPF DKIM DMARC содержит несколько подводных камней, которые не очевидны из документации. Раскройте каждый пункт для подробностей.
Каждый include: добавляет рекурсивные lookup. Например, include:_spf.google.com — это ~4 lookup. Решение: замените include: на ip4:/ip6: где возможно, используйте SPF-flattening (макрос %{i}). Подробнее — в нашей статье о причинах попадания почты в спам.
Старые инструкции и генераторы по умолчанию создают 1024-битные ключи. С 2024 года Google, Microsoft и Яндекс понижают рейтинг писем с короткими ключами. Решение: перегенерируйте ключ с -b 2048, обновите DNS-запись, перезапустите OpenDKIM.
Политика p=none без rua= не отправляет отчёты — вы не узнаете, кто подделывает ваш домен. Всегда указывайте rua=mailto:... для получения агрегированных отчётов. Бесплатные агрегаторы: dmarcian.com, easydmarc.com.
RFC 7208 §4.5 запрещает несколько TXT-записей, начинающихся с v=spf1. Наличие двух записей приводит к PermError — SPF-проверка всегда провалена. Частая причина: добавили новый SPF вместо редактирования существующего. Проверяйте: dig TXT example.com +short | grep spf — должна быть ровно одна строка.
Итоги: настройка SPF DKIM DMARC за 30 минут
Настройка SPF DKIM DMARC — не сложная задача, если следовать проверенной последовательности: сначала SPF, потом DKIM, потом DMARC с постепенным ужесточением политики. Полный цикл занимает 20-30 минут на настройку и 2-4 недели на мониторинг перед переходом на p=reject.
Ключевые правила:
- SPF: не более 10 DNS-lookup, используйте
-all - DKIM: ключ 2048 бит, ротация раз в год
- DMARC: начните с
p=none, переходите наp=rejectпосле анализа отчётов - Мониторинг: автоматизируйте через zabbix-mail-dns-audit
Полный чек-лист проверки доставляемости из 15 пунктов поможет убедиться, что вы ничего не пропустили.
Не хотите настраивать сами? При администрировании серверов мы выполняем настройку SPF DKIM DMARC в рамках ежеквартального аудита безопасности. Аудит вашей почты — бесплатно.
Подробнее — в нашей статье чёрные списки DNSBL.
Закажите бесплатный аудит почтовой инфраструктуры — мы проверим настройку SPF DKIM DMARC и дадим рекомендации по улучшению.
Часто задаваемые вопросы
Ответы на популярные вопросы о настройке SPF DKIM DMARC для корпоративной почты.
Техническая настройка SPF DKIM DMARC занимает 20-30 минут при наличии доступа к DNS-зоне и серверу. Однако полный цикл включает 2-4 недели мониторинга с p=none перед переходом на p=quarantine или p=reject.
Технически да — DMARC проверяет SPF ИЛИ DKIM (alignment). Но без DKIM вы теряете защиту при пересылке писем (forwarding ломает SPF). Рекомендуется всегда настраивать оба протокола.
Проверьте: 1) SPF-запись включает IP вашего сервера, 2) DKIM-подпись валидна (opendkim-testkey), 3) DMARC-alignment проходит (домен в From совпадает с SPF/DKIM-доменом). Используйте гайд по диагностике спама для пошаговой проверки.
Рекомендуется ротация ключей раз в 6-12 месяцев. При ротации: 1) сгенерируйте новый ключ с новым selector, 2) опубликуйте в DNS, 3) переключите OpenDKIM на новый selector, 4) удалите старую DNS-запись через 48 часов (время DNS-кэширования).
Да. С 2024 года Google и Microsoft требуют SPF + DKIM + DMARC для отправителей более 5000 писем в день. Но даже для небольших компаний эти записи необходимы — без них письма помечаются как подозрительные, а домен уязвим для подделки (spoofing).



