Expansions: make ${authresults } usable in a named ACL
authorJeremy Harris <jgh146exb@wizmail.org>
Sun, 18 Feb 2018 16:22:52 +0000 (16:22 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Sun, 18 Feb 2018 16:22:52 +0000 (16:22 +0000)
This will be more common than directly in the acl_smtp_data option,
and suffers one less expansion in operation.

src/src/dkim.c
src/src/expand.c
src/src/smtp_in.c
src/src/spf.c
test/confs/3403
test/confs/4500
test/stderr/4507

index 4fe4a11ab41ff48ba4d810464822cb8c03514706..ec5ba494b95bd6edf99f6ec6714707db31f6e6a0 100644 (file)
@@ -803,7 +803,7 @@ pdkim_signature * sig;
 
 for (sig = dkim_signatures; sig; sig = sig->next)
   {
-  g = string_catn(g, US";\\n\\tdkim=", 10);
+  g = string_catn(g, US";\n\tdkim=", 8);
 
   if (sig->verify_status & PDKIM_VERIFY_POLICY)
     g = string_append(g, 5,
index 44e8e1ba0f781815a146170a641699c8708731e9..d49f943b070e270cdfbf838d19afb141e0711564 100644 (file)
@@ -1666,11 +1666,11 @@ static gstring *
 authres_iprev(gstring * g)
 {
 if (sender_host_name)
-  return string_append(g, 3, US";\\n\\tiprev=pass (", sender_host_name, US")");
+  return string_append(g, 3, US";\n\tiprev=pass (", sender_host_name, US")");
 if (host_lookup_deferred)
-  return string_catn(g, US";\\n\\tiprev=temperror", 21);
+  return string_catn(g, US";\n\tiprev=temperror", 19);
 if (host_lookup_failed)
-  return string_catn(g, US";\\n\\tiprev=fail", 15);
+  return string_catn(g, US";\n\tiprev=fail", 13);
 return g;
 }
 
index 1b7df5c30a5b2e5cf39b52fedd3b5b032277b8bb..d804bc7d262c918d3741d577d5856619f15884f2 100644 (file)
@@ -5751,7 +5751,7 @@ authres_smtpauth(gstring * g)
 if (!sender_host_authenticated)
   return g;
 
-g = string_append(g, 4, US";\\n\\tauth=pass"
+g = string_append(g, 4, US";\n\tauth=pass"
        " (", sender_host_authenticated, US") smtp.auth=", authenticated_id);
 if (authenticated_sender)
   g = string_append(g, 2, US" smtp.mailfrom=", authenticated_sender);
index a2f93b0ce535c4862f0c60d60d44b4c5aa4801e0..12994a690d226b363d1b7a4282cb889925b6b1fa 100644 (file)
@@ -153,7 +153,7 @@ authres_spf(gstring * g)
 {
 if (!spf_result) return g;
 
-return string_append(g, 4, US";\\n\\tspf=", spf_result,
+return string_append(g, 4, US";\n\tspf=", spf_result,
          US" smtp.mailfrom=", expand_string(US"$sender_address_domain"));
 }
 
index 79fb73fe1209e93814b72c822eacf5deaba525ae..b8c8086b632af06e27da74c47c568248b1f9749a 100644 (file)
@@ -7,7 +7,7 @@ primary_hostname = myhost.test.ex
 # ----- Main settings -----
 
 acl_smtp_rcpt = accept
-acl_smtp_data = accept add_header = :at_start:${authresults {$primary_hostname}}
+acl_smtp_data = check_data
 
 
 # ----- Authentication -----
@@ -27,6 +27,12 @@ plain1:
   server_mail_auth_condition = ${if eq{$authenticated_id}{userx}{yes}}
 
 
+# ----- ACL -----
+begin acl
+
+check_data:
+  accept add_header = :at_start:${authresults {$primary_hostname}}
+
 # ----- Routers -----
 
 begin routers
index a952758ae89862ea139c30acb22654b71c6c85c7..502de4a1972dcecab3d0523ac126b44f503571c1 100644 (file)
@@ -10,7 +10,7 @@ primary_hostname = myhost.test.ex
 
 acl_smtp_rcpt = accept
 acl_smtp_dkim = check_dkim
-acl_smtp_data = accept logwrite = ${authresults {$primary_hostname}}
+acl_smtp_data = check_data
 
 log_selector = +dkim_verbose
 
@@ -37,4 +37,7 @@ check_dkim:
   accept
 .endif
 
+check_data:
+  accept logwrite = ${authresults {$primary_hostname}}
+
 # End
index 42dd96980a30961c4a194114515eb1b1cafe2b60..e1961ceb30e1795ec245033a8fc87203f5ea1dc2 100644 (file)
@@ -23,11 +23,12 @@ LOG: 10HmaX-0005vi-00 signer: test.ex bits: 1024
 >>> accept: condition test succeeded in ACL "check_dkim"
 >>> end of ACL "check_dkim": ACCEPT
 LOG: 10HmaX-0005vi-00 DKIM: d=test.ex s=sel c=simple/simple a=rsa-sha1 b=1024 [verification succeeded]
+>>> using ACL "check_data"
 >>> processing "accept"
->>> check logwrite = Authentication-Results: myhost.test.ex;\n\tdkim=pass header.d=test.ex header.s=sel header.a=rsa-sha1
+>>> check logwrite = ${authresults {$primary_hostname}}
 >>>                = Authentication-Results: myhost.test.ex;
 >>>    dkim=pass header.d=test.ex header.s=sel header.a=rsa-sha1
 LOG: 10HmaX-0005vi-00 Authentication-Results: myhost.test.ex;\n        dkim=pass header.d=test.ex header.s=sel header.a=rsa-sha1
->>> accept: condition test succeeded in inline ACL
->>> end of inline ACL: ACCEPT
+>>> accept: condition test succeeded in ACL "check_data"
+>>> end of ACL "check_data": ACCEPT
 LOG: 10HmaX-0005vi-00 <= CALLER@bloggs.com H=(xxx) [127.0.0.1] P=smtp S=sss DKIM=test.ex id=qwerty1234@disco-zombie.net