DMARC: check for empty filename for TLD file. Patch testsuite to not break on missin...
authorJeremy Harris <jgh146exb@wizmail.org>
Sat, 30 Mar 2019 15:41:52 +0000 (15:41 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Sat, 30 Mar 2019 19:37:21 +0000 (19:37 +0000)
29 files changed:
doc/doc-txt/experimental-spec.txt
src/src/dmarc.c
test/aux-var-src/tls_conf_prefix
test/confs/0002
test/confs/0241
test/confs/0437
test/confs/0564
test/confs/0601
test/confs/0611
test/confs/0615
test/confs/0619
test/confs/0900
test/confs/0901
test/confs/0906
test/confs/2026
test/confs/4050
test/confs/4053
test/confs/4056
test/confs/4058
test/confs/4060
test/confs/4061
test/confs/4064
test/confs/4065
test/confs/4650
test/confs/5601
test/confs/5611
test/confs/5740
test/runtest
test/stderr/0002

index 9b472c080dbe506cb47844f5e47f0ca7915a73f1..2f1e5c59194a897481784465d4ac9a0184350478 100644 (file)
@@ -428,7 +428,7 @@ need to uncomment them if an rpm (or you) installed them in the
 package controlled locations (/usr/include and /usr/lib).
 
 
 package controlled locations (/usr/include and /usr/lib).
 
 
-2. Use the following global settings to configure DMARC:
+2. Use the following global options to configure DMARC:
 
 Required:
 dmarc_tld_file      Defines the location of a text file of valid
 
 Required:
 dmarc_tld_file      Defines the location of a text file of valid
@@ -437,6 +437,8 @@ dmarc_tld_file      Defines the location of a text file of valid
                     the most current version can be downloaded
                     from a link at http://publicsuffix.org/list/.
                     See also util/renew-opendmarc-tlds.sh script.
                     the most current version can be downloaded
                     from a link at http://publicsuffix.org/list/.
                     See also util/renew-opendmarc-tlds.sh script.
+                   The default for the option is currently
+                   /etc/exim/opendmarc.tlds
 
 Optional:
 dmarc_history_file  Defines the location of a file to log results
 
 Optional:
 dmarc_history_file  Defines the location of a file to log results
index c4edc9159b72f5e0880d02950152a7c1268e271b..5bf33032a59f6b45d311077c6182b1466560047c 100644 (file)
@@ -109,15 +109,15 @@ if (libdm_status != DMARC_PARSE_OKAY)
                       opendmarc_policy_status_to_str(libdm_status));
   dmarc_abort = TRUE;
   }
                       opendmarc_policy_status_to_str(libdm_status));
   dmarc_abort = TRUE;
   }
-if (!dmarc_tld_file)
+if (!dmarc_tld_file || !*dmarc_tld_file)
   {
   DEBUG(D_receive) debug_printf("DMARC: no dmarc_tld_file\n");
   dmarc_abort = TRUE;
   }
 else if (opendmarc_tld_read_file(CS dmarc_tld_file, NULL, NULL, NULL))
   {
   {
   DEBUG(D_receive) debug_printf("DMARC: no dmarc_tld_file\n");
   dmarc_abort = TRUE;
   }
 else if (opendmarc_tld_read_file(CS dmarc_tld_file, NULL, NULL, NULL))
   {
-  log_write(0, LOG_MAIN|LOG_PANIC, "DMARC failure to load tld list %s: %d",
-                      dmarc_tld_file, errno);
+  log_write(0, LOG_MAIN|LOG_PANIC, "DMARC failure to load tld list '%s': %s",
+                      dmarc_tld_file, strerror(errno));
   dmarc_abort = TRUE;
   }
 if (!sender_host_address)
   dmarc_abort = TRUE;
   }
 if (!sender_host_address)
index 0a14cee24ae2264880d0d81dc64db9dfe5c173c1..965bc8b247195d7ab108f530de2e243afa810a2e 100644 (file)
@@ -20,3 +20,6 @@ tls_advertise_requiretls =
 .ifdef _HAVE_PIPE_CONNECT
 pipelining_connect_advertise_hosts = :
 .endif
 .ifdef _HAVE_PIPE_CONNECT
 pipelining_connect_advertise_hosts = :
 .endif
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
index 165f0a4b25b1f1842cdbfc4f90368c4657170603..7e565805bf12505f86fcc9df1275c043e088c1ea 100644 (file)
@@ -15,6 +15,9 @@ tls_advertise_hosts =
 .ifdef _HAVE_PIPE_CONNECT
 pipelining_connect_advertise_hosts = :
 .endif
 .ifdef _HAVE_PIPE_CONNECT
 pipelining_connect_advertise_hosts = :
 .endif
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
 
 # ----- Main settings -----
 
 
 # ----- Main settings -----
 
