Re: Retry Strategies
2008-08-12 05:24:46
Hector Santos wrote:
I don't think there is no break down in the Responsibility area for
important User Expectation concept for Acceptance vs Non-Delivery
Notification.
Since the payload was not deemed acceptable - permanently, the client
SHOULD issue a DSN to all three immediately.
The difference is that you think the message is the message content.
Others are treating 'message' as 'a message from A to B with the content
C'. That may fail with a 5yz, but a message from A to D with content C
may succeed. There is no point trying A to B with content C again, it
will fail again, but A to D with the same content may succeed.
The issue is not the bugette in RFC 2821 which you keep bringing up, but
the definition of a 'message' in section 4.2.5. You think 'message' =
'message content'. Others think 'message' = 'sender/recipient/content
triplet'.
That satisfies the message transaction - it was resolved.
If we looked at this by splitting it, the same result will be achieved.
T1: C: RCPT TO: USER1 -> 250
DATA -> 550
Client sends DSN
T2: RCPT TO: USER1 -> 450
DATA -> NOT ALLOWED, no valid recipients
Client sends DSN
T3: RCPT TO: USER1 -> 550
DATA -> NOT ALLOWED, no valid recipients
Client sends DSN
Note, even if in T2 and T3, the server state machine allowed the
client to reach DATA, if its sending the same message, the expectation
that it will be permanently rejected again.
That's your expectation. Not everyone else's
What we are saying is that different recipients could have different
policies, some of which will accept the message, and others which won't.
With the original 'merged' transaction, the receiving server will only
have checked the policies for USER1, not for USER2 (or USER3, but that's
irrelevant since that user might not exist). USER2 might accept the
message, you won't know unless you try.
My way of looking at it is simple - if the recipient is rejected, use
that to decide what to do with that user's copy of the message (retry
or fail). If the recipient is accepted, use the DATA response to
decide what to do (assume delivered, retry or fail). It's very simple
to code (after attempting delivery, if the recipient's RCPT return
code was 2yz, use the return code of DATA instead, otherwise use the
recipient's RCPT return code when deciding what to do).
I think a lot will change (thinking wise), if not already, when more
and more systems do SMTP level content level AVS analysis.
The thinking is the way it is because a lot of systems do SMTP level
spam/content filtering, which might have different settings per user. AV
filtering is a subset of this, which is unlikely (but not impossible) to
change depending on recipient. Eg, an anti-virus company may want
viruses to 'samples@', but not anywhere else.
Some receiving servers might well want one recipient per 'transaction'
(which I don't really like, but they do it to handle different recipient
policies). They can already achieve that by accepting the first
recipient, and rejecting the rest with 4yz, and then accepting the
message. This will achieve what they want (even with your
understanding), as long as the message content is accepted. If the first
recipient rejects the message content, but the others would have
accepted it, with your way of interpreting 2821, no recipients will get
the message. With the other way of interpreting it, the first recipient
wouldn't get the message (and it wouldn't be retried to that recipient),
but the others would.
With your way of looking at it, the possibility of delivery depends on
the order of recipients and their policies:
If USER1 and USER3 have a lenient policy and USER2 has a strict policy.
You'd expect USER1 and USER3 to get a suspicious message, but not USER2.
However, there are three possible outcomes with your approach:
(1)
RCPT TO: USER1 -> 250
RCPT TO: USER2 -> 450
RCPT TO: USER3 -> 450
DATA -> 250 (USER1 gets the message)
RCPT TO: USER2 -> 250
RCPT TO: USER3 -> 450
DATA -> 550 (DSN for USER2 and USER3)
So, USER1 gets the message, USER2 and USER3 don't
(2)
RCPT TO: USER2 -> 250
RCPT TO: USER1 -> 450
RCPT TO: USER3 -> 450
DATA -> 550 (DSN for USER1, USER2 and USER3)
No one gets the message
(3)
RCPT TO: USER3 -> 250
RCPT TO: USER1 -> 450
RCPT TO: USER2 -> 450
DATA -> 250 (USER3 gets the message)
RCPT TO: USER1 -> 250
RCPT TO: USER2 -> 450
DATA -> 250 (USER1 gets the message)
RCPT TO: USER2 -> 250
DATA -> 550 (DSN for USER2)
Here, USER1 and USER3 get the message, USER2 doesn't - as desired
With 'our' way of looking at things, USER1 and USER3 always get the
message, and USER2 doesn't, whatever order they come in
(1)
RCPT TO: USER1 -> 250
RCPT TO: USER2 -> 450
RCPT TO: USER3 -> 450
DATA -> 250 (USER1 gets the message)
RCPT TO: USER2 -> 250
RCPT TO: USER3 -> 450
DATA -> 550 (DSN for USER2)
RCPT TO: USER3 -> 250
DATA -> 250 (USER3 gets the message)
USER1 and USER3 get the message, USER2 doesn't
(2)
RCPT TO: USER2 -> 250
RCPT TO: USER1 -> 450
RCPT TO: USER3 -> 450
DATA -> 550 (DSN for USER2)
RCPT TO: USER1 -> 250
RCPT TO: USER3 -> 450
DATA -> 250 (USER1 gets the message)
RCPT TO: USER3 -> 250
DATA -> 250 (USER3 gets the message)
USER1 and USER3 get the message, USER2 doesn't
(3)
RCPT TO: USER3 -> 250
RCPT TO: USER1 -> 450
RCPT TO: USER2 -> 450
DATA -> 250 (USER3 gets the message)
RCPT TO: USER1 -> 250
RCPT TO: USER2 -> 450
DATA -> 250 (USER1 gets the message)
RCPT TO: USER2 -> 250
DATA -> 550 (DSN for USER2)
USER1 and USER3 get the message, USER2 doesn't
--
Paul Smith
VPOP3 - POP3/SMTP/IMAP4/Webmail Email server for Windows
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- Re: 2821bis AUTH48 fix (?), (continued)
- Re: 2821bis AUTH48 fix (?), Bart Schaefer
- Re: 2821bis AUTH48 fix (?), Tony Hansen
- Re: 2821bis AUTH48 fix (?), Hector Santos
- Re: 2821bis AUTH48 fix (?), John C Klensin
- DATA reply codes - which ones?, Hector Santos
- Re: 2821bis AUTH48 fix (?), John C Klensin
- Retry Strategies, Hector Santos
- Re: Retry Strategies,
Paul Smith <=
- Re: Retry Strategies, John C Klensin
- Re: 2821bis AUTH48 fix (?), SM
- Re: 2821bis AUTH48 fix (?) (was: 2821 5yz Typo - Client Retry Gaffe (fixed in 2821bis)), SM
- Re: retry question, SM
- Re: retry question (was: 2821bis/ter and procedures), ned+ietf-smtp
- Re: 2821bis/ter and procedures (was: Re: retry question), Alex van den Bogaerdt
- Re: 2821bis/ter and procedures (was: Re: retry question), Alex van den Bogaerdt
- Re: 2821bis/ter and procedures, Paul Smith
- Re: 2821bis/ter and procedures, Tony Finch
- Re: 2821bis/ter and procedures, Hector Santos
|
|
|