正規化の問題によるDKIM署名検証の失敗を解決する
DomainKeys Identified Mail(DKIM)は、メールのなりすましを防止するために設計されたメールセキュリティ規格です。これは、メールメッセージに「改ざん防止」のシールを付与することで、その真正性と完全性を保証する仕組みです。しかし、正規化(カノニカル化)の問題により、正当なメールであってもDKIM署名の検証に失敗し、メールの配信に支障をきたす場合があります。本記事では、メールゲートウェイシステムのDKIM正規化設定を調整することで、こうした問題を解決する方法について解説します。
以下は、メールインフラにおけるDKIMの仕組みを示したものです:

ここでは、メール認証やDMARCにおけるDKIMの役割を理解していただくために、その概要を簡単にご紹介します。
DKIMの正規化について
DKIMにおける正規化とは、電子メールのヘッダーと本文を署名用に準備するための手法を指します。RFC 6376のセクション3.4によると、ヘッダーと本文には「simple」と「relaxed」の2つの正規化アルゴリズムがあります。これらの設定の選択により、DKIM署名が有効とみなされるために、送信側と受信側の電子メールの内容がどの程度厳密に一致する必要があるかが決まります。
- 単純な正規化:メールの各要素が、まるで2つの全く同じパズルのように、完全に一致するようにすると想像してみてください。パズルのピースがずれるような些細な変更でも、不一致を引き起こす可能性があります。この厳格さゆえに、メールが宛先へ届くまでの経路における、些細で、多くの場合無害な変更によって、検証エラーが発生する可能性があります。
- 「緩やかな正規化」:これは、ピースの大きさがわずかに異なるパズルを組み立てるようなものだと考えてください。全体像が完成するほどピースがうまくはまるのであれば、個々のピースの切り口やはまり具合に多少のばらつきがあっても問題ありません。これにより、メール形式にわずかな変更があった場合でも、メール環境におけるDKIM検証の問題が発生するリスクを軽減できます。
問題
DKIM署名の検証に失敗する一般的な原因として、単純な正規化(simple canonicalization)の使用が挙げられます。電子メールが複数のメールゲートウェイを通過する際、その内容が再フォーマットされることがあります(例:改行や空白の変更など)。DKIM署名プロファイルが「simple/simplecanonicalization」に設定されている場合、わずかな変更であってもDKIM署名が一致しなくなり、検証に失敗する原因となります。
解決策
ヘッダーの正規化を「simple」から「relaxed」に変更しつつ、本文の正規化は「simple」のままにしておくことで、この問題を軽減できます。この変更により、DKIM署名を無効にすることなく、空白や改行の書式をわずかに変更できるようになります。
導入手順
- 現在の設定を確認してください:メールゲートウェイの現在のDKIM署名プロファイルを特定し、ヘッダーと本文に対して「simple/simple」の正規化が設定されているか確認してください。
- 正規化設定の調整:ヘッダーの正規化設定を「simple」から「relaxed」に変更します。その後、本文の正規化設定も変更するかどうかを検討してください。
- 設定のテスト:変更を全面的に適用する前に、少人数のユーザーグループまたは少数のメール配信を対象に新しい設定をテストし、署名検証の問題が解決され、新たな問題が発生していないことを確認してください。
- 監視と検証:新しい設定を適用した後、メールの配信率を監視し、DKIM検証に関する問題の報告がないか確認してください。この変更が、メールの全体的な配信率や完全性に影響を与えていないことを確認してください。
過去からの教訓
少し前、ある大手銀行がDKIMの設定に「単純な正規化」を採用しました。これは、セキュリティチームによる選択肢の評価に基づいて下された決定でした。同チームは、自社の基準に照らして「緩和された正規化」は容認できないと判断したのです。実際には、セキュリティチームはこの選択について深い理解を持っておらず、単に「緩和された」という表現が自社のセキュリティ体制にとって好ましくないという語義上の理由だけで、判断を単純化していたのです。
振り返ってみれば、セキュリティチームは、選択肢を「オプション1」と「オプション2」と表記していれば、このような誤解を避けることができたはずだ。実用的な観点から言えば、正規化のルールを緩める方が、メール認証の成功率を高める上で有利な場合が多い。これは、技術的な詳細が、それに付ける名前よりも重要であることを示している。
ヘッダー(および場合によっては本文)の正規化方式を「relaxed」に変更することで、転送中にメールのフォーマットがわずかに変更されたことが原因で発生するDKIM署名検証の失敗といった問題を解決できます。この調整により、セキュリティや完全性を損なうことなく、受信サーバーによるメールの受信率を向上させることができます。
私たちがサポートします
メールセキュリティのエキスパート集団であるdmarcianは、「ドメインセキュリティを通じて、メールとインターネットをより信頼できるものにする」というミッションを掲げ、お客様の組織のドメイン状況を評価し、長期にわたってDMARCの実装と管理をサポートいたします。
さらに詳しく議論を続けたい方は、ぜひ dmarcian Forum へお越しください。