Hello, Some time ago I was setting up yet another postfix deployment, and I was once again thinking about the case when (temporarily) undeliverable recipients block most or all of the available delivery agents.
In enterprise environments this problem has been traditionally solved by using the fallback_relay feature to pass these recipients to standalone postfix server (or at least separate instance). This is perhaps not going to change, as on high traffic sites such recipients can clog not only the available delivery agents, but the entire active queue as well. However, on medium traffic sites, I was thinking that there might be a more convenient solution which would not require standalone server or multi-instance setup. The idea is that qmgr could automatically use different transport for recipients from the deferred queue (as opposed to those coming from the incoming queue). This wouldn't eliminate the active queue bottleneck, but other than that it would keep the retried recipients out of the way of the new ones entirely. We have already used similar approach in the past to separate the inbound and outbound recipients by introducing the relay transport class, for example. Configuration wise, it might work like this: - in master.cf, clone the smtp transport, call it "slow" for example - in main.cf, set smtp_retry_transport = slow Implementation wise, the following changes would be necessary: - when creating message structure, qmgr would need to keep track if it came from the incoming or deferred queue - in qmgr_message_resolve(), just before looking up the transport, when the message originates from deferred queue, qmgr would replace the transport name in the reply with the configured retry variant if it is defined and such transport exists. What do you think? Is it an idea worth implementing? Patrik