It appears that Viktor Dukhovni <ietf-smtp(_at_)ietf(_dot_)org> said:
My first read of RFC3030 was that one's expected to pause after
all the RCPT commands and before the first BDAT, to check
whether at least one recipient had been accepted. But this
appears to not be the case.
So indeed you can pipeling the entire MAIL transaction from "MAIL"
to "QUIT" (if the number of BDAT segments is small enough).
What's worse (or better depending on your perspective) is that
you can even pipeline MULTIPLE mail transactions, nothing there
to stop the next "MAIL" command being sent right after "BDAT LAST".
Feeling that I wanted to keep up with the kewl kids, I added BDAT to
my SMTP server and looked at the logs.
The largest single users of BDAT are Gmail and Outlook, but I see a lot
of other smaller senders like sailthru.
There's also an impressive amount of BDAT from spambots. Some of them
even pipeline multiple messages. My input process has been dying after the
second message's BDAT. I can't tell whether the input is malformed or
I have some bug, but since it hasn't yet affected any real mail I'll
wait and see if I can collect more data.
I also see some MTAs send a bunch of roughly 8K chunks, while Outlook
sends one big blob.
ietf-smtp mailing list