技術解説 · 出典付きの回答

DKIM(DomainKeys Identified Mail)とは?仕組みを解説

DKIMは、送信者がメールヘッダーに暗号署名を付けられるようにする送信ドメイン認証の方式です。この署名によって、メールがドメイン所有者に承認されたものであり、転送中にメッセージの内容が改ざんされていないことを証明します。受信側サーバーは、送信者のDNSレコードで公開されている公開鍵を使って署名を検証します。

処理の流れ

DKIMは公開鍵基盤を利用して動作します。送信サーバーは秘密鍵を使い、特定のメッセージヘッダーと本文のデジタル署名を作成します。この署名はDKIM-Signatureヘッダーとしてメールに付加されます。受信側メールサーバーはこのヘッダーからドメインとセレクターを取り出し、対応する公開鍵をDNSレコードから取得して署名を復号し、メッセージ内容のハッシュを検証します。

送信者にとっての重要性

DKIMはメールの転送後も有効なため、SPFだけでは得られない信頼性を提供します。SPFが送信元IPを検証するのに対し、DKIMはメッセージそのものを検証します。これによりなりすましを防ぎ、主要なプロバイダーでメッセージが迷惑メールと判定される可能性を下げます。DKIMは、送信者IDの検証にDKIMアライメントを利用するDMARCやBIMIを導入するための前提条件でもあります。

運用上の注意とよくある間違い

よくある失敗は、DNSの公開鍵を更新せずに秘密鍵をローテーションした場合や、署名後にメールリレーがメッセージ本文やヘッダーを変更して暗号ハッシュが壊れた場合に起こります。サービスごとに複数の鍵を管理するには、セレクターを使ってください。現在のDNS設定は、SendHQの無料ツール(https://sendhq.cc/tools)で確認できます。

具体例

送信者が google という名前のセレクターを設定したとします。selector._domainkey.example.com のDNSレコードに公開鍵が格納されています。メールを送信すると、DKIM-Signatureヘッダーで s=google と d=example.com が指定されます。受信側はそのDNSパスのTXTレコードを参照し、署名の検証に必要な鍵を取得します。

DKIMとDMARCのアライメント

DMARCに合格するには、DKIM署名のドメインがFromヘッダーのドメインとアラインしている必要があります。これをDKIMアライメントと呼びます。署名が有効でもドメインがFromアドレスと一致しない場合、DKIMチェックには合格してもDMARCチェックには失敗し、設定されたポリシーによっては配信上の問題につながることがあります。

よく寄せられる質問

DKIMはメール本文を暗号化しますか?

いいえ。DKIMはプライバシー保護のためにコンテンツを暗号化するものではありません。完全性と真正性を確保するための暗号ハッシュを作成するもので、受信側は送信者を検証できますが、メッセージ自体は読める状態のままです。

DKIM署名が無効な場合はどうなりますか?

署名が無効だと、メッセージが改ざんされたか送信者が承認されていないことを示すため、メールが迷惑メールと判定されたり、完全に拒否されたりすることがあります。

DKIMの鍵は複数持てますか?

はい。異なるセレクターを使えば、送信サービスごとに複数のDKIM鍵を持ったり、メールの流れを止めずに鍵をローテーションしたりできます。

一次情報源