1
1

More than 3 years have passed since last update.

openssl s_client チートシート STARTTLS, SMTP-AUTH, POP3S

Posted at

メール配送の動作チェックにopenssl s_clientコマンドを利用する.
今回はSTARTTLS, SMTP-AUTH, POP3Sを扱っていきます.

May 6, 2020 @pa_pa_paper

STARTTLS (mail message submission(587/tcp))

$ openssl s_client -quiet -connect localhost:587 -crlf -starttls smtp

*サーバ内部から動作チェックすることを想定. 外部環境からだと以下の方法ではエラーになる

  • OPTIONS

-quiet

セッション, 証明書の出力抑制.

-connect host:port

接続先のホスト名:ポート番号を指定.

-crlf

CR+LFが必要なサーバに対する補完機能.

-starttls protocol

途中からTLSに切換えるプロトコルを指定. 以下のプロトコルに対応している.

"smtp", "pop3", "imap", "ftp", "xmpp", "xmpp-server", "irc", "postgres", "lmtp", "nntp", "sieve", "ldap"

  • セッション開始後

通常のtelnet localhost 25と同じように動作チェックを行う.

EHLO localhost
250-xxxx.vs.sakura.ne.jp
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM: xxxx@xxxx.vs.sakura.ne.jp
250 2.1.0 Ok
RCPT TO: xxxx@gmail.com
250 2.1.5 Ok

SMTP-AUTH

外部環境からmail message submission(587/tcp)経由でメール送信する. この場合はSMTP-AUTHが必須となる.

SMTP-AUTHしないと以下のようにRelay access deniedの554エラーメッセージが通知される.

$ openssl s_client -quiet -connect xxxx.vs.sakura.ne.jp:587 -crlf -starttls smtp
~
~
EHLO xxxx.vs.sakura.ne.jp
250-xxxx.vs.sakura.ne.jp
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM: xxxx@xxxx.vs.sakura.ne.jp
250 2.1.0 Ok
RCPT TO: xxxx@gmail.com
554 5.7.1 <xxxx@gmail.com>: Relay access denied

*maillogには以下のようなエラーメッセージが出力されるはず

postfix/smtpd[17650]: NOQUEUE: reject: RCPT from xxxx.vs.sakura.ne.jp[xxx.xxx.xxx.xxx]: 554 5.7.1 <xxxx@gmail.com>: Relay access denied; 
  • AUTH PLAIN

BASE64エンコードした認証情報を準備する.

$ printf '<username>\0<username>\0<password>' | base64
xxxx=

AUTH PLAINで認証成功すると235 2.7.0 Authentication successfulとメッセージが出力される.
RCPT TOの結果も250 2.1.5 Okとなる.

$ openssl s_client -quiet -connect xxxx.vs.sakura.ne.jp:587 -crlf -starttls smtp
~
~
EHLO xxxx.vs.sakura.ne.jp
250-xxxx.vs.sakura.ne.jp
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN xxxx=
235 2.7.0 Authentication successful
MAIL FROM: xxxx@xxxx.vs.sakura.ne.jp
250 2.1.0 Ok
RCPT TO: xxxx@gmail.com
250 2.1.5 Ok

*maillogには下記のメッセージが出力されていた

postfix/smtpd[20043]: DA59C6966: client=xxxx.vs.sakura.ne.jp[xxx.xxx.xxx.xxx], sasl_method=PLAIN, sasl_username=xxx
  • AUTH LOGIN

AUTH PLAINと違いユーザ名とパスワードを別々にBASE64エンコードする.

$ printf '<username>' | base64
xxxx=
$ printf '<password>' | base64
xxxx=

334 VXNlcm5hbWU6Username:, 334 UGFzc3dvcmQ6Password:がBASE64エンコードされて表示されている. それぞれBASE64エンコードしたユーザ名とパスワードを入力する.

$ openssl s_client -quiet -connect xxxx.vs.sakura.ne.jp:587 -crlf -starttls smtp
~
~
EHLO xxxx.vs.sakura.ne.jp
250-xxxx.vs.sakura.ne.jp
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH LOGIN
334 VXNlcm5hbWU6
xxxx=
334 UGFzc3dvcmQ6
xxxx=
235 2.7.0 Authentication successful
MAIL FROM: xxxx@xxxx.vs.sakura.ne.jp
250 2.1.0 Ok
RCPT TO: xxxx@gmail.com
250 2.1.5 Ok

POP3S

POP3Sも要領は同じです.

$ openssl s_client -quiet -connect xxxx.vs.sakura.ne.jp:995 -crlf

普通にtelnet localhost 110で動作チェックするのと同様のコマンドが使える.

~
~
+OK Dovecot ready.
USER xxxx
+OK
PASS xxxx
+OK Logged in.
LIST
+OK 3 messages:
1 3546
2 3594
3 3542
RETR 1
+OK 3546 octets
Return-Path: <xxxx@gmail.com>
X-Original-To: xxxx@xxxx.vs.sakura.ne.jp
Delivered-To: xxxx@xxxx.vs.sakura.ne.jp
~
~
1
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
1
1