# acl condition and variables
#
-# It is rather difficult to properly test spf. We use libspf2 to do the work, and it
-# does the DNS lookups, so we cannot intercept them in the testsuite's usual fashion
-# to provide values for testcases.
+# The 127.0.0.1 source addr seems to be a builtin in the spf library; no dns lookup is done.
+# HOSTIPV4 does get a series of lookups (see server debug output to verify that).
#
-# For now just check that what should be working syntax does not cause us to fall over.
-# Be careful with envelope-domains and IPs used for testcases, as real DNS lookups will be done.
+# The libspf2 object stack is built with an exim-specific DNS lookup base object,
+# 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
+exim -bd -DSERVER=server -oX PORT_D:PORT_S:PORT_D2
****
-client 127.0.0.1 PORT_D
+client 127.0.0.1 PORT_S
??? 220
helo testclient
??? 250
??? 250
quit
****
-client 127.0.0.1 PORT_D
+client HOSTIPV4 PORT_S
??? 220
helo testclient
??? 250
??? 250
quit
****
-client 127.0.0.1 PORT_S
+client 127.0.0.1 PORT_D
+??? 220
+helo testclient
+??? 250
+mail from:<c@example.com>
+??? 250
+rcpt to:<fred@test.ex>
+??? 250
+quit
+****
+client HOSTIPV4 PORT_D
+??? 220
+helo testclient
+??? 250
+mail from:<b@test.example.com>
+??? 250
+rcpt to:<fred@test.ex>
+??? 550
+quit
+****
+client 127.0.0.1 PORT_D2
??? 220
helo testclient
??? 250
mail from:<c@example.com>
??? 250
rcpt to:<fred@test.ex>
+??? 550
+quit
+****
+#
+#
+#
+#
+#
+# helo name gets used when mailfrom is null
+client HOSTIPV4 PORT_S
+??? 220
+helo passme.helo.example.com
+??? 250
+mail from:<>
+??? 250
+rcpt to:<fred@test.ex>
+??? 250
+quit
+****
+#
+# helo name is overridden when a mailfrom is set
+client HOSTIPV4 PORT_S
+??? 220
+helo passme.helo.example.com
??? 250
+mail from:<failme@example.com>
+??? 250
+rcpt to:<fred@test.ex>
+??? 550
quit
****
#