of them, but not for all, because expansion happens down in some lower level
checking functions in some cases. */
- if (conditions[cb->type].expand_at_top)
+ if (!conditions[cb->type].expand_at_top)
+ arg = cb->arg;
+ else if (!(arg = expand_string(cb->arg)))
{
- arg = expand_string(cb->arg);
- if (arg == NULL)
- {
- if (expand_string_forcedfail) continue;
- *log_msgptr = string_sprintf("failed to expand ACL string \"%s\": %s",
- cb->arg, expand_string_message);
- return search_find_defer? DEFER : ERROR;
- }
+ if (expand_string_forcedfail) continue;
+ *log_msgptr = string_sprintf("failed to expand ACL string \"%s\": %s",
+ cb->arg, expand_string_message);
+ return search_find_defer ? DEFER : ERROR;
}
- else arg = cb->arg;
/* Show condition, and expanded condition if it's different */
# ----- Main settings -----
-acl_not_smtp = check_rcpt
+acl_smtp_rcpt = check_rcpt
+acl_not_smtp = check_not_smtp
queue_only
begin acl
check_rcpt:
+ accept
+ local_parts = defer_strict
+ set acl_m1 = ${lookup dnsdb{defer_strict,a=$domain}}
+
+check_not_smtp:
warn
set acl_m1 = ${map {<,$recipients} \
{${lookup dnsdb{a=${domain:$item}}{$value}fail}}}
1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
+1999-03-02 09:44:33 U=CALLER F=<> temporarily rejected RCPT <defer_strict@test.again.dns>: failed to expand ACL string "${lookup dnsdb{defer_strict,a=$domain}}": lookup of "defer_strict,a=test.again.dns" gave DEFER:
exim -d-all+lookup -odq user@shorthost.test.ex
****
#
+# ACL defer_strict
+exim -bs
+HELO test
+MAIL FROM:<>
+RCPT TO:<defer_strict@test.again.dns>
+QUIT
+****
+#
no_msglog_check
#
> a=localhost.test.ex 127.0.0.1
> a=localhost.test.ex 127.0.0.1
>
+220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000\r
+250 myhost.test.ex Hello CALLER at test\r
+250 OK\r
+451 Temporary local problem - please try later\r
+221 myhost.test.ex closing connection\r