OpenSSL S_clientでGmailメール送信


コマンドライン上でGmail(smtp.gmail.com)にアクセスしてメール送信してみる。
サイトで検索してみるとやり方は見つかるが上手く動かない記事が多かったのでメモしてみる。
telnetコマンドではなくopenssl s_clientコマンドを使います。

SMTPアカウント情報は以下の場合とする。

ユーザー: test@gmail.com
パスワード: abcde12345
SMTPサーバー: smtp.gmail.com

認証時にユーザー/パスワードをBase64エンコードしたものが必要になるのであらかじめ用意しておく。
フォーマットは「\000{ユーザー}\000{パスワード}」となり、エンコードにはサクッとprelを利用する。

$ perl -MMIME::Base64 -e ‘print encode_base64(“\000test\@gmail.com\000abcde12345”)’
AHRlc3RAZ21haWwuY29tAGFiY2RlMTIzNDU=

これで準備完了したので以下の手順でメール送信する。
基本ですが最後のドット(.)は忘れないように。

$ openssl s_client -starttls smtp -crlf -connect smtp.gmail.com:587



AUTH PLAIN
334
AHRlc3RAZ21haWwuY29tAGFiY2RlMTIzNDU=
235 2.7.0 Accepted
mail from: <test@gmail.com>
250 2.1.0 OK n2sm690272wfl.13
rcpt to: <your_friend@example.com>
250 2.1.5 OK n2sm690272wfl.13
data
354 Go ahead n2sm690272wfl.13
subject: TEST SUBJECT
HELO
BODY BODY BODY
.