SMTP認証 関連ドキュメント
base64によるエンコード演算プログラム
使い方:
1. User IDにメールのユーザーIDを、Password欄にメールのパスワードを入力し、計算ボタンを押す。
あるいは
2. 直接URLを叩く。
http://kkch.sakura.ne.jp/hit/pc/inet/base64.cgi?uid=USERID&pwd=PASSWORD
結果
1行目にUser ID、2行目にPassword、3行目にbase64エンコードが表示される。
◎ MTAと話そう〜SMTPについて
複数に送るときには RCPT行を複数並べる。
◎ 認証のためのSMTPサービス拡張 http://www.puni.net/~mimori/rfc/rfc2554.txt
◎ 各プロトコルの安全性 ふたがわ
http://rat.cis.k.hosei.ac.jp/article/security/protocol.html
SMTP AUTH (Port: 25, 587)
SMTP AUTHは、メール送信時に認証を行うことにより、送信メールサーバがスパムメールの踏み台になるのを防ぐことができる方式です。SMTP
AUTHには、主に次のようなの認証方式があります。
LOGIN
PLAIN
CRAM-MD5
LOGINとPLAINは、平文で通信されます。CRAM-MD5は、APOP同様、パスワードはハッシュ化されますが、それ以外のメールの内容は平文で通信されます。
◎SMTP AuthとPlain認証 http://snbhsmt.blog110.fc2.com/blog-entry-54.html
SMTP Authentication についてと、 実際に SMTP
をしゃべって PLAIN 認証してみた。
SMTP Authentication は SMTP にユーザ認証の仕組みを追加する拡張仕様で、
RFC2554 により規定されている。 実際の認証機構には
SASL が用いられる。
RFC2554 : SMTP Service Extension for Authentication
http://ftp.riken.jp/pub/internet-doc/ietf/rfc/rfc2554.txt
SMTP Auth における SMTP への拡張では、 まず
EHLO に対して 250 AUTH mechanism... が返される。 mechanism... にはそのサーバでサポートする
SASL 認証方式が列挙される。複数行の回答があり、"250-"で列挙され、"250
"で終了するみた。
AUTH コマンドにて認証する。 1 行ではなく複数のやり取りに分かれても良い。
AUTH <mechanism> <argument>
認証に成功したらクライアントに 235 が返される。
誤っていれば535 が返される。
PLAIN 認証では mechanism が PLAIN、argument が "ユーザID\0ユーザID\0パスワード" という文字列を Base64 エンコードした物になる。
以下はユーザ名 user、パスワード pass の場合の
argument 文字列を作成する Perl スクリプト。
$ perl -MMIME::Base64 -e 'print encode_base64("user\0user\0pass");'
dXNlcgB1c2VyAHBhc3M=
★接続例。
telnet SMTP-server 587
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 sturgeon.localdomain ESMTP Postfix
ehlo SMTP-server ← プロトコル開始
250-sturgeon.localdomain
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-AUTH LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250 8BITMIME ← 最後の行には'-'が無い。
auth plain dXNlcgB1c2VyAHBhc3M= ← PLAINで認証。
235 Authentication successful ← 235は成功。
あとは通常のSMTPと同じ。
quit
221 Bye
Connection closed by foreign host.
モジュールを使った送信