index e7d92078be7df62eba8081a8d22a11bf86fcc67a..644ed6b1f62aafa907b1a661b22aaada377010cf 100644 (file)
@@ -9,6 +9,10 @@ gecos_pattern = ""
 gecos_name = CALLER_NAME
 tls_advertise_hosts =
 
 gecos_name = CALLER_NAME
 tls_advertise_hosts =
 
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
+
 # ----- Main settings -----
 
 qualify_domain = test.ex
 # ----- Main settings -----
 
 qualify_domain = test.ex
index d0ea77ea16cb052d3818763b0eb22f870af8e618..863655b4e5ac30c3969668195812a924d90d3211 100644 (file)
@@ -11,6 +11,10 @@ gecos_pattern = ""
 gecos_name = CALLER_NAME
 tls_advertise_hosts =
 
 gecos_name = CALLER_NAME
 tls_advertise_hosts =
 
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
+
 # ----- Main settings -----
 
 queue_run_in_order
 # ----- Main settings -----
 
 queue_run_in_order
index e01628550906eec694e98dda0e6281816982cf56..de71325af1d79ebf2561eb842dddc0cdc26f4ea1 100644 (file)
@@ -12,6 +12,9 @@ tls_advertise_hosts =
 .ifdef _HAVE_PIPE_CONNECT
 pipelining_connect_advertise_hosts =
 .endif
 .ifdef _HAVE_PIPE_CONNECT
 pipelining_connect_advertise_hosts =
 .endif
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
 
 # ----- Main settings -----
 
 
 # ----- Main settings -----
 
index faf44ce9828c9bfb77dcc0a255609a9b480ae4bb..8b47f3d7eb216b122125976cfea9d89d05f64974 100644 (file)
@@ -7,6 +7,9 @@ spool_directory = DIR/spool
 log_file_path = DIR/spool/log/%slog
 tls_advertise_hosts =
 queue_only
 log_file_path = DIR/spool/log/%slog
 tls_advertise_hosts =
 queue_only
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
 
 # ----- Main settings -----
 
 
 # ----- Main settings -----
 
index 4f6f490d39438e876a9bd5fc8c23b78f368646d5..d3e0a47b21bd4c8c28deb7f00cda3ae553259a37 100644 (file)
@@ -13,6 +13,10 @@ gecos_name = CALLER_NAME
 tls_advertise_hosts =
 chunking_advertise_hosts =
 
 tls_advertise_hosts =
 chunking_advertise_hosts =
 
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
+
 # ----- Main settings -----
 
 log_file_path = DIR/spool/log/${if eq {SERVER}{server} {server_}{}}%slog
 # ----- Main settings -----
 
 log_file_path = DIR/spool/log/${if eq {SERVER}{server} {server_}{}}%slog
index 63b9d7facbeebcd6c5f91a71dbdf9a82d0910213..0cf5769a9ccb3426e14b7533fc85b6d0310d15b2 100644 (file)
@@ -11,6 +11,10 @@ gecos_name = CALLER_NAME
 chunking_advertise_hosts =
 tls_advertise_hosts =
 
 chunking_advertise_hosts =
 tls_advertise_hosts =
 
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
+
 primary_hostname = myhost.test.ex
 queue_only
 
 primary_hostname = myhost.test.ex
 queue_only
 
index dc23661ac48f5b313e8b55688a4524858da5c244..dcb7fa89e56c097296c4ed178b2a6e8508429d99 100644 (file)
@@ -13,6 +13,10 @@ gecos_name = CALLER_NAME
 chunking_advertise_hosts =
 tls_advertise_hosts =
 
 chunking_advertise_hosts =
 tls_advertise_hosts =
 
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
+
 primary_hostname = myhost.test.ex
 queue_only
 
 primary_hostname = myhost.test.ex
 queue_only
 
