OP25BをしているプロバイダにはサブミッションポートかSMTPSかSTARTTLSを使おう

前回の勉強内容

ponsuke-tarou.hatenablog.com

メールを送信する時にSMPTというプロトコルを使います。

SMTPとは、電子メールを伝送するための通信手順の一つです。
残念ながら、セキュリティにはいろいろ問題がありました。
そのために「POP before SMTP」「SMTP-AUTH」「OP25B」などの対策が行われています。

POP before SMTPSMTP-AUTHは、ユーザー認証をしてからメールを送信する仕組みです。

ponsuke-tarou.hatenablog.com

OP25Bは、ネットワーク内から外部のコンピュータのTCPポート25番への通信を禁止します。

ponsuke-tarou.hatenablog.com

外部からメールを送信する場合にOP25BをしているプロバイダではTCPポート25番が使えません。
f:id:ponsuke_tarou:20190411232733p:plain

サブミッションポートは、メール送信専用に利用するTCPポート587番のことです。

OP25Bを実施しているプロバイダの場合はTCP25番ポートを通してのメール送信が出来なくなるけれど、このサブミッションポートを利用することで送信が可能となります。
サブミッションポートは、SMTP認証(SMTP-AUTH)と合わせて利用します。

TCPのサブミッションポート(ポート番号587)の説明として,適切なものはどれか。

  1. FTPサービスで,制御用コネクションのポート番号21とは別にデータ転送用に使用する。
  2. Webアプリケーションで,ポート80番のHTTP要求とは別に,サブミットボタンをクリックした際の入力フォームのデータ送信に使用する。
  3. コマンド操作の遠隔ログインで,通信内容を暗号化するためにTELNETのポート番号23の代わりに使用する。
  4. 電子メールサービスで,迷惑メール対策としてSMTPのポート番号25の代わりに使用する。

平成25年秋期問20 TCPのサブミッションポートの説明|情報処理安全確保支援士.com

https://www.ii-okinawa.ad.jp/support/mail/images/illust01.jpg
サブミッションポート(587番ポート)|ii-okinawa.ad.jp

https://ascii.jp/img/2009/08/04/851287/l/c7bbfa60ae6ddb31.jpg
ASCII.jp:メールシステムの脆弱性とその回避策 (4/4)|電子メールの秘密

SMTPSでは、TCPポート465番を使います。

SMTPSは、伝送路を暗号化するSSL/TLSSMTPに組み合わせたプロトコルです。

通常のSMTPとは異なる専用のポート番号(465番)を用いて最初からSSL/TLSにより通信を開始する方式。
トランスポート層において、データ完全性、機密性と通信相手を認証する機能を提供する。
アプリケーション層でクライアントとサーバは通常のSMTPを利用するが、コネクション自体はSSLもしくはTLSによって保護される。この動作はコネクションの確立時に行われる。クライアントやサーバがコネクションを確立する際、SSLTLSを利用するかどうかは分からないため、SMTPSのためのポート番号を割り当てることが一般的である。
SMTPS - Wikipedia

https://image.itmedia.co.jp/ait/articles/0801/18/wi-mailovssl01.gif
メールの送受信を暗号化するPOP3s/IMAP4s/SMTPs(over SSL)とは:Tech TIPS - @IT

https://image.itmedia.co.jp/ait/articles/0602/02/r13secripro4_02.gif
認証できないsmtpでメールを安全に送るには:セキュリティプロトコルマスター(4)(3/3 ページ) - @IT

STARTTLSは、専用のTCPポートを用意する必要がありません。

STARTTLSは、送信側と受信側のサーバ療法がSSL/TLSに対応していると通信を暗号化する仕組みです。
専用の決まったTCPポートを用意する必要がないので25番でも465番でも587番でも何番でも使えます。
なぜなら、いつもSSL/TLSに対応しているか確認してから通信するのでポート番号を決めてなくてOKなのです。

  • 通信の流れ
    1. 通常のSMTPで通信を開始(セッション開始時は平文で始まる)
    2. 「STARTTLS」コマンドで双方がSSL/TLSに対応しているか確認(暗号化のためのネゴシエーションを行う)
    3. 対応していればSSL/TLSで再接続する

f:id:ponsuke_tarou:20190415230552j:plain
思い出の一枚

次回の勉強内容

ponsuke-tarou.hatenablog.com