[exim] exim 4.85

Top Page
Delete this message
Reply to this message
Author: Gordon Dickens
Date:  
To: Exim_Users_Group
Subject: [exim] exim 4.85
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