SMTP Auth と話す。

やったこと無かったので、試しにやってみた。
準備として、 smtp が認証に対応しているかの確認をしておく。


[root@localhost root]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 localhost.localdomain ESMTP
EHLO localhost
250-localhost.localdomain
250-AUTH=LOGIN CRAM-MD5 PLAIN
250-AUTH LOGIN CRAM-MD5 PLAIN
250-STARTTLS
250-PIPELINING
250 8BITMIME
250 8BITMIME
quit
[ AUTH LOGIN CRAM-MD5 PLAIN ]の応答があるから大丈夫らしいので、次はエンコードしたパスワードを用意する。

[root@localhost root]# printf 'ユーザ名\0ユーザ名\0パスワード' | mmencode
とかやれば、エンコードしたパスワードが得られる。 mmencode コマンドが無い場合は、 perl を使う方法もある( MIME::Base64 モジュールが必要)。

debian:~# perl -MMIME::Base64 -e 'print encode_base64("ユーザ名\0ユーザ名\0パスワード");'
これで準備完了。

[root@localhost root]# telnet localhost 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 localhost.localdomain ESMTP
EHLO
250-localhost.localdomain
250-AUTH=LOGIN CRAM-MD5 PLAIN
250-AUTH LOGIN CRAM-MD5 PLAIN
250-STARTTLS
250-PIPELINING
250 8BITMIME
AUTH PLAIN bWFpbABtYWlsAHNoaWJhbmVrb25la28=
235 go ahead
mail from:
250 ok
rcpt to:
250 ok
data
354 go ahead
subject: testmail from localhost
from:
to:

TEST MAIL from LOCALHOST
.
250 ok 1132645184 qp 11633
quit
221 localhost.localdomain
Connection closed by foreign host.