[Mew-dist 12635] quoting LOGIN user name

Ryoji KATO ryoji.kato at example.com
2000年 3月 8日 (水) 03:06:31 JST


日本エリクソンの加藤と申します。

いつも mew を使わせてもらっております。

mew-dist ML には参加していないのですが、Imap.pm の動作で
うまくいかない場合がありましたのでお知らせします。

社内の Microsoft Exchange Server の IMAP のユーザ名が

       <domain name>\<user name>

というように、ユーザ名に"\"が入っているのですが、認証に失敗するので
RFC にあたりますと、

login           ::= "LOGIN" SPACE userid SPACE password
userid          ::= astring
password        ::= astring

となってユーザ名にもパスワードと同じ規則が適用されるようなので
以下のような patch でユーザ名にもパスワードと同じ処理をすると
うまく動作するようになりました。

Imap.pm は im-140 リリースに含まれているものです。


--- Imap.pm.orig	Tue Mar  7 16:02:12 2000
+++ Imap.pm	Tue Mar  7 16:36:57 2000
@@ -72,11 +72,13 @@
     }
     my $failed = 0;
     if ($auth eq 'LOGIN') {
-	my $pw = $pass;
+	my ($us, $pw) = ($user, $pass);
+	$us =~ s/([\\"])/\\$1/g;	# escape specials
+	$us = "\"$us\"";		# quote it
 	$pw =~ s/([\\"])/\\$1/g;	# escape specials
 	$pw = "\"$pw\"";		# quote it
-	$resp = &send_command($HANDLE, "im$seq LOGIN $user $pw",
-	  "im$seq LOGIN $user PASSWORD");
+	$resp = &send_command($HANDLE, "im$seq LOGIN $us $pw",
+	  "im$seq LOGIN $us PASSWORD");
 	while ($resp !~ /^im$seq/) {
 	    if ($resp =~ /^\* NO/i) {
 #		$failed = 1;





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