本記事では、DKIMの役割動作についてまとめます。
DKIM (DomainKeys Identified Mail) は、電子メールのセキュリティ関連のプロトコルです。
役割としては、大きく2点あります。
①送信者が正当であることを確認
②メールが送信者により改ざんされてないか検証
上記確認を行うために、送信者のドメイン名に対して公開鍵暗号を利用してメールに署名を付加します。
DKIMの仕組み
署名の作成: メールが送信される際、送信メールサーバーはメールのヘッダーと一部のコンテンツに基づいてデジタル署名を生成します。この署名は、送信者のドメインに関連付けられた秘密鍵を使用して作成されます。
DNSに公開鍵を配置: 送信者のドメインには、対応する公開鍵がDNSのTXTまたはCNAMEレコードとして配置されます。この公開鍵は、受信者側が署名を検証するために使用します。
受信者側での検証: メールを受け取ったメールサーバーは、送信者のドメインのDNSレコードから公開鍵を取得し、メールに付与された署名を検証します。もし署名が正しければ、そのメールが改ざんされていないこと、そして送信者が本当にそのドメインの所有者であることが確認されます。
DKIMのメリット
メールの改ざん防止: 送信者を偽装するフィッシング攻撃やスパムメールの防止に役立ちます。
信頼性の向上: メール受信者にとって、メールが信頼できるものであることを示します。
スパムフィルタリングの強化: DKIMにより正当性が確認されたメールは、スパムフィルタを通過しやすくなります。
DKIMの設定
DKIMを設定の3ステップ
メールサーバーにDKIM機能を有効化: 使用しているメールサーバーやサービスでDKIM署名を有効にします。
DNSに公開鍵を配置: ドメインのDNS設定に、DKIMの公開鍵を含むTXTまたはCNAMEレコードを追加します。
受信側での検証: メール受信者側でDKIM署名を検証し、メールの信頼性を確保します。
DKIMのレコードタイプについて
CNAMEとDKIM両方で設定する場合がある。
- TXTレコードでの設定
通常のDKIM設定: 一般的に、DKIMを設定する際には「TXT」レコードを使います。
このレコードには、DKIMの公開鍵が含まれています。受信サーバーが署名を検証するために、このTXTレコードを参照します。
例: selector._domainkey.yourdomain.com のような名前で、公開鍵を含むTXTレコードがDNSに設定されます。 - CNAMEレコードでの設定
外部プロバイダーの利用: メールサービスプロバイダーやサードパーティがDKIM署名を管理している場合、CNAMEレコードを使用して、
そのプロバイダーのDNSレコードを参照するように設定することがあります。
これにより、DKIM公開鍵の管理を外部プロバイダーに委任できます。
例: selector._domainkey.yourdomain.com のCNAMEレコードが、プロバイダーが管理するDNSエントリ(例えば selector._domainkey.provider.com)を指すように設定されます。
CNAMEとTXTレコードの併用
用途に応じた設定: 一部の環境では、CNAMEレコードで他のサーバーやプロバイダーにリダイレクトした後、
その先でTXTレコードが適用されるケースもあります。
これは、CNAMEで外部のキー管理を指しつつ、TXTで直接公開鍵を提供することを組み合わせた方法です。
このように、DKIMの設定は利用するメールプロバイダーや運用方針によって異なる場合がありますが、
CNAMEレコードは、外部プロバイダーとの連携時に特定の状況で利用されます。