A thing that trips people up constantly, and the numbers behind it are worth having in one place. ๐Ÿฐ๐˜…๐˜… ๐—ถ๐˜€ ๐—ป๐—ผ๐˜ ๐—ฎ ๐—ฏ๐—ผ๐˜‚๐—ป๐—ฐ๐—ฒ. ๐—œ๐˜ ๐—ถ๐˜€ ๐—ฎ ๐—ฑ๐—ฒ๐—น๐—ฎ๐˜†. The receiving server is saying try again later, and RFC 5321 section 4.2.1 is explicit that the client should. Mailbox full, greylisting, rate limit, transient DNS trouble. ๐Ÿฑ๐˜…๐˜… ๐—ถ๐˜€ ๐—ณ๐—ถ๐—ป๐—ฎ๐—น. Same section: the client must not try again to the same recipient. So when a platform reports a soft bounce, nothing has failed yet. A queue has opened. How long that queue stays open is where it gets interesting, because it is a local decision and not a standard. ๐——๐—ผ๐—ฐ๐˜‚๐—บ๐—ฒ๐—ป๐˜๐—ฒ๐—ฑ ๐—ฑ๐—ฒ๐—ณ๐—ฎ๐˜‚๐—น๐˜๐˜€:

  • ๐—ฃ๐—ผ๐˜€๐˜๐—ณ๐—ถ๐˜…: maximal_queue_lifetime defaults to ๐Ÿฑ๐—ฑ. Retry interval runs from minimal_backoff_time 300s to maximal_backoff_time 4000s.
  • ๐—”๐—บ๐—ฎ๐˜‡๐—ผ๐—ป ๐—ฆ๐—˜๐—ฆ: ๐Ÿญ๐Ÿฐ ๐—ต๐—ผ๐˜‚๐—ฟ๐˜€ by default, configurable from 300 to 50,400 seconds since October 2024.
  • ๐—š๐—บ๐—ฎ๐—ถ๐—น: no published retry window at all. That last one deserves a note. The 45 hours figure that circulates comes from DSN message bodies quoted in forums, not from any Google documentation. I went looking properly and it is not there. If someone has an actual documented source I would genuinely like to see it. The 5 day Postfix default is not arbitrary either. RFC 1123 section 5.3.1.1, which RFC 5321 inherits, says the give up time generally needs to be at least four to five days. Practical consequence: the same address gets an 8.5x difference in second chances depending on what is sending. If you suppress on first soft bounce you are throwing away deliverable addresses on one stack and not the other. What is your queue lifetime set to, and did you choose it or inherit the default?
 

Posting this because I only found out this week and I suspect I am not alone. ๐—ฅ๐—™๐—– ๐Ÿต๐Ÿต๐Ÿด๐Ÿต, Standards Track, published May 2026. The header line reads ๐—ข๐—ฏ๐˜€๐—ผ๐—น๐—ฒ๐˜๐—ฒ๐˜€: ๐Ÿณ๐Ÿฐ๐Ÿด๐Ÿต, ๐Ÿต๐Ÿฌ๐Ÿต๐Ÿญ. RFC 7489 is the document that essentially every DMARC guide, tutorial and vendor doc has cited since 2015. It has been historical for three months. ๐—ช๐—ต๐—ฎ๐˜ ๐—ฎ๐—ฐ๐˜๐˜‚๐—ฎ๐—น๐—น๐˜† ๐—ฐ๐—ต๐—ฎ๐—ป๐—ด๐—ฒ๐—ฑ, ๐˜„๐—ต๐—ถ๐—ฐ๐—ต ๐—ถ๐˜€ ๐—น๐—ฒ๐˜€๐˜€ ๐˜๐—ต๐—ฎ๐—ป ๐˜†๐—ผ๐˜‚ ๐˜„๐—ผ๐˜‚๐—น๐—ฑ ๐—ฒ๐˜…๐—ฝ๐—ฒ๐—ฐ๐˜: Identifier alignment was section 3.1 in 7489. It is ๐˜€๐—ฒ๐—ฐ๐˜๐—ถ๐—ผ๐—ป ๐Ÿฏ.๐Ÿฎ.๐Ÿญ๐Ÿฌ in 9989. The definitions survived intact: relaxed alignment means the Author Domain shares an Organizational Domain with an authenticated identifier, strict means they are identical. So if your runbook or your internal wiki links to 7489 section 3.1, the section number is wrong and the concept is fine. That is the whole migration for most people. ๐—ง๐—ต๐—ฒ ๐—ฝ๐—ฎ๐—ฟ๐˜ ๐˜„๐—ผ๐—ฟ๐˜๐—ต ๐—ฟ๐—ฒ๐—ฟ๐—ฒ๐—ฎ๐—ฑ๐—ถ๐—ป๐—ด ๐—ฟ๐—ฒ๐—ด๐—ฎ๐—ฟ๐—ฑ๐—น๐—ฒ๐˜€๐˜€: SPF can pass while DMARC fails, and this is not a bug or a misconfiguration. A forwarder that rewrites the return path makes SPF pass, but it passes for the forwarder's domain, which no longer shares an Organizational Domain with the From header. Alignment fails, so DMARC fails, on a message that authenticated perfectly. DKIM survives forwarding and SPF does not, because DKIM is a cryptographic property of the message while SPF is a property of the connecting IP. One caveat stated plainly: no RFC writes that in a single sentence. It is a derivation from the alignment definition plus RFC 7960 on interoperability. I would rather say that than pretend I found a quote. Links: RFC 9989 https://dub.sh/qIpjYgm RFC 7960 https://dub.sh/iioNfqn Has anyone here already migrated their internal documentation, or is everyone still pointing at 7489? https://dub.sh/zkBKfMr