SPF, DKIMの特徴と違い

SPF, DKIMの特徴と違い

SendGridサポートチームの有田です。
送信ドメイン認証の仕組みであるSPFとDKIMについては、これまでのブログ記事でもたびたび取り上げてきましたが、あらためて復習してみたいと思います。初心者の方にも読んでいただけるようかみ砕いて説明しますので、ぜひご覧ください。

1. なりすましメールとは

差出人を詐称して送られるメールをなりすましメールと言います。これを悪用すれば「大手ECサイトからのメールと見せかけて受信者を不正なWebサイトに誘導し、個人情報を抜き取る」といったこともできてしまうかもしれません。

郵便の場合、封筒と手紙に差出人の名前を書きますが、メールの場合も郵便と同じような仕組みがあります。メールの場合、封筒の差出人にあたる情報をエンベロープFrom、手紙の差出人にあたる情報をヘッダFromと呼びます。メールソフトで見えている差出人は後者のヘッダFromで、メールの仕組み上、ヘッダFromは簡単に詐称できてしまいます。

なりすましメールのイメージ図1) なりすましメールのイメージ

2. なりすましを防ぐ仕組み

なりすましを防ぐには、受信したメールの情報が詐称されていないかを確認する必要があります。図2) は、メールが届くまでの流れです。

メールが届くまでの流れ図2) メールが届くまでの流れ

メールを受け取った受信側メールサーバは、認証に必要な情報を送信側のDNSサーバ(kke.co.jp のようなドメインを管理するサーバ)から取得します(図の③④)。これを手元のメールと比較し、情報が一致しない場合はなりすましメールと判断します(図の⑤)。このような仕組みを送信ドメイン認証と言います。
SPFもDKIMも送信ドメイン認証の1つですが、利用する認証情報に違いがあります。以下で少し詳しく説明します。

3. SPFとは

SPFでは、認証情報としてIPアドレス(ネットワーク上の住所)を使います。
DNSサーバには、あらかじめ送信側メールサーバのIPアドレス(SPFレコード)が登録されています。受信側メールサーバは、エンベロープFromドメインを管理するDNSサーバからSPFレコードを取得し、送信元メールサーバのIPアドレスと一致するかどうかを確認します。

4. DKIMとは

DKIMでは電子署名を使って認証を行います。

DKIMについて説明する前に、電子署名の仕組みを簡単に紹介します。
下図の【Aさん】は、他者に公開する「公開鍵」と自分しか知らない「秘密鍵」のペアを持っています。【Bさん】にデータを送るとき、【Aさん】は自分の秘密鍵を使ってデータに署名します。データを受け取った【Bさん】は、【Aさん】の公開鍵を利用して署名を検証することで、そのデータが【Aさん】が作成したものであり、途中で改ざんされていないことを確認できます。

電子署名図3) 電子署名

DKIMによる認証を行う場合、送信側メールサーバの公開鍵をあらかじめDNSサーバに登録しておきます。送信側メールサーバは、自身の秘密鍵による電子署名を付けてメールを送信します。受信側メールサーバは、メールヘッダから特定したドメインのDNSサーバから公開鍵を取得し、その電子署名を検証します。この検証によって、なりすましやメールの改ざんの有無を確認することができます。

DKIM図4) DKIM

5. SendGridでメールを送る場合

ここまで紹介してきたSPFとDKIMは、メールの受信者にとってなくてはならない仕組みであり、送信側でもきちんと対応する必要があります。なぜなら、送信側の対応が不足していると、たとえメールの差出人に悪意がなくても、なりすましと見なされる可能性があるためです。
SendGridでメールを送信する場合、何も設定しなくてもSendGridドメインでSPFとDKIMが設定されますが、これはメールのエンベロープFromとヘッダFromが一致しない状態です(例:kke.co.jpからメールを送る場合、エンベロープFromがSendGridドメイン、ヘッダFromがkke.co.jp)。この状態を解消するために、kke.co.jp のような独自ドメインからメールを送る場合は、Domain Authenticationの設定をお勧めしています。詳しくはチュートリアルをご覧ください。

6. 参考

詳しい内容は、過去のブログ記事でも紹介しています。