On Thu, Jan 03, 2019 at 02:57:34PM -0500, Viktor Dukhovni wrote:
> Postfix fragments the queue by (nexthop, recipient) rather
> than just the nexthop. You're looking for a feature that ignores
> both the nexthop and the recipient aggregates all nexthops into a
> single unified transport-wide queue. No code for that exists.
If you're willing run your own franken-postfix, hard coded to run
one queue per transport whenever the recipient limit > 1, you could
test the below. I have no time to create a documented configurable
(mis)feature along these lines.
--- src/qmgr/qmgr_message.c
+++ src/qmgr/qmgr_message.c
@@ -1259,7 +1259,7 @@ static void qmgr_message_resolve(QMGR_MESSAGE *message)
* to decouple the per-destination recipient limit from the
* per-destination concurrency.
*/
- vstring_strcpy(queue_name, STR(reply.nexthop));
+ vstring_strcpy(queue_name, "global_queue");
if (strcmp(transport->name, MAIL_SERVICE_ERROR) != 0
&& strcmp(transport->name, MAIL_SERVICE_RETRY) != 0
&& transport->recipient_limit == 1) {
Note that with this, connection failures to any single destination,
will throttle all destinations. Since you in any case want rate
delays, see the note about
http://www.postfix.org/postconf.5.html#transport_destination_concurrency_failed_cohort_limit
mentioned in:
http://www.postfix.org/postconf.5.html#default_destination_rate_delay
Therefore:
smtp_destination_rate_delay = 1s
default_destination_concurrency_failed_cohort_limit = 10
And yet, this is all still a bad idea.
--
Viktor.