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