Что такое DKIM?
DKIM (DomainKeys Identified Mail) — это метод аутентификации почты, определенный в RFC 6376. Он использует асимметричное шифрование: закрытый ключ подписывает исходящие сообщения на вашем почтовом сервере, а открытый ключ, опубликованный в DNS, позволяет любому принимающему серверу проверить эту подпись. Если сообщение было изменено после подписания, подпись станет недействительной.
В отличие от SPF, DKIM аутентифицирует само содержимое сообщения (заголовки и/или тело), а не только IP отправителя. Это делает его устойчивым к сценариям пересылки почты, где IP-адрес отправителя меняется.
Зачем вам нужен DKIM?
1Целостность сообщения
Доказывает, что тело письма и заголовки не были изменены с момента отправки с вашего сервера
2Сохраняется при пересылке
Подпись встроена в письмо и не привязана к IP отправителя — она остается валидной при прохождении через релеи
3Необходим для DMARC
DMARC может использовать соответствие DKIM в качестве основы для принятия решения о прохождении проверки
4Повышение доставляемости
Gmail, Outlook и другие сервисы отдают приоритет письмам с подписью DKIM при фильтрации
Как работает DKIM — пошагово
Вы генерируете пару открытый/закрытый ключ и настраиваете почтовый сервер на использование закрытого ключа.
Вы публикуете открытый ключ как DNS TXT-запись по адресу `selector._domainkey.yourdomain.com`.
Когда вы отправляете письмо, почтовый сервер хеширует выбранные заголовки и тело сообщения, а затем подписывает этот хеш закрытым ключом.
Подпись добавляется в письмо в виде заголовка `DKIM-Signature`.
Принимающий сервер считывает заголовок `DKIM-Signature`, получает открытый ключ из DNS, дешифрует подпись и повторно хеширует сообщение для сравнения.
Совпадение означает, что сообщение подлинное и не изменялось. Несовпадение указывает на подмену или ошибку конфигурации.
Запись DKIM DNS (открытый ключ)
v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADC...AQABКлючевые поля
v=DKIM1— идентификатор версииk=rsa— тип ключа (rsa или ed25519)p=— открытый ключ в кодировке base64h=— допустимые алгоритмы хеширования (sha256)s=— тип сервиса (email или *)t=s— флаг строгого режимаЗаголовок DKIM-Signature (в самом письме)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=yourdomain.com; s=mail2024;
h=from:to:subject:date:message-id;
bh=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=;
b=mY93xZ...Значения полей подписи
Распространенные проблемы DKIM
Изменение тела письма
Некоторые почтовые рассылки или антивирусы изменяют тело письма, что нарушает хеш bh=
Отсутствующая DNS-запись
Убедитесь, что ваша TXT-запись опубликована и разошлась по DNS перед отправкой
Неверный селектор
Значение s= в подписи должно точно совпадать с селектором в имени DNS-записи
Слишком короткий ключ
Используйте ключи RSA не менее 2048 бит. Ключи 1024 бит считаются небезопасными и отклоняются некоторыми провайдерами
Часто задаваемые вопросы
DKIM добавляет цифровую подпись к вашим письмам. Это позволяет серверам убедиться, что письмо было отправлено владельцем домена и его содержание не менялось в пути.
Селектор — это строка для поиска публичного ключа в DNS. Его можно найти в настройках вашего почтового сервиса или в заголовке письма в теге 's='.
Обычно это связано с неверным селектором, долгой репликацией DNS или добавлением записи на неправильный уровень домена.
Да, это необходимо, если вы используете разные сервисы (например, рассылки и корпоративную почту). У каждого будет свой селектор.
Валидная подпись DKIM повышает доверие со стороны провайдеров, что помогает строить хорошую репутацию отправителя.
Приватный ключ хранится на сервере и подписывает письма. Публичный ключ находится в DNS, чтобы получатель мог проверить эту подпись.