Giorgio Luchi:
> Thanks for your reply.
> 
> We are an Italian Telco/ISP company, so we offer outgoing SMTP
> service to our customers.
> For this service, we have always thought that the best way to pick
> up messages from the queue, it is to do round-robin based on IP
> (or authenticated user if used) of the sender, to obtain fairness
> based on the "customer" property of the message.

If you want to prevent one customer from overtaking the mail queue
with a million submissions, then I suggest that you enforce a rate
limit on the sender (for example with postfwd). Tell the customers
that they can send up to N messages per hour. This also helps to
limit the damage when one customer becomes infected with malware.

>    foreach transport's job (round-robin by ip or auth-user)

I see.

For your idea to work, Postfix would need to keep knowledge about
THE COMPLETE MAIL QUEUE in memory.  That would limit the amount of
mail that Postfix can handle. (alternatively Postfix could maintain
one on-disk queue per customer and examine only the first per-queue
work items, but managing lots of queues would degrade I/O performance).

Instead, Postfix is designed to work on a mail queue of any size.
This is possible because Postfix works with a fixed memory budget.

Unlike the solution that you propose, Postfix will not become stuck
and require human intervention when a work load becomes larger than
anticipated.

There must be other solutions that can work with a fixed memory
budget and that can push excessive mail to a "low-priority" queue
that is processed when it does not interfere with other delivery.

Any solution that requires knowledge of THE COMPLETE MAIL QUEUE
will be firmly rejected. I will not allow a built-in limitation on
the amount of mail that Postfix can handle.

        Wietse

Reply via email to