メールサーバーのポート番号(465・587・25・993・995)とは?SMTPSやRFC 8314の仕組みを図解で解説

メールサーバーのポート番号(465・587・25・993・995)とSMTPS・RFC 8314の仕組みを解説するアイキャッチ画像

メールサーバーの通信においては、メールの送信(サブミッション)、サーバー間の中継(リレー)、およびメールの受信(POP3/IMAP4)という役割や暗号化方式の違いによって、使用するポート番号(Port Number)が明確に分かれています。

その中でも465番ポートは、SMTPS(SMTP over SSL/TLS)を用いた電子メールの送信(サブミッション)に使われる通信ポートです。接続開始の最初のパケットからSSL/TLS暗号化を適用する「暗黙的TLS(Implicit TLS)」と送信者確認を行う「SMTP認証(SMTP-AUTH)」を組み合わせ、IETFの標準規格であるRFC 8314によって安全なメール送信ポートとして利用が推奨されています。本記事では、465番ポートの仕組みを中心に、587番・25番・993番・995番などメールサーバーに関わる全主要ポート番号の役割と技術仕様を図解とともに詳しく解説します。

この記事でわかること

  • メールサーバーで使用される主要ポート番号(465・587・25・993・143・995・110)の一覧と役割
  • SMTPS(465番ポート)の3つの特徴(暗黙的TLS・SMTP-AUTH認証・RFC 8314による標準化)
  • 暗黙的TLS(465番)と明示的TLS/STARTTLS(587番)の通信シーケンスおよびセキュリティ上の違い
  • 465番ポートが一度非推奨となった歴史的経緯と、RFC 8314で再び推奨規格となった理由
  • OpenSSLコマンドやPythonスクリプトによるメール送信ポートの疎通確認・実装方法

メールサーバーの主要ポート番号一覧(送信・転送・受信の比較表)

メールシステムでは、メールソフト(MUA:Mail User Agent)からメールサーバーへ送信する通信、メールサーバー同士(MTA:Mail Transfer Agent)でバケツリレーのように転送する通信、そしてメールソフトが受信ボックスからメールを取り出す通信で、それぞれ異なるプロトコルとポート番号を使用します。

ポート番号 プロトコル/サービス名 通信の方向・用途 暗号化方式 認証と現在の推奨ステータス
465番 SMTPS
(submissions)
メール送信(投稿)
クライアント(MUA) → 送信サーバー(MSA)
暗黙的TLS
(Implicit TLS:最初からSSL/TLS暗号化)
SMTP-AUTH必須。RFC 8314で最も推奨される送信ポート
587番 Submission
(submission)
メール送信(投稿)
クライアント(MUA) → 送信サーバー(MSA)
明示的TLS
(Explicit TLS:平文接続後にSTARTTLSで暗号化)
SMTP-AUTH必須。RFC 6409で定義され、互換維持のため広く併用
25番 SMTP
(smtp)
サーバー間メール転送
送信側MTA → 受信側MTA
平文 または STARTTLS(日和見暗号化) サーバー間中継用。OP25Bにより一般回線のクライアントからは原則遮断
993番 IMAPS
(imaps)
メール受信(サーバー同期型)
受信サーバー → クライアント(MUA)
暗黙的TLS
(Implicit TLS:最初からSSL/TLS暗号化)
ユーザー認証必須。RFC 8314で推奨されるIMAP受信ポート
143番 IMAP4
(imap)
メール受信(サーバー同期型)
受信サーバー → クライアント(MUA)
平文 または STARTTLS ユーザー認証必須。現在は993番(暗黙的TLS)への移行が推奨
995番 POP3S
(pop3s)
メール受信(端末保存型)
受信サーバー → クライアント(MUA)
暗黙的TLS
(Implicit TLS:最初からSSL/TLS暗号化)
ユーザー認証必須。RFC 8314で推奨されるPOP受信ポート
110番 POP3
(pop3)
メール受信(端末保存型)
受信サーバー → クライアント(MUA)
平文 または STARTTLS ユーザー認証必須。現在は995番(暗黙的TLS)への移行が推奨

SMTPS(465番ポート)の役割と3つの主な特徴

465番ポートは、パソコンやスマートフォンのメールソフト、あるいはWebアプリケーションから送信メールサーバー(MSA:Mail Submission Agent)へメールを提出(サブミッション)する際に使われる、SMTPS(SMTP over SSL/TLS)専用の通信ポートです。IANA(Internet Assigned Numbers Authority)のサービス名レジストリでは submissions(Message Submission over TLS protocol)として登録されています。

