Hello,

The following bug in exim 4.83 and 4.84 was supposed to be fixed in exim 4.85, however it is not fixed:

http://bugs.exim.org/show_bug.cgi?id=1533

Description: "There is a fixed-size buffer (128 chars) used during headers_remove processing which truncates items after extraction from the headers_remove list but before expansion. This results in an expansion error, commonly "missing }", on anything complex."

This bug was reported by several Vexim and Exim4U configuration users including Shamim Shahriar here:

https://lists.exim.org/lurker/message/20141005.202139.c8520628.en.html

Both Shamim and I have tested exim 4.85 and the bug remains for both of us. That is, with the headers_remove statements, the mysql lookup will only accommodate a very small length and discards anything beyond that length.

My test resullts were as follows using double colons in the following quote_mysql statement:

headers_remove = ${if >={$acl_m_spamscore}{${lookup mysql{select users.sa_tag * 10 from users,domains \
                where localpart = '${quote_mysql::$local_part}' \
                and domain = '${quote_mysql::$domain}' \
                and users.on_spamassassin = '1' \
                and users.domain_id=domains.domain_id }{$value}fail}} \
                {Subject}{${if eq{SPAMHEADERTYPE}{0}{X-Spam-Report}}}  \
                }

"exim -bd -d -oX 25" yields:

97120 message: virtual_domains router failed to expand "${if >={$acl_m_spamscore}{${lookup mysql{select users.sa_tag * 10 from users,domains where localpart = '${quote_mysql::$local_part}' and domain = '${quote_mysql::$domain}' and users.on_spamassassin = '1' and users.domain_id=domains.domain_id }{$value}fail}} {Subject}{${if eq{${lookup{SpamHeaderType}lsearch{/etc/exim/exim4u_global_spam_virus}}}{0}{X-Spam-Report}}} }": unknown variable name "local_pa"
97120 ----------- end verify ------------
97120 accept: condition test deferred in ACL "acl_check_rcpt"
97120 SMTP>> 451 Temporary local problem - please try later

So, in summary, the quote_mysql statement appears to truncate resulting in "local_pa" instead of "local_part".

Shamim has done additional more comprehensive tests as well and usually gets the following error:

"missing } at end of string inside "or{...}" condition"

FYI,

Gordon Dickens


--
## List details at https://lists.exim.org/mailman/listinfo/exim-users
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/

Reply via email to