[exim] Defer in warn ACL results in tempfail despite docs

Top Page
Delete this message
Reply to this message
Author: Chris Wilson
Date:  
To: exim-users
Subject: [exim] Defer in warn ACL results in tempfail despite docs
Hi all,

The Exim documentation says:

"If any condition on a warn statement cannot be completed (that is, there
is some sort of defer), the log line specified by log_message is not
written After a defer, no further conditions or modifiers in the warn
statement are processed. The incident is logged, and the ACL continues to
be processed, from the next statement onwards."

<http://www.exim.org/exim-html-current/doc/html/spec_html/ch40.html#SECID200>

It's very useful to have at least one way to execute a condition that
might defer, without deferring the message. For example, I used it to
implement our backup MX:

<http://blog.aptivate.org/2009/01/28/backup-mail-exchangers/>

However it doesn't seem to work in this case:

# check WHOIS for domains registered by Communicado Ltd
warn set acl_m_whois = ${run {/usr/bin/whois $sender_address_domain}}

  defer
        condition = ${if match {$acl_m_whois} {Company number: 3709008}}
        message = Local blacklist of Communicado Limited's domains


(by the way, these guys are spewing spam at a rate of knots, this is a
very effective check when it works)

2012-01-26 11:13:11 H=out3-smtp.messagingengine.com [66.111.4.27]
F=<rod.......@fastmail.fm> temporarily rejected RCPT
<tom.......@aptivate.org>:
failed to expand ACL string "${run {/usr/bin/whois
$sender_address_domain}}": command timed out

So why is it tempfailing the message? And is there any other way to avoid
a tempfail on a condition that results in a defer?

Cheers, Chris.
-- 
_____ __     _
\  __/ / ,__(_)_  | Chris Wilson <0000 at qwirx.com> - Cambs UK |
/ (_/ ,\/ _/ /_ \ | Security/C/C++/Java/Ruby/Perl/SQL Developer |
\ _/_/_/_//_/___/ | Stop nuclear war http://www.nuclearrisk.org |