安全なメールの送信
メールの送受信はSMTPやPOPなどのプロトコルによって行なわれている。これらのプロトコルは、テキストベースのプロトコルでありASCII文字で通信を行なっている。そのため、パケットキャプチャなど使って通信されているIPパケットをモニタすると、通信内容が丸見えになってしまう。
POPでメールを受信するためにユーザー認証を行なう際には、ユーザーIDとパスワードも丸見えになるため、APOPという手法によってパスワードを暗号化する。しかしAPOPで保護されるのはユーザー認証の部分だけで、それ以外の通信が丸見えになってしまうことは防げない。また、APOPには脆弱性も見つかっており、単独で使うのには不安が残る。
そこで、Webの暗号化技術で使われているSSL(Secure Sockets Layer)を利用して通信を暗号化する方法も考えられた。そうしたプロトコルがPOP3S(POP3 over SSL)やIMAP4S(IMAP4 over SSL)、SMTPS(SMTP over SSL)である。この技術は、メールクライアントとメールサーバソフトの双方がSSLに対応していなければ利用できない。有名なソフトは多くがSSLに対応しているので、基本的にはメールクライアントのアカウント情報の設定だけで使えるはずだ(図2)。
ユーザー側で設定するのは、アカウント情報の中の送信サーバ、および受信サーバのポート番号の部分である。SSL接続を利用したSMTPまたはPOP3/IMAP4のセッションは、接続するサーバ側のポート番号で識別される。SMTPSは465番、POP3Sは995番、IMAP4Sは993番と決められている。これはWebの場合にHTTPとHTTPSでポート番号が異なるのと同じである。
ほとんどのメールクライアントは、アカウント情報の設定画面にSSL接続の設定用のチェックボックスを設けているので、そのチェックボックスにチェックを入れればポート番号が変わるはずだ。クライアント側の設定はこれだけで完了する。
続いてサーバ側について見てみよう。さまざまなLinuxディストリビューションやFreeBSDに収録されているメールサーバソフトは、MTAでもMRAでもSSL接続に対応している。そのため、メールサーバの設定だけでSMTPSまたはPOP3S/IMAP4Sが使えるようになる。1つ注意しなければならないのが、SSLを利用するためにはサーバ証明書が必要となることだ。
サーバ証明書はいわゆる暗号の鍵情報で、SSLのネゴシエーションで使われる。基本的にサーバ証明書はホスト(ホスト名)ごとに発行されるものなので、Webサーバのサーバ証明書はメールサーバの証明書には使えない。したがって、SMTPサーバ、POP3/IMAP4サーバが別々のホストとして構築されているのであれば、ホスト名も異なるためそれぞれにサーバ証明書が必要となる。
逆に個人が自宅用のサーバで、1台のマシンをWebサーバとメールサーバにしているようなケースであれば、Webサーバの証明書を流用できる。この場合、SMTPサーバまたはPOP3/IMAP4サーバからWebサーバ用の証明書を参照するように設定するのがポイントとなる。
このSMTPSやPOP3S/IMAP4Sを利用した場合に暗号化通信で保護される範囲については、しっかり認識しておく必要がある。なぜなら、この技術ではユーザーのPCとメールサーバ間の区間はSSL通信で保護されているが、メールサーバ間、メールサーバと宛先ユーザー間の通信を暗号化するものではないからだ。また暗号化通信は通信を行なう双方が対応していなければ、暗号化そのものができない。インターネット上のすべてのメールサーバが暗号化通信をサポートしている保証はないことを考えれば、サーバ側で対応できる安全性には限界がある。
この連載の記事
-
第6回
ネットワーク
メールシステムの脆弱性とその回避策 -
第4回
ネットワーク
メールを送受信する仕組みとは? -
第3回
ネットワーク
メールの中身をのぞいてみませんか? -
第2回
ネットワーク
メールを支えるドメイン名とDNSの仕組み -
第1回
ネットワーク
メールが届く仕組みを知っていますか? -
ネットワーク
電子メールの秘密 - この連載の一覧へ