index caf17be81bfc7751e9bafee102f49931ad1310df..ce6f2c3795b2670aef5508272592d6c30122c930 100644 (file)
@@ -19,6 +19,9 @@ tls_advertise_requiretls = :
 .ifdef _HAVE_PIPE_CONNECT
 pipelining_connect_advertise_hosts = :
 .endif
 .ifdef _HAVE_PIPE_CONNECT
 pipelining_connect_advertise_hosts = :
 .endif
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
 
 
 # ----- Main settings -----
 
 
 # ----- Main settings -----
index c2eb5cca64d584c276f9621a220b1c62f9b66ea0..67b73cd19e38df9650a5aa8180161a3561b24957 100644 (file)
@@ -14,6 +14,10 @@ gecos_name = CALLER_NAME
 chunking_advertise_hosts = *
 tls_advertise_hosts = ${if eq {SRV}{tls} {*}}
 
 chunking_advertise_hosts = *
 tls_advertise_hosts = ${if eq {SRV}{tls} {*}}
 
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
+
 pipelining_advertise_hosts = :
 
 # ----- Main settings -----
 pipelining_advertise_hosts = :
 
 # ----- Main settings -----
index ff99d9304cca3f059e8ca4010871e51fdb99aa40..6df517e53eafc10e8a3cc49d6cb76a211cba5781 100644 (file)
@@ -13,6 +13,9 @@ tls_advertise_hosts = ${if eq {SRV}{tls} {*}}
 .ifdef _HAVE_PIPE_CONNECT
 pipelining_connect_advertise_hosts =
 .endif
 .ifdef _HAVE_PIPE_CONNECT
 pipelining_connect_advertise_hosts =
 .endif
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
 
 # ----- Main settings -----
 
 
 # ----- Main settings -----
 
index 7da11a528625b61a7b4b73be867f33fdf0944038..c678219db69d03973a716d19d62cd765df318f8d 100644 (file)
@@ -13,6 +13,10 @@ log_file_path = DIR/spool/log/%D-%slog
 gecos_pattern = ""
 gecos_name = CALLER_NAME
 
 gecos_pattern = ""
 gecos_name = CALLER_NAME
 
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
+
 # ----- Main settings -----
 
 acl_smtp_rcpt = check_rcpt
 # ----- Main settings -----
 
 acl_smtp_rcpt = check_rcpt
index 06a85c0894d04ec7cb3a076ef17d727e8a9cead2..2db951d22ab78bd08496d26e03ec64854614aee7 100644 (file)
@@ -22,6 +22,10 @@ dns_cname_loops = 9
 chunking_advertise_hosts =
 tls_advertise_hosts =
 
 chunking_advertise_hosts =
 tls_advertise_hosts =
 
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
+
 pipelining_connect_advertise_hosts = CONNECTCOND
 retry_data_expire = RETRY
 log_selector = +received_recipients +pipelining
 pipelining_connect_advertise_hosts = CONNECTCOND
 retry_data_expire = RETRY
 log_selector = +received_recipients +pipelining
index 3a85deeab82413e812008369fb3cd4cf3a0a4c23..10c31e2554773b935d585534332600a70bbf05d2 100644 (file)
@@ -18,6 +18,10 @@ dns_cname_loops = 9
 chunking_advertise_hosts = *
 tls_advertise_hosts =
 
 chunking_advertise_hosts = *
 tls_advertise_hosts =
 
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
+
 pipelining_connect_advertise_hosts = *
 log_selector = +pipelining
 queue_only
 pipelining_connect_advertise_hosts = *
 log_selector = +pipelining
 queue_only
index c77c439e4760247930ec3ca6cee9d252c1692655..f82434601ab2302abdc8e329a0781b0aa82c99c4 100644 (file)
@@ -18,6 +18,10 @@ dns_cname_loops = 9
 chunking_advertise_hosts =
 tls_advertise_hosts =
 
 chunking_advertise_hosts =
 tls_advertise_hosts =
 
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
+
 pipelining_connect_advertise_hosts = *
 auth_advertise_hosts = *
 log_selector = +pipelining
 pipelining_connect_advertise_hosts = *
 auth_advertise_hosts = *
 log_selector = +pipelining
