диагностика · ответ с источниками

Ошибка 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) допускает небольшие изменения пробелов и регистра заголовков, поэтому устойчивее к изменениям, которые вносят релеи.

Вызывает ли изменение темы письма ошибку хеша тела?

Нет, тема — часть заголовка. Изменение темы приведёт к ошибке хеша заголовков, а не хеша тела.

Первоисточники