#Что происходит и когда применима инструкция
После переноса домена либо почты DKIM-проверка стала возвращать fail: письма подписываются, но получатель не может сопоставить подпись с ключом в DNS, или письмо изменяется после подписания. Важно сохранить private key закрытым и проверять точный селектор DKIM.
#Основные причины и их признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Запись старого селектора удаленаНовый DNS-провайдер не получил селектор старого почтового сервера. | В заголовке DKIM-Signature указан s=, а TXT пуст | Восстановите действительный открытый ключ на правильном имени. |
| На почтовом сервере новый закрытый ключПосле миграции ключи подписи и DNS перестали соответствовать. | DNS содержит ключ другой пары | Переопубликуйте открытый ключ из активного подписывающего сервера. |
| Содержимое меняется после подписиПромежуточный шлюз, список рассылки или пересборка тела могут изменить подписанные данные. | В DNS ключ есть, но проверка подписи fail | Найдите этап, изменяющий сообщение. |
#Пошаговая диагностика и устранение
- Получите тестовое письмо и полный заголовокОтправьте сообщение самому себе на внешний ящик, где доступны исходные заголовки. Найдите
DKIM-Signature,Authentication-Results, значениеd=(домен) иs=(селектор). Не публикуйте текст письма с персональными данными.
- Определите текущий сервер подписиВ конфигурации почтового провайдера или собственном OpenDKIM выясните, какой домен и селектор использует действующая отправка. Старые письма могут иметь другой селектор; не исправляйте его по интуиции без сравнения нового сообщения.
- Составьте DNS-имя селектораДля
s=mail2026иd=example.comимя записи будетmail2026._domainkey.example.com. В панели DNS некоторые сервисы требуют толькоmail2026._domainkeyкак относительное имя; проверяйте итоговый FQDN снаружи.
- Проверьте открытый ключ в DNSЗапросите TXT именно вычисленного имени, посмотрите
v=DKIM1,k=иp=; если провайдер использует CNAME-делегирование, проверьте конечный адрес. Никогда не публикуйте в DNS закрытый ключ сервера. - Терминал с dig; селектор и домен заменить на реальные из заголовка DKIM-SignatureLinux · Терминал (Bash)КомандаТерминал с dig; селектор и домен заменить на реальные из заголовка DKIM-Signature.
dig +short TXT mail2026._domainkey.example.com
- Сопоставьте ключи у провайдераВ панели почтового провайдера скопируйте предназначенный для DNS открытый ключ и сравните с опубликованным. Для собственного OpenDKIM проверьте таблицы селекторов и ключей на сервере с ограниченными правами; содержимое private key не пересылайте.
- Аккуратно обновите записьЕсли активный ключ отличается, добавьте корректный TXT/CNAME для текущего селектора. Не удаляйте старый селектор, пока продолжаются письма, подписанные им, или другие сервисы его используют. Дождитесь обновления у авторитетных DNS.
- Исключите изменения после подписанияЕсли открытый ключ верен, исследуйте SMTP-шлюзы, футеры списка рассылки, перекодирование тела и переписывание заголовков между подписью и доставкой. Для проверки отправьте минимальное текстовое письмо напрямую, затем через типовой маршрут.
- Повторите тест и DMARC-сверкуПолучите новое письмо и посмотрите
dkim=passвместе с доменомd=. Отдельно проверьте, выровнен ли домен DKIM с видимым From для DMARC. Отсутствие fail у одного получателя ещё не означает корректность всех отправителей.
#Проверка результата
Новые письма подписаны правильным селектором, открытый ключ доступен в авторитетном DNS и проверяющий получатель сообщает DKIM pass; домен подписи соответствует согласованной политике DMARC.
#Если решить проблему не удалось
Если DKIM fail сохраняется при совпадающем DNS, сохраните обезличенную пару заголовков до и после почтового шлюза и проверьте изменяемые поля. Не отключайте DKIM и не публикуйте секретные ключи в попытке диагностики.