summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/src/acl.c17
-rw-r--r--test/confs/22008
-rw-r--r--test/log/22001
-rw-r--r--test/scripts/2200-dnsdb/22008
-rw-r--r--test/stdout/22005
5 files changed, 28 insertions, 11 deletions
diff --git a/src/src/acl.c b/src/src/acl.c
index 64b310968..396e29965 100644
--- a/src/src/acl.c
+++ b/src/src/acl.c
@@ -2838,18 +2838,15 @@ for (; cb != NULL; cb = cb->next)
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 */
diff --git a/test/confs/2200 b/test/confs/2200
index 904ccfb18..73f6f48e7 100644
--- a/test/confs/2200
+++ b/test/confs/2200
@@ -7,12 +7,18 @@ primary_hostname = myhost.test.ex
# ----- 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}}}
diff --git a/test/log/2200 b/test/log/2200
index f59faf8b9..84f94626a 100644
--- a/test/log/2200
+++ b/test/log/2200
@@ -1 +1,2 @@
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:
diff --git a/test/scripts/2200-dnsdb/2200 b/test/scripts/2200-dnsdb/2200
index 9f6262524..96c8dc7ec 100644
--- a/test/scripts/2200-dnsdb/2200
+++ b/test/scripts/2200-dnsdb/2200
@@ -60,5 +60,13 @@ a=localhost.test.ex ${lookup dnsdb{a=localhost.test.ex}{$value}fail}
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
#
diff --git a/test/stdout/2200 b/test/stdout/2200
index 71ff12017..202cadf88 100644
--- a/test/stdout/2200
+++ b/test/stdout/2200
@@ -54,3 +54,8 @@ ten-2.test.ex
> 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
+250 myhost.test.ex Hello CALLER at test
+250 OK
+451 Temporary local problem - please try later
+221 myhost.test.ex closing connection