250 OK
RCPT TO
250 OK
-BDAT 329 LAST
-*data 329
+BDAT 331 LAST
+*data 331
250 OK
QUIT
225 OK
250 good mail cmd
RCPT TO
250 acceptable rcpt cmd
-BDAT 329 LAST
-*data 330
+BDAT 331 LAST
+*data 332
250 OK got that data
QUIT
225 OK quitting
250 OK
RCPT TO
250 OK
-BDAT 329 LAST
-*data 328
+BDAT 331 LAST
+*data 330
250 OK
QUIT
225 OK
250 OK
RCPT TO
250 OK
-BDAT 329 LAST
-*data 329
+BDAT 331 LAST
+*data 331
500 oops
QUIT
225 OK
250 OK
RCPT TO
250 OK
-BDAT 329 LAST
-*data 329
+BDAT 331 LAST
+*data 331
400 not right now
QUIT
225 OK
250 CHUNKING
MAIL FROM
RCPT TO
-BDAT 329 LAST
-*data 329
+BDAT 331 LAST
+*data 331
250 OK mail
250 OK rcpt
250 OK bdat
****
#
# Error case: server wrongly expected more data, client gets timeout for data-ack
-server PORT_S
-220 Greetings
-EHLO
-250-Hello there
-250-PIPELINING
-250 CHUNKING
-MAIL FROM
-RCPT TO
-BDAT 329 LAST
-*data 330
-250 good mail cmd
-****
-sudo exim -odf -bS
-EHLO test
-MAIL FROM:<sender@source.dom>
-RCPT TO:<q@test.ex>
-DATA
-Subject: foo
-
-data
-.
-QUIT
-****
+# XXX This is a problem with data/quit pipelining. The succeeding SMTP command cannot
+# be distinguished from the data, by the errroneous server.
+# Of course, we could avoid such pipelining on the client side, when BDAT is used.
+# But - is this any worse than a server failing to spot the data-dot under DATA?
+# I think not; both are culpable, and there is only so much the client can do.
+#server PORT_S
+#220 Greetings
+#EHLO
+#250-Hello there
+#250-PIPELINING
+#250 CHUNKING
+#MAIL FROM
+#RCPT TO
+#BDAT 331 LAST
+#*data 332
+#250 good mail cmd
+#****
+#sudo exim -odf -bS
+#EHLO test
+#MAIL FROM:<sender@source.dom>
+#RCPT TO:<q@test.ex>
+#DATA
+#Subject: foo
+#
+#data
+#.
+#QUIT
+#****
#
# Error case: server wrongly expected less data
# client get the data-ack, sends quit - but server
250 CHUNKING
MAIL FROM
RCPT TO
-BDAT 329 LAST
-*data 328
+BDAT 331 LAST
+*data 330
250 OK mail
250 OK rcpt
250 OK bdat
250 CHUNKING
MAIL FROM
RCPT TO
-BDAT 329 LAST
-*data 329
+BDAT 331 LAST
+*data 331
550 unacceptable mail-from
550 rcpt ungood lacking mail-from
500 bdat ungood lacking mail-from
250 CHUNKING
MAIL FROM
RCPT TO
-BDAT 330 LAST
-*data 330
+BDAT 332 LAST
+*data 332
450 greylisted mail-from
550 rcpt ungood lacking mail-from
500 bdat ungood lacking mail-from
250 CHUNKING
MAIL FROM
RCPT TO
-BDAT 329 LAST
-*data 329
+BDAT 331 LAST
+*data 331
250 OK mail
550 no such recipient
500 oops bdat
250 CHUNKING
MAIL FROM
RCPT TO
-BDAT 329 LAST
-*data 329
+BDAT 331 LAST
+*data 331
250 OK mail
250 OK rcpt
500 oops bdat
250 CHUNKING
MAIL FROM
RCPT TO
-BDAT 329 LAST
-*data 329
+BDAT 331 LAST
+*data 331
250 OK mail
250 OK rcpt
400 not right now bdat