# CHUNKING transmission, short messages # # Start with non-pipelined cases # # Basic short message server PORT_S 220 Greetings EHLO 250-Hello there 250 CHUNKING MAIL FROM 250 OK RCPT TO 250 OK BDAT 331 LAST *data 331 250 OK QUIT 225 OK *eof **** sudo exim -odf -bS EHLO test MAIL FROM: RCPT TO: DATA Subject: foo data . QUIT **** # # Error case: server wrongly expected more data, client gets timeout for data-ack server PORT_S 220 Greetings EHLO 250-Hello there 250 CHUNKING MAIL FROM 250 good mail cmd RCPT TO 250 acceptable rcpt cmd BDAT 331 LAST *data 332 250 OK got that data QUIT 225 OK quitting **** sudo exim -odf -bS EHLO test MAIL FROM: RCPT TO: DATA Subject: foo data . QUIT **** # # Error case: server wrongly expected less data # client get the data-ack, sends quit - but server # sees a munged quit due to the outstanding data tail server PORT_S 220 Greetings EHLO 250-Hello there 250 CHUNKING MAIL FROM 250 OK RCPT TO 250 OK BDAT 331 LAST *data 330 250 OK QUIT 225 OK **** sudo exim -odf -bS EHLO test MAIL FROM: RCPT TO: DATA Subject: foo data . QUIT **** # # server rejects BDAT cmd server PORT_S 220 Greetings EHLO 250-Hello there 250 CHUNKING MAIL FROM 250 OK RCPT TO 250 OK BDAT 331 LAST *data 331 500 oops QUIT 225 OK **** sudo exim -odf -bS EHLO test MAIL FROM: RCPT TO: DATA Subject: foo data . QUIT **** # # server tmp-rejects BDAT cmd server PORT_S 220 Greetings EHLO 250-Hello there 250 CHUNKING MAIL FROM 250 OK RCPT TO 250 OK BDAT 331 LAST *data 331 400 not right now QUIT 225 OK **** sudo exim -odf -bS EHLO test MAIL FROM: RCPT TO: DATA Subject: foo data . QUIT **** # # # Server rejects RCPT. Client should not proceed to BDAT. server PORT_S 220 Greetings EHLO 250-Hello there 250 CHUNKING MAIL FROM 250 OK RCPT TO 550 sorry, no QUIT **** sudo exim -odf -bS EHLO test MAIL FROM: RCPT TO: DATA Subject: foo data . QUIT **** # # ################################################### # # Pipelined cases # # Basic short message server PORT_S 220 Greetings EHLO 250-Hello there 250-PIPELINING 250 CHUNKING MAIL FROM RCPT TO BDAT 331 LAST *data 331 250 OK mail 250 OK rcpt 250 OK bdat QUIT 225 OK *eof **** sudo exim -odf -bS EHLO test MAIL FROM: RCPT TO: DATA Subject: foo data . QUIT **** # # Error case: server wrongly expected more data, client gets timeout for data-ack # 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: #RCPT TO: #DATA #Subject: foo # #data #. #QUIT #**** # # Error case: server wrongly expected less data # client get the data-ack, sends quit - but server # sees a munged quit due to the outstanding data tail server PORT_S 220 Greetings EHLO 250-Hello there 250-PIPELINING 250 CHUNKING MAIL FROM RCPT TO BDAT 331 LAST *data 330 250 OK mail 250 OK rcpt 250 OK bdat QUIT 225 OK **** sudo exim -odf -bS EHLO test MAIL FROM: RCPT TO: DATA Subject: foo data . QUIT **** # # server rejects MAIL cmd # transport coding does not handle the possible RSET-and-another transaction, # but always QUITs server PORT_S 220 Greetings EHLO 250-Hello there 250-PIPELINING 250 CHUNKING MAIL FROM RCPT TO BDAT 331 LAST *data 331 550 unacceptable mail-from 550 rcpt ungood lacking mail-from 500 bdat ungood lacking mail-from QUIT 225 OK **** sudo exim -odf -bS EHLO test MAIL FROM: RCPT TO: DATA Subject: foo data . QUIT **** # # server tmp-rejects MAIL cmd server PORT_S 220 Greetings EHLO 250-Hello there 250-PIPELINING 250 CHUNKING MAIL FROM RCPT TO BDAT 332 LAST *data 332 450 greylisted mail-from 550 rcpt ungood lacking mail-from 500 bdat ungood lacking mail-from QUIT 225 OK **** sudo exim -odf -bS EHLO test MAIL FROM: RCPT TO: DATA Subject: foo data . QUIT **** # # server rejects RCPT cmd server PORT_S 220 Greetings EHLO 250-Hello there 250-PIPELINING 250 CHUNKING MAIL FROM RCPT TO BDAT 331 LAST *data 331 250 OK mail 550 no such recipient 500 oops bdat QUIT 225 OK **** sudo exim -odf -bS EHLO test MAIL FROM: RCPT TO: DATA Subject: foo data . QUIT **** # # server rejects BDAT cmd server PORT_S 220 Greetings EHLO 250-Hello there 250-PIPELINING 250 CHUNKING MAIL FROM RCPT TO BDAT 331 LAST *data 331 250 OK mail 250 OK rcpt 500 oops bdat QUIT 225 OK **** sudo exim -odf -bS EHLO test MAIL FROM: RCPT TO: DATA Subject: foo data . QUIT **** # # server tmp-rejects BDAT cmd server PORT_S 220 Greetings EHLO 250-Hello there 250-PIPELINING 250 CHUNKING MAIL FROM RCPT TO BDAT 331 LAST *data 331 250 OK mail 250 OK rcpt 400 not right now bdat QUIT 225 OK **** sudo exim -odf -bS EHLO test MAIL FROM: RCPT TO: DATA Subject: foo data . QUIT **** # # no_msglog_check