Jim Fenton wrote:
The message isn't accepted until the DATA command is accepted, at the
end of the message. While the receiving domain has to provide
bandwidth to receive at least part of the message, it can still reject
the message (and doesn't have to provide storage for it) any time
before the "OK". It can, potentially, tear down the TCP connection
after receiving the relevant headers if it wants.
Just splitting hairs here:
If the server simply tears down the connection, the client MTA will
handle it the same as a 421 error, and resend the message (and resend
it, and resend it... for three days). If you really want to reject a
message after a 354 response, then you'll have to swallow the whole
message and send a 55x code in response to the dot. Then you'll have to
hope that the client MTA does the Right Thing when it receives a 55x at
that point -- some don't.