DKIM
DKIM(DomainKeys Identified Mail)は、受信サーバーがメッセージを本当にあなたのドメインから送信されたものであり、転送中に改ざんされていないことを確認できるようにするメール認証の標準規格です。あなたの送信メールサーバーは各メッセージを秘密鍵で署名し、受信者はその署名を、公開された対応する公開鍵と照合して検証します
DKIM(DomainKeys Identified Mail)は、受信サーバーがメッセージを本当にあなたのドメインから送信されたものであり、転送中に改ざんされていないことを確認できるようにするメール認証の標準規格です。 あなたの送信メールサーバーは各メッセージを秘密鍵で署名し、受信者はその署名を、ドメインのDNSに公開された対応する公開鍵と照合して検証します。
DKIMは、SPFおよびDMARCと並ぶ、現代のメール認証を支える3つの柱の1つです。これらが連携することで、あなたのメールが受信トレイに届くのか、それとも迷惑メールに振り分けられるのか、そして攻撃者があなたのドメインをなりすませるのかどうかが決まります。このページでは、DKIMとは何か、どのように機能するのか、そして各要素がどのように組み合わさるのかを説明します。
DKIMの仕組み
DKIMは、公開鍵暗号方式に基づく「送信時に署名し、受信時に検証する」ハンドシェイクとして機能します。あなたのメールサーバーがメッセージを送信するとき、選択したヘッダー(および通常は本文)の暗号学的ハッシュを生成し、そのハッシュをあなたのサーバーだけが保持する秘密鍵で暗号化して、その結果をDKIM-Signatureヘッダーとしてメールに付加します。
対応する公開鍵は、ドメインのDNSにTXTレコードとして保管されています。受信サーバーがメッセージを受け取ると、DKIM-Signatureヘッダーを読み取り、DNSで公開鍵を検索し、それを使って署名を検証します。署名が正しく検証されれば、受信者は2つのことを確認できます。すなわち、そのメッセージが確かにあなたのドメインで署名する権限を持つサーバーから送られたものであること、そして署名された内容が途中で改ざんされていないことです。もし何かが変更されていたり、鍵が一致しなかったりすれば、DKIMの検証は失敗します。
秘密鍵はあなたのインフラから決して外に出ないため、なりすまし犯があなたのドメインに対して有効なDKIM署名を偽造することはできません。
DKIMを構成する要素
DKIMは、それぞれに専用の詳細ガイドを持つ、いくつかの連携する要素で構成されています。
- DKIMレコード — 公開鍵とDKIM設定を公開するDNS TXTレコードで、受信者が署名を見つけて検証できるようにします。
- DKIMセレクター — どの鍵を検索すべきかを受信者に伝える短いラベルで、1つのドメインで複数の鍵(異なるプロバイダー用や鍵のローテーション用)を運用できるようにします。
- DKIM署名 — 送信するすべてのメッセージに刻印される
DKIM-Signatureヘッダーで、署名ドメイン、セレクター、そして暗号学的ハッシュそのものが含まれます。
これら3つがどのように結びついているかを理解すると、残りのDKIM設定やトラブルシューティングがはるかに容易になります。
DKIMの設定方法
DKIMの設定は、短く反復可能なプロセスです。
- メールプロバイダーのコンソールで鍵ペアを生成します — 秘密鍵はプロバイダーに保持され、公開する公開鍵が渡されます。
- 公開鍵を公開します。
selector._domainkey.yourdomain.comにTXTレコードとしてDNSに追加します。正確な手順はDKIMレコードの生成方法を参照してください。 - プロバイダーで署名を有効化します。これにより、送信メールにDKIM署名が刻印されます。
- それに頼る前に、メッセージが署名され、検証を通過していることを確認します。
実際には、DKIM鍵は手作業ではなく、メールプロバイダーのコンソール(Google Workspace、Microsoft 365、またはお使いのESP)の内部で生成されるため、作業の大部分は提供されたレコードをDNSにコピーすることになります。
公開されたDKIMレコードは次のようになります。
selector1._domainkey.example.com TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDqF...GfMA0=; t=s"
ここでselector1はセレクター、v=DKIM1はこれがDKIMレコードであることを示し、k=rsaは鍵の種類を示し、p=はbase64エンコードされた公開鍵を運びます。
DKIM、SPF、DMARCの連携
DKIMは単独では機能しません。DKIMはSPFを補完します。SPFはどのサーバーがあなたのドメインのメールを送信できるかを認可します。SPFは接続してきたサーバーのIPを公開済みのリストと照合し、DKIMはメッセージ自体の暗号学的署名を検証します。この2つは異なるもの、つまり送信元とメッセージの完全性を保護しており、どちらか一方が独立して通過したり失敗したりすることがあります。
DMARCは、これらを受信者が実際に目にするアドレスに結びつけるポリシー層です。DMARCは、通過したSPFまたはDKIMの結果が、可視のFrom:ドメインと**アラインメント(整合)**していることを要求し、そのうえで、どちらもアラインしていない場合に受信者がどうすべきか(配信、隔離、拒否)を伝えます。このアラインメントこそが、攻撃者が自分の管理するドメインで認証を通過させながら、Fromの行ではあなたのドメインになりすますことを阻止するものです。
| 標準規格 | 検証する内容 |
|---|---|
| SPF | どのサーバーがあなたのドメインで送信できるか |
| DKIM | メッセージがあなたのドメインで署名され、改ざんされていないこと |
| DMARC | SPF/DKIMが可視のFromアドレスとアラインしていること、および失敗時のポリシー |
DMARCのアラインメントはSPFに依存する場合があるため、SPF側を有効に保つことが重要です。AutoSPFはあなたのSPFレコードを自動的にフラット化して維持するため、10回のルックアップ制限内に収まり、通過し続けます。これは、DKIMとDMARCのアラインメントを全体として健全に保つのに役立ちます。
よくあるDKIMの問題
DKIMは、DNSレコードの欠落や切り捨て、セレクターの不一致、または転送機能やメーリングリストによる転送中のメッセージの改変が原因で失敗することが最も多いです。署名が検証されない場合は、DKIMが失敗する理由で、よくある原因と修正方法を順を追って解説しています。ドメインが今まさに何を公開しているかを確認するには、無料のDKIMルックアップツールを実行してください。指定したセレクターのレコードを取得し、鍵が存在し正しい形式かどうかを表示します。
よくある質問
DKIMとは何ですか?
DKIM(DomainKeys Identified Mail)は、送信するメッセージに暗号学的な署名を追加するメール認証方式です。あなたのメールサーバーは各メールを秘密鍵で署名し、受信サーバーはその署名を、あなたのDNSに公開された公開鍵を使って検証します。有効な署名は、メッセージがあなたのドメインから送られ、転送中に改ざんされていないことを証明します。
DKIMは必須ですか?
DKIMはメールを送信するために厳密に必須というわけではありませんが、事実上求められるものです。GoogleやYahooといった主要プロバイダーは、現在では一括送信者に対して認証を要求しており、DMARCがあなたのドメインを保護するには、通過してアラインしたDKIM(またはSPF)の結果が必要です。DKIMがなければ、あなたのメールは迷惑メールとしてフィルタリングされたり、攻撃者になりすまされたりする可能性がはるかに高くなります。
DKIM、SPF、DMARCの違いは何ですか?
SPFはどのサーバーがあなたのドメインのメールを送信できるかを認可し、DKIMは各メッセージを暗号学的に署名して改ざんされずにあなたから送られたことを証明し、DMARCはその両方を可視のFromアドレスに結びつけて失敗時のポリシーを定めます。SPFは送信元を確認し、DKIMはメッセージの完全性を確認し、DMARCはその間のアラインメントを強制します。
DKIMが正しく設定されているかを確認するにはどうすればよいですか?
自分が管理するアドレス宛てにテストメッセージを送信し、ヘッダーにdkim=passがあるか調べるか、DKIMルックアップツールを使ってセレクター別に公開済みの鍵を照会します。ツールは、レコードが存在し、正しい形式であり、有効な公開鍵を返すことを確認します。無料のDKIMルックアップツールは、任意のドメインとセレクターを数秒でチェックします。