ietf-smtp
[Top] [All Lists]

Re: DATA 554 responses - To Retry or Not.

2008-08-11 06:15:17

Hector Santos wrote:
It doesn't matter what valid or invalid RCPT were provided - the payload is rejected point blank for all.
Yes it does matter. Different users can have different filtering rules. The message content is only checked against the rules for the recipients who are valid when the message content is received. The 4xx recipients aren't checked (why should they be).
Lets look it this scenario

   RCPT TO: USER1 ---> 450
   RCPT TO: USER2 ---> 450
   DATA ---> 250

How is that interpreted by you?

    The server accepted the message but the CLIENT should expect
    it will not be delivered?  Who is it for?  Dark Space storage?
    Do you really believe CLIENT software will follow that state
    machine logic?  I doubt it.
Well, the server is wrong there in the first place, because it shouldn't have accepted the DATA command.

But, assuming it had, then the message would be accepted, but not be delivered to anyone. USER1 and USER2 won't get the message. The sending software needs to try again.

Yes, the client machine should handle that logic. Ours would, and based on what other people are saying here, most of those would as well.

Well actually, ours wouldn't, because it wouldn't have bothered with the DATA at all since no recipients were valid for that message, it would have just queued that message for retry and gone to the next message.

If you have a valid example:
RCPT TO: USER1 --> 250
RCPT TO: USER2 --> 450
RCPT TO: USER3 --> 450
DATA --> 250

Then the message would be delivered to USER1, not to USER2 or USER3, and the message needs to be retried for USER2 and USER3. (At the very least a DSN for those users needs to be sent, which would be OK within the standard, but suboptimal, assuming delivery is your objective, not just getting stuff off your server as fast as possible.)

If you are assuming the message is going to be delivered to USER2 and USER3 as well, then either your implementation, or everyone else's implementation is badly flawed (I can't see how it could be everyone else's implementation as I can't see what else they're expected to do in that situation). The message won't get to USER2 or USER3, and no DSN will be generated. If you ARE assuming that, then it's a good job we're having this discussion, as it's obvious that there's a big compatibility issue here!


How would YOU interpret

RCPT TO: USER1 --> 450 server too busy
RCPT TO: USER2 --> 450 server too busy
DATA: 354
.
550 no recipients specified

?
Would you send a DSN to the sender and not bother trying to send the message?

--
Paul Smith

VPOP3 - POP3/SMTP/IMAP4/Webmail Email server for Windows