index 887427a57403b5718df39dc0c961881b933e2882..0502c55b2444f0f45281306c7f84932d81215b08 100644 (file)
@@ -21,6 +21,10 @@ dns_cname_loops = 9
 chunking_advertise_hosts = OPT
 tls_advertise_hosts =
 
 chunking_advertise_hosts = OPT
 tls_advertise_hosts =
 
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
+
 pipelining_connect_advertise_hosts = *
 queue_only
 
 pipelining_connect_advertise_hosts = *
 queue_only
 
index 30d65a146fa358d2a76dff11430271f350c92717..1916770731335d8a07f43f5efd6cc9a794691375 100644 (file)
@@ -23,6 +23,10 @@ chunking_advertise_hosts = OPT
 tls_advertise_hosts = *
 tls_certificate = ${if eq {SERVER}{server}{DIR/aux-fixed/cert1}fail}
 
 tls_advertise_hosts = *
 tls_certificate = ${if eq {SERVER}{server}{DIR/aux-fixed/cert1}fail}
 
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
+
 # Avoid ECDHE key-exchange so that we can wireshark-decode (not TLS1.3)
 .ifdef _HAVE_GNUTLS
 tls_require_ciphers = NORMAL:-KX-ALL:+RSA
 # Avoid ECDHE key-exchange so that we can wireshark-decode (not TLS1.3)
 .ifdef _HAVE_GNUTLS
 tls_require_ciphers = NORMAL:-KX-ALL:+RSA
index 4352f589189eba6fb0f9b1eed8ff220c0ad65e20..d929d53ebbfd95da33b01fd228b7eb57bda4a851 100644 (file)
@@ -27,6 +27,10 @@ tls_certificate = ${if eq {SERVER}{server}{DIR/aux-fixed/cert1}fail}
 tls_require_ciphers = NORMAL:-KX-ALL:+RSA
 .endif
 
 tls_require_ciphers = NORMAL:-KX-ALL:+RSA
 .endif
 
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
+
 pipelining_connect_advertise_hosts = *
 log_selector = +received_recipients +pipelining
 queue_only
 pipelining_connect_advertise_hosts = *
 log_selector = +received_recipients +pipelining
 queue_only
index 8c3c300a5181c7ee5a11890a17caf5071d459d9d..5a840a2958b8cd4d718299624957ecdc1c425b49 100644 (file)
@@ -24,6 +24,10 @@ tls_certificate = ${if eq {SERVER}{server}{DIR/aux-fixed/cert1}fail}
 tls_require_ciphers = NORMAL:-KX-ALL:+RSA
 .endif
 
 tls_require_ciphers = NORMAL:-KX-ALL:+RSA
 .endif
 
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
+
 pipelining_connect_advertise_hosts = *
 auth_advertise_hosts = *
 
 pipelining_connect_advertise_hosts = *
 auth_advertise_hosts = *
 
index 8a8b38f96083cbad51c5ebf29a019184cc84bb9f..92a17d71b8ffed02c4a6811e89034e509e5a01f5 100644 (file)
@@ -25,6 +25,10 @@ tls_certificate = ${if eq {SERVER}{server}{DIR/aux-fixed/cert1}fail}
 tls_require_ciphers = NORMAL:-KX-ALL:+RSA
 .endif
 
 tls_require_ciphers = NORMAL:-KX-ALL:+RSA
 .endif
 
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
+
 pipelining_connect_advertise_hosts = *
 auth_advertise_hosts = *
 
 pipelining_connect_advertise_hosts = *
 auth_advertise_hosts = *
 
index e6c7884365e3d32d8d2819c82bacf22983f1b303..32e138313a4aedd897ee365175c3d45984cb8de1 100644 (file)
@@ -1,6 +1,17 @@
 # Exim test configuration 4650
 
 # Exim test configuration 4650
 
-.include DIR/aux-var/std_conf_prefix
+exim_path = EXIM_PATH
+keep_environment =
+host_lookup_order = bydns
+spool_directory = DIR/spool
+log_file_path = DIR/spool/log/SERVER%slog
+gecos_pattern = ""
+gecos_name = CALLER_NAME
+chunking_advertise_hosts = *
+tls_advertise_hosts =
+.ifdef _HAVE_PIPE_CONNECT
+pipelining_connect_advertise_hosts =
+.endif
 
 primary_hostname = myhost.test.ex
 
 
 primary_hostname = myhost.test.ex
 
