このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

smtp.mac.com経由でメールを送信したいがユーザ認証が実装出来ない

発言者:山本 武
( Date Saturday, September 15, 2001 10:10:49 )


 smtp.mac.com経由でメールを送信したいと考えています。このsmtp.mac.comもSPAN対策等でユーザー認証をするようになりました。(そのせいか、最近不通が続いて信用がなくなりかけていますが、、)愛用のUVJMailerでも送れなくなってしまったこともあり、じゃ、簡単なものでも自作するか!と思って久しぶりにRealBasic1を起動して、ちょこちょこいじり始めたのですが、SMTPのユーザー認証のところで躓いてしまいました。
 
RFC2554等の参考文献をあたって
------------------------
【コネクト】
【返信】220 ESMTP service
【送信】MAIL FROM:<xxxx@mac.com>
【返信】250 Sender <xxxx@mac.com> Ok

【送信】ehlo smtp.mac.com
【返信】250-asmtp02.mac.com
【返信】250-PIPELINING
【返信】250-ETRN
【返信】250-DSN
【返信】250-AUTH PLAIN LOGIN
【返信】250 AUTH=LOGIN

【送信】auth login
【返信】334 VXNlcm5hbWU6
------------------------

 というところまで来たのですが、どうやってログインしたらよいのかがわかりません。認証方法は”LOGIN"という方法を使えということなのですが、この先が理解できずにいます。
 popの場合のユーザー認証は
 USER username
 PASS password
 という風にすればよいらしいことはわかったのですが試しに続けて送信してもうまくいかず
 
【返信】501 Invalid Login
 となってしまいました。
 ユーザー認証の部分をどう実装すればよいのかをご存じの方がいらっしゃったら教えてください。

→  (参考までに)RFC2554(英語)

田中求之 さんからのコメント
( Sunday, September 16, 2001 16:13:05 )

AUTH LOGIN の時は、サーバへ送り返すログインの情報は MD5 での暗号化の
必要はないんでしたっけ?

それと、AUTH PLAIN だとどうですか?

UVJ mailer に SMTP AUTH を組み込もうとは思っていたんですが、十分に調
べていないので、この機会に、いっしょに勉強しましょう (^_^;;

たまちゃん さんからのコメント
( Sunday, September 16, 2001 22:33:49 )

>AUTH LOGIN の時は、サーバへ送り返すログインの情報は MD5 での暗号化の
>必要はないんでしたっけ?

そうです。そうです。

>それと、AUTH PLAIN だとどうですか?

RFC2595 によると PLAIN SASL は

The mechanism consists of a single message from the client to the
   server.  The client sends the authorization identity (identity to
   login as), followed by a US-ASCII NUL character, followed by the
   authentication identity (identity whose password will be used),
   followed by a US-ASCII NUL character, followed by the clear-text
   password.  The client may leave the authorization identity empty to
   indicate that it is the same as the authentication identity.

となっています。この後で Base64 でくるんだり,暗号化をかける
こともあるようですが,標準的な仕様は(LOGIN と同様?)確かな
かったと思います。

SASL 関連の RFC 一覧は

http://www.iana.org/assignments/sasl-mechanisms

にまとめられています。

山本 武 さんからのコメント
( Saturday, September 22, 2001 21:55:12 )

ようやくログイン出来ました!
週末になりようやく時間が作れたので再度トライしました。

http://www.sendmail.org/~ca/email/authrealms.html
の記事も参考にして、単にbase64でエンコードして送り出してあげれば
よさそうだということがわかりました。

実際には
----telnet smtp.mac.com 25---
220 ESMTP service
MAIL FROM:<xxx@mac.com>
250 Sender <xxx@mac.com> Ok
ehlo smtp.mac.com
250-asmtp01.mac.com
250-PIPELINING
250-ETRN
250-DSN
250-AUTH PLAIN LOGIN
250 AUTH=LOGIN
auth login
334 VXNlcm5hbWU6
xxxxxxxxxxx(ユーザー名称をbase64エンコードしたもの)
334 UGFzc3dvcmQ6
xxxxxxxxxx(パスワードをbase64エンコードしたもの)
235 Authentication successful(→ログイン成功)

とやることで無事にログイン出来ました。
田中さん、たまちゃんさん有り難うございました。