SMTP でちょっとテストしたい時などに SMTP コマンドを実際に叩いてテストすることがよくあるが、 smtp auth のやり方がいまいち分からなかったので、調べた時のメモ。
いつもやる基本的なコマンドの流れは以下の様な感じ。
$ telnet smtp.domain.com 25 220 smtp.domain.com ESMTP Postfix (Ubuntu) EHLO my.domain.com 250-smtp.domain.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN MAIL FROM: from@address.com 250 2.1.0 Ok RCPT TO: to@address.com 250 2.1.5 Ok DATA 354 End data with. headers: body .
上記の流れにプレインテキストによる SMTP AUTH コマンドを追加するには、まずユーザー名とパスワードをフォーマットして、 BASE64 エンコードする必要がある。
フォーマットは以下のとおり。
{null}user_name{null}password
これをサクッと BASE64 にするには
perl -MMIME::Base64 -e 'print encode_base64("\000user_name\000password")'
そして生成されたデータを使って、
AUTH PLAIN {generated_BASE64_data_here}
を、 MAIL FROM コマンドの前に実行すればよい。