送信元メールアドレスの検証

2022-02-23#mail

なりすましメールかどうかを見分けるために送信元メールアドレスを検証する仕組みについて調べたので自分なりに整理してみた。もっとわかりやすい記事はたくさんあるので、これは自分のためのメモにすぎない。

エンベロープFromとヘッダFrom

検証する仕組みを説明する前に、なぜなりすましが可能なのか前提を踏まえておく必要がある。

送信元メールアドレスと呼ばれるものは、エンベロープFromとヘッダFromの2つ存在する。エンベロープFromはメールの送信に使われる情報で、ヘッダFromはメールクライアントで表示される情報だ。封筒に書かれた送信元と手紙に書かれた送信元が違う、といった説明がよく見られるけど分かりやすい例えだと思う。

エンベロープFromとヘッダFromは異なるアドレスを設定できる。2つが異なることによって、例えば、転送機能(転送者のアドレスがエンベロープFrom、転送者にメール送信したアドレスがヘッダFromになる)やメールの送信代行といったことが可能になる。一方で、悪意のある攻撃者が別人のアドレスをヘッダFromに設定することでなりすますことが可能になる。

また、ヘッダFromだけでなく、エンベロープFromも悪意のある攻撃者によってなりすまされる可能性がある。エンベロープFromはSMTPのMAIL FROMコマンドによって設定されるが、SMTPではそのメールアドレスの所有者本人が設定しているかどうかを検証できない。

SPF

SPFはエンベロープFromにあるメールアドレスが送信者本人のものかどうかをDNSを利用して検証する。

spf

DKIM

DKIMは公開鍵暗号を使ってメールの中身が改ざんされていないかを検証する。

dkim

DMARC

DMARCはSPFやDKIMで認証に失敗したメールをどう扱うかを送信者側で設定できる仕組みを提供する。

dmarc