One of the destinations I send email to has unusual performance characteristics. The active queue can fill up with messages for this domain, blocking sending to other domains. I want to limit the number of slots in the active queue used by this domain.
As a temporary measure, the traffic for this domain is routed via a dedicated relay where I set:
default_recipient_refill_limit=50
default_recipient_limit=1000
The upper limit on Active queue size is sill the default 20000. After amending main.cf as per above I ran a postfix check
and systemctl reload postfix
. The logs show the reload event.
However, my monitoring shows that a few hours later, the Active queue jumped to 20000 within a window of 2 minutes. i.e. Neither the rate, nor the cap on messages appears to have been applied. It remained at 20000 for several minutes.
The monitoring is by check_MK - and while I can easily believe that it might have been reporting a count from both the incoming and active queue, the plateau at 20000 suggests otherwise.
What am I missing here? / How can I limit how many or quickly messages are moved from incoming to active?
(I need a solution I can implement using custom transport, so I can move the traffic back through the shared relay).
This is Postfix 2.10 running on Amazon Linux 2, there are no distribution lists configured on the MTA which would be expanded in the active queue. Please note that I am NOT asking how to deliver mail to this domain faster - I am asking how to limit the number of associated messages are in the active queue.
After further investigation it appears there no way to limit the messages added to the active queue OTHER THAN the number defined in $qmgr_message_active_limit.
The directives I listed above handle expansion of delivery lists after the message is in the active queue.
It has been suggested that the appropriate response is to make the active queue MUCH larger, however there is a risk of encountering OOMKiller in such a scenario.