忘れたころに見返すための未来の自分へ向けて。
1.送信ドメイン認証って何?
なりすましメールかどうかをチェックすることです。
送信元のドメインが本物であることを確認する仕組みです。
認証方法はいくつか種類がありますが、ここではよく使われている「SPF」と「DKIM」について記載します。
2.なんで認証が必要なの?
差出人が偽物だと分かれば、フィッシング詐欺や迷惑メールを事前に防ぐことができます。
認証が失敗した場合は、メール配信をブロックしたり、SPAMマーキング(件名に「***SPAM***」がつくらしい)して配信したり、迷惑メールフォルダに入れたりします。
逆に認証が成功していれば、これは正しい差出人からのメールですよ~と証明されていることになるわけです。(万全とは言えませんが)
3.なりすましのやり方
そもそも、なりすましメールはどのようにしてなりすましているのか。
結論から書くと、ヘッダFromとエンベロープFromを異なるアドレスにしておけば、差出人が詐称できるのです。
・ヘッダTo
メーラー(GmailとかOutlookとか)でメールを見た時の「宛先」や「Cc」に表示されるアドレスです。
そこに"表示される"だけで、ヘッダToには実際の宛先と異なるアドレスを書くこともできます。
宛先にメーリングリストを入れた場合が一般的ですね。
・エンベロープTo
これが実際の宛先です。上記の通り、ヘッダToと異なる場合もあります。
ヘッダToにメーリングリストが入れてあるなら、エンベロープToにはメーリングリストに入っている複数のアドレス(実際にメール送信される人数分のアドレス)が入ります。
メールを送るときTo、Cc、Bccに入れたアドレスは、すべてエンベロープToに設定されます。
・ヘッダFrom
メーラーでメールを表示したときの「差出人」に表示されるアドレスです。
これも表示用なので、本当の差出人とは違うアドレスにもできます。
・エンベロープFrom
実際の差出人です。ヘッダFromと異なる場合もあります。
バウンスメール(何らかの理由で送信できなかったメール)が返ってくるアドレスでもあります。
宛先のアドレスを間違えたまま送ってしまった、実在しないドレスに送ってしまった、などでしょうか。
ちなみにFromアドレスはエラーの時以外は使われません。
なお、エンベロープとは封筒という意味です。
そのためメール送受信の仕組みを理解するにあたって、メールはよく封筒と便箋に例えられます。
エンベロープTo、Fromは封筒に書いてある宛先と差出人、ヘッダTo、Fromは封筒の中の便箋に書いてある宛先と差出人です。
流れとしては、送るときは宛先と差出人を書いた封筒に便箋を入れ、受け取るときには封筒を破棄して便箋だけ渡すイメージです。
だから受信側にはBccが分からないようになっているのです。
(このイメージを最初に教えてもらったときは、むしろややこしくて覚えにくい…と思ったので省略)
4.なりすましを防ぐ
メールを受信したときに、エンベロープFromを見て差出人のドメイン名を特定し、本当にそのドメイン名が使っているメールサーバから来たものかをチェックします。
######・SPF
メールの送信元が正規の差出人かどうかをチェックする仕組みです。
あらかじめ、「このドメインはこのサーバから送りますね~」という情報を持ったSPFレコードを、DNSサーバに登録しておきます。
そのあと、受信したメールサーバがSPFレコードを見て送信元をチェックするやり方です。
######・DKIM
メールに電子署名を添付して正当性を証明する仕組みです。
暗号化した電子署名を送信するメールに添付して、正規の差出人であることやファイルが改ざんされていないことを証明します。
なお、共通鍵暗号方式は鍵をメールに添付して送信してしまうと盗聴される恐れがありますが、公開鍵暗号方式はそのデメリットをカバーできます。
電子署名は「正規の差出人だけが秘密鍵を持っている」「対となる公開鍵でしか復号化できない」という特徴が証明になるからです。
送信側は、公開鍵を送信元ドメインのDNSサーバに公開し、秘密鍵で電子署名をメールに添付して送信します。
受信側は、送信元ドメインのDNSサーバへ正規の差出人であるかどうかを問い合わせし、認証OKが返ってくれば、ようやくメールが受信されます。