Problem
Messages to chat lists which are too long simply disappear, instead
of generating a bounce message about the error to the list owner.
In the mail logs, the error 511 Headers specify no receipients.
appears immediately before the note Message delivered. . Normally
only the latter message appears, followed by logs about individual emails
being sent to list member.
Affected
- Majordomo 1.94.4 and probably many other versions.
- May only appear on more recent systems, since a change in PERL may be responsible.
Reproduction
It's convenient to find the logfile, configured in majordomo.cf,
and enable debugging by uncommenting $DEBUG = 1;
in resend. I added extra debugging lines to
print $to to STDERR around the
send_bounce function's call to ParseAddrs($to)
which nailed down the culprit function.
Cause
ParseAddrs apparently expects a call to split()
to set @_ to its result, which doesn't actually happen.
Solution
To correct the problem, locate the ParseAddrs function in majordomo.pl, specifically the line splitting $_ on commas:
split(/,/); # split into parts
and modify it so that the split(/,/) explicitly assigns to @_ as shown:
@_ = split(/,/); # split into parts
The resulting function:
# @addrs = &ParseAddrs($addr_list)
sub main'ParseAddrs {
local($_) = shift;
1 while s/\([^\(\)]*\)//g; # strip comments
1 while s/"[^"]*"\s//g; # strip comments"
@_ = split(/,/); # split into parts
foreach (@_) {
1 while s/.*<(.*)>.*/$1/;
s/^\s+//;
s/\s+$//;
}
@_;
}
|