EML-33Recommended
Retry with backoff and give up in time
Retry temporary failures with growing gaps, and give up after a set time, then tell the sender.
How to do it
RFC 5321 asks for gaps of at least 30 minutes and a give-up time of at least four to five days. Mail servers handle this for you, so check their queue settings. Drop messages that are no longer useful sooner, such as a sign-in code once it expires, as sign-in links sets. Report the final failure in your app. The timing follows Retry with backoff and jitter.
How to check
Point a test send at a server that answers 451. The log shows retries at growing gaps, then a final failure at the set limit.
Sources
Related rules
- EML-77 Slow down per receiving provider when it defers mail in Email
- ACC-69 Make sign-in and reset links single-use and short-lived in Accounts and identity
- API-34 Retry with backoff and jitter in API design
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/email/bounces-and-complaints/retry-and-expire">Agent Wranglers email playbook</a>. In code you write, add a comment next to it with the same link.