Andrew Miklas:
> Hi,
>
> I'm using Postfix with the pipe transport to deliver mail to an
> internal application. The transport map is set to forward all
> messages destined to *@*.pagerduty.com to the application.
>
> This usually works really well, but we occasionally have fairness
> problems where a sudden burst of messages received nearly
> simultaneously for one address monopolize our pool of delivery
> agents. This creates high delivery latencies for messages to other
> addresses that arrive just after the burst. It looks like Postfix
> maintains a single delivery queue for all messages due for processing
> by our application.
>
> What I'd like to do is have Postfix maintain separate delivery queues
> for each address, and then cycle round-robin through those queues as
> delivery agents become available.
/etc/postfix/main.cf:
pipetransportname_destination_recipient_limit = 2
where pipetransportname is the first field in master.cf.
Wietse
> In other words, if I get burst of 100 emails to
> "[email protected]", and then 5 seconds later (before we've been
> able to process all of those messages), we receive a single message to
> "[email protected]", I'd like that single message to b@ to be
> assigned to the first available transport agent, even though a pure
> FIFO delivery strategy would have it processed only after we've
> finished with all 100 a@ messages.
>
> Is this possible? We've sort of been faking it so far by adjusting
> the transport_destination_concurrency_limit and the max number of
> transport processes, but it would be better if we could set the
> queueing to work per-address rather than for the whole transport.
>
> Here's some relevant bits from my Postfix config:
>
> (From the transport map)
> /^.*@.*\.pagerduty\.com$/ pagerduty:
>
> (From main.cf)
> pagerduty_destination_recipient_limit = 1
> pagerduty_destination_concurrency_limit = 1
>
> (From master.cf)
> pagerduty unix - n n - 2 pipe
> user=www-data:www-data argv=/opt/ruby-enterprise/bin/ruby /u/apps/
> pagerduty/current/lib/parse_email.rb $recipient
>
>
> Thanks,
>
>
> Andrew
>