[Mew-dist 13197] SMTP AUTH is mandatory when sendmail speaks SMTP AUTH

Hajimu UMEMOTO ( 梅本 肇 ) ume at example.com
2000年 6月 5日 (月) 03:30:18 JST


  梅本@IMASYです。

  某所で SMTP AUTH のテストをやってたら、Netscape Communicator な人か
らメイルが出せなくなったと怒られました。原因は、sendmail が EHLO に 
AUTH PLAIN が使えると返すと、Netscape Communicator が無条件に AUTH
PLAIN を発行してくれるためでした。つまり、現行の Netscape Communicator 
の実装では、サーバー側が PLAIN な SMTP AUTH に対応するためには、全ての
ユーザが SASL 的に登録されている必要があるということになります。
  なんだ Mew は関係ないじゃんと怒られた方がいたとしたらごめんなさい。
  さて、Mew でも同様のことが起こり得ます。現在の Mew の実装では、EHLO 
に CRAM-MD5 が使えると返って来たら、無条件に AUTH CRAM-MD5 を発行して
います。
  SMTP AUTH をオプション化するべきだと思って mew-smtp-auth-required な
る t/nil なスイッチを追加しかけたのですが、SMTP サーバに対する属性だろ
うから、mew-config-alist で制御できるべきだろうと思った時点で手が止まっ
ちゃいました。mew-config-alist の value は string のみなんですね。なん
となく、"yes", "no" とかにするのは恰好悪いなと思っちゃうわけですが、な
んか良い方法ありませんでしょうか?
  取り敢えず書きかけのパッチを添付します。

-------------- next part --------------
Index: mew-1.95b38/mew-blvs.el
diff -u mew-1.95b38/mew-blvs.el.orig mew-1.95b38/mew-blvs.el
--- mew-1.95b38/mew-blvs.el.orig	Sat May 27 22:30:11 2000
+++ mew-1.95b38/mew-blvs.el	Mon Jun  5 02:23:31 2000
@@ -58,6 +58,7 @@
 (defvar mew-draft-smtp-ssh-server nil)
 (defvar mew-draft-smtp-helo-domain nil)
 (defvar mew-draft-smtp-user nil)
+(defvar mew-draft-smtp-auth-required nil)
 (defvar mew-draft-buffer-config nil)
 (defvar mew-overlay-header-keymap nil)
 (defvar mew-overlay-attach-keymap nil)
@@ -113,6 +114,7 @@
 	      'mew-draft-smtp-port
 	      'mew-draft-smtp-ssh-server
 	      'mew-draft-smtp-helo-domain
+	      'mew-draft-smtp-auth-required
 	      'mew-draft-buffer-config
 	      'mew-overlay-header-keymap
 	      'mew-overlay-attach-keymap
Index: mew-1.95b38/mew-config.el
diff -u mew-1.95b38/mew-config.el.orig mew-1.95b38/mew-config.el
--- mew-1.95b38/mew-config.el.orig	Thu May 18 20:42:27 2000
+++ mew-1.95b38/mew-config.el	Mon Jun  5 02:14:42 2000
@@ -145,6 +145,10 @@
   (or (mew-cfent-value case "smtp-user")
       (mew-user)))
 
+(defun mew-smtp-auth-required (&optional case)
+  (or (mew-cfent-value case "smtp-auth-required")
+      mew-smtp-auth-required))
+
 (defun mew-nntp-server (&optional case)
   (or (mew-cfent-value case "nntp-server")
       mew-nntp-server))
Index: mew-1.95b38/mew-smtp.el
diff -u mew-1.95b38/mew-smtp.el.orig mew-1.95b38/mew-smtp.el
--- mew-1.95b38/mew-smtp.el.orig	Sun May 28 16:40:58 2000
+++ mew-1.95b38/mew-smtp.el	Mon Jun  5 02:23:41 2000
@@ -322,7 +322,8 @@
    pro (format "HELO %s%s" mew-draft-smtp-helo-domain mew-cs-eol)))
 
 (defun mew-smtp-command-auth (pro pnm)
-  (if (string-match "AUTH .*CRAM-MD5" (mew-smtp-get-string pnm))
+  (if (and mew-draft-smtp-auth-required
+	   (string-match "AUTH .*CRAM-MD5" (mew-smtp-get-string pnm)))
       (process-send-string pro (format "AUTH CRAM-MD5%s" mew-cs-eol))
     (mew-smtp-set-status pnm "mail-from")
     (mew-smtp-command-mail-from pro pnm)))
Index: mew-1.95b38/mew-vars.el
diff -u mew-1.95b38/mew-vars.el.orig mew-1.95b38/mew-vars.el
--- mew-1.95b38/mew-vars.el.orig	Mon Jun  5 02:22:18 2000
+++ mew-1.95b38/mew-vars.el	Mon Jun  5 02:22:36 2000
@@ -303,6 +303,9 @@
 
 (defvar mew-smtp-helo-domain "localhost")
 
+(defvar mew-smtp-auth-required nil
+  "*If non-nil, Mew speaks SMTP AUTH corresponding to result of EHLO.")
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;
 ;;; Demo
-------------- next part --------------
梅本 肇 @ インターネット互助会横浜  http://www.imasy.org/~ume/
ume at example.com  ume at example.com  ume at example.com
プログラムは書いた人の意図ではなく書かれた通り動く


Mew-dist メーリングリストの案内