フルスタックエンジニアのノウハウ
2020.07.25    2020.07.25

電子メールセキュリティ初級講座(SPF/DKIMとは?)

電子メールセキュリティ初級講座(SPF/DKIMとは?)

この記事の動画版はこちら

チャンネル登録お願いします!


今回は「電子メールのセキュリティ」について、初心者向けにご説明したいと思います。


普段当たり前のように使っている電子メールですが、どのような仕組みで送受信が行われているか知っていますか?


普通にメールを使うだけならば、メールソフトを使ってやり取りをするだけで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のチェック結果を確認したい場合は「メッセージのソース」を表示すると、確認することが出来ます。





まとめ


このように、様々な仕組みを使ってメールサーバーでは不正なメールをチェックしています。


不正なメールと判断された場合は、迷惑メールフォルダに自動的に振り分けられたり、フィルタリングで自動削除されたりと、扱いはメールサーバーによって異なります。


逆に言うと、自分のサービスからメールを送信する場合もこういった点にしっかり対応しておかないと、受信メールサーバにスパムメール扱いにされてしまう可能性があるということです。


 メール送信の仕組みをしっかり理解し対応することで、自分のサービスで使う際も各種メーラーに迷惑メールと判断されずに正しくユーザーに届けることができます。


注文完了メールや、予約完了メールなど、メールが届かないことで重大な問題に発展することもありますので、自分でサーバーを構築する際は、メールセキュリティの仕組みをしっかり理解し、正しい対応を行うようにしましょう!


おすすめ記事
無料メルマガ配信中