0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Mail】「TLS」「STARTTLS」接続コマンド

Last updated at Posted at 2026-01-08

POP3 / IMAP / SMTP の「TLS(即TLS)」と「STARTTLS」接続コマンドをまとめます。

接続後のコマンド:
メール関連コマンド


基本ルール(超重要)

  • STARTTLS系-starttls <protocol>
  • 即TLS系(xxxS)-starttls 不要
  • 本文取得・DATA・FETCH・RETR-quiet 推奨
  • SMTP / POP3 / IMAP-crlf Linuxでは必須
  • 今どき-servername ほぼ必須(SNI)

書式

STARTTLS系(SMTP/POP3/IMAP)

■Powershell

openssl s_client -starttls $protcol -connect $host:$port -quiet -servername $host

■Bash

openssl s_client -starttls $protcol -connect $host:$port -crlf -quiet -servername $host

即TLS系(SMTP/POP3/IMAP)

■Powershell

openssl s_client -connect $host:$port -quiet -servername $host

■Bash

openssl s_client -connect $host:$port -crlf -quiet -servername $host

SMTP(STARTTLS)

587 / 25

openssl s_client -starttls smtp \
  -connect smtp.example.com:587 \
  -crlf -quiet \
  -servername smtp.example.com

SMTPS(即TLS)

465

openssl s_client \
  -connect smtp.example.com:465 \
  -crlf -quiet \
  -servername smtp.example.com

IMAP(STARTTLS)

143

openssl s_client -starttls imap \
  -connect imap.example.com:143 \
  -crlf -quiet \
  -servername imap.example.com

IMAPS(即TLS)

993

openssl s_client \
  -connect imap.example.com:993 \
  -crlf -quiet \
  -servername imap.example.com

POP3(STARTTLS)

110

openssl s_client -starttls pop3 \
  -connect pop3.example.com:110 \
  -crlf -quiet \
  -servername pop3.example.com

POP3S(即TLS)

995

openssl s_client \
  -connect pop3.example.com:995 \
  -crlf -quiet \
  -servername pop3.example.com

一覧まとめ(完全版)

プロトコル 方式 ポート openssl オプション
SMTP STARTTLS 587 / 25 -starttls smtp
SMTP TLS 465 なし
IMAP STARTTLS 143 -starttls imap
IMAP TLS 993 なし
POP3 STARTTLS 110 -starttls pop3
POP3 TLS 995 なし

openssl s_client よく使うオプション一覧】

基本系(ほぼ毎回使う)

-connect host:port

接続先を指定

-connect smtp.example.com:587
  • TCPで接続する先
  • これがないと始まらない

-starttls smtp | imap | pop3

STARTTLS を自動実行

-starttls smtp
  • 平文接続 → STARTTLS → TLS昇格
  • 587 / 143 / 110 では必須
  • 465 / 993 / 995 では 使わない

-crlf

改行を CRLF にする

-crlf
  • Linuxでは必須
  • ないとコマンドが認識されないことがある

-servername hostname

SNI(Server Name Indication)を指定

-servername smtp.example.com
  • TLS ClientHello にホスト名を含める
  • 仮想ホスト・Let’s Encrypt 環境で重要
  • 証明書不一致トラブル回避

実務で超重要

-quiet

OpenSSL の内部ログを抑制

-quiet
  • サーバからのデータだけ表示
  • DATA / RETR / FETCH 時に必須
  • ないと本文が壊れて見える

-showcerts

証明書チェーンをすべて表示

-showcerts
  • 中間証明書欠落チェック
  • MTA / MUA の証明書検証エラー切り分け

-verify_return_error

証明書検証失敗をエラーにする

-verify_return_error
  • 検証NGなら即失敗
  • 本番相当の厳しさでチェックしたい時

TLS バージョン・暗号系(調査用)

-tls1_2 / -tls1_3

TLSバージョンを固定

-tls1_2
  • 古いクライアント互換性確認
  • 「TLS1.2必須」などの設定検証

-cipher 'CIPHER_LIST'

使用する暗号スイートを限定

-cipher 'ECDHE-RSA-AES256-GCM-SHA384'
  • セキュリティ要件検証
  • 接続不可原因の切り分け

デバッグ・詳細表示

-state

TLS状態遷移を表示

-state
  • ハンドシェイクで止まる位置確認

-msg

TLSメッセージ詳細表示

-msg
  • ClientHello / ServerHello を生で見る
  • 相当マニア向け

-debug

I/Oを16進ダンプ

-debug
  • パケットレベル調査
  • ほぼ最終手段

ほぼ使わないが知っておくと良い

-ign_eof

EOFを無視して入力継続

-ign_eof
  • stdinが閉じてもセッション維持
  • スクリプト連携時

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?