DKIM: что это такое, зачем нужен и как настроить для домена
Зачем нужна DKIM-подпись в email-маркетинге
Механизм DKIM-проверки
1. Генерация ключей и публикация DKIM-записи
Владелец домена генерирует пару криптографических ключей: закрытый (приватный) и открытый (публичный). Закрытый ключ хранится на сервере отправителя, открытый размещается в DNS в виде TXT-записи — это и есть DKIM-запись для домена.
_domainkey
, например: selector1._domainkey.example.com
. В содержании (value) указываются параметры DKIM: версия (v=DKIM1), алгоритм шифрования (k=rsa) и сам публичный ключ (p=…). Эта запись открыта для всех почтовых серверов, которые затем используют её для проверки подписанных писем.2. Подпись исходящего письма
На этом этапе сервер:
- выбирает определённые заголовки письма (например, From, To, Subject, Date) и тело сообщения;
- применяет к ним алгоритм хеширования с учетом канонизации (simple или relaxed);
- отдельно хеширует тело письма;
- шифрует полученные хеши с помощью закрытого ключа;
- кодирует результат в Base64 и добавляет в заголовок DKIM-Signature.
Заголовок DKIM-Signature содержит ключевые параметры:
- v — версия DKIM (обычно DKIM1);
- d — домен отправителя (например, example.com);
- s — селектор (например, selector1);
- h — список подписанных заголовков (например, from:to:subject:date);
- bh — хеш тела письма (Body Hash);
- b — сама цифровая подпись.
3. Проверка DKIM-подписи получателем
Почтовый сервер получателя (например, Gmail или корпоративный шлюз) ищет в письме заголовок DKIM-Signature. Найдя его, сервер:
- формирует DNS-запрос на поиск TXT-записи, используя домен (d=) и селектор (s=) из подписи;
- получает открытый ключ из DNS;
- вычисляет хешы подписанных заголовков и тела письма с учетом указанной канонизации;
- расшифровывает подпись b= открытым ключом и сравнивает результат с вычисленным хешем.
Если хеши совпадают, эл. почта считается подлинной (DKIM=pass). Если нет, сервер отмечает письмо как невалидное (DKIM=fail) и может применить дополнительные фильтры.
4. Результат проверки и его значение
Результат проверки (pass или fail) влияет на обработку письма фильтрами спама. Валидная подпись в письме повышает репутацию отправителя. Неверная подпись (fail) ухудшает репутацию сильнее, чем полное отсутствие DKIM.
Почтовые сервисы также передают результат проверки в систему DMARC. Для успешной аутентификации по DMARC домены в поле From и в DKIM-подписи должны совпадать. Если письмо проходит проверку DKIM и домены выровнены, DMARC засчитывает письмо как подлинное. Если DKIM или SPF не проходят, письмо отклоняется или попадает в спам согласно политике домена.
5. Ограничения DKIM
DKIM-проверка подтверждает только целостность письма и подлинность домена отправителя. Он не гарантирует, что отправитель честен — любой может зарегистрировать домен с валидным DKIM. Подпись DKIM ломается, если письмо изменяют в пути. Например, добавление баннера или изменение заголовков приводит к нарушению подписи. Чтобы минимизировать риск, используют канонизацию типа relaxed или дополнительные механизмы вроде ARC (Authenticated Received Chain).
Как настроить DKIM для домена
Шаг 1. Генерация DKIM-ключей
Создайте пару ключей — публичный и приватный — для вашего домена. Если вы используете сервис email-рассылок или почтовый хостинг, он обычно предлагает автоматическую генерацию ключей. Используйте RSA-ключ длиной 2048 бит (минимум — 1024 бит для совместимости). Выберите селектор — любое короткое имя на латинице без пробелов: dkim1, mail, default. В примерах используется селектор default.
Шаг 2. Создание DKIM-записи в DNS
Добавьте DKIM-запись в DNS вашего домена у регистратора или провайдера хостинга:
- Тип записи — TXT.
- Имя записи —
._domainkey.<вашдомен>. Обратите внимание на подчёркивание и правильную структуру имени. - Значение записи — строка, начинающаяся с v=DKIM1; k=rsa; p=…, где после p= указывается ваш публичный ключ в формате Base64.
Шаг 3. Настройка почтового сервера или сервиса
Настройте сервер или сервис так, чтобы он подписывал исходящие письма вашим приватным ключом.
Шаг 4. Проверка настройки DKIM
Проверьте, работает ли DKIM правильно:
- отправьте тестовый емайл на свой ящик в Gmail или Yahoo, откройте исходные заголовки и убедитесь, что статус DKIM — PASS, а отправитель — ваш домен;
- проверьте наличие TXT-записи через консольную утилиту: dig TXT default._domainkey.yourdomain.com
- проанализируйте отчёты DMARC, если у вас настроена политика отправки отчётов: в них видно, прошла ли DKIM-проверка.
Шаг 5. Поддержание и регулярный мониторинг
После настройки регулярно следите за состоянием DKIM:
- обновляйте DKIM-ключи раз в 1-2 года для повышения безопасности: создайте новые ключи, опубликуйте новую запись в DNS, переключите сервер на использование нового ключа и удалите старую запись;
- при добавлении новых доменов сразу настраивайте для них DKIM по аналогичной схеме.
Ошибки при настройке DKIM и их решения
1. DKIM-запись не найдена (No DKIM record)
Почтовый сервер не может найти ваш открытый ключ в DNS. Это происходит, если вы не добавили DKIM-запись, указали её с ошибками или забыли включить _domainkey в имя. Иногда DNS-сервера ещё не успели обновиться после добавления записи.
2. Неверный формат DKIM-записи
Некорректный формат записи вызывает ошибки при проверке. Часто это результат лишних пробелов, кавычек или автоматического разбития строки в панели управления DNS. Иногда вместо TXT-записи создают CNAME, что тоже вызывает сбой.
3. DKIM-подпись не проходит проверку (DKIM=fail)
Вы опубликовали ключ, но подпись всё равно не проходит. Это может означать, что вы используете неправильный селектор, неподходящий ключ или письмо изменилось по пути (например, его модифицировал внешний сервис). Иногда подпись указывает на один домен, а письмо отправлено с другого.
4. Дублирование DKIM-записей
При добавлении или замене ключа в DNS часто остаются старые записи. Если вы оставили несколько TXT-записей с одинаковыми именами, проверка не будет работать.
Заключение
DKIM — это технология, которая подтверждает, что письмо действительно отправлено с указанного домена и не было изменено по пути к получателю. Настройка DKIM играет ключевую роль в защите бренда от фишинга, повышении доставляемости писем и укреплении доверия к отправителю.
DKIM — обязательная часть работы с почтовой инфраструктурой и важное условие для поддержания хорошей репутации в цифровой среде.