SMTPS(465番ポート)の主な特徴と3つの機能(暗黙的TLS・SMTP認証必須・RFC 8314推奨)を示した図解
図:465番ポート(SMTPS)を支える3つの技術的特徴(暗黙的TLS・SMTP-AUTH・RFC 8314標準規格)

暗黙的TLS(Implicit TLS)による通信開始直後からの暗号化

465番ポートの最大の特徴は、「暗黙的TLS(Implicit TLS)」を採用している点です。暗黙的TLSでは、クライアントがサーバーの465番ポートへTCP接続(3ウェイハンドシェイク)を確立した直後、SMTPのコマンドをやり取りするよりも前に、最初のアプリケーション層パケットから直ちにTLSハンドシェイク(証明書の検証と暗号鍵の交換)を開始します。

TLSによる暗号化トンネルが確立された後で初めて、サーバーからの初期応答(220 グリーティング)やクライアントからの EHLO コマンド、認証情報、メール本文が送受信されます。したがって、通信経路の最初から最後まで平文(暗号化されていないテキスト)がネットワーク上に流れることはありません。

SMTP認証(SMTP-AUTH)による送信者の本人確認

もともと初期のSMTP(25番ポート)には、「誰がメールを送信しているか」を確認するユーザー認証の仕組みが存在しませんでした。しかし認証なしで誰でもメールを送れる状態(オープンリレー)にしておくと、第三者による迷惑メール(スパム)の踏み台や送信元なりすましに悪用されます。

そのため、メール投稿用である465番ポート(および587番ポート)では、送信者の確認を行う「SMTP認証(SMTP-AUTH:RFC 4954)」が必須となっています。クライアントはTLS暗号化通信の中で AUTH PLAIN や AUTH LOGIN、XOAUTH2 などの方式を用いてアカウント名とパスワード(またはアクセストークン)を提示し、正規の契約ユーザーであることが確認された場合のみメールの送信が許可されます。

RFC 8314に基づく安全なメール送信の標準規格

465番ポートは、1990年代後半に一時的に非推奨とされた歴史がありますが、2018年1月にIETF(Internet Engineering Task Force)が策定した標準規格「RFC 8314(Cleartext Considered Obsolete: Use of Transport Layer Security (TLS) for Email Submission and Access)」によって、安全なメール送信(サブミッション)の推奨ポートとして正式に再定義されました。

暗黙的TLS(465番)と明示的TLS/STARTTLS(587番)の通信手順の違い

メールソフトの送信サーバー設定画面では、ポート番号として「465番(SSL/TLS)」と「587番(STARTTLS)」の2種類が選択肢として表示されます。どちらも最終的にTLSで暗号化してSMTP認証を行う点は共通していますが、「どのタイミングで暗号化を開始するか」というプロトコル上の手順が異なります。

暗黙的TLS(465番)と明示的TLS/STARTTLS(587番)の通信手順の違いを比較した図解
図:最初から暗号化する暗黙的TLS(465番)と、平文接続後にコマンドで切り替える明示的TLS/STARTTLS(587番)の比較

プロトコル通信シーケンスの比較

465番ポート(暗黙的TLS)と587番ポート(明示的TLS/STARTTLS)における接続開始からメール送信までの通信ステップを比較すると、以下のようになります。

【465番ポート:暗黙的TLS(Implicit TLS / SMTPS)の通信フロー】
1. [TCP]  クライアント ──(TCP SYN / SYN-ACK / ACK)──> サーバー (Port 465)
2. [TLS]  クライアント <──(TLS Handshake:証明書検証・鍵交換)──> サーバー
   ======= ここから先はすべてTLS暗号化トンネル内で通信 =======
3. [SMTP] サーバー     ──(220 mail.example.com ESMTP)──> クライアント
4. [SMTP] クライアント ──(EHLO client.example.com)────> サーバー
5. [SMTP] クライアント ──(AUTH PLAIN / LOGIN 認証)────> サーバー
6. [SMTP] クライアント ──(MAIL FROM / RCPT TO / DATA)─> サーバー

---------------------------------------------------------------------

【587番ポート:明示的TLS(Explicit TLS / STARTTLS)の通信フロー】
1. [TCP]  クライアント ──(TCP SYN / SYN-ACK / ACK)──> サーバー (Port 587)
   ======= 接続直後は平文(暗号化なし)で通信が開始される =======
