サーバーで生成された署名の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 <[email protected]>,
Bob B-B <[email protected]>,
"'Charlie C'" <[email protected]>
実際のヘッダーcc
は次のように報告されました。
cc: Alice A <[email protected]>,
Bob B-B <[email protected]>,
"'Charlie C'"
<[email protected]>
幸いなことに、私は失敗の原因を正確に発見することができました。私の署名サーバーは一時ファイル/tmp/dkim.*を保持していました。これは、同じヘッダーが少し異なって正規化されたことを示しています。
cc: Alice A <[email protected]>,
Bob B-B <[email protected]>,
'Charlie C' <[email protected]>
今、楽しい部分。私の署名サーバーは、検証するリモートサーバーと非常によく似たビルド(opendkim-2.10.3-1.el6.x86_64.rpm)を実行しますが、このバグのある動作を繰り返すことはできませんでした。つまり、正規化が発生します"'something'"
。では、リモートサーバーはどのようにしてそのような正規化に到達できるのでしょうか。 実際のヘッダー(サーバーにアーカイブしていない)は、リモートサーバーでは"'something'"
に、サーバーでは'something'
に何らかの方法でデコードおよび正規化されるような文字列である可能性があります。 ?または、MTA処理中にこれらの見積もりを変更する傾向がある追加のソフトウェアがありますか?知識に基づいた推測は大歓迎です。
DKIM仕様 で指定されている2つの正規化アルゴリズムがあります。 「単純な」アルゴリズムはヘッダーをまったく変更しません。「リラックスした」アルゴリズムは、ヘッダーフィールド名を小文字に変換する以外に、空白にのみ影響します。
このため、OpenDKIMとは関係がない可能性が非常に高いと思います。
RFC 5322 を調べました。 'Charlie C' <[email protected]>
は許可されているようですが、廃止としてマークされています(ABNFに続いて:address-list
-> address
-> mailbox
-> name-addr
- > display-name
-> phrase
-> obs-phrase
)。それがおそらく何かがそれをquoted-string
に変える理由です。代わりに、二重引用符("Charlie C" <[email protected]>
)を使用してみてください。