[Mew-dist 14923] smtp AUTH LOGIN
Takashi SATOH
satoh at example.com
2000年 11月 19日 (日) 01:13:09 JST
さとーと申します。
smtp auth については、
From: Kazu Yamamoto (山本和彦) <kazu at example.com>
Subject: [Mew-dist 12921] Re: mew-1.95b33.tar.gz
Date: Tue, 25 Apr 2000 15:30:21 +0900
>はい。今のところ、CRAM-MD5 だけサポートしています。
>
>> RFC に書いていない
>>
>> AUTH LOGIN
>>
>> のサポートは行わないのですよね。たぶん
>
>これは POP の USER/PASS をサポートする程度の意味合いでしょうから、実装
>するけど推奨しないことになるのでしょうね。
という状態のままになっていると思いますが、
AUTH LOGIN が必要になったので、使えるようにしてしまいました。
mew-config-alist の中に、
("smtp-auth" . login)
("smtp-user" . "satoh")
と書いておくと、送信時に LOGIN: とミニバッファでパスワードを聞かれます。
あまり必要な人もいないかとは思いますが、
パッチにして添付しておきます。
-------------- next part --------------
*** mew-smtp.el.orig Wed Nov 1 20:27:03 2000
--- mew-smtp.el Sun Nov 19 00:35:55 2000
***************
*** 96,103 ****
(defvar mew-smtp-fsm
'(("greeting" ("220" . "ehlo"))
("ehlo" ("250" . "auth") (t . "helo"))
! ("auth" ("334" . "challenge"))
("challenge" ("235" . "mail-from"))
("helo" ("250" . "mail-from"))
("mail-from" ("250" . "rcpt-to"))
("rcpt-to" ("250" . "data"))
--- 96,106 ----
(defvar mew-smtp-fsm
'(("greeting" ("220" . "ehlo"))
("ehlo" ("250" . "auth") (t . "helo"))
! ("cram-md5" ("334" . "challenge"))
("challenge" ("235" . "mail-from"))
+ ("login" ("334" . "user"))
+ ("user" ("334" . "password"))
+ ("password" ("235" . "mail-from"))
("helo" ("250" . "mail-from"))
("mail-from" ("250" . "rcpt-to"))
("rcpt-to" ("250" . "data"))
***************
*** 289,295 ****
(if (null next)
(progn
(mew-passwd-set-passwd mew-draft-smtp-server nil)
! (if (string= status "challenge")
(message "Password is wrong."))
(mew-smtp-recover pnm str))
(mew-smtp-set-status pnm next)
--- 292,298 ----
(if (null next)
(progn
(mew-passwd-set-passwd mew-draft-smtp-server nil)
! (if (or (string= status "challenge") (string= status "password"))
(message "Password is wrong."))
(mew-smtp-recover pnm str))
(mew-smtp-set-status pnm next)
***************
*** 320,325 ****
--- 323,357 ----
pro (format "HELO %s%s" mew-draft-smtp-helo-domain mew-cs-eol)))
(defun mew-smtp-command-auth (pro pnm)
+ (let ((auth mew-draft-smtp-auth))
+ (cond
+ ((eq auth 'login)
+ (mew-smtp-set-status pnm "login")
+ (mew-smtp-command-login pro pnm))
+ ((eq auth 'cram-md5)
+ (mew-smtp-set-status pnm "cram-md5")
+ (mew-smtp-command-cram-md5 pro pnm))
+ (t
+ (mew-smtp-set-status pnm "mail-from")
+ (mew-smtp-command-mail-from pro pnm)))))
+
+ (defun mew-smtp-command-login (pro pnm)
+ (if (string-match "AUTH .*LOGIN" (mew-smtp-get-string pnm))
+ (process-send-string pro (format "AUTH LOGIN%s" mew-cs-eol))
+ (mew-smtp-debug "<AUTH>" "(SMTP server does not support LOGIN)\n")
+ (mew-smtp-set-status pnm "mail-from")
+ (mew-smtp-command-mail-from pro pnm)))
+
+ (defun mew-smtp-command-user (pro pnm)
+ (process-send-string pro (format "%s%s" (mew-base64-encode-string mew-draft-smtp-user) mew-cs-eol)))
+
+ (defun mew-smtp-command-password (pro pnm)
+ (let (passwd)
+ (setq passwd (mew-input-passwd "LOGIN: " mew-draft-smtp-server))
+ (process-send-string
+ pro (format "%s%s" (mew-base64-encode-string passwd) mew-cs-eol))))
+
+ (defun mew-smtp-command-cram-md5 (pro pnm)
(if (and mew-draft-smtp-auth
(string-match "AUTH .*CRAM-MD5" (mew-smtp-get-string pnm)))
(process-send-string pro (format "AUTH CRAM-MD5%s" mew-cs-eol))
Mew-dist メーリングリストの案内