When all deliveries to a site fail (a colhort of delivery agent
processes reports the destination is unavailable) the Postfix
scheduler puts the destination on a temporary 'dead destination'
list, to avoid spending resources on that destination.

Of course this design is not optimized for bursts of DNS outages
and DNS resource records with short TTL values. Such sites will
need special configuration.

To eliminate this dead list feature selectively, route mail for
this site to a dedicated SMTP transport:

/etc/postfix/main.cf
    transport_maps = hash:/etc/postfix/transport
    smtp-without-deadlist_destination_concurrency_failed_cohort_limit = 0
    smtp-without-deadlist_destination_concurrency_negative_feedback = 0

/etc/postfix/transport:
    example.com smtp-without-deadlist:

/etc/postfix/master.cf:
    smtp-without-deadlist      unix  -       -       n       -       -       
smtp

Below is some theory from the postconf(5) manpages.

        Wietse

default_destination_concurrency_failed_cohort_limit (default: 1)
   How many pseudo-cohorts must suffer connection or handshake failure be-
   fore a specific destination is considered unavailable (and further  de-
   livery  is suspended). Specify zero to disable this feature. A destina-
   tion's pseudo-cohort failure count is reset each time a  delivery  com-
   pletes without connection or handshake failure for that specific desti-
   nation.

   A pseudo-cohort is the number of deliveries equal  to  a  destination's
   delivery concurrency.

   Use  transport_destination_concurrency_failed_cohort_limit to specify a
   transport-specific override, where transport is the master.cf  name  of
   the message delivery transport.

   This  feature  is available in Postfix 2.5. The default setting is com-
   patible with earlier Postfix versions.

default_destination_concurrency_negative_feedback (default: 1)
    ...
   As of Postfix version 2.5, negative  feedback  cannot  reduce  delivery
   concurrency  to  zero.   Instead, a destination is marked dead (further
   delivery suspended) after the failed pseudo-cohort count  reaches  $de-
   fault_destination_concurrency_failed_cohort_limit (or $transport_desti-
   nation_concurrency_failed_cohort_limit).  To make  the  scheduler  com-
   pletely  immune  to  connection  or  handshake failures, specify a zero
   feedback value and a zero failed pseudo-cohort limit.

Reply via email to