диагностика · ответ с источниками
Ошибка DKIM «body hash did not verify»: диагностика
Ошибка DKIM «body hash did not verify» возникает, когда тело письма изменяется уже после того, как была поставлена подпись DKIM. Принимающий сервер заново вычисляет хеш полученного тела и обнаруживает, что он не совпадает с хешем, сохранённым в заголовке DKIM-Signature, — в результате проверка не проходит.
Почему изменяется тело письма
Чаще всего содержимое письма меняет промежуточный почтовый сервер или устройство безопасности. Это может быть добавление пробелов в конце строк, вставка пикселей отслеживания, добавление юридических оговорок или замена окончаний строк с CRLF на LF. Даже изменение одного символа в теле или в MIME-структуре делает криптографический хеш недействительным и приводит к результату fail.
Настройки канонизации
DKIM использует алгоритмы канонизации, которые определяют, какие изменения допустимы, прежде чем проверка хеша не пройдёт. Простая (simple) канонизация строгая и не проходит при любом изменении. Мягкая (relaxed) канонизация игнорирует некоторые изменения пробелов и различия в регистре заголовков. Если ваши письма часто изменяются релеями, переход на мягкую канонизацию поможет избежать лишних сбоев.
Проблемы с MIME и кодировкой
Неправильная обработка Content-Transfer-Encoding может привести к несовпадению хешей. Если релей перекодирует письмо из quoted-printable в 8bit или меняет charset, итоговый хеш тела изменится. Убедитесь, что подписывающий агент и транспортные уровни соблюдают стандарты RFC 2045, чтобы тело письма оставалось неизменным.
Шаги диагностики
Чтобы устранить проблему, изучите исходные заголовки письма, не прошедшего проверку. Сравните исходное отправленное тело с полученным, чтобы точно определить, где произошло изменение. Проверить текущую настройку DKIM-записи и убедиться, что открытый ключ правильно опубликован в DNS, можно в SendHQ или с помощью его бесплатных инструментов (https://sendhq.cc/tools).
Как предотвратить ошибку
Не используйте почтовые релеи, которые изменяют содержимое. Если без сервиса, добавляющего футеры, не обойтись, убедитесь, что подпись ставится на последнем узле цепочки доставки. Другой вариант — внедрить ARC (Authenticated Received Chain), чтобы сохранять исходные результаты аутентификации на нескольких узлах и позволить конечному получателю доверять исходной подписи.
Что спрашивают команды
Влияет ли ошибка хеша тела на SPF?
Нет, SPF и DKIM независимы. Ошибка хеша тела в DKIM не отменяет успешную проверку SPF, но может повлиять на выравнивание DMARC, если DKIM был основным методом аутентификации.
Может ли добавление футера вызвать эту ошибку?
Да. Если после подписания письма к нему добавляется корпоративная оговорка или футер списка рассылки, содержимое тела меняется и хеш тела DKIM становится недействительным.
Чем простая канонизация отличается от мягкой?
Простая (simple) канонизация строгая и не проходит при любом изменении. Мягкая (relaxed) допускает небольшие изменения пробелов и регистра заголовков, поэтому устойчивее к изменениям, которые вносят релеи.
Вызывает ли изменение темы письма ошибку хеша тела?
Нет, тема — часть заголовка. Изменение темы приведёт к ошибке хеша заголовков, а не хеша тела.