電子メールセキュリティ初級講座(SPF/DKIMとは?)
この記事の動画版はこちら(画像クリックでYoutubeに飛びます)
今回は「電子メールのセキュリティ」について、初心者向けにご説明したいと思います。
普段当たり前のように使っている電子メールですが、どのような仕組みで送受信が行われているか知っていますか?
普通にメールを使うだけならば、メールソフトを使ってやり取りをするだけでOKですが、
自分のWebサービスを作った際に、例えば
アカウント登録が行われた際の「登録完了メール」
ECサイトの「注文完了メール」
等をプログラムから自動送信させる際には、メール送信の仕組みを理解しておく必要があります。
また、メールの仕組みを理解しておくと、スパムメールや、フィッシングサイトへ誘導するメールなどを見分けたり、自己防衛するための知識としても役に立ちます。
これを機にぜひ理解しておきましょう!
メール送信の仕組み
簡単に説明すると、メールを送信して相手に届くまでの流れはこのようになっています。
①差出人がメールソフトでメールを作成し、送信ボタンをクリックする。
②送信用メールサーバーがそのメールを受け取り、宛先の受信用メールサーバーに配送。
③宛先の受信用メールサーバーは、受け取ったメールを宛先ユーザーに配送。
このような流れです。
メールサーバーは基本的にドメイン単位の管轄で存在しています。
メールサーバーは「郵便局」のようなもので、配送依頼されたメールを宛先ごとに振り分けて、宛先ユーザーを管轄している郵便局(受信用メールサーバー)に届けます。
例えば、宛先アドレスが「xxx@google.com」なら、google.comのメールサーバーへ配送、宛先アドレスが「xxx@yahoo.co.jp」なら、yahoo.co.jpのメールサーバーへ配送といった形ですね。
メールの情報は偽装可能!?
電子メールにも「便箋」と「封筒」のような仕組みがあります。
僕らが普段メールソフトで作成するのは「便箋」の部分です。
ここに宛先アドレス、差出人アドレス、件名、本文といった情報を記載してメールを送信します。
そのメールが「封筒」に入れられて実際に送信されます。
封筒にも宛先や差出人の情報が記載されます。
メールサーバーはこれを見て、対象の受信用サーバーへメールを配送します。
しかし、便箋部分はいくらでも偽装が出来てしまいます。
例えば、全く関係ない人が「xxx@amazon.co.jp」のアドレスを差出人としてメールを送信出来てしまうんです。
そのメールを受け取った人は、Amazonからのメールだと勘違いして、メール内のリンクをクリックしてしまったり、添付ファイルを開いてしまったりする危険があります。
これが、フィッシングメールの代表的な手法ですね。
こういったことを防ぐため、メールサーバーには「セキュリティ対策」が施されています。
今回は、その中でも代表的なものを2つご紹介します。
送信メールサーバーの身元を照合する(SPF)
まず1つ目は「SPF」という仕組みです。
SPFは、メールを送ってきた送信側メールサーバーが正規のメールサーバーなのかどうかを、送信元のドメインに問い合わせる仕組みです。
例えば、差出人が「xxx@amazon.co.jp」というアドレスだった場合、送信してきたメールサーバーが正規のメールサーバーなのかどうかを「AmazonのDNSサーバー」に問い合わせます。
送信元のメールサーバーが正規のメールサーバーとして登録されていれば、正常なメールとして判断し、逆に「そんなサーバーは知らないよ」と言われれば不正メールと判断する仕組みです。
メールに添付された署名を正規の送信メールサーバに照合する(DKIM)
2つ目は「DKIM」という仕組みです。
これは、メールに電子署名を添付して送信元ドメインに照合する仕組みです。
簡単に言うと、まずメールを送信する際に専用の「秘密鍵」で鍵をかけた電子署名データをメールに添付しておきます。
そして、その鍵を開けることの出来る「公開鍵」を正規のドメイン配下に公開しておきます。
メールを受け取った受信側メールサーバでは、メールに添付された電子署名データを、ドメイン配下に公開された公開鍵で開けてみます。
無事開けることが出来れば、正規のドメインから送信されたメールだと判断する仕組みです。
メールサーバーでは、こういった仕組みを用いて、送られてきたメールが「正規のメールなのかどうか」を判断しています。
GmailでのSPF、DKIMチェック結果の見かた
例えば、Gmailでは、SPFやDKIMのチェック結果に基づいて、迷惑メールフォルダへの自動振り分けが行われます。
Gmailで、SPFやDKIMのチェック結果を確認したい場合は「メッセージのソース」を表示すると、確認することが出来ます。
まとめ
このように、様々な仕組みを使ってメールサーバーでは不正なメールをチェックしています。
不正なメールと判断された場合は、迷惑メールフォルダに自動的に振り分けられたり、フィルタリングで自動削除されたりと、扱いはメールサーバーによって異なります。
逆に言うと、自分のサービスからメールを送信する場合もこういった点にしっかり対応しておかないと、受信メールサーバにスパムメール扱いにされてしまう可能性があるということです。
メール送信の仕組みをしっかり理解し対応することで、自分のサービスで使う際も各種メーラーに迷惑メールと判断されずに正しくユーザーに届けることができます。
注文完了メールや、予約完了メールなど、メールが届かないことで重大な問題に発展することもありますので、自分でサーバーを構築する際は、メールセキュリティの仕組みをしっかり理解し、正しい対応を行うようにしましょう!