ietf-smtp
[Top] [All Lists]

Re: [ietf-smtp] SMTP Retrying/Sending Strategy on 452 / 4.5.3

2019-02-11 10:10:16
On 2/11/2019 3:15 AM, Дилян Палаузов wrote:

Is the number 100 randomly choosen?  Obviously, a site can accept
120 RCPTs per iteration, and for the 121st RCPT reply
with “452 4.5.3 Retry immediately after DATA”.

Keep in mind any limits and restrictions, like others, are generally for the unauthenticated client/server session.

If the client is authenticated and/or authorized, limits can be changed and/or removed. The key difference between a MTA, MDA and MSA is whether they are authorized and/or allowed to relay mail. Otherwise, its the same receiver software just behaving differently based in the client's status.

For example, a Mail List Server (MLS) starting a distribution to 500 people, connects to a local host IP or LAN IP where the SMTP receiver/server running on the same machine or on the same subnet, or it could even be a Smart Host were there is an negotiated contract/authorization, in these cases, the limits can change or be removed.

Are clients supposed to retry immediately after receiving 452 4.5.3?

Focus on 4yz, not the specific code and extended code. That is not the say, you can "train" (program) your client to factor in these extra extended details.

For SMTP servers, it depends on few factors. For our server, if there are Multiple IPs based on MX record expansion, it may immediately try the next IP and only after all the IPs are tried, that may or may not be counted as 1 attempt. In general, SMTP recommends a variable retry table and I remember using early simple algorithms of once per hour for 4-5 days. That was enhanced to using variable retry tables. Here is our default variable retry time based on # of attempts:

# Default retry schedule.
[Attempts]
Default=60
Attempt1=1
Attempt2=4
Attempt3=15
Attempt5=30
Attempt10=120
Attempt21=5
Attempt22=5
Attempt23=15
Attempt25=30
Attempt30=120
Attempt40=60`
Attempt72=60

We also have tables based on the socket errors where the retries varies and could be more limited or extended in total attempts. So if the client is having trouble connecting to a server, the retries times can change. How long do you continue trying a BAD IP address? It might be bad only for a day or so until the receiver's DNS records is corrected or has propagated thru the network. Here is my retry table for Socket Error 10065

#---------------------------------------------------------------
# ERROR CONNECTION TO IP ADDRESS.  This is a BAD IP address. The
# host record may exist, but the IP connects to no where.
#---------------------------------------------------------------
[Attempts:10065]
Default=60
Attempt1=1
Attempt2=10
Attempt3=20
Attempt5=30
Attempt6=60
Attempt50=0

So after the 6th attempt, it is once per hour and after about 2 days, Attempt50, it is exhausted and a bounce is created. The main point here, is that this is a very complex side of SMTP and its implementation specific.

However, due to the advent of greylisting and the SMTP-GREY draft, the 2nd attempt is recommended to be shorten with the hope of minimizing delays and this is where the "retry=" comes into play.

What is the difference between „452” and „451 4.5.3”?
https://www.iana.org/assignments/smtp-enhanced-status-codes/smtp-enhanced-status-codes.xhtml
 says 4.5.3 can be combined
only with 451.

Please note that extended reply codes are optional. Your client/server MUST focus on the main xyz reply codes. In general, the extended codes and the response strings are more for humans, help desk, etc, but that is not to say, the client software can not programmed to use the extended information.

Does „452 Requested action not taken: insufficient system storage” mean in 30 
minutes there might be more storage, as
opposed to 4.5.3?


You can't jump to conclusions like this. All you can do is use the 4yz to reschedule a retry and it comes with a "reply=" hint, possibly factor that into your retry. Again, you can program your client to see a 4.5.3 extended code and add logic that might maybe change the retry time to perhaps 30 minutes or maybe 5 hours. With no hint, you don't know.

What will happen, if a site has one (1) as a minimum total number of recipients 
that are buffered?


Probably nothing. The server is not playing by the rules allowing 100 per the SMTP recommendation, but the client should not break as well. The client has to be aware of its distribution, the 2yz, 4yz and 5yz it reads for RCPT TO commands.

Side note. Our MLS has two modes for distribution, UUCP or SMTP. UUCP predated SMTP and in this mode, the distribution created 1 set of *.DAT/CMD/XQT files per recipient. Prior to SMTP, these files were then copied or picked up by hosted domains. When SMTP was added, the MLS can now go direct and use multiple RCPT TO commands in a SMTP session or the MLS can be set to use the UUCP export format and in this case, a mail router eyeballing the export folder will pick them up and hand them over to the MTA who begin sending them out one by one.


What is the sending strategy after the total number of recipient per MAIL 
FROM:<..>... DATA . is exceeded?


Break it up. You are talking about how software outbound strategies are designed and implemented. Rest assured it is not all the same, like the UUCP mode described above.

How are 452 and 451 4.5.3 supposed to be different than the retry=0 hint?

As far as SMTP-GREY draft is concern, a retry=time-delay value of zero is undefined. A zero value goes against the point of Greylisting where a block delay was determined to be necessary. See section 2.5. Recommended Blocking Times.

https://tools.ietf.org/html/draft-santos-smtpgrey-02#section-2.5

However, problematically, a server issuing a "retry=00:00:00" hint would translate to a no block time delay and the client can try again when it decides to try again.

--
HLS


_______________________________________________
ietf-smtp mailing list
ietf-smtp(_at_)ietf(_dot_)org
https://www.ietf.org/mailman/listinfo/ietf-smtp