メールの通信暗号化に欠かせないSTARTTLSについて

POP3やIMAP、SMTPといったプロトコルは通信プロトコルにおいて暗号化をサポートしていません。もし通信をSSL化する場合にはSMTP over SSL/TLSのような形で、別途ポートを設けることが多いです。

今回はそんなメールの送受信データを暗号化するもう一つの方法、STARTTLSについて紹介します。

STARTTLSとは

STARTTLSはSMTPやPOP3、IMAPなどをデフォルトのポートのまま、平文から暗号化通信に変更する仕組みです。メール関係だけでなく、他の通信プロトコルでも規定されています。

  • FTP
  • XMPP
  • LDAP
  • NNTP

telnetで試す

telnetでSMTPサーバに接続し STARTTLS を入力するとTLSに切り替わります。なお、telnetはTLSネゴシエーションには対応していないので、ここで処理は終わるでしょう。

$ telnet smtp.gmail.com 587
Trying 9999:9999:9999:c04::6d...
Connected to smtp.gmail.com.
Escape character is '^]'.
220 smtp.gmail.com ESMTP XXXXX.99 - gsmtp
HELO example.com
250 smtp.gmail.com at your service
MAIL FROM: <user@example.com>
530 5.7.0 Must issue a STARTTLS command first. XXXXX.99 - gsmtp
STARTTLS
220 2.0.0 Ready to start TLS

TLSの種類

最近ではSMTPSに対応したSMTPサーバが増えており、STARTTLSを実行するケースは多くないかもしれません。SMTPSはSMTP over SSL/TLSと呼ばれるもので、暗黙的TLSを呼ばれます。自動的にTLSが適用される仕組みです。同じようにPOP3S、IMAP4Sがあります。

STARTTLSはクライアント側から明示的にTLS開始を宣言するため、明示的TLSと呼ばれます。なお、STARTTLSは25番ポートを利用できるので、サーバ間でのリレーにおいても利用されます。

Gmailによる表示

Gmailでは2016年から、TLSをサポートしていないメールサーバに対して送信を行う際に、セキュアではないことを意味するアイコンが表示されるようになりました。

f:id:moongift:20210710214555p:plain

また、送られてきたメッセージに対して写真やアイコンが表示されず、はてなアイコンが出るようになっています。

f:id:moongift:20210710214512p:plain

Building a safer web, for everyone

まとめ

通信がTLSによってセキュアになることで、なりすましや盗聴などを避けられるようになります。WebサイトがSSL化するのが当たり前になっているのと同様に、メール送信においてもセキュアなメッセージングを心がける必要があるでしょう。