Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 22 Aug 2010 15:48:23 -0400
From:      John Nielsen <lists@jnielsen.net>
To:        Stefan Bethke <stb@lassitu.de>
Cc:        gshapiro@freebsd.org, FreeBSD Stable <freebsd-stable@freebsd.org>
Subject:   Re: Apparent dnsbl bug in Sendmail or m4
Message-ID:  <CABA9DBB-D584-491F-AE6E-14A5C862B8EF@jnielsen.net>
In-Reply-To: <B6617274-729C-42F3-AC70-7FB81B16EEC4@lassitu.de>
References:  <20100822031045.sl4d10544k0s80kw@newwebmail.jnielsen.net> <CD37C0F6-F202-4941-A740-BF17358270A5@lassitu.de> <B6617274-729C-42F3-AC70-7FB81B16EEC4@lassitu.de>

next in thread | previous in thread | raw e-mail | index | archive | help

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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CABA9DBB-D584-491F-AE6E-14A5C862B8EF>