本文へスキップ
ecdsa.com

DKIM の正規化

DKIM でハッシュを計算する前にメッセージのヘッダーと本文を正規化する 2 つのアルゴリズム、simple と relaxed(RFC 6376 §3.4)で、c= タグでヘッダーと本文に別々に指定します。
別表記DKIM simple canonicalizationDKIM relaxed canonicalizationc=relaxed/relaxed

ヘッダーの simple 正規化は何も変更しません。relaxed はヘッダー名を小文字にし、折り返された継続行を 1 行に戻し、連続する空白を 1 つのスペースにまとめ、行末とコロン前後の空白を削除します。本文の simple 正規化は末尾の空行を削除するだけです(空の本文は CRLF 1 つになります)。relaxed はさらに各行末の空白を無視し、連続する空白をまとめます。デフォルトは simple/simple ですが、ほとんどの署名者は c=relaxed/relaxed を使います。

本文ハッシュの不一致(body hash did not verify)は、たいてい署名後に何かが本文を書き換えたことを意味します。フッターの追加、改行コードの変換、quoted-printable や base64 のパートの再エンコード、行の折り返しなどです。ヘッダーの署名の検証失敗は、ゲートウェイによるヘッダーの並べ替えや折り返し直しが原因であることが多く、relaxed はこれを許容しますが、simple は許容しません。DKIM デバッガーは、ハッシュの計算に使った正規化後のバイト列を表示します。

規格と参考文献

すべての用語