2. [平文] サーバー     ──(220 mail.example.com ESMTP)──> クライアント
3. [平文] クライアント ──(EHLO client.example.com)────> サーバー
4. [平文] サーバー     ──(250-STARTTLS 対応を通知)────> クライアント
5. [平文] クライアント ──(STARTTLS コマンドを送信)────> サーバー
6. [平文] サーバー     ──(220 Ready to start TLS)─────> クライアント
7. [TLS]  クライアント <──(TLS Handshake:証明書検証・鍵交換)──> サーバー
   ======= ここから先がTLS暗号化トンネル内で通信 =======
8. [SMTP] クライアント ──(再度 EHLO ──> AUTH 認証 ──> DATA)─> サーバー

STARTTLS(587番)が抱えるダウングレード攻撃(STARTTLSストリッピング)のリスク

587番ポートで用いられる STARTTLS(RFC 3207)は、もともと「1つのポート番号で平文通信と暗号化通信の両方に対応する」ために設計された仕組み(明示的TLS/Explicit TLS)です。しかし、最初のネゴシエーション(EHLO から STARTTLS コマンドの要求・応答まで)が平文で行われるため、通信経路上に悪意ある中間者(MITM:Man-in-the-Middle)が介在した場合に以下のセキュリティリスクが生じます。

  • STARTTLSストリッピング(ダウングレード攻撃):サーバーが返した 250-STARTTLS という応答行を中間者が改ざんして削除したり、クライアントが送った STARTTLS コマンドに対して偽のエラー(454 TLS not available など)を返したりすることで、暗号化への切り替えを妨害する攻撃手法です。もしクライアント側の設定が「利用可能な場合のみSTARTTLSを使用する(日和見暗号化)」になっていた場合、クライアントは暗号化を諦めて平文のままパスワードやメール本文を送信してしまいます。
  • 初期ハンドシェイク情報の露出と往復遅延(RTT):STARTTLSに移行する前の 220 バナーや EHLO のホスト名が平文で流れるほか、STARTTLS コマンドのやり取りと再度の EHLO が必要になるため、465番ポートの暗黙的TLSに比べて通信の往復回数(ラウンドトリップ)が1〜2回多くなります。

これに対し、465番ポート(暗黙的TLS)では「TLSハンドシェイクが成功しない限りSMTP通信そのものが一切始まらない」という設計になっているため、平文へのダウングレード攻撃が構造的に成立しません。これがRFC 8314において587番よりも465番(暗黙的TLS)が優先して推奨される技術的根拠です。

なぜ465番ポートは一度非推奨になりRFC 8314で再推奨されたのか

技術ドキュメントや古い設定ガイドの中には「465番ポートは非推奨(レガシー)であるため587番を使うべき」と記載されているものと、「RFC 8314に基づき465番が推奨される」と記載されているものの双方が存在します。この違いは、以下の歴史的経緯によるものです。

年代 規格・出来事 465番ポートの位置づけと背景
1997年 Netscape社によるSMTPSの実装とIANA割り当て SSL 3.0の登場に伴い、SMTPをSSLで包む専用ポートとして 465/tcp (smtps) がIANAに割り当てられ、メールソフト各社が実装を開始した。
1998年12月 RFC 2487(STARTTLS)およびRFC 2476(587番ポート)の策定 IETFは「プロトコルごとにSSL用の別ポートを増やすのではなく、既存ポート上で STARTTLS コマンドにより暗号化へ昇格させる方式に統一する」という方針を採択。これに伴い465番の smtps 登録は一度取り消され、別の用途(Ciscoのマルチキャストプロトコル urd)に再割り当てされた。
2000年代〜2010年代 デファクトスタンダードとしての465番の存続 IETFが465番を廃止した後も、主要なメールサーバー(Postfix、Sendmail、Exchange、Gmail等)やメールクライアント(Outlook、Thunderbird、Apple Mail等)は互換性のために465番(SMTPS)をサポートし続け、実運用で広く使われ続けた。
2018年1月〜現在 RFC 8314の策定(標準化トラック) 平文通信の廃止と常時TLS化を進める中で、STARTTLSの設定ミスやダウングレード攻撃のリスクよりも、最初からTLSを強制する「暗黙的TLS」の方が安全性と実装の確実性に優れるとIETFが再評価。IANAは465番ポートを submissions と urd の共用として正式に再登録し、465番ポート(暗黙的TLS)を推奨規格とした。

