On 18/01/17 20:56, Evgeniy Berdnikov wrote:
>> And you'd prefer before all the data is transmitted
>> because that's a waste of bits and cpu.
>
> Right.
>
>> Any more?
>>
>> What should be preferred practice
>> when CHUNKING is used?
>
> With BDAT syntax we have to mix "pre-data" and "post-data" approaches.
> Unfortunately, this way conflicts with RFC3030 which states:
>
> A 250 response MUST be sent to each successful BDAT data block within
> a mail transaction.
IMHO this leaves open the possibility of other responses. Specifically
for greylisting, a 4xx.
> So the "legal" way is to postpone 4xx response until the completion of
> data stream.
I think that is needlessly cautious. Sending a 4xx response to a
non-LAST BDAT doe not violate 3030.
> However, there is more
> efficient way: server can close socket on the receipt of BDAT, client
> should get EOF and process such transmission error as receipt of 4xx. :)
The trouble with that is that the client might treat the drop,
reasonably IMHO, as a transmission error - and retry immediately
since it doe not have an SMTP-level temp-error (4xx).
This is supposition, I admit - but dropping the connection feels ugly.
--
Cheers,
Jeremy