What are backoff algorithms in MTAs?
Backoff algorithms determine how retry intervals increase after successive failures. The goal is avoiding overwhelming servers while still attempting delivery.
Exponential backoff is most common: each failed attempt doubles (or otherwise multiplies) the wait time. First retry at 5 minutes, then 10, 20, 40, and so on. This quickly spaces out attempts for persistent problems while keeping early retries frequent for brief issues.
Linear backoff adds a fixed amount each time: 5, 10, 15, 20 minutes. Simpler but doesn't adapt as well to the problem duration.
Jitter adds randomness to retry timing. Without jitter, all deferred messages to the same server retry simultaneously, potentially recreating the overload. Jitter spreads retries over a time window.
Postfix implements backoff with minimal_backoff_time and maximal_backoff_time. Messages start at the minimum and increase toward the maximum with each failure.
Most MTAs cap backoff at some maximum interval (often 4-6 hours). Waiting longer rarely helps; if a problem persists for hours, a few extra hours won't matter, but it delays resolution notification.
Backoff is the wisdom to wait longer each time you knock on a door that doesn't answer.
Was this answer helpful?
Thanks for your feedback!