このように、1998年〜2017年頃の仕様に基づいて書かれた資料では「465番は非推奨・587番が標準」と説明されていましたが、2018年のRFC 8314以降は「クライアントからのメール送信には465番ポート(暗黙的TLS)を推奨し、後方互換性のために587番ポート(STARTTLS)も維持する」というのが現在の国際標準仕様です。

メール送信・転送の3つのポート(465・587・25)の役割分担とOP25B

SMTPに関連する3つのポート番号(465番・587番・25番)は、通信の主体が「メールソフト(MUA)からの送信」なのか「メールサーバー(MTA)間の転送」なのかによって明確に使い分けられます。

メール送信・転送の3つのポート(465・587・25)の役割分担を示した図解
図:クライアントからのサブミッション(465番・587番)と、サーバー間中継(25番・OP25B制限)の役割分担

サーバー間転送用の25番ポートとOP25B(Outbound Port 25 Blocking)

25番ポートは、1982年のRFC 821以来使われている本来のSMTPポートですが、現在のインターネット運用においては「送信側のメールサーバー(MTA)から受信側のメールサーバー(MTA)へメールを配送・中継するサーバー間通信専用」として位置づけられています。

かつてウイルスに感染した一般家庭や社内LANのパソコン(ボットネット)が、プロバイダ(ISP)のメールサーバーを経由せずに外部の25番ポートへ直接スパムメールを大量送信する問題が発生しました。これを防ぐために全国のISPやクラウド事業者(AWS、Google Cloud、Microsoft Azure等)が導入している対策が「OP25B(Outbound Port 25 Blocking:25番ポートブロック)」です。

  • OP25Bの仕組み:動的IPアドレス(一般家庭の光回線やモバイル回線など)やクラウドの標準インスタンスから、外部ネットワークの25番ポートへ直接向かう通信をファイアウォール・ルーター層で遮断します。
  • サブミッションポート(465番・587番)の活用:OP25B環境下にあるパソコンやスマートフォン、Webサーバーからメールを送信する際は、25番ポートではなく、SMTP認証(SMTP-AUTH)が必須化されたサブミッション用の465番ポート(SMTPS)または587番ポート(Submission)を使用して送信メールサーバーへ接続します。

メール受信用ポート番号(IMAPS:993番・POP3S:995番)の整理

メールサーバーからクライアントへメールを受信するプロトコルには「IMAP4」と「POP3」の2種類があり、それぞれに平文(またはSTARTTLS)用ポートと、暗黙的TLS(SSL/TLS)用ポートが割り当てられています。

メール受信用ポート番号(IMAPS:993番・POP3S:995番)の整理を示した図解
図:メール受信におけるIMAP4(993番推奨/143番)とPOP3(995番推奨/110番)のポート番号と特徴

IMAP4(993番/143番):サーバー上でメールを一元管理・同期

IMAP4(Internet Message Access Protocol)は、メールの実データをメールサーバー上に保持したまま、パソコンやスマートフォンなど複数の端末から同じメールボックスの状態(既読・未読、フォルダ分け、送信済み履歴など)をリアルタイムに同期して閲覧・操作するプロトコルです。

  • 993番ポート(IMAPS / 暗黙的TLS):接続開始の最初のパケットからSSL/TLSで暗号化するポートです。RFC 8314において、IMAPでメールを受信する際の標準推奨ポートと定められています。
  • 143番ポート(IMAP / 平文またはSTARTTLS):従来からのIMAPポートです。STARTTLSによる暗号化昇格に対応していますが、新規設定では最初から暗号化される993番ポートの選択が推奨されます。

POP3(995番/110番):端末へメールをダウンロードして保存

POP3(Post Office Protocol Version 3)は、メールサーバーに届いたメールを自分のパソコンなどの端末へダウンロードして保存するプロトコルです。サーバー上の容量を消費しにくく、一度受信したメールはオフライン環境でも閲覧できるという特徴があります。

  • 995番ポート(POP3S / 暗黙的TLS):接続開始直後からSSL/TLSで暗号化するポートです。RFC 8314において、POP3でメールを受信する際の標準推奨ポートと定められています。
  • 110番ポート(POP3 / 平文またはSTARTTLS):従来からのPOP3ポートです。平文のままでは受信時のID・パスワードおよびメール本文が盗聴されるリスクがあるため、現在は995番ポートの使用が推奨されます。

