telnetで学ぶSMTP AUTH

認証方法はPLAIN、MD5など色々ある。ehloの応答で確認。

$ telnet stp.example.com 25
ehlo hoge
(略)
250-AUTH=LOGIN
250-AUTH LOGIN

この場合はLOGINのみ。

AUTH=LOGIN

上の行の"="を含んでいるものは、

「250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5」は、
broken_sasl_auth_clientsでOutlookOutlook Express
使用するように設定にした場合に表示されます。

ということらしい。

broken_sasl_auth_clientsとは???

broken_sasl_auth_clients (デフォルト: no)
古いバージョンの AUTH コマンド (RFC 2554) を実装したSMTPクライアントとの
相互運用性を有効にします。このようなクライアントには
MicroSoft Outlook Express バージョン 4 や MicroSoft Exchange バージョン 5.0 といった例があります。

ほう。

telnetで実験

AUTH LOGIN (PLAIN)タイプで実験。暗号化はされてないけど、Base64でencodeが必要。

username: foo
password: bar

Base64のencode/decodeはnkf -MB/nkf -mBとかperlMIME::Base64のencode_base64/decode_base64あたりで使う。

$ telnet localhost 25
ehlo hoge
250-example.com
250-PIPELINING
250-8BITMIME
250-AUTH=LOGIN
250-AUTH LOGIN
250 SIZE 10485760
auth login            # 入力
334 VXNlcm5hbWU6      # => "Username:"がBase64化されている
Zm9v                  # fooをBase64化したものを入力
334 UGFzc3dvcmQ6      # => "Password:"がBase64化されている
YmFy                  # barをBase64化したものを入力
235 Authentication successful.

後はいつものようにmail fromとrcpt to、dataとかを入力。