[Mew-dist 07689] Re: route address
Motonori Nakamura
motonori at example.com
1999年 2月 24日 (水) 18:38:26 JST
>>>>> On Wed, 24 Feb 1999 13:49:00 +0900, Tomoya Ida <tomoya.ida at example.com> said:
ida> 1.94b8 で To: に次のようなアドレスを指定すると,
ida> test <@aaa.co.jp, at example.com:zzz at example.com>
ida> 送信エラーになります。
ida> imput: ERROR: Unbalanced address quotes ('<', '>'): test <@aaa.co.jp
ida> RMAIL では OK なので imput の問題かと思いますが如何でしょうか。
見つかってしまいましたね。実は手抜きなんです。
RFC822bis ではこの形式は obsolete になるんですが、、、
と言って手抜きのままにしておくのはだめでしょうか:)
一応、これで直ると思います。
- motonori@ますますアドホック
*** Address.pm- Wed Feb 10 08:43:30 1999
--- Address.pm Wed Feb 24 18:36:42 1999
***************
*** 104,113 ****
my ($addrout, $pureout, $groupsyntax) = ('', '', '');
my ($friendly1, $friendly2, $c) = ('', '', '');
my ($inquote, $incomment, $addrquote) = (0, 0, 0);
! my ($gotpure, $groupcolon) = (0, 0);
im_debug("fetch_addr(in): $addrin\n") if (&debug('addr'));
$FOR_SMTP = (&progname =~ /imput/i) unless (defined($FOR_SMTP));
$addrin = '' unless (defined($addrin));
while ($addrin ne '') {
if ($addrin =~ /^([^\e"\\()<>:;,]+)(.*)/s) {
$c = $1;
--- 104,114 ----
my ($addrout, $pureout, $groupsyntax) = ('', '', '');
my ($friendly1, $friendly2, $c) = ('', '', '');
my ($inquote, $incomment, $addrquote) = (0, 0, 0);
! my ($gotpure, $groupcolon, $route) = (0, 0, 0);
im_debug("fetch_addr(in): $addrin\n") if (&debug('addr'));
$FOR_SMTP = (&progname =~ /imput/i) unless (defined($FOR_SMTP));
$addrin = '' unless (defined($addrin));
+ $route = 1 if ($addrin =~ /^\@/);
while ($addrin ne '') {
if ($addrin =~ /^([^\e"\\()<>:;,]+)(.*)/s) {
$c = $1;
***************
*** 128,134 ****
($c, $addrin) = unpack('a a*', $addrin);
}
! last if ($c eq ',' && !$inquote && !$incomment && !$groupcolon);
$friendly2 .= $c unless($addrquote);
if ($inquote) {
$addrout .= $c;
--- 129,136 ----
($c, $addrin) = unpack('a a*', $addrin);
}
! last if ($c eq ',' && !$inquote && !$incomment && !$groupcolon
! && !$route);
$friendly2 .= $c unless($addrquote);
if ($inquote) {
$addrout .= $c;
***************
*** 171,180 ****
--- 173,184 ----
$pureout = '';
chop($friendly2) unless ($addrquote);
$addrquote++;
+ $route = 1 if ($addrin =~ /^\@/);
} elsif ($c eq '>') {
$gotpure = 1;
$pureout =~ s/^<//;
$addrquote--;
+ $route = 0;
} elsif ($c eq '\\') {
$addrout .= $c;
$pureout .= $c unless ($gotpure);
***************
*** 197,203 ****
$groupsyntax = 1;
}
} elsif ($c eq ',') {
! last unless ($groupcolon);
}
$addrout .= $c;
$pureout .= $c unless ($gotpure);
--- 201,207 ----
$groupsyntax = 1;
}
} elsif ($c eq ',') {
! last unless ($groupcolon || $route);
}
$addrout .= $c;
$pureout .= $c unless ($gotpure);
Mew-dist メーリングリストの案内