Назад | Перейти на главную страницу

OpenDKIM и канонизация котировок

В длительной борьбе со значительным процентом сбоев DKIM для подписей, сгенерированных на моих серверах, я заметил интересный случай. Сегодня я получил отчет об отказе DKIM:

User-Agent: OpenDKIM-Filter/2.10.3
Version: 0.1
...
Delivery-Result: other
Feedback-Type: auth-failure
Auth-Failure: signature (signature verification failed)
DKIM-Failure: signature
...
DKIM-Canonicalized-Header: (base64 string)
DKIM-Canonicalized-Body: (another base64 string)

Я заметил что DKIM-Canonicalized-Header содержится, в свою очередь, это:

cc: Alice A <alice.a@mydomain.com>,
        Bob B-B <b-b@mydomain.com>,
        "'Charlie C'" <charlie@theirdomain.com>

и фактический заголовок cc сообщалось как:

cc: Alice A <alice.a@mydomain.com>,
        Bob B-B <b-b@mydomain.com>,
        "'Charlie C'"
        <charlie@theirdomain.com>

К счастью, мне удалось точно определить причину сбоя. Мой сервер подписи сохранил временный файл /tmp/dkim.*, в котором говорится, что тот же заголовок был канонизирован немного иначе:

cc: Alice A <alice.a@mydomain.com>,
        Bob B-B <b-b@mydomain.com>,
        'Charlie C' <charlie@theirdomain.com>

Теперь самое интересное. Мой сервер подписи запускает очень похожую сборку (opendkim-2.10.3-1.el6.x86_64.rpm) на проверяющий удаленный сервер, и мне не удалось заставить его повторить это ошибочное поведение, то есть вызвать канонизацию "'something'". Так как же удаленный сервер мог достичь такой канонизации? Как может настоящий заголовок (которого у меня нет в архиве на моих серверах) быть такой строкой, что она каким-то образом декодируется и канонизируется в "'something'" на удаленном сервере и на 'something' на моем сервере? Или, может быть, какое-то дополнительное программное обеспечение имеет тенденцию изменять эти котировки во время обработки MTA? Образованные догадки приветствуются.

Есть два алгоритма канонизации, указанные в Характеристики DKIM. «Простой» алгоритм не меняет заголовок вообще, «расслабленный», помимо преобразования имен полей заголовка в нижний регистр, влияет только на пробелы.

Из-за этого я считаю очень маловероятным, что это как-то связано с OpenDKIM.

Я заглянул в RFC 5322. Хотя 'Charlie C' <charlie@theirdomain.com> кажется разрешенным, он помечен как устаревший (после ABNF: address-list -> address -> mailbox -> name-addr -> display-name -> phrase -> obs-phrase). Вероятно, поэтому что-то превращает его в quoted-string. Вам следует попробовать использовать двойные кавычки ("Charlie C" <charlie@theirdomain.com>) вместо этого.