実務でのメール送信ポート疎通確認コマンドとPython実装例

サーバー構築やシステム開発において、対象のメールサーバーが465番ポート(暗黙的TLS)や587番ポート(STARTTLS)に正しく対応しているかを検証するコマンドと、Pythonプログラムからメールを送信する際の実装コードの違いを確認します。

OpenSSLコマンドによる465番と587番の接続確認

465番ポートは最初からTLSハンドシェイクを行うため、平文用の telnet や nc コマンドでは対話できません。openssl s_client コマンドを使用することで、TLS証明書の検証とSMTP応答の確認を行えます。

# 暗黙的TLS(465番ポート / SMTPS)への接続確認
# 接続直後からTLSハンドシェイクを行うため、-starttls オプションは付けない
openssl s_client -connect smtp.example.com:465 -crlf

# 明示的TLS(587番ポート / STARTTLS)への接続確認
# 平文接続後にSTARTTLSコマンドを送ってTLSへ昇格させるため -starttls smtp を指定する
openssl s_client -connect smtp.example.com:587 -starttls smtp -crlf

Python(smtplib)での465番(SMTP_SSL)と587番(starttls)の実装コード

Pythonの標準ライブラリ smtplib を使ってメールを送信する場合、465番ポート(暗黙的TLS)では smtplib.SMTP_SSL クラスを使用し、587番ポート(明示的TLS)では smtplib.SMTP クラスで接続した後に starttls() メソッドを呼び出します。

import ssl
import smtplib
from email.message import EmailMessage

# 送信メールの作成
msg = EmailMessage()
msg["Subject"] = "ポート番号・TLS暗号化送信テスト"
msg["From"] = "sender@example.com"
msg["To"] = "recipient@example.com"
msg.set_content("465番ポート(SMTPS)からの暗号化送信テスト本文です。")

smtp_host = "smtp.example.com"
smtp_user = "sender@example.com"
smtp_pass = "your_app_password"

# 標準の安全なTLSコンテキストを作成(証明書検証とホスト名確認を有効化)
tls_context = ssl.create_default_context()

# ---------------------------------------------------------
# パターンA:【推奨】465番ポート(SMTPS / 暗黙的TLS)で送信する場合
# ---------------------------------------------------------
# SMTP_SSL クラスにより、最初のTCP接続直後からTLSハンドシェイクを開始する
with smtplib.SMTP_SSL(smtp_host, 465, context=tls_context, timeout=30) as server:
    server.login(smtp_user, smtp_pass)  # SMTP-AUTH による認証
    server.send_message(msg)

# ---------------------------------------------------------
# パターンB:587番ポート(Submission / STARTTLS)で送信する場合
# ---------------------------------------------------------
# いったん通常の SMTP クラスで接続し、明示的に starttls() を呼び出して暗号化する
with smtplib.SMTP(smtp_host, 587, timeout=30) as server:
    server.ehlo()
    server.starttls(context=tls_context)  # STARTTLS コマンドでTLS通信へ昇格
    server.ehlo()                         # TLS確立後に再度 EHLO を送信
    server.login(smtp_user, smtp_pass)    # SMTP-AUTH による認証
    server.send_message(msg)

まとめ:メールサーバーのポート番号の選び方

メールサーバーの465番ポート(SMTPS)を中心に、送信・転送・受信に関わる各ポート番号の仕様と役割を整理しました。

本記事の要点まとめ

  • 465番ポート(SMTPS / submissions):接続開始の最初のパケットからSSL/TLS暗号化を行う「暗黙的TLS」と「SMTP認証(SMTP-AUTH)」を用いる送信ポート。RFC 8314に基づき現在最も推奨される
  • 587番ポート(Submission / STARTTLS):平文で接続した後にコマンドで暗号化に切り替える「明示的TLS」を用いる送信ポート。465番に対応していない環境や後方互換性のために利用される
  • 25番ポート(SMTP):メールサーバー(MTA)同士のメール転送・中継に使われるポート。OP25Bにより一般回線のクライアントからの外部直接送信は制限されている
  • 受信ポートの推奨設定:複数端末で同期するIMAPでは993番(IMAPS)、端末へダウンロードするPOPでは995番(POP3S)という暗黙的TLSポートの組み合わせがRFC 8314で推奨されている

eguchi.netをもっと見る

購読すると最新の投稿がメールで送信されます。