📝

メール送受信に利用されるプロトコルについて

2022/04/19に公開約3,200字

メール送受信では主に3つのプロトコルが利用されます。それが以下の3つです。

  • POP3
  • SMTP
  • IMAP

さらに、これらのプロトコルをSSL/TLSでセキュアにしたプロトコルが以下になります。

  • POP3S
  • SMTPS
  • IMAPS

すべて over SSL/TLS という文字列が付いたものになります(POP3 over SSL/TLSなど)。また、POP3/SMTP/IMAPを暗号化する方法としてSTARTTLSも利用されます。

この章は、この各プロトコルについて解説します。

POP3

POP3はPost Office Protocol Version 3の略です。メール受信に利用されるプロトコルになります。サーバーにあるメールはPOP3で受信後に削除されるのが特徴です。

セキュリティ

基本は平文のユーザー/パスワード認証になりますが、サーバーが対応していればAPOP(Authenticated Post Office Protocol)によってパスワードをハッシュ化して認証を行えます。ただしAPOPはハッシュ化生成アルゴリズムがMD5であり、MD5は脆弱性の存在が知られているので利用はお勧めしません。また、POP3/APOPともにメール文面は平文でやりとりされるので、悪意あるユーザーに盗み見られる可能性があります。盗み見られるのを防ぐためにはPOP3Sを利用し、通信経路のSSL/TLS化をお勧めします。

POP3は一般的に110番ポートを利用し、POP3Sは995番ポートを利用します。

SMTP

SMTPはSimple Mail Transfer Protocolの略になります。メール配信に利用されるプロトコルになります。メール配信は自分の送信したSMTPサーバーから送信先のSMTPサーバーへダイレクトに送信されるケースと、他のSMTPサーバーを経由して配信されるSMTPリレーとに分かれます。

インターネットの黎明期においてメールサーバー同士が直接つながっていないケースがあり、別なSMTPサーバーを経由して配信する必要がありました。その時代に使われていたのがSMTPリレーになります。現在においてはそういった用途ではなく、メールマガジンなどでメールを大量配信する際に、blastengineなどの外部の強力なメール送信サーバーをSMTPリレーとして利用されます。

メール送信プログラム

旧来サーバーでのメール送信時にはsendmailが利用されてきました。しかし、過去の資産への対応や柔軟性の高さによって脆弱性が多くなってしまい、現在では利用は推奨されていません。現在はPostfixが互換性のあるメール送信機能を提供しており、そちらを利用するのが一般的です。

セキュリティ

SMTPにもSSL/TLS対応したSMTPS(SMTP over SSL/TLS)があります。SMTPは25番ポートで、SMTPSは587番ポートを利用するのが一般的です。なお、クラウドサービスではOutbound Port 25 Blockingという方法によって25番ポートの利用を防止しています。その場合には代替として2525番ポートやSMTPSを利用してクラウドサービス外にあるSMTPサーバーを利用します。

認証技術

SMTPではPOP before SMTPとSMTP AUTH、2種類の認証方法が知られています。POP before SMTPはメール送信前にPOP3認証を行い、そのアクセス元IPアドレスを一定期間ホワイトリストに登録し、SMTPの利用を可能にするものです。この時、悪意を持ったユーザーが同じIPアドレスからアクセスするとメール送信できてしまうため、認証としてセキュアではありません。

SMTP AuthはAPOPのようにダイジェスト認証を用いるプロトコルになります(平文も指定できます)。ハッシュアルゴリズムはMD5なので、セキュリティ的には十分とは言えないでしょう。そのためSMTPSと組み合わせて利用するのが基本です。

IMAP

IMAPはInternet Message Access Protocolの略になります。メールサーバーへアクセスし、新着メールの確認をしたり、サーバー上のメールを読めるのが特徴です。メールをローカルコンピューターにダウンロードすることもできます。2022年現在利用されているのはバージョン4であり、IMAP4やIMAP4Sとも呼ばれます。

セキュリティ

IMAPはLOGINコマンドを使って認証しますが、その際のユーザー名とパスワードは平文になります。そのためIMAPをそのまま使うのは危険です。IMAPSを使って、SSL/TLS化する必要があります。IMAPは143番ポート、IMAPSは993番ポートを使うのが一般的です。

メール形式

POP3の場合はダウンロードしたメールをすべて削除してしまうこともあり、すべてのメールを1ファイルで管理するmailbox(mbox)形式が使われてきました。しかしIMAPではMaildir形式の方がよく使われます。これは1メール1ファイル(emlファイル)として管理されるものです。

知っておきたいキーワード

STARTTLS

STARTTLSはメール送受信時にパスワードが平文で授受されるのを避けるために利用されるコマンドになります。SMTPとIMAPではSTARTTLS、POP3ではSTLSという仕組みが用意されています。STARTTLSでは同じポート番号を使えるのがメリットで、SSL/TLS用に別途ポートを用意する必要がありません。

接続元では 250-STARTTLS というコマンドを実行し、接続先がSTARTTLSに対応しているか確認します。対応している場合にはSSL/TLSによってセキュアな通信が開始され、対応していない場合には通常の(平文の)メール送受信が行われます。

IMAPとPOP3の違い

昨今では個人でもデスクトップ(ノートPC)やスマートフォン、タブレットなど複数デバイスを利用しているのが一般的であり、それらのデバイスからメールにアクセスできる必要があります。そのためサーバーにメールを残さないPOP3ではなくIMAPを利用するケースが増えています。また、従来はサーバーの個人容量が少なく、メールボックスがいっぱいになってしまうのを防ぐために、POP3でメールをローカルコンピュータにダウンロードするのが一般的でした。現在は10GBなどの大容量も当たり前になっており、あえてローカルコンピュータの容量を消費する必要がなくなってきています。

他にもIMAPではサーバー側でメールの検索を行うので、クライアントリソースが小さくともメールを快適に利用できるメリットがあります。もちろんデメリットとしては、サーバー側のリソースが十分に大きくなければいけないことでしょう。また、サーバー側へのハッキングや障害によって、セキュリティリスクにさらされるメールデータがPOP3と比べて大量になります。

XOAUTH2

OAuth2を使ったPOP3/SMTP/IMAP向けの認証方式になります。 AUTHENTICATE XOAUTH2 (トークン文字列) といった形式でコマンドを実行し、認証を行います。スマートフォンでGmailやOutlookなどのメールセットアップを行う際に、まずそれらのWebサービスへ遷移して認証し、メールへのアクセスを認可するステップを経てメールを利用できる仕組みです。パスワードをメールクライアントに残さないのでセキュアです。

Discussion

ログインするとコメントできます