-# log_defer_output on pipe transport
+# DSN ESMTP extension RCPT options
#
-exim a
+# Server does not advertise by default
+exim -DSERVER=server -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+EHLO testclient
+??? 250-
+??? 250-SIZE
+??? 250-LIMITS
+??? 250 HELP
+****
+killdaemon
+#
+#
+# Server does advertise when told. Client requests no bounces, and this one gets a reject.
+exim -DSERVER=server -DOPT=y -bd -oX PORT_D
+****
+exim -z rej/never
+****
+client HOSTIPV4 PORT_D
+??? 220
+EHLO testclient
+??? 250-
+??? 250-SIZE
+??? 250-LIMITS
+??? 250-DSN
+??? 250 HELP
+MAIL FROM:<a@dump.ex>
+??? 250
+RCPT TO:<any@test.ex> NOTIFY=foo
+??? 501
+RCPT TO:<rmt_reject@test.ex> NOTIFY=never
+??? 250
+DATA
+??? 354
+Subject: test
+.
+??? 250
+QUIT
+??? 221
+****
+exim -q
+****
+#
+# Client requests delivery notification; the server supports DSN so takes responsibility
+exim -z accept/success
+****
+client HOSTIPV4 PORT_D
+??? 220
+EHLO testclient
+??? 250-
+??? 250-SIZE
+??? 250-LIMITS
+??? 250-DSN
+??? 250 HELP
+MAIL FROM:<b@dump.ex>
+??? 250
+RCPT TO:<rmt_accept@test.ex> NOTIFY=success
+??? 250
+DATA
+??? 354
+Subject: test
+.
+??? 250
+QUIT
+??? 221
+****
+# MSA send msg to MDA
+exim -q
+****
+# deliver msg at MDA
+exim -q
+****
+# deliver notification from MDA
+exim -q
+****
+#
+# Client requests delivery notification; the MSA & MDA supports DSN
+# but MDA fake-rejects msg.
+# The MDA should not send a delivery notification for this case.
+exim -z fakereject/success
+****
+client HOSTIPV4 PORT_D
+??? 220
+EHLO testclient
+??? 250-
+??? 250-SIZE
+??? 250-LIMITS
+??? 250-DSN
+??? 250 HELP
+MAIL FROM:<b2@dump.ex>
+??? 250
+RCPT TO:<rmt_fakereject@test.ex> NOTIFY=success
+??? 250
+DATA
+??? 354
+Subject: test
+.
+??? 250
+QUIT
+??? 221
+****
+# MSA (try to) send msg to MDA; should see a reject
+exim -q
+****
+# due to fake, should be a msg to deliver at MDA
+# no DSN should be generated
+exim -q
+****
+# should be no notification to deliver from MDA
+exim -q
+****
+#
+# Client requests notification of deferral. First time of trying, we get
+# a defer but queue-time probably has not hit the 1st retry time yet, so no DSN
+# will be sent and the message remains queued. Then, claiming time has elapsed,
+# we will look again (expecting a delay-DSN to be produced). We won't see a
+# retry since the actual retry time has not passed.
+exim -z defer/delay
+****
+client HOSTIPV4 PORT_D
+??? 220
+EHLO testclient
+??? 250-
+??? 250-SIZE
+??? 250-LIMITS
+??? 250-DSN
+??? 250 HELP
+MAIL FROM:<c@dump.ex>
+??? 250
+RCPT TO:<rmt_defer@test.ex> NOTIFY=delay
+??? 250
+DATA
+??? 354
+Subject: test
+.
+??? 250
+QUIT
+??? 221
+****
+exim -q
+****
+#
+# Clients requests no DSNs, and this one gets deferred
+exim -z defer/never
+****
+client HOSTIPV4 PORT_D
+??? 220
+EHLO testclient
+??? 250-
+??? 250-SIZE
+??? 250-LIMITS
+??? 250-DSN
+??? 250 HELP
+MAIL FROM:<d@dump.ex>
+??? 250
+RCPT TO:<rmt_defer@test.ex> NOTIFY=never
+??? 250
+DATA
+??? 354
+Subject: test
+.
+??? 250
+QUIT
+??? 221
+****
+exim -q
+****
+#
+#
+#
+# Second time, for the queued deferrals.
+# We should see the notify for c@dump.ex but not d@dump.ex
+exim -z playout
+****
+exim -Tqt 10s/ -q
+****
+sleep 1
+exim -Mrm $msg1 $msg2
+****
+#
+#
+#
+#
+# Client requests bounce+delay notification; bounce happens
+exim -z rej/failure+delay
+****
+client HOSTIPV4 PORT_D
+??? 220
+EHLO testclient
+??? 250-
+??? 250-SIZE
+??? 250-LIMITS
+??? 250-DSN
+??? 250 HELP
+MAIL FROM:<e@dump.ex>
+??? 250
+RCPT TO:<rmt_reject@test.ex> NOTIFY=fAiLuRe,DELAY
+??? 250
+DATA
+??? 354
+Subject: test
+.
+??? 250
+QUIT
+??? 221
+****
+# MSA send msg to MDA
+exim -q
+****
+# deliver notification from MDA
+exim -z 'deliver DSN'
+****
+exim -q
****
sleep 1
+killdaemon
+#
+#
no_msglog_check