DKIM-подпись
Что такое DKIM простыми словами, как добавить запись в DNS, проверить подпись в заголовках и выбрать длину ключа. + 6 ошибок, из-за которых DKIM не проходит.
DKIM (DomainKeys Identified Mail) — цифровая подпись, которую почтовый сервер добавляет к каждому письму. Открытый ключ публикуется в DNS домена, и сервер получателя проверяет по нему, что письмо отправлено с вашего домена и не изменено в пути. Gmail требует DKIM от всех, кто отправляет более 5 000 писем в день.
Ниже — пошаговая настройка и шесть ошибок, из-за которых запись в DNS есть, а DKIM всё равно не проходит. У каждой — признак в заголовках и способ исправить.
Коротко: DKIM в цифрах
| Факт | Значение | Источник |
|---|---|---|
| Стандарт | RFC 6376, 2011 | IETF |
| Минимальная длина RSA-ключа | 1 024 бита, рекомендуется 2 048 | RFC 8301, 2018 |
| Требование Gmail к ключу | не короче 1 024 бит, предпочтительно 2 048 | Google, 2024 |
| Когда DKIM обязателен в Gmail и Outlook | от 5 000 писем в день | Google, dmarcian |
| По какому домену строится статистика Постмастера Mail.ru | по домену из DKIM-подписи (тег d=) | Mail.ru |
Как работает DKIM-подпись
DKIM работает на паре ключей: закрытый хранится на почтовом сервере, открытый — в DNS.
- Сервер отправителя считает хеш тела письма и выбранных заголовков (From, Subject, Date).
- Подписывает его закрытым ключом и добавляет заголовок
DKIM-Signatureс доменом (d=) и селектором (s=). - Сервер получателя берёт открытый ключ по адресу
селектор._domainkey.домен. - Проверяет подпись. Если письмо изменили в пути или ключ не подходит — результат fail.
Главное отличие от SPF: DKIM переживает пересылку. SPF проверяет IP сервера, и при пересылке он меняется. Подпись DKIM остаётся в письме, пока его содержимое не изменено.
Из чего состоит DKIM-запись и DKIM-подпись
Запись в DNS — это TXT на поддомене селектор._domainkey:
mail._domainkey.company.ru TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."
Подпись в письме — заголовок с набором тегов:
| Тег | Где | Что означает |
|---|---|---|
v=DKIM 1 | DNS | Версия записи |
k=rsa | DNS | Алгоритм ключа |
p= | DNS | Открытый ключ; пустое значение означает, что ключ отозван |
d= | Письмо | Домен, который подписал письмо |
s= | Письмо | Селектор: по нему ищется ключ в DNS |
h= | Письмо | Подписанные заголовки |
bh= / b= | Письмо | Хеш тела и сама подпись |
Как настроить DKIM для домена
Настройка занимает 10–15 минут плюс время на обновление DNS.
- Сгенерируйте ключ в админ-панели почтового сервиса (Яндекс 360, VK WorkSpace, Google Workspace, Microsoft 365) или сервиса рассылок. Выбирайте 2 048 бит, если есть выбор.
- Скопируйте хост и значение TXT-записи целиком, без переносов строк.
- Добавьте TXT-запись в DNS: хост вида
mail._domainkey, значениеv=DKIM1; k=rsa; p=.... - Включите подпись в панели почтового сервиса после того, как запись обновилась. Во многих сервисах это отдельная кнопка.
- Проверьте результат — см. раздел ниже.
Если письма отправляют несколько сервисов, у каждого будет свой селектор и своя DKIM-запись. В отличие от SPF, их можно иметь сколько угодно.
В Holymailer DKIM вместе с SPF, DMARC и MX настраивается автоматически для каждого домена и проверяется ежедневно.
Как проверить DKIM-подпись
Отправьте письмо на Gmail или Mail.ru и откройте заголовки. Ищите строку Authentication-Results:
Authentication-Results: mx.google.com; dkim=pass header.d=company.ru header.s=mail; spf=pass smtp.mailfrom=company.ru; dmarc=pass header.from=company.ru
Проверяйте две вещи: dkim=pass и что header.d совпадает с доменом в поле «От». Чтобы убедиться, что ключ опубликован, выполните dig TXT mail._domainkey.company.ru +short. Ту же проверку описывает справка Mail.ru.
6 ошибок, из-за которых DKIM не проходит
Запись в DNS есть — ещё не значит, что DKIM работает. Вот что ломается чаще всего.
| # | Ошибка | Признак в заголовках | Как исправить |
|---|---|---|---|
| 1 | Запись опубликована, но подпись не включена в почтовом сервисе | dkim=none или нет заголовка DKIM-Signature | Нажать «Включить подпись» в админ-панели |
| 2 | Ключ обрезан или испорчен при копировании: пробелы, переносы, лишние кавычки | dkim=fail или permerror | Скопировать ключ заново; длинный ключ разбить на строки по 255 символов, если так требует DNS-провайдер |
| 3 | Неверный хост: панель DNS сама дописала домен, и получилось mail._domainkey.company.ru.compan y.ru | dkim=temperro r или permerror с пометкой «no key for signature» | Указать в хосте только mail._domainke y |
| 4 | Домен в d= не совпадает с доменом в поле «От» | dkim=pass, но dmarc=fail | Настроить подпись своим доменом в сервисе рассылок |
| 5 | Письма подписывает домен сервиса рассылок, а не ваш | header.d= с чужим доменом | Подключить собственный DKIM. Иначе репутация и статистика Постмастера Mail.ru уходят домену сервиса |
| 6 | Короткий ключ: 512 или 768 бит | dkim=fail или «policy (weak key)» в Gmail | Сгенерировать новый ключ на 2 048 бит |
Если DKIM проходит, а письма всё равно в спаме, причина уже не в аутентификации. Пройдите диагностику доставляемости за 15 минут и проверьте, прогрет ли ящик.
Часто задаваемые вопросы
Что такое DKIM простыми словами?
Это цифровая подпись письма. Она доказывает получателю, что письмо отправлено с вашего домена и никто не изменил его по дороге.
Чем DKIM отличается от SPF?
SPF проверяет, с какого сервера пришло письмо. DKIM проверяет само письмо через подпись и поэтому сохраняется при пересылке. Нужны оба механизма.
Какую длину ключа DKIM выбрать: 1024 или 2048?
2 048 бит. RFC 8301 требует не меньше 1 024 и рекомендует 2 048, Google также советует 2 048, если DNS-провайдер его поддерживает.
Почему DKIM проходит, а DMARC — нет?
Письмо подписано доменом, который не совпадает с доменом в поле «От». Чаще всего это домен сервиса рассылок. Настройте подпись собственным доменом.
Почему DKIM ломается при пересылке?
Подпись ломается, если промежуточный сервер изменил письмо: добавил футер антивируса, переписал тему или ссылки. При обычной пересылке без изменений подпись сохраняется.
Можно ли иметь несколько DKIM-записей на одном домене?
Да. У каждого сервиса свой селектор, например mail._domainkey для почты и crm._domainkey для CRM, и записи не конфликтуют.
Источники
- RFC 6376: DomainKeys Identified Mail Signatures — стандарт DKIM, 2011.
- RFC 8301: Cryptographic Algorithm and Key Usage Update to DKIM — требования к длине ключа, 2018.
- Google: Email sender guidelines — действуют с 1 февраля 2024.
- dmarcian: Microsoft Enforces SPF, DKIM, DMARC — с 5 мая 2025.
- Mail.ru: статистика по домену в Постмастере.
- Mail.ru: как проверить SPF, DKIM, DMARC в письме.
Разметка JSON-LD
{ "@context": "https://schema.org", "@graph": [ { "@type": "Article", "headline": "DKIM-подпись: настройка, проверка и 6 частых ошибок", "author": {"@type": "Person", "name": "[Имя автора]", "jobTitle": "[Должность]"}, "datePublished": "2026-09-30", "dateModified": "2026-09-30", "publisher": {"@type": "Organization", "name": "Holymailer", "url": "https://holymailer.com"} }, { "@type": "HowTo", "name": "Как настроить DKIM для домена", "step": [ {"@type": "HowToStep", "text": "Сгенерируйте ключ 2048 бит в админ-панели почтового сервиса."}, {"@type": "HowToStep", "text": "Скопируйте хост и значение TXT-записи целиком."}, {"@type": "HowToStep", "text": "Добавьте TXT-запись с хостом вида mail._domainkey в DNS."}, {"@type": "HowToStep", "text": "Включите подпись в панели почтового сервиса."}, {"@type": "HowToStep", "text": "Проверьте dkim=pass и совпадение header.d с доменом отправителя в заголовках тестового письма."} ] }, { "@type": "FAQPage", "mainEntity": [ {"@type": "Question", "name": "Что такое DKIM простыми словами?", "acceptedAnswer": {"@type": "Answer", "text": "Это цифровая подпись письма. Она доказывает получателю, что письмо отправлено с вашего домена и никто не изменил его по дороге."}}, {"@type": "Question", "name": "Чем DKIM отличается от SPF?", "acceptedAnswer": {"@type": "Answer", "text": "SPF проверяет, с какого сервера пришло письмо. DKIM проверяет само письмо через подпись и поэтому сохраняется при пересылке."}}, {"@type": "Question", "name": "Какую длину ключа DKIM выбрать: 1024 или 2048?", "acceptedAnswer": {"@type": "Answer", "text": "2048 бит. RFC 8301 требует не меньше 1024 и рекомендует 2048, Google также советует 2048."}}, {"@type": "Question", "name": "Почему DKIM проходит, а DMARC — нет?", "acceptedAnswer": {"@type": "Answer", "text": "Письмо подписано доменом, который не совпадает с доменом в поле «От», чаще всего доменом сервиса рассылок. Настройте подпись собственным доменом."}}, {"@type": "Question", "name": "Почему DKIM ломается при пересылке?", "acceptedAnswer": {"@type": "Answer", "text": "Подпись ломается, если промежуточный сервер изменил письмо: добавил футер, переписал тему или ссылки. При пересылке без изменений подпись сохраняется."}}, {"@type": "Question", "name": "Можно ли иметь несколько DKIM-записей на одном домене?", "acceptedAnswer": {"@type": "Answer", "text": "Да. У каждого сервиса свой селектор, например mail._domainkey и crm._domainkey, и записи не конфликтуют."}} ] } ] }