Как и вы, я подозреваю, что exim при передаче что-то меняет. Ваша exim-система случайно добавляет стандартный шаблон к каждому исходящему сообщению? Подписание DKIM должно происходить после этого добавления и включать эти изменения, чтобы его можно было включить в хэш тела.
Общая процедура тестирования:
На сервере передайте сообщение exim, используя следующую команду:
exim -d -t
Когда он закончится, в результате появится файл с именем "test.out". Отредактируйте этот файл и найдите «PDKIM». Первым примером этого будет канонизированное тело. Четвертый экземпляр или около того будут канонизированными заголовками. Просмотрите эти разделы и посмотрите, не изменилось ли что-нибудь, как по сравнению с исходным сообщением, которое вы отправили, так и с сообщением в том виде, в котором оно было получено.
Типичные изменения, которые я видел, обычно связаны с версией mime, типом mime, кодировкой передачи контента, типом контента, или кодировка изменяется в пути. Однако вы сказали, что ваши проверки заголовка проходят, а проверка тела - нет. Так что это усложняет задачу.