First, in Exim, (!+A : +B) != (+B : !+A), i.e. not like in true Boolean.
Even more, {!+A : +B} means {!+A && +B} while {+A : +B} means {+A ||
+B}.
10.6 states:
Another way of thinking about positive and negative items in lists is to
read the connector as "or" after a positive item and as "and" after a
negative item.
Second, Exim does not have parentheses.
Canonical form of the expression is {+A && +B} => {!(!+A) && +B} =>
S = !+A
V = !+S : +B
So, your second animal is canonical and should work. Does it really or
not?
If not, install additional heat sinks ;-)
'To: David Woodhouse <exim-users@???>': Nothing bizarre, just a
personalized in-list outlookish answer ;-)
-----Original Message-----
Oh, it works -- but I think it's more efficient to do something like:
domainlist not_dns_virtual_domains = !lsearch;CONFDIR/conf/DNS_VIRTUAL
domainlist dns_virtual_domains = !+not_dns_virtual_domains : @mx_any
> ${if and{{match_domain{...} }{match_domain{...}}} } ???
> At least, macros?
Yeah, but I don't like that much.
Btw your mailer did something _really_ bizarre --
'To: David Woodhouse <exim-users@???>' ?