A DKIM pass は、表示されるすべてのヘッダーが署名されたことを意味するわけではありません。各署名は、h タグを通じてヘッダー フィールドを選択し、指定されたフィールドを適用します。 正規化 アルゴリズム。件名、受信者フィールド、またはその他の値が保護されているかどうかを判断するには、渡された署名の実際の範囲を検査します。
正しい署名から始めましょう
それぞれの d、s、h、c を記録します。 DKIM-Signature ヘッダ。メッセージレベルのパスをそれらすべてに関する証拠として扱うのではなく、受信者の信頼された結果を対応する署名に関連付けます。署名には From を含める必要がありますが、他のすべてのヘッダーが必須というわけではありません。 RFC 6376 §5.4 では、選択ルールを説明し、役立つ内容を推奨します。
件名が選択されていない場合、件名を変更しても、その署名によって保護されているデータはそれ自体で変更されません。この声明は暗号化の範囲に関するものであり、変更されたメッセージが受け入れられるかどうかではありません。受信側サービスは引き続き独立したポリシーを適用できます。同様に、To に署名してもSMTPエンベロープ受信者はバインドされません。表示される To ヘッダーと RCPT TO アドレスは異なるデータです。 RFC 5321 §2.3.1 SMTPを分離します からの封筒 メッセージの内容。
繰り返しフィールドを考慮する
h タグは、単なる一意の名前のセットではありません。下 RFC 6376 §5.4.2、繰り返しの名前は、ヘッダー ブロックの下から上に向かって、繰り返しの物理的な出現を選択します。たとえば、メッセージに 3 つの Received フィールドと h 個の Received リストが 2 回ある場合、下から 2 つの出現が選択されます。署名時に存在する名前よりも多くの名前を h に追加すると、後でそのフィールドが挿入されたことを検出できます。この手法は、オーバーサインと呼ばれることがよくあります。
h にその名前が 1 回出現するという理由だけで、最上位フィールドが署名されていると結論付けないでください。実際のヘッダー ブロックに対して選択範囲を再構築します。通常は単数であるべき重複フィールドも、解析とメッセージの有効性に関する問題を引き起こします。 DKIM計算では、これらの懸念を無視することはできません。
値の変更と正規化された書式設定を区別する
単純なヘッダーの正規化では、選択されたフィールドは署名されたとおりに正確に提示される必要があります。 緩和されたヘッダーの正規化 フィールド名を小文字にし、継続行を展開し、指定された空白を正規化します。フィールド値を小文字にしたり、異なる件名のテキストを同等にしたりすることはありません。失敗の原因を大文字化または再ラップに帰する前に、選択したアルゴリズムを読んでください。
テスト仕様の例: 1 つの制御された署名で From と Subject が選択されます。件名の単語を変更すると、その署名が無効になることが予想されます。 2 番目の署名では From が選択されますが、Subject は省略されます。同じ件名を変更しても 2 番目の署名を無効にする必要はありません。この対比は、期待される報道内容を説明するものであり、主題を省略することを推奨するものではありません。
署名者のカバレッジを改善する
受信者の解釈に影響を与え、サポートされているルートを通じて安定した状態を維持できるフィールドを選択してください。の推奨事項を確認します RFC 6376 §5.4.1 そして署名者の能力。正規のトランスポートが追加または変更するトレース フィールドに無造作に署名することは避けてください。制御された環境で、重複フィールドとフォーマットのケースを使用して完全なルートをテストします。
署名設定と一緒に、意図したカバレッジ プロファイルを文書化します。有用なレビューでは、どのヘッダーとオカレンスが保護され、どの正規化が許可され、どのフィールドが署名の外に残るかを正確に示しています。これは、メッセージ全体にDKIMシールとして記述するよりも擁護可能です。
合成ヘッダーの選択をトレースする
3 つの X-Example フィールドが物理的に上から下の順序 (最新、中間、最古) にあると想像してください。 h=From:X-Example:X-Exampleをリストする署名は、最も古いものを選択し、次に最も新しいものではなく、真ん中のものを選択します。署名時に X-Example が 1 つだけ存在する場合、X-Example を 2 回リストすると、存在しないものも含まれます。後で別の X 例を挿入すると、選択した入力が変更され、署名が無効になる可能性があります。これは選択の演習であり、実行された署名テストや、通常は単一のフィールドの重複を許可する推奨事項ではありません。