У меня есть сервер под управлением Exim 4.72, который настроен аналогично роли Exchange «Edge Transport»: он пересылает почту из Интернета в Exchange и пересылает почту из Exchange в Интернет.
Я настроил DKIM в Exim для исходящей почты. Он работает правильно, когда почта отправляется непосредственно в exim; Gmail сообщает, что хеш-код тела правильный. При отправке на Exchange, который затем пересылает на Exim, проверка хэша тела DKIM не выполняется.
Я пробовал и с простой, и с расслабленной пушкой. Кто-нибудь испытывал нечто подобное или имел какие-либо идеи?
Как и вы, я подозреваю, что exim при передаче что-то меняет. Ваша exim-система случайно добавляет стандартный шаблон к каждому исходящему сообщению? Подписание DKIM должно произойти после этого добавления и включать эти изменения, чтобы его можно было включить в хэш тела.
Общая процедура тестирования:
На сервере передайте сообщение exim, используя такую команду:
exim -d -t <test.eml> test.out 2> & 1
По завершении будет получен файл с именем «test.out». Отредактируйте этот файл и найдите «PDKIM». Первым примером этого будет канонизированное тело. Четвертый экземпляр или около того будут канонизированными заголовками. Посмотрите на эти разделы и посмотрите, не изменилось ли что-нибудь, как по сравнению с исходным сообщением, которое вы отправили, так и с сообщением в том виде, в котором оно было получено.
Типичные изменения, которые я видел, обычно связаны с версией mime, типом mime, кодировкой передачи контента, типом контента или кодировкой, изменяемыми при передаче. Однако вы сказали, что ваши проверки заголовка проходят, а проверка тела - нет. Так что это усложняет задачу.