index 6e667b4299739fc0f97bc6edba83121aeb00680b..9b33101b39cb26d1ba1064957a04650008b2066b 100644 (file)
@@ -13,6 +13,10 @@ gecos_name = CALLER_NAME
 chunking_advertise_hosts =
 primary_hostname = server1.example.com
 
 chunking_advertise_hosts =
 primary_hostname = server1.example.com
 
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
+
 
 # ----- Main settings -----
 
 
 # ----- Main settings -----
 
index 3309870a3a09ba2aa52ae2892c574d8dcc07bebc..0b2be46a1719e720256e69ebfcf2ee21804442eb 100644 (file)
@@ -13,6 +13,10 @@ gecos_name = CALLER_NAME
 chunking_advertise_hosts =
 primary_hostname = server1.example.com
 
 chunking_advertise_hosts =
 primary_hostname = server1.example.com
 
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
+
 
 # ----- Main settings -----
 
 
 # ----- Main settings -----
 
index 4d41e820bc8bbc222980e51fb7dd43777eb1dab3..53302c50783e961c50d3d446d8aca38429b161c9 100644 (file)
@@ -13,6 +13,10 @@ gecos_name = CALLER_NAME
 chunking_advertise_hosts =
 primary_hostname = server1.example.com
 
 chunking_advertise_hosts =
 primary_hostname = server1.example.com
 
+.ifdef _HAVE_DMARC
+dmarc_tld_file =
+.endif
+
 
 # ----- Main settings -----
 
 
 # ----- Main settings -----
 
index a36c3c6194114784f174a76a42b5a806a0f6318c..0a4e7cf88bd19f1d089e2971f4d1b59005aca86e 100755 (executable)
@@ -974,6 +974,9 @@ RESET_AFTER_EXTRA_LINE_READ:
     s/^waiting for server to shut down\.+ done$/waiting for server to shut down.... done/;
     s/^\/.*postgres /POSTGRES /;
 
     s/^waiting for server to shut down\.+ done$/waiting for server to shut down.... done/;
     s/^\/.*postgres /POSTGRES /;
 
+    # DMARC is not always supported by the build
+    next if /^dmarc_tld_file =/;
+
     # ARC is not always supported by the build
     next if /^arc_sign =/;
     }
     # ARC is not always supported by the build
     next if /^arc_sign =/;
     }
index 9e575693f51c2bb5b970ef35429cef5c7f697d1d..0677a429125821a380598dbe4d0ad8b618e35a95 100644 (file)
@@ -278,7 +278,7 @@ host in helo_verify_hosts? no (option unset)
 host in helo_try_verify_hosts? no (option unset)
 host in helo_accept_junk_hosts? no (option unset)
 using ACL "connect1"
 host in helo_try_verify_hosts? no (option unset)
 host in helo_accept_junk_hosts? no (option unset)
 using ACL "connect1"
-processing "deny" (TESTSUITE/test-config 42)
+processing "deny" (TESTSUITE/test-config 45)
 check hosts = <\n partial-lsearch;TESTSUITE/aux-fixed/0002.lsearch \n 1.2.3.4
 sender host name required, to match against partial-lsearch;TESTSUITE/aux-fixed/0002.lsearch
 looking up host name for V4NET.0.0.1
 check hosts = <\n partial-lsearch;TESTSUITE/aux-fixed/0002.lsearch \n 1.2.3.4
 sender host name required, to match against partial-lsearch;TESTSUITE/aux-fixed/0002.lsearch
 looking up host name for V4NET.0.0.1
@@ -337,7 +337,7 @@ host in helo_verify_hosts? no (option unset)
 host in helo_try_verify_hosts? no (option unset)
 host in helo_accept_junk_hosts? no (option unset)
 using ACL "connect2"
 host in helo_try_verify_hosts? no (option unset)
 host in helo_accept_junk_hosts? no (option unset)
 using ACL "connect2"
-processing "deny" (TESTSUITE/test-config 45)
+processing "deny" (TESTSUITE/test-config 48)
 check hosts = net-lsearch;TESTSUITE/aux-fixed/0002.lsearch
 search_open: lsearch "TESTSUITE/aux-fixed/0002.lsearch"
 search_find: file="TESTSUITE/aux-fixed/0002.lsearch"
 check hosts = net-lsearch;TESTSUITE/aux-fixed/0002.lsearch
 search_open: lsearch "TESTSUITE/aux-fixed/0002.lsearch"
 search_find: file="TESTSUITE/aux-fixed/0002.lsearch"
@@ -367,79 +367,79 @@ search_tidyup called
 >>> host in helo_try_verify_hosts? no (option unset)
 >>> host in helo_accept_junk_hosts? no (option unset)
 >>> using ACL "connect0"
 >>> host in helo_try_verify_hosts? no (option unset)
 >>> host in helo_accept_junk_hosts? no (option unset)
 >>> using ACL "connect0"
->>> processing "accept" (TESTSUITE/test-config 39)
+>>> processing "accept" (TESTSUITE/test-config 42)
 >>> accept: condition test succeeded in ACL "connect0"
 >>> end of ACL "connect0": ACCEPT
 >>> accept: condition test succeeded in ACL "connect0"
 >>> end of ACL "connect0": ACCEPT
->>> processing "accept" (TESTSUITE/test-config 67)
+>>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> using ACL "check_data"
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> using ACL "check_data"
->>> processing "warn" (TESTSUITE/test-config 48)
+>>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
 LOG: 10HmaX-0005vi-00 Subject is: ""
 >>> warn: condition test succeeded in ACL "check_data"
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
 LOG: 10HmaX-0005vi-00 Subject is: ""
 >>> warn: condition test succeeded in ACL "check_data"
->>> processing "deny" (TESTSUITE/test-config 49)
+>>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 LOG: 10HmaX-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 LOG: 10HmaX-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
->>> processing "accept" (TESTSUITE/test-config 67)
+>>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> host in ignore_fromline_hosts? no (option unset)
 >>> using ACL "check_data"
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> host in ignore_fromline_hosts? no (option unset)
 >>> using ACL "check_data"
->>> processing "warn" (TESTSUITE/test-config 48)
+>>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
 LOG: 10HmaY-0005vi-00 Subject is: ""
 >>> warn: condition test succeeded in ACL "check_data"
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
 LOG: 10HmaY-0005vi-00 Subject is: ""
 >>> warn: condition test succeeded in ACL "check_data"
->>> processing "deny" (TESTSUITE/test-config 49)
+>>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 LOG: 10HmaY-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<a@b>
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 LOG: 10HmaY-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<a@b>
->>> processing "accept" (TESTSUITE/test-config 67)
+>>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> host in ignore_fromline_hosts? no (option unset)
 >>> using ACL "check_data"
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> host in ignore_fromline_hosts? no (option unset)
 >>> using ACL "check_data"
->>> processing "warn" (TESTSUITE/test-config 48)
+>>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
 LOG: 10HmaZ-0005vi-00 Subject is: ""
 >>> warn: condition test succeeded in ACL "check_data"
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
 LOG: 10HmaZ-0005vi-00 Subject is: ""
 >>> warn: condition test succeeded in ACL "check_data"
->>> processing "deny" (TESTSUITE/test-config 49)
+>>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 LOG: 10HmaZ-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<c@d>
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 LOG: 10HmaZ-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<c@d>
->>> processing "accept" (TESTSUITE/test-config 67)
+>>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> host in ignore_fromline_hosts? no (option unset)
 >>> using ACL "check_data"
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> host in ignore_fromline_hosts? no (option unset)
 >>> using ACL "check_data"
->>> processing "warn" (TESTSUITE/test-config 48)
+>>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
 LOG: 10HmbA-0005vi-00 Subject is: ""
 >>> warn: condition test succeeded in ACL "check_data"
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
 LOG: 10HmbA-0005vi-00 Subject is: ""
 >>> warn: condition test succeeded in ACL "check_data"
->>> processing "deny" (TESTSUITE/test-config 49)
+>>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 LOG: 10HmbA-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 LOG: 10HmbA-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
->>> processing "accept" (TESTSUITE/test-config 67)
+>>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> host in ignore_fromline_hosts? no (option unset)
 >>> using ACL "check_data"
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> host in ignore_fromline_hosts? no (option unset)
 >>> using ACL "check_data"
->>> processing "warn" (TESTSUITE/test-config 48)
+>>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
 LOG: 10HmbB-0005vi-00 Subject is: ""
 >>> warn: condition test succeeded in ACL "check_data"
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
 LOG: 10HmbB-0005vi-00 Subject is: ""
 >>> warn: condition test succeeded in ACL "check_data"
->>> processing "deny" (TESTSUITE/test-config 49)
+>>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
@@ -453,20 +453,20 @@ LOG: 10HmbB-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<x
 >>> host in helo_try_verify_hosts? no (option unset)
 >>> host in helo_accept_junk_hosts? no (option unset)
 >>> using ACL "connect0"
 >>> host in helo_try_verify_hosts? no (option unset)
 >>> host in helo_accept_junk_hosts? no (option unset)
 >>> using ACL "connect0"
->>> processing "accept" (TESTSUITE/test-config 39)
+>>> processing "accept" (TESTSUITE/test-config 42)
 >>> accept: condition test succeeded in ACL "connect0"
 >>> end of ACL "connect0": ACCEPT
 >>> accept: condition test succeeded in ACL "connect0"
 >>> end of ACL "connect0": ACCEPT
->>> processing "accept" (TESTSUITE/test-config 67)
+>>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> host in ignore_fromline_hosts? no (option unset)
 >>> using ACL "check_data"
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> host in ignore_fromline_hosts? no (option unset)
 >>> using ACL "check_data"
->>> processing "warn" (TESTSUITE/test-config 48)
+>>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: "=?iso-8859-8?Q?_here_we_go=3A_a_string_that_is_going_to_be_encoded=3A_it_will_go_over_the_75-char_limit_by_a_long_way=3B_in_fact_this_one_will_go_over_the_150_character_limit?="
 LOG: 10HmbC-0005vi-00 Subject is: "=?iso-8859-8?Q?_here_we_go=3A_a_string_that_is_going_to_be_encoded=3A_it_will_go_over_the_75-char_limit_by_a_long_way=3B_in_fact_this_one_will_go_over_the_150_character_limit?="
 >>> warn: condition test succeeded in ACL "check_data"
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: "=?iso-8859-8?Q?_here_we_go=3A_a_string_that_is_going_to_be_encoded=3A_it_will_go_over_the_75-char_limit_by_a_long_way=3B_in_fact_this_one_will_go_over_the_150_character_limit?="
 LOG: 10HmbC-0005vi-00 Subject is: "=?iso-8859-8?Q?_here_we_go=3A_a_string_that_is_going_to_be_encoded=3A_it_will_go_over_the_75-char_limit_by_a_long_way=3B_in_fact_this_one_will_go_over_the_150_character_limit?="
 >>> warn: condition test succeeded in ACL "check_data"
->>> processing "deny" (TESTSUITE/test-config 49)
+>>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
@@ -480,20 +480,20 @@ LOG: 10HmbC-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
 >>> host in helo_try_verify_hosts? no (option unset)
 >>> host in helo_accept_junk_hosts? no (option unset)
 >>> using ACL "connect0"
 >>> host in helo_try_verify_hosts? no (option unset)
 >>> host in helo_accept_junk_hosts? no (option unset)
 >>> using ACL "connect0"
->>> processing "accept" (TESTSUITE/test-config 39)
+>>> processing "accept" (TESTSUITE/test-config 42)
 >>> accept: condition test succeeded in ACL "connect0"
 >>> end of ACL "connect0": ACCEPT
 >>> accept: condition test succeeded in ACL "connect0"
 >>> end of ACL "connect0": ACCEPT
->>> processing "accept" (TESTSUITE/test-config 67)
+>>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> host in ignore_fromline_hosts? no (option unset)
 >>> using ACL "check_data"
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> host in ignore_fromline_hosts? no (option unset)
 >>> using ACL "check_data"
->>> processing "warn" (TESTSUITE/test-config 48)
+>>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: " here we go: a string that is going to be encoded: it will go over the 75-char limit by a long way; in fact this one will go over the 150 character limit"
 LOG: 10HmbD-0005vi-00 Subject is: " here we go: a string that is going to be encoded: it will go over the 75-char limit by a long way; in fact this one will go over the 150 character limit"
 >>> warn: condition test succeeded in ACL "check_data"
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: " here we go: a string that is going to be encoded: it will go over the 75-char limit by a long way; in fact this one will go over the 150 character limit"
 LOG: 10HmbD-0005vi-00 Subject is: " here we go: a string that is going to be encoded: it will go over the 75-char limit by a long way; in fact this one will go over the 150 character limit"
 >>> warn: condition test succeeded in ACL "check_data"
->>> processing "deny" (TESTSUITE/test-config 49)
+>>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY