Hello.
I have the following conditions:
------------------------------------------
|warn log_message = "HELO test A record is [$acl_m_helo_check_a]"
!authenticated = *
hosts = !127.0.0.1 : !localhost : *
condition = ${if !eq{$acl_m_helo_is_fqdn}{}}
set acl_m_helo_check_a = ${lookup dnsdb{>:
a=$sender_helo_name}{$value}}
warn !authenticated = *
log_message = "DEFER IS TRUE: $acl_m_testtest"
hosts = !127.0.0.1 : !localhost : *
set acl_m_testtest = ${perl{def_helo_check_a}}|
------------------------------------------
And this simple perl script:
------------------------------------------
|#!/usr/bin/perl
sub def_helo_check_a {
if (defined Exim::expand_string('$acl_m_helo_check_a')) {
return 0
} else {
return 1
}
}
------------------------------------------
Debug logs:
------------------------------------------
||...
processing "warn"
check !authenticated = *
check hosts = !127.0.0.1 : !localhost : *
gethostbyname2(af=inet6) returned 2 (TRY_AGAIN)
gethostbyname2 looked up these IP addresses:
name=localhost.localdomain address=127.0.0.1
host in "!127.0.0.1 : !localhost : *"? yes (matched "*")
check condition = ${if !eq{$acl_m_helo_is_fqdn}{}}
= true
search_open: dnsdb "NULL"
search_find: file="NULL"
key=">: a=ya.ru" partial=-1 affix=NULL starflags=0
LRU list:
internal_search_find: file="NULL"
type=dnsdb key=">: a=ya.ru"
database lookup required for >: a=ya.ru
dnsdb key: ya.ru
DNS lookup of ya.ru (A) gave TRY_AGAIN
ya.ru in dns_again_means_nonexist? no (option unset)
returning DNS_AGAIN
lookup deferred:
warn: condition test deferred in ACL "acl_check_rcpt"
LOG: MAIN
H=(ya.ru) [62.117.85.73] Warning: ACL "warn" statement skipped:
condition test deferred: failed to expand ACL string "${lookup dnsdb{>:
a=$sender_helo_name}{$value}}": lookup of ">: a=ya.ru" gave DEFER:
processing "warn"
check !authenticated = *
check hosts = !127.0.0.1 : !localhost : *
gethostbyname2(af=inet6) returned 2 (TRY_AGAIN)
gethostbyname2 looked up these IP addresses:
name=localhost.localdomain address=127.0.0.1
host in "!127.0.0.1 : !localhost : *"? yes (matched "*")
Starting Perl interpreter
check set acl_m_testtest = ${perl{def_helo_check_a}}
= 0
warn: condition test succeeded in ACL "acl_check_rcpt"
LOG: MAIN
H=(ya.ru) [x.x.x.x] Warning: "DEFER IS TRUE: 0"
processing "deny"
...
||------------------------------------------
||$acl_m_helo_check_a don't defined, but perl think what
||$acl_m_helo_check_a defined.
Why does defined function in perl receives this value?
Thanks.
|