DKIM (DomainKeys Identified Mail) — стандарт аутентификации электронной почты, описанный в RFC 6376 (2011). Отправляющий сервер подписывает выбранные заголовки письма и тело криптографической подписью (RSA 2048-bit или Ed25519). Получающий сервер находит публичный ключ в TXT-записи DNS домена и проверяет подпись. Если подпись верна — письмо действительно отправлено с авторизованного сервера домена и не было изменено в пути.
Как работает DKIM
Процесс подписания письма на сервере отправителя:
- MTA (например, Postfix с OpenDKIM) вычисляет хеш указанных заголовков (From, Subject, Date, To) и тела письма алгоритмом SHA-256
- Подписывает хеш приватным ключом домена (хранится на сервере, недоступен снаружи)
- Добавляет заголовок
DKIM-Signature:к письму с подписью, именем домена (d=), именем ключа (selector,s=), алгоритмом и списком подписанных заголовков
Проверка на принимающей стороне:
- Сервер читает заголовок
DKIM-Signature, извлекает домен и selector - Запрашивает публичный ключ из DNS:
selector._domainkey.domain.com TXT - Расшифровывает подпись публичным ключом, получая хеш
- Независимо вычисляет хеш полученного письма и сравнивает
- Совпадение → DKIM PASS; несовпадение или ключ не найден → DKIM FAIL
Пример DNS-записи DKIM:
mail._domainkey.example.com IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEB..."
История
DKIM появился в 2004 году как объединение двух технологий: DomainKeys (Yahoo!, 2003) и Identified Internet Mail (Cisco, 2004). Стандартизирован в RFC 4871 в 2007 году. RFC 6376 (2011) — актуальная редакция. В 2022 году Google и Yahoo! объявили о требовании DKIM для отправителей массовых рассылок (более 5 000 писем/сутки) — с февраля 2024 года без DKIM такие письма автоматически отклоняются или попадают в спам. Ed25519 как альтернатива RSA добавлен в RFC 8463 (2018): ключ всего 44 символа вместо 256+ для RSA-2048, устойчивее к взлому при меньшем размере DNS-записи.
DKIM, SPF и DMARC
Три технологии аутентификации почты работают в связке и дополняют друг друга:
- SPF — TXT-запись DNS перечисляет IP-адреса, которым разрешено отправлять почту от имени домена. Проверяет envelope-from (технический адрес отправителя), не видимый пользователю
- DKIM — криптографическая подпись тела и заголовков письма, привязанная к домену. Сохраняется при пересылке через форвардинг, в отличие от SPF
- DMARC — политика, определяющая что делать с письмами, не прошедшими SPF/DKIM (none, quarantine, reject), и настраивающая отчёты об аутентификации для мониторинга
SPF ломается при пересылке писем (email forwarding): пересылающий сервер отправляет с чужого IP, что нарушает SPF-проверку. DKIM сохраняется при пересылке — это его ключевое преимущество. DMARC требует прохождения хотя бы одной из проверок (SPF alignment или DKIM alignment) для успешной доставки.
На что обращать внимание
Для VPS с собственным почтовым сервером настройка DKIM — обязательное условие доставки писем в Gmail, Mail.ru и Яндекс.Почту. Selector позволяет иметь несколько ключей одновременно: например, google._domainkey для Google Workspace и mail._domainkey для собственного сервера Postfix. Ротация ключей раз в год — рекомендуемая практика безопасности. Проверить статус DKIM/SPF/DMARC: mail-tester.com, dmarcian.com или Google Postmaster Tools. Распространённая ошибка — DNS-кэш не обновился: после добавления DKIM-записи нужно подождать TTL (обычно 300–3600 секунд). Диагностика: dig TXT mail._domainkey.example.com.