When a Postfix delivery agent (
smtp(8),
local(8), etc.) is
unable to deliver a message it may blame the message itself, or it
may blame the receiving party.
-
When the delivery agent blames the message, the queue
manager gives the queue file a time stamp into the future, so it
won't be looked at for a while. By default, the amount of time to
cool down is the amount of time that has passed since the message
arrived. This results in so-called exponential backoff behavior.
-
When the delivery agent blames the receiving party (for
example a local recipient user, or a remote host), the queue manager
not only advances the queue file time stamp, but also puts the
receiving party on a "dead" list so that it will be skipped for
some amount of time.
This process is governed by a bunch of little parameters.
-
queue_run_delay (default: 1000 seconds)
- How often
the queue manager scans the queue for deferred mail.
-
minimal_backoff_time (default: 1000 seconds)
- The
minimal amount of time a message won't be looked at, and the minimal
amount of time to stay away from a "dead" destination.
-
maximal_backoff_time (default: 4000 seconds)
- The
maximal amount of time a message won't be looked at after a delivery
failure.
-
maximal_queue_lifetime (default: 5 days)
- How long
a message stays in the queue before it is sent back as undeliverable.
Specify 0 for mail that should be returned immediately after the
first unsuccessful delivery attempt.
-
bounce_queue_lifetime (default: 5 days, available with Postfix
version 2.1 and later)
- How long a MAILER-DAEMON message
stays in the queue before it is considered undeliverable. Specify
0 for mail that should be tried only once.
-
qmgr_message_recipient_limit (default: 20000)
- The
size of many in-memory queue manager data structures. Among others,
this parameter limits the size of the short-term, in-memory list
of "dead" destinations. Destinations that don't fit the list are
not added.
IMPORTANT: If you increase the frequency of deferred mail
delivery attempts, or if you flush the deferred mail queue frequently,
then you may find that Postfix mail delivery performance actually
becomes worse. The symptoms are as follows:
-
The
active queue becomes saturated with mail that has
delivery problems. New mail enters the
active queue only when
an old message is deferred. This is a slow process that usually
requires timing out one or more SMTP connections.
-
All available Postfix delivery agents become occupied
trying to connect to unreachable sites etc. New mail has to wait
until a delivery agent becomes available. This is a slow process
that usually requires timing out one or more SMTP connections.
When mail is being deferred frequently, fixing the problem is
always better than increasing the frequency of delivery attempts.
However, if you can control only the delivery attempt frequency,
consider using a dedicated
fallback_relay "graveyard" machine for
bad destinations so that they do not ruin the performance of normal
mail deliveries.