メールの受信者はフィッシング攻撃やりすまし等の攻撃による脅威にさらされています。
したがって、私たちが送信するメールは正しく送られたものであることを伝えないといけません。
攻撃の手法にはさまざまなものがありますが、例えば以下のようなものがあります。
- 不正な送信元からのメール送信
- 差出人を詐称したなりすましやメール内容の改ざん
メールの受信者は、2種類の送信元に関する情報を得ることができます。
1つは差出人情報です。一般に、差出人として確認できるアドレスです。
メールを書いた人がメールのヘッダーに含めて送信する情報です。
この情報はヘッダーFromと呼ばれることもあります。
もう1つは実際の送信元です。メールを送信するときの通信の中で申告します。
「送信に関わったのは私です、問題があればこちらまで。」というアドレスです。
多くの場合、メールのヘッダーにReturn-Pathとして記録されます。
この情報はReturn-Pathやバウンスアドレス、エンベロープFromと呼ばれることもあります。
上述のとおり、これらの情報は自己申告になりますので、 そのままでは虚偽の申告によるなりすましが判断できません。
そこで、各種アドレスのドメイン名部分(~@以降の部分)に関する情報がドメインの管理下にあることを用いて、 虚偽の申告を検出する仕組みが送信ドメイン認証です。
SPF
ドメイン情報を用いて①の不正な送信元を検出する仕組みです。
メールを送信するときの通信の中で申告された送信元のアドレスと、
実際に通信がやってきた相手のIPアドレスを検証します。
送信元アドレスのドメインでメールの送信に用いる正しいIPアドレスを公開しておくことで、
受け取った側は、申告された送信元のアドレスが正しいかどうか検証できます。
DKIM
ドメイン情報を用いて②の差出人の詐称と改ざんを検出する仕組みです。
メールを送信するときに、差出人のドメインのみが知る情報で署名します。
同時に差出人のドメインで、署名を検証するための情報を公開しておきます。
メールを受け取った側は、差出人のドメインから得られる情報でメールの署名を検証し、
差出人の詐称やメール内容の改ざんを検出することができます。
これらの仕組みを組み合わせることで、送信元が詐称されていないか、 差出人のなりすましや内容の改ざんが行われていないかを検証することができます。
以上、送信ドメイン認証(SPF/DKIM)に関するご紹介となります。
昨今ではGoogleがGmailのメール送信者のガイドラインを発表し、
SPFやDKIMの認証が設定されていないメールは届かなくなるなど、
メール送信者へのセキュリティ要件が厳しくなってきております。
今後も送信ドメイン認証(SPF/DKIM)が設定されていないメールを受信しないメールサービスが増えていくと予想されます。
そのため、メール送信を行うアプリケーションを開発する方は、送信ドメイン認証への対応は必須となるかと思います。
この記事が今後アプリケーション開発を行う方にとって、参考になれば幸いです。