On Aug 22, 2010, at 6:40 AM, Stefan Bethke wrote:
> Am 22.08.2010 um 10:00 schrieb Stefan Bethke:
>
>> FEATURE(`dnsbl', `bl.spamcop.net', `"550 " $&{client_addr} "foo"
>> $&{client_addr} ""')dnl
>
> The real culprit is the comma. I believe the problem stems from unquoted use
> of the arguments in some of the ifelses, where the comma turns the single
> argument into two.
That makes a lot of sense, especially when combined with the off-list
suggestions I got to double-quote the error message.
> Tracing the ifelses with -d aceq I see this for the last ifelse in
> cf/feature/dnsbl.m4:
>
> m4trace: -1- ifelse(`X"550 Mail from " $&{client_addr} " rejected', `see
> http://spamcop.net/bl.shtml?" $&{client_addr}', `Xquarantine', `R<?>$+
> $#error $@ quarantine $: _DNSBL_SRV_', `X"550 Mail from " $&{client_addr} "
> rejected', `
> see http://spamcop.net/bl.shtml?" $&{client_addr}', `Xdiscard', `R<?>$+
>
> $#discard $: _DNSBL_SRV_', `R<?>$+ $#error $@ 5.7.1 $:
> _DNSBL_MSG_'
> ) -> ???
> m4trace: -1- ifelse(...) -> `'
> m4trace: -1- ifelse ...
>
>
> I've never managed to really wrap my head around m4 quoting, but the easy fix
> is to use some other character that has no meaning to m4.
The fact that you knew how to do a trace shows that you're way ahead of me in
grokking m4. :) I can confirm that replacing the comma with a colon makes the
problem go away.
Does someone with some m4-fu want to take a stab at producing a fix? The
problem appears in the 7-arg "ifelse" in the last few lines of
/usr/share/sendmail/cf/feature/dnsbl.m4, though the source could of course be
missing quotes earlier in the file.
I'd be happy to test any proposed patches and submit a bug report to Sendmail
if appropriate. At the very least perhaps the example in the comment of
/etc/mail/freebsd.mc should be modified to not use a comma.
Thanks!
JN
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[email protected]"