summaryrefslogtreecommitdiff
path: root/test/scripts
diff options
context:
space:
mode:
authorJeremy Harris <jgh146exb@wizmail.org>2018-11-03 23:13:34 +0000
committerJeremy Harris <jgh146exb@wizmail.org>2018-11-05 16:55:33 +0000
commitee8b809061baea861fc87c41bcb72a62d76b0047 (patch)
tree015dadad49f70deb9a2bc0887452ced9824b9f8b /test/scripts
parentb536a578fbabdc9d39da53d54a8d7700ba537431 (diff)
Squashed commit of PIPE_CONNECT
Diffstat (limited to 'test/scripts')
-rw-r--r--test/scripts/4050-pipe-conn/4050103
-rw-r--r--test/scripts/4050-pipe-conn/405159
-rw-r--r--test/scripts/4050-pipe-conn/4052243
-rw-r--r--test/scripts/4050-pipe-conn/405331
-rw-r--r--test/scripts/4050-pipe-conn/REQUIRES1
-rw-r--r--test/scripts/4056-pipe-conn-auth/405631
-rw-r--r--test/scripts/4056-pipe-conn-auth/REQUIRES2
-rw-r--r--test/scripts/4058-pipe-conn-tfo/405878
-rw-r--r--test/scripts/4058-pipe-conn-tfo/REQUIRES2
-rw-r--r--test/scripts/4060-pipe-conn-gnutls/406071
-rw-r--r--test/scripts/4060-pipe-conn-gnutls/406143
-rw-r--r--test/scripts/4060-pipe-conn-gnutls/REQUIRES2
-rw-r--r--test/scripts/4062-pipe-conn-openssl/406272
-rw-r--r--test/scripts/4062-pipe-conn-openssl/406343
-rw-r--r--test/scripts/4062-pipe-conn-openssl/REQUIRES2
-rw-r--r--test/scripts/4064-pipe-conn-gnutls-auth/406460
-rw-r--r--test/scripts/4064-pipe-conn-gnutls-auth/406532
-rw-r--r--test/scripts/4064-pipe-conn-gnutls-auth/REQUIRES3
-rw-r--r--test/scripts/4066-pipe-conn-openssl-auth/406661
-rw-r--r--test/scripts/4066-pipe-conn-openssl-auth/406732
-rw-r--r--test/scripts/4066-pipe-conn-openssl-auth/REQUIRES3
21 files changed, 974 insertions, 0 deletions
diff --git a/test/scripts/4050-pipe-conn/4050 b/test/scripts/4050-pipe-conn/4050
new file mode 100644
index 000000000..9dc04576f
--- /dev/null
+++ b/test/scripts/4050-pipe-conn/4050
@@ -0,0 +1,103 @@
+# pipelined connect, server
+
+# not advertised when not wanted
+exim -bd -DSERVER=server -oX PORT_D
+****
+#
+client 127.0.0.1 PORT_D
+??? 220
+EHLO testclient
+??? 250-
+??? 250-SIZE
+??? 250-8BITMIME
+??? 250-PIPELINING
+??? 250 HELP
+QUIT
+??? 221
+****
+killdaemon
+#
+# advertised when wanted
+exim -bd -DSERVER=server -DCONNECTCOND=127.0.0.1 -oX PORT_D
+****
+#
+client 127.0.0.1 PORT_D
+??? 220
+EHLO testclient
+??? 250-
+??? 250-SIZE
+??? 250-8BITMIME
+??? 250-PIPELINING
+??? 250-X_PIPE_CONNECT
+??? 250 HELP
+QUIT
+??? 221
+****
+killdaemon
+#
+# Client does not wait for banner
+exim -bd -DSERVER=server -DCONNECTCOND=127.0.0.1 -oX PORT_D
+****
+#
+client 127.0.0.1 PORT_D
+EHLO testclient
+??? 220
+??? 250-
+??? 250-SIZE
+??? 250-8BITMIME
+??? 250-PIPELINING
+??? 250-X_PIPE_CONNECT
+??? 250 HELP
+QUIT
+??? 221
+****
+# No banner wait; pipelined MAIL
+client 127.0.0.1 PORT_D
+EHLO testclient\r\nMAIL FROM:<a@test.ex>
+??? 220
+??? 250-
+??? 250-SIZE
+??? 250-8BITMIME
+??? 250-PIPELINING
+??? 250-X_PIPE_CONNECT
+??? 250 HELP
+??? 250
+QUIT
+??? 221
+****
+# No banner wait; pipelined MAIL,RCPT
+client 127.0.0.1 PORT_D
+EHLO testclient\r\nMAIL FROM:<a@test.ex>\r\nRCPT TO:<a@test.ex>
+??? 220
+??? 250-
+??? 250-SIZE
+??? 250-8BITMIME
+??? 250-PIPELINING
+??? 250-X_PIPE_CONNECT
+??? 250 HELP
+??? 250
+??? 250
+QUIT
+??? 221
+****
+# No banner wait; pipelined MAIL,RCPT,DATA
+client 127.0.0.1 PORT_D
+EHLO testclient\r\nMAIL FROM:<a@test.ex>\r\nRCPT TO:<a@test.ex>\r\nDATA
+??? 220
+??? 250-
+??? 250-SIZE
+??? 250-8BITMIME
+??? 250-PIPELINING
+??? 250-X_PIPE_CONNECT
+??? 250 HELP
+??? 250
+??? 250
+??? 354
+.
+??? 250
+QUIT
+??? 221
+****
+#
+killdaemon
+no_msglog_check
diff --git a/test/scripts/4050-pipe-conn/4051 b/test/scripts/4050-pipe-conn/4051
new file mode 100644
index 000000000..45e4b7410
--- /dev/null
+++ b/test/scripts/4050-pipe-conn/4051
@@ -0,0 +1,59 @@
+# pipelined-connect, client
+#
+# Not attempted when not advertised
+exim -bd -DSERVER=server -oX PORT_D
+****
+#
+exim notadvertised@test.ex
+Subject: test 1
+
+****
+exim -DCONTROL=127.0.0.1 -q
+****
+killdaemon
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+# Not attempted without a cache entry
+exim -bd -DSERVER=server -DCONNECTCOND=* -oX PORT_D
+****
+#
+exim nocache@test.ex
+Subject test 2
+
+****
+exim -DCONTROL=127.0.0.1 -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+# Go for it. This one should do early-pipelinng.
+exim hascache@test.ex
+Subject test 3
+
+****
+exim -DCONTROL=127.0.0.1 -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+# Check that client doesn't try when not told to, even now there is
+# a cache entry
+exim clientno@test.ex
+Subject test 4
+
+****
+exim -DCONTROL=: -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+killdaemon
+#
+no_msglog_check
diff --git a/test/scripts/4050-pipe-conn/4052 b/test/scripts/4050-pipe-conn/4052
new file mode 100644
index 000000000..d41cf8123
--- /dev/null
+++ b/test/scripts/4050-pipe-conn/4052
@@ -0,0 +1,243 @@
+# pipelined-connect, cache invalidation
+#
+#
+# Not attempted without a cache entry
+exim -bd -DSERVER=server -DCONNECTCOND=* -oX PORT_D
+****
+#
+exim nocache@test.ex
+Subject test 1
+
+****
+exim -DCONTROL=127.0.0.1 -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+# Go for it. This one should do early-pipelinng.
+exim hascache@test.ex
+Subject test 2
+
+****
+exim -DCONTROL=127.0.0.1 -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+# Check that client doesn't try when the cache entry is too old
+# It will however create a new entry
+sleep 2
+#
+exim client_old@test.ex
+Subject test 3
+
+****
+exim -DRETRY=1s -DCONTROL=127.0.0.1 -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+killdaemon
+#
+#
+#
+sudo rm DIR/spool/db/misc
+#
+# Check that the cache is invalidated on SMTP errors from the server for the banner
+#
+server PORT_D 3
+>220 banner
+<EHLO
+>250-esmtp-resp
+>250-PIPELINING
+>250-X_PIPE_CONNECT
+>250 ok
+<MAIL
+>250 mail-from accepted
+<RCPT
+>250 rcpt-to accepted
+<DATA
+>354 data go-ahead
+.
+>250 message accepted
+<QUIT
+>220 bye
+*eof
+>220 banner
+<EHLO
+>250-esmtp-resp
+>250-PIPELINING
+>250-X_PIPE_CONNECT
+>250 ok
+<MAIL
+>250 mail-from accepted
+<RCPT
+>250 rcpt-to accepted
+<DATA
+>354 data go-ahead
+.
+>250 message accepted
+<QUIT
+>220 bye
+*eof
+*sleep 2
+<EHLO
+<MAIL
+<RCPT
+<DATA
+>450 sorry no banner for you today
+>550 sync error
+>550 sync error
+>550 sync error
+>550 sync error
+<QUIT
+>>220 bye
+*eof
+****
+exim -DCONTROL=127.0.0.1 -odi nocache2@test.ex withcache2@test.ex badbanner@test.ex
+body 2
+****
+#
+# Check that the cache is not invalidated on SMTP errors from the server after early-pipelining
+#
+server PORT_D 6
+>220 banner
+<EHLO
+>250-esmtp-resp
+>250-PIPELINING
+>250-X_PIPE_CONNECT
+>250 ok
+<MAIL
+>250 mail-from accepted
+<RCPT
+>250 rcpt-to accepted
+<DATA
+>354 data go-ahead
+.
+>250 message accepted
+<QUIT
+>220 bye
+*eof
+>220 banner
+<EHLO
+>250-esmtp-resp
+>250-PIPELINING
+>250-X_PIPE_CONNECT
+>250 ok
+<MAIL
+>250 mail-from accepted
+<RCPT
+>250 rcpt-to accepted
+<DATA
+>354 data go-ahead
+.
+>250 message accepted
+<QUIT
+>220 bye
+*eof
+*sleep 2
+<EHLO
+<MAIL
+<RCPT
+<DATA
+>220 banner
+>250-esmtp-resp
+>250-PIPELINING
+>250-X_PIPE_CONNECT
+>250 ok
+>250 mail good
+>250 rcpt good
+>550 obscure data error
+<QUIT
+>>220 bye
+*eof
+*sleep 2
+<EHLO
+<MAIL
+<RCPT
+<DATA
+>220 banner
+>250-esmtp-resp
+>250-PIPELINING
+>250-X_PIPE_CONNECT
+>250 ok
+>250 mail good
+>550 rcpt refused
+>550 data cmd rejected - no valid recipient
+<QUIT
+>>220 bye
+*eof
+*sleep 2
+<EHLO
+<MAIL
+<RCPT
+<DATA
+>220 banner
+>250-esmtp-resp
+>250-PIPELINING
+>250-X_PIPE_CONNECT
+>250 ok
+>550 mail cmd refused
+>550 rcpt cmd rejected - no valid mail
+>550 data cmd rejected - no valid mail
+<QUIT
+>>220 bye
+*eof
+*sleep 2
+>220 banner
+<EHLO
+>250-esmtp-resp
+>250-PIPELINING
+>250-X_PIPE_CONNECT
+>250 ok
+<MAIL
+>250 mail-from accepted
+<RCPT
+>250 rcpt-to accepted
+<DATA
+>354 data go-ahead
+.
+>250 message accepted
+<QUIT
+>220 bye
+*eof
+****
+exim -DCONTROL=127.0.0.1 -odi nocache@test.ex withcache@test.ex baddata@test.ex badrcpt@test.ex badmail@test.ex withcache2@test.ex
+body
+****
+#
+#
+# Check that the cache is updated on a change of advertised extensions
+# The conn will be made pipelined anyway (because we don't find out early)
+# but it's the DB dump that matters. Unfortunately the dump doesn't show
+# us the (binary) record content, only the key. So you need to look at the
+# debug output after all.
+server PORT_D 1
+>220 banner
+<EHLO
+>250-esmtp-resp
+>250-PIPELINING
+>250-X_PIPE_CONNECT
+>250-STARTTLS
+>250 ok
+<MAIL
+>250 mail-from accepted
+<RCPT
+>250 rcpt-to accepted
+<DATA
+>354 data go-ahead
+.
+>250 message accepted
+<QUIT
+>220 bye
+*eof
+****
+exim -d-all+transport -DCONTROL=127.0.0.1 -odi extchange@test.ex
+body
+****
+dump misc
+#
+no_msglog_check
diff --git a/test/scripts/4050-pipe-conn/4053 b/test/scripts/4050-pipe-conn/4053
new file mode 100644
index 000000000..eea284f6e
--- /dev/null
+++ b/test/scripts/4050-pipe-conn/4053
@@ -0,0 +1,31 @@
+# CHUNKING
+#
+# Not attempted without a cache entry
+exim -bd -DSERVER=server -oX PORT_D
+****
+#
+exim a@test.ex
+Subject test 1
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+# Go for it. This one should do early-pipelinng.
+exim b@test.ex
+Subject test 2
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+killdaemon
+#
+no_msglog_check
diff --git a/test/scripts/4050-pipe-conn/REQUIRES b/test/scripts/4050-pipe-conn/REQUIRES
new file mode 100644
index 000000000..fd2535fa5
--- /dev/null
+++ b/test/scripts/4050-pipe-conn/REQUIRES
@@ -0,0 +1 @@
+support Experimental_PIPE_CONNECT
diff --git a/test/scripts/4056-pipe-conn-auth/4056 b/test/scripts/4056-pipe-conn-auth/4056
new file mode 100644
index 000000000..403cf621c
--- /dev/null
+++ b/test/scripts/4056-pipe-conn-auth/4056
@@ -0,0 +1,31 @@
+# AUTH
+#
+# Not attempted without a cache entry
+exim -bd -DSERVER=server -oX PORT_D
+****
+#
+exim a@test.ex
+Subject test 1
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+# Go for it. This one should do (limited) early-pipelinng.
+exim b@test.ex
+Subject test 2
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+killdaemon
+#
+no_msglog_check
diff --git a/test/scripts/4056-pipe-conn-auth/REQUIRES b/test/scripts/4056-pipe-conn-auth/REQUIRES
new file mode 100644
index 000000000..9ae94aaaf
--- /dev/null
+++ b/test/scripts/4056-pipe-conn-auth/REQUIRES
@@ -0,0 +1,2 @@
+support Experimental_PIPE_CONNECT
+authenticator plaintext
diff --git a/test/scripts/4058-pipe-conn-tfo/4058 b/test/scripts/4058-pipe-conn-tfo/4058
new file mode 100644
index 000000000..3a388a2d9
--- /dev/null
+++ b/test/scripts/4058-pipe-conn-tfo/4058
@@ -0,0 +1,78 @@
+# Early-pipelining, with TFO
+#
+#
+# Packet delays so we can see TFO operational in packet captures
+sudo perl
+system ("tc qdisc add dev lo root netem delay 50ms");
+****
+#
+# Wipe any stored TFO cookie, to start from known state.
+sudo perl
+system ("ip tcp_metrics delete 127.0.0.1");
+****
+#
+#
+exim -bd -DSERVER=server -oX PORT_D
+****
+#
+# No early-pipe cache yet. Run one through to prime it;
+# this should not use early-pipe despite both the client & server being enabled.
+# Should also prime the TFO cookie cache.
+exim nocache@test.ex
+Subject: tfo test
+
+Testing
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+# Having primed the cache, this one should use it.
+exim hascache@test.ex
+Subject: tfo test 2
+
+Testing
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+killdaemon
+#
+# Again, with CHUNKING
+sudo rm DIR/spool/db/misc
+exim -bd -DSERVER=server -DOPT=* -oX PORT_D
+****
+#
+exim nocache@test.ex
+Subject: tfo test 3
+
+Testing
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+exim chunking@test.ex
+Subject: tfo test 4
+
+Testing
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+killdaemon
+#
+sudo perl
+system ("tc qdisc delete dev lo root");
+****
+#
+no_msglog_check
diff --git a/test/scripts/4058-pipe-conn-tfo/REQUIRES b/test/scripts/4058-pipe-conn-tfo/REQUIRES
new file mode 100644
index 000000000..c18c49b2e
--- /dev/null
+++ b/test/scripts/4058-pipe-conn-tfo/REQUIRES
@@ -0,0 +1,2 @@
+support Experimental_PIPE_CONNECT
+support TCP_Fast_Open
diff --git a/test/scripts/4060-pipe-conn-gnutls/4060 b/test/scripts/4060-pipe-conn-gnutls/4060
new file mode 100644
index 000000000..b07c5c07d
--- /dev/null
+++ b/test/scripts/4060-pipe-conn-gnutls/4060
@@ -0,0 +1,71 @@
+# starttls
+#
+# Not attempted without a cache entry
+exim -bd -DSERVER=server -oX PORT_D
+****
+#
+exim nocache@test.ex
+Subject test 1
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+# Go for it. This one should do early-pipelinng.
+exim hascache@test.ex
+Subject test 2
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+# Check that client doesn't try when not told to, even now there is
+# a cache entry
+exim clientno@test.ex
+Subject test 3
+
+****
+exim -DCONTROL=: -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+killdaemon
+#
+#
+# And again with CHUNKING
+sudo rm DIR/spool/db/misc
+exim -bd -DSERVER=server -DOPT=* -oX PORT_D
+****
+#
+exim nocache@test.ex
+Subject test 4
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+# Go for it
+exim chunking@test.ex
+Subject test 5
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+killdaemon
+no_msglog_check
diff --git a/test/scripts/4060-pipe-conn-gnutls/4061 b/test/scripts/4060-pipe-conn-gnutls/4061
new file mode 100644
index 000000000..e4922b86b
--- /dev/null
+++ b/test/scripts/4060-pipe-conn-gnutls/4061
@@ -0,0 +1,43 @@
+# tls-on-connect
+#
+# Not attempted without a cache entry
+exim -bd -DSERVER=server -oX PORT_D
+****
+#
+exim nocache@test.ex
+Subject test 1
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+# Go for it. This one should do early-pipelinng.
+exim hascache@test.ex
+Subject test 2
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+# Check that client doesn't try when not told to, even now there is
+# a cache entry
+exim clientno@test.ex
+Subject test 3
+
+****
+exim -DCONTROL=: -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+killdaemon
+#
+no_msglog_check
diff --git a/test/scripts/4060-pipe-conn-gnutls/REQUIRES b/test/scripts/4060-pipe-conn-gnutls/REQUIRES
new file mode 100644
index 000000000..36c96e737
--- /dev/null
+++ b/test/scripts/4060-pipe-conn-gnutls/REQUIRES
@@ -0,0 +1,2 @@
+support Experimental_PIPE_CONNECT
+support GnuTLS
diff --git a/test/scripts/4062-pipe-conn-openssl/4062 b/test/scripts/4062-pipe-conn-openssl/4062
new file mode 100644
index 000000000..87b156c6c
--- /dev/null
+++ b/test/scripts/4062-pipe-conn-openssl/4062
@@ -0,0 +1,72 @@
+# starttls
+#
+# Not attempted without a cache entry
+exim -bd -DSERVER=server -oX PORT_D
+****
+#
+exim a@test.ex
+Subject test 1
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+# Go for it. This one should do early-pipelinng.
+exim b@test.ex
+Subject test 2
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+# Check that client doesn't try when not told to, even now there is
+# a cache entry
+exim c@test.ex
+Subject test 3
+
+****
+exim -DCONTROL=: -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+killdaemon
+#
+#
+# And again with CHUNKING
+sudo rm DIR/spool/db/misc
+exim -bd -DSERVER=server -DOPT=* -oX PORT_D
+****
+#
+exim nocache@test.ex
+Subject test 4
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+# Go for it
+exim chunking@test.ex
+Subject test 5
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+killdaemon
+#
+no_msglog_check
diff --git a/test/scripts/4062-pipe-conn-openssl/4063 b/test/scripts/4062-pipe-conn-openssl/4063
new file mode 100644
index 000000000..cdf2d96a1
--- /dev/null
+++ b/test/scripts/4062-pipe-conn-openssl/4063
@@ -0,0 +1,43 @@
+# tls-on-connect
+#
+# Not attempted without a cache entry
+exim -bd -DSERVER=server -oX PORT_D
+****
+#
+exim a@test.ex
+Subject test 1
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+# Go for it. This one should do early-pipelinng.
+exim b@test.ex
+Subject test 2
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+# Check that client doesn't try when not told to, even now there is
+# a cache entry
+exim c@test.ex
+Subject test 3
+
+****
+exim -DCONTROL=: -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+killdaemon
+#
+no_msglog_check
diff --git a/test/scripts/4062-pipe-conn-openssl/REQUIRES b/test/scripts/4062-pipe-conn-openssl/REQUIRES
new file mode 100644
index 000000000..3863ae742
--- /dev/null
+++ b/test/scripts/4062-pipe-conn-openssl/REQUIRES
@@ -0,0 +1,2 @@
+support Experimental_PIPE_CONNECT
+support OpenSSL
diff --git a/test/scripts/4064-pipe-conn-gnutls-auth/4064 b/test/scripts/4064-pipe-conn-gnutls-auth/4064
new file mode 100644
index 000000000..62be1e291
--- /dev/null
+++ b/test/scripts/4064-pipe-conn-gnutls-auth/4064
@@ -0,0 +1,60 @@
+# starttls
+#
+# Not attempted without a cache entry
+exim -bd -DSERVER=server -oX PORT_D
+****
+#
+exim nocache@test.ex
+Subject test 1
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+# Go for it. This one should do early-pipelinng.
+exim hascache@test.ex
+Subject test 2
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+killdaemon
+#
+#
+#
+# And again with CHUNKING
+sudo rm DIR/spool/db/misc
+exim -bd -DSERVER=server -DOPT=* -oX PORT_D
+****
+#
+exim nocache@test.ex
+Subject test 4
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+# Go for it
+exim chunking@test.ex
+Subject test 5
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+killdaemon
+no_msglog_check
diff --git a/test/scripts/4064-pipe-conn-gnutls-auth/4065 b/test/scripts/4064-pipe-conn-gnutls-auth/4065
new file mode 100644
index 000000000..819e4295a
--- /dev/null
+++ b/test/scripts/4064-pipe-conn-gnutls-auth/4065
@@ -0,0 +1,32 @@
+# tls-on-connect
+#
+# Not attempted without a cache entry
+exim -bd -DSERVER=server -oX PORT_D
+****
+#
+exim nocache@test.ex
+Subject test 1
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+# Go for it. This one should do early-pipelinng.
+exim hascache@test.ex
+Subject test 2
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+killdaemon
+#
+no_msglog_check
diff --git a/test/scripts/4064-pipe-conn-gnutls-auth/REQUIRES b/test/scripts/4064-pipe-conn-gnutls-auth/REQUIRES
new file mode 100644
index 000000000..fafecf0fe
--- /dev/null
+++ b/test/scripts/4064-pipe-conn-gnutls-auth/REQUIRES
@@ -0,0 +1,3 @@
+support Experimental_PIPE_CONNECT
+support GnuTLS
+authenticator plaintext
diff --git a/test/scripts/4066-pipe-conn-openssl-auth/4066 b/test/scripts/4066-pipe-conn-openssl-auth/4066
new file mode 100644
index 000000000..3dc16bbe1
--- /dev/null
+++ b/test/scripts/4066-pipe-conn-openssl-auth/4066
@@ -0,0 +1,61 @@
+# starttls
+#
+# Not attempted without a cache entry
+exim -bd -DSERVER=server -oX PORT_D
+****
+#
+exim nocache@test.ex
+Subject test 1
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+# Go for it. This one should do early-pipelinng.
+exim hascache@test.ex
+Subject test 2
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+killdaemon
+#
+#
+#
+# And again with CHUNKING
+sudo rm DIR/spool/db/misc
+exim -bd -DSERVER=server -DOPT=* -oX PORT_D
+****
+#
+exim nocache@test.ex
+Subject test 4
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+# Go for it
+exim chunking@test.ex
+Subject test 5
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+killdaemon
+no_msglog_check
diff --git a/test/scripts/4066-pipe-conn-openssl-auth/4067 b/test/scripts/4066-pipe-conn-openssl-auth/4067
new file mode 100644
index 000000000..819e4295a
--- /dev/null
+++ b/test/scripts/4066-pipe-conn-openssl-auth/4067
@@ -0,0 +1,32 @@
+# tls-on-connect
+#
+# Not attempted without a cache entry
+exim -bd -DSERVER=server -oX PORT_D
+****
+#
+exim nocache@test.ex
+Subject test 1
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+# Go for it. This one should do early-pipelinng.
+exim hascache@test.ex
+Subject test 2
+
+****
+exim -q
+****
+exim -DNOTDAEMON -DSERVER=server -q
+****
+#
+#
+#
+killdaemon
+#
+no_msglog_check
diff --git a/test/scripts/4066-pipe-conn-openssl-auth/REQUIRES b/test/scripts/4066-pipe-conn-openssl-auth/REQUIRES
new file mode 100644
index 000000000..e58e0f91a
--- /dev/null
+++ b/test/scripts/4066-pipe-conn-openssl-auth/REQUIRES
@@ -0,0 +1,3 @@
+support Experimental_PIPE_CONNECT
+support OpenSSL
+authenticator plaintext