On Sun, 27 Sep 2009, Phil Pennock wrote:
> On 2009-09-26 at 23:55 +0100, John Horne wrote:
> > Okay, after more debugging I found the problem. Our config has an 'or'
> > condition containing:
> >
> > {match_address {${address:$h_To:}} {${address:$h_From:}} }
> >
> > This is the only instance where the From: header (in fact any header) is
> > used as a list, rather than an item to be looked up in a list. The
> > debugging shows:
>
> > As can be seen the From: address gets treated as two items.
>
> Oh dear. Looks like Exim's lack of "real" arrays/lists is biting you,
> when combined with a curious choice of operators.
Bizarrely, yesterday I hit the same error message, which I had never seen
before. But the circumstances are a little different.
In my case, Exim is an outgoing relay from an Exchange server. The user
had deliberately addressed a message (an 'unsubscribe' request) to an
address that was remarkably similar in form to:
//rm-2zuka637bw1gwquaxb8hak9wfarg3q5@???
Yes, two preceeding slashes.
Here's the debug:
SMTP<< RCPT TO:<//rm-2zuka637bw1gwquaxb8hak9wfarg3q5@???>
The debugs show:
...
23691 deny: condition test failed
23691 processing "deny"
23691 LOG: MAIN PANIC DIE
23691 failed to open
//rm-2zuka637bw1gwquaxb8hak9wfarg3q5@??? when checking "//rm-2zuka637bw1gwquaxb8hak9wfarg3q5@???":
No such file or directory
23691 SMTP>> 421 Unexpected failure, please try later
And the deny being processed when the PANIC happens is contains this
clause:
!condition = ${if match_address{cachemaster@???}{$recipients}}
It isn't clear to me why this causes the panic. Can anyone explain it?
I fixed it by replacing the above condition with a senders condition, not
sure why I didn't do it that way in the first place (this acl clause
prevents a clamav malware check being performed on a nightly report that
may contain malicious URL strings).
My related question is, taking into account Phil's comments on John's
issue: what is a safe way in the data ACL of checking all the recipients
of a message (available in $recipients) against a list of addresses, as I
have done so far successfully with the match_address above. (This is an
academic question now as I do not do this anywhere else at present).
Jethro.
. . . . . . . . . . . . . . . . . . . . . . . . .
Jethro R Binks
Computing Officer, IT Services, University Of Strathclyde, Glasgow, UK