SPF, DKIMの特徴と違い

SPF, DKIMの特徴と違い

送信ドメイン認証の仕組みである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. Twilio SendGridでメールを送る場合

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

6. 参考

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

よくある質問

Q:SPFとは何ですか?

SPF(Sender Policy Framework)は、送信元ドメインの管理者が許可したサーバから送られたメールかどうかを、IPアドレスを利用して確認する仕組みです。受信側では、届いたメールの送信元IPアドレスと、送信元ドメインのDNSに登録されたIPアドレスが一致するかどうかをチェックします。
送信元ドメインを詐称して送信されたメールを検知するために利用されます。

Q:DKIMとは何ですか?

DKIM(Domain Keys Identified Mail)は、なりすましやメールの改ざんが行われていないかどうかを、電子署名を利用して確認する仕組みです。受信側では、送信元ドメインのDNSに登録された公開鍵を使ってメールの電子署名を検証します。送信元ドメインの正当性や送信経路上での改ざんの有無を確認するために利用されます。

Q:SPFとDKIMの主な違いは何ですか?

どちらもメールのなりすましを防ぐ送信ドメイン認証技術の1つですが、認証に利用する情報や対象が異なります。SPFはIPアドレスを利用して送信元サーバの正当性を確認します。DKIMは電子署名を利用してメールの改ざんを検知します。

Q:SPFとDKIMは両方設定する必要がありますか?

認証の対象が異なるため、2つを組み合わせて利用することが推奨されます。また、GmailやYahoo!など主要プロバイダのガイドラインでは、送信ドメイン認証技術の1つであるDMARCの設定が必須化または強く推奨されています。DMARCでは、SPF/DKIMの認証結果とそれぞれのアライメント(ドメインの一致)を利用してメールを検証するため、両方の設定を行いましょう。

Q:SPFやDKIMを設定しないとどうなりますか?

メールが受信側でなりすましと見なされ、迷惑メールフォルダに振り分けられたり、受信拒否されて届かなかったりする可能性があります。GmailやYahoo!などの主要なプロバイダでもSPFやDKIMの設定が求められており、設定していない場合は到達率が低下することがあります。

Q:SendGridでSPFやDKIMを設定することはできますか?

Domain Authenticationの機能を利用すると、独自ドメインでSPFとDKIMを設定できます。詳しい仕組みはブログやチュートリアルを参照してください。

アーカイブ

  • クレジットカード
    登録不要

  • インストールは
    一切不要

  • 独自ドメイン
    利用OK

SendGridの充実した機能をまずは
試してみませんか?

無料トライアル