Differences between revisions 2 and 3
Revision 2 as of 2011-02-04 19:39:08
Size: 2606
Editor: msapiro
Comment: throttle.patch
Revision 3 as of 2011-02-04 19:52:41
Size: 3422
Editor: msapiro
Comment: Added throttling patch.
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
#pragma page-filename DOC/versions/11501578 #pragma page-filename DOC/versions/11501580
Line 15: Line 15:
''Last changed on Tue Mar 17 16:58:44 CDT 2009 by'' Brad Knowles The attached [[attachment:^throttle.patch]] against the 2.1.14 base SMTPDirect.py is an attempt to implement throttling within Mailman. It has been only minimally tested and is not guaranteed to work, but it may help if you really need to throttle within Mailman. It has two adjustable parameters. THROTTLE_LIMIT is the maximum number of messages to send within THROTTLE_TIME seconds. If THROTTLE_LIMIT is <= 0, there will be no throttling. If you decide to try this patch, make sure that you don't set THROTTLE_LIMIT and THROTTLE_TIME to values which will not allow delivery at the rate which Mailman tries to send. For example, if you have lists totalling 100,000 members and each list gets one post per day, if you set throttling to deliver less than about 4200 messages per hour, your out queue will become hopelessly backlogged, and Mailman will effectively stop working.

4.51. How do I limit the rate (throttle) at which Mailman sends mail?

From the thread on the mailman-users mailing list at http://mail.python.org/pipermail/mailman-users/2004-July/038202.html:

Some people choose to install Mailman at home on a consumer-grade Internet connection, or with a hosting company, and the provider will only allow them to send so many messages in a given period of time.

Unfortunately, Mailman has no way to control the rate at which messages are sent. Depending on how you have configured various settings, Mailman may dump 100 or 500 recipients or more into what it considers to be a single outgoing message. The MTA which receives this long list of subscribers might then break that up into smaller chunks of five or ten recipients for some medium-size sites, fifty or a hundred or more recipients for large sites, and lots of smaller sites with just one or two recipients.

Your ISP would look at this flow of outgoing messages, and could decide to count this in a variety of ways. They could count the total number of recipients, regardless of the number of messages. They could count the number of connection attempts, regardless of number of recipients. They could count the number of bytes flowing across the connection in a given period of time. They could do almost anything.

If you want to do rate limiting, you need to do that within the MTA, but this is an issue that you should bring up on mailing lists, newsgroups, etc... that are specific to your MTA - there's nothing that Mailman can do to help you. If your MTA does not provide any features to allow you to control this, you should consider upgrading your account, switching ISPs to one that does not rate limit you, or moving your list to a hosting provider (see Do you offer Mailman hosting, consulting, or contractor services?).

If you are using postfix, you can add a policyd service to your system (see http://policyd.sourceforge.net/readme.html), and that should be able to implement the throttling you require. You may also be able to achieve the same goal in other ways, such as using a milter with sendmail (e.g., see http://www.milter.info/sendmail/milter-limit/). However, whichever method you use, it will be specific to your MTA.

The attached ^throttle.patch against the 2.1.14 base SMTPDirect.py is an attempt to implement throttling within Mailman. It has been only minimally tested and is not guaranteed to work, but it may help if you really need to throttle within Mailman. It has two adjustable parameters. THROTTLE_LIMIT is the maximum number of messages to send within THROTTLE_TIME seconds. If THROTTLE_LIMIT is <= 0, there will be no throttling. If you decide to try this patch, make sure that you don't set THROTTLE_LIMIT and THROTTLE_TIME to values which will not allow delivery at the rate which Mailman tries to send. For example, if you have lists totalling 100,000 members and each list gets one post per day, if you set throttling to deliver less than about 4200 messages per hour, your out queue will become hopelessly backlogged, and Mailman will effectively stop working. Converted from the Mailman FAQ Wizard

This is one of many Frequently Asked Questions.

MailmanWiki: DOC/4.51 How do I limit the rate (throttle) at which Mailman sends mail? (last edited 2014-03-20 08:21:49 by msapiro)