SPF: enhance A-R result
authorJeremy Harris <jgh146exb@wizmail.org>
Sat, 1 Aug 2020 20:16:19 +0000 (21:16 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Sat, 1 Aug 2020 20:16:19 +0000 (21:16 +0100)
doc/doc-txt/ChangeLog
src/src/spf.c
test/log/4600
test/scripts/4600-SPF/4600
test/stdout/4600

index 60627364da6d803bc0140fad664fe8992904a3f8..59d2ad659290f0f57d71514dd3ac961b6a694964 100644 (file)
@@ -92,6 +92,10 @@ JH/18 Bug 2617: Fix a taint trap in parse_fix_phrase().  Previously when the
       rewrite with the "h" flag, by using the "-F" command-line option, or
       by using a "name=" option on a control=submission ACL modifier.
 
       rewrite with the "h" flag, by using the "-F" command-line option, or
       by using a "name=" option on a control=submission ACL modifier.
 
+JH/19 SPF: change the Authentication-Results expansion component to give
+      smtp.helo when the sender domain is empty.  Previously it gave
+      "smtp.mailfrom=<>"
+
 
 Exim version 4.94
 -----------------
 
 Exim version 4.94
 -----------------
index 48f26f31593f1b627ce047a8762d33d075aaf3ac..3a1912a918573522b9608251056a107205467e87 100644 (file)
@@ -402,8 +402,12 @@ if (spf_result_guessed)
   g = string_cat(g, US" (best guess record for domain)");
 
 s = expand_string(US"$sender_address_domain");
   g = string_cat(g, US" (best guess record for domain)");
 
 s = expand_string(US"$sender_address_domain");
+if (s && *s)
+  return string_append(g, 2, US" smtp.mailfrom=", s);
+
+s = sender_helo_name;
 return s && *s
 return s && *s
-  ? string_append(g, 2, US" smtp.mailfrom=", s)
+  ? string_append(g, 2, US" smtp.helo=", s)
   : string_cat(g, US" smtp.mailfrom=<>");
 }
 
   : string_cat(g, US" smtp.mailfrom=<>");
 }
 
index de8432e4934475b331860b4adb552fac1e43ed61..065cd544ccabfffbe10d866156772d5c95d6a96c 100644 (file)
@@ -1,6 +1,6 @@
 
 ******** SERVER ********
 
 ******** SERVER ********
-1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port PORT_D port PORT_S port PORT_N
+1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port PORT_D port PORT_S port PORT_D2
 1999-03-02 09:44:33 spf_result         pass
 1999-03-02 09:44:33 spf_header_comment myhost.test.ex: localhost is always allowed.
 1999-03-02 09:44:33 spf_smtp_comment   
 1999-03-02 09:44:33 spf_result         pass
 1999-03-02 09:44:33 spf_header_comment myhost.test.ex: localhost is always allowed.
 1999-03-02 09:44:33 spf_smtp_comment   
@@ -28,3 +28,8 @@
 1999-03-02 09:44:33 spf_received       
 1999-03-02 09:44:33 Authentication-Results: myhost.test.ex
 1999-03-02 09:44:33 H=(testclient) [127.0.0.1] F=<c@example.com> rejected RCPT <fred@test.ex>
 1999-03-02 09:44:33 spf_received       
 1999-03-02 09:44:33 Authentication-Results: myhost.test.ex
 1999-03-02 09:44:33 H=(testclient) [127.0.0.1] F=<c@example.com> rejected RCPT <fred@test.ex>
+1999-03-02 09:44:33 spf_result         pass
+1999-03-02 09:44:33 spf_header_comment myhost.test.ex: localhost is always allowed.
+1999-03-02 09:44:33 spf_smtp_comment   
+1999-03-02 09:44:33 spf_received       Received-SPF: pass (myhost.test.ex: localhost is always allowed.) client-ip=127.0.0.1; envelope-from=postmaster@example.com; helo=example.com;
+1999-03-02 09:44:33 Authentication-Results: myhost.test.ex;\n  spf=pass smtp.helo=example.com
index 8490288e19dd3a186c2a41c78b2e07de5ebaaa0c..cb67d19ae21d1bc2e56bb4d8fea526f25c063189 100644 (file)
@@ -7,7 +7,7 @@
 # so the testsuite intercept to fakedns works.  Be careful of names and addresses
 # used, as nonhandled lookups are passed on to real DNS.
 #
 # so the testsuite intercept to fakedns works.  Be careful of names and addresses
 # used, as nonhandled lookups are passed on to real DNS.
 #
-exim -bd -DSERVER=server -oX PORT_D:PORT_S:PORT_N
+exim -bd -DSERVER=server -oX PORT_D:PORT_S:PORT_D2
 ****
 client 127.0.0.1 PORT_S
 ??? 220
 ****
 client 127.0.0.1 PORT_S
 ??? 220
@@ -49,7 +49,7 @@ rcpt to:<fred@test.ex>
 ??? 550
 quit
 ****
 ??? 550
 quit
 ****
-client 127.0.0.1 PORT_N
+client 127.0.0.1 PORT_D2
 ??? 220
 helo testclient
 ??? 250
 ??? 220
 helo testclient
 ??? 250
@@ -60,4 +60,15 @@ rcpt to:<fred@test.ex>
 quit
 ****
 #
 quit
 ****
 #
+client 127.0.0.1 PORT_S
+??? 220
+helo example.com
+??? 250
+mail from:<>
+??? 250
+rcpt to:<fred@test.ex>
+??? 250
+quit
+****
+#
 killdaemon
 killdaemon
index 030d1ebd44b7759859c09c4a878cd6ba2c0f8ed6..a0d3eed8bb7abfaf29027712f7e30eb05fd59ddc 100644 (file)
@@ -54,7 +54,7 @@ Connecting to ip4.ip4.ip4.ip4 port 1225 ... connected
 <<< 550 Administrative prohibition
 >>> quit
 End of script
 <<< 550 Administrative prohibition
 >>> quit
 End of script
-Connecting to 127.0.0.1 port 1223 ... connected
+Connecting to 127.0.0.1 port 1226 ... connected
 ??? 220
 <<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
 >>> helo testclient
 ??? 220
 <<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
 >>> helo testclient
@@ -68,3 +68,17 @@ Connecting to 127.0.0.1 port 1223 ... connected
 <<< 550 Administrative prohibition
 >>> quit
 End of script
 <<< 550 Administrative prohibition
 >>> quit
 End of script
+Connecting to 127.0.0.1 port 1224 ... connected
+??? 220
+<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+>>> helo example.com
+??? 250
+<<< 250 myhost.test.ex Hello example.com [127.0.0.1]
+>>> mail from:<>
+??? 250
+<<< 250 OK
+>>> rcpt to:<fred@test.ex>
+??? 250
+<<< 250 Accepted
+>>> quit
+End of script