From owner-freebsd-stable@FreeBSD.ORG Sun Aug 22 19:48:27 2010 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3F70F1065698; Sun, 22 Aug 2010 19:48:27 +0000 (UTC) (envelope-from lists@jnielsen.net) Received: from ns1.jnielsen.net (ns1.jnielsen.net [69.55.238.237]) by mx1.freebsd.org (Postfix) with ESMTP id 230FC8FC16; Sun, 22 Aug 2010 19:48:26 +0000 (UTC) Received: from [192.168.2.31] (jn@stealth.jnielsen.net [74.218.226.254]) (authenticated bits=0) by ns1.jnielsen.net (8.12.9p2/8.12.9) with ESMTP id o7MJmNcr073199; Sun, 22 Aug 2010 15:48:25 -0400 (EDT) (envelope-from lists@jnielsen.net) Mime-Version: 1.0 (Apple Message framework v1081) Content-Type: text/plain; charset=us-ascii From: John Nielsen In-Reply-To: Date: Sun, 22 Aug 2010 15:48:23 -0400 Content-Transfer-Encoding: quoted-printable Message-Id: References: <20100822031045.sl4d10544k0s80kw@newwebmail.jnielsen.net> To: Stefan Bethke X-Mailer: Apple Mail (2.1081) X-Virus-Scanned: ClamAV version 0.88.4, clamav-milter version 0.88.4 on ns1.jnielsen.net X-Virus-Status: Clean Cc: gshapiro@freebsd.org, FreeBSD Stable Subject: Re: Apparent dnsbl bug in Sendmail or m4 X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Aug 2010 19:48:27 -0000 On Aug 22, 2010, at 6:40 AM, Stefan Bethke wrote: > Am 22.08.2010 um 10:00 schrieb Stefan Bethke: >=20 >> FEATURE(`dnsbl', `bl.spamcop.net', `"550 " $&{client_addr} "foo" = $&{client_addr} ""')dnl >=20 > 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: >=20 > 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$+ =20 > $#discard $: _DNSBL_SRV_', `R$+ $#error $@ 5.7.1 $: = _DNSBL_MSG_' > ) -> ??? > m4trace: -1- ifelse(...) -> `' > m4trace: -1- ifelse ... >=20 >=20 > 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