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