[Mew-dist 11917] Re: Password is wrong!

SAKAI Kiyotaka ksakai at example.com
1999年 12月 22日 (水) 16:22:24 JST


>> In article <19991201204236E.kazu at example.com>, Kazu Yamamoto (山本和彦) <kazu at example.com> writes:

> mew-summary-buffer-wrong-pws が nil でないなら
> 	mew-user-imget-assoc が t なら
> 		"Password is wrong (mew-summary-buffer-wrong-pwsの中身)!"
> 	ケースがデフォルトでないなら
> 		"Password is wrong (そのケース)!"
> 	さもなくば
> 		"Password is wrong!"
> mew-summary-buffer-error が nil でないなら
> 	そのメッセージを表示
> さもなくば
> 	get したメッセージ数などを表示

> となります。

> ---

> それで、パスワードの入力を間違っていないのに、Password is wrong と表示
> されるのは明らかにバグです。

ところが、imget ではどのようなエラーでも無条件に

  imget: ERROR: invalid password ....

に返してしまうので、Mew も "Password is wrong!" と表示してしまうことに
なります。

これは、popper によって返すエラーメッセージがまちまちで、エラーが発生
しても imget 側でどのエラーが発生したか判断するのは難しいためです。

実際にエラーメッセージを調べてみたところ、以下のようになりました。

  qpopper-2.53
    パスワード間違い
      -ERR Password supplied for "ksakai" is incorrect.

    セッション使用中
      -ERR /.../.ksakai.pop lock busy!  Is another session active? (35)

  qpopper-3.0b23
    パスワード間違い
      -ERR Password supplied for "ksakai" is incorrect.

    セッション使用中
      -ERR [IN-USE] /.../.ksakai.pop lock busy!  Is another session active? (11)

  imap-4.6 に付属の ipop3d
    パスワード間違い
      -ERR Password supplied for "ksakai" is incorrect.

    セッション使用中
      -ERR Can't get lock.  Mailbox in use

  GNU POP (http://www.nodomainname.net/software/gnu-pop3d.shtml)
    パスワード間違い
      -ERR Bad login

    セッション使用中
      ソースを読む限り「-ERR [IN-USE] Mailbox in use」が返ってくるよう
      だが、現在のバージョンでは延々とロックを試みている。

ただし、rfc2449 によって、セッションが使用中のときは qpopper-3 のよう
にエラーメッセージに [IN-USE] と入れるべしとなったようですので、これに
対応すればいいのであれば、以下のパッチのようにすればいいかと思います。
-- 
酒井 清隆 (E-mail: ksakai at example.com)

-------------- next part --------------
===================================================================
RCS file: im-134/IM/RCS/Pop.pm,v
retrieving revision 1.1
diff -u -r1.1 im-134/IM/Pop.pm
--- im-134/IM/Pop.pm	1999/12/22 06:53:13	1.1
+++ im-134/IM/Pop.pm	1999/12/22 06:53:58
@@ -88,7 +88,11 @@
 	}
 	$resp =  &send_command(\*POPd, "PASS $pass", 'PASS ********');
 	if ($resp !~ /^\+/) {
-	    im_err("invalid password ($prompt) [$resp].\n");
+	    if ($resp =~ /IN-USE/) {
+		im_err("session is in use ($prompt) [$resp].\n");
+	    } else {
+		im_err("invalid password ($prompt) [$resp].\n");
+	    }
 	    return -1;
 	}
     } elsif ($auth eq 'RPOP') {


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