[Mailman-Users] how limit traffic

Dennis Black dennis.black at ualberta.ca
Tue Jan 20 23:35:17 CET 2004


>===== Original Message From Brad Knowles <brad.knowles at skynet.be> =====
>At 12:02 PM -0600 2004/01/20, Ed Wilts wrote:
>
>>  SMTP_MAX_RCPTS = 500
>
>	Which won't work with the majority of MTAs.  Most limit the
>maximum number of recipients per message to be something like 100 or
>200.  If the local MTA has been modified to have a higher limit than
>normal, it should deal with the issue of envelope splitting if the
>remote MTA has a smaller limit.

I had what I consider, if not an interesting experience, at least a learning
one recently concerning Mailman's smtp_max_rcpts.

Mailman 2.0.9 (I know - I'm building another server for the latest/greatest)
AIX 5.1 / RS6000 (ditto)

The symptoms were happening on a list with over 6,000 subscribers, followed 
by the same problem on a list with over 880 addresses.
The message's qfiles ".db" file was over 50,000 bytes.
Each time qrunner fired up (remember, this is still the cronned qrunner),
locks would be made, and the queue held up until qrunner timed out.
Either that, or qrunner was terminated because Postfix would fail with a 
"queue file write error."
Every hour and a half, the message would get 'reinjected' in the qfiles 
directory.
I would delete the db and msg files, get the large queue mostly emptied out,
but then the message would get reinjected, causing the backlog again.
My temporary 'cure' was to leave the corrupt .db file in the qfiles directory.
That seemed to stop that message from returning. I left the bad db file there
for about a week, until the next large message/large recipient list.

It started to dawn on me what the problem was, when I tried to vi the 
corrupt .db file, and vi gave me 'a line cannot be longer than 2048 
characters.'
At this point, mm_cfg.py contained the option, SMTP_MAX_RCPTS = 300.
If an average email address is 20 characters, and Mailman chunkifies a large
group of addresses, in this case 300, that's 6000 characters.
Postfix has a hard limit of 2048 characters for a line.
Even dropping SMTP_MAX_RCPTS to 100 would be a borderline 2000 characters,
not taking into account some addresses that are over 30 characters long.

The short of it is, I dropped SMTP_MAX_RCPTS to 50 so Mailman chunkifies
smaller, and the large lists no longer have a problem with corrupt .db files.
As well, (without earlier stats to compare to) large messages to large
recipient lists seem to zip through the queue faster.


Example 1:

Jan 14 15:59:03 2004 (17224) smtp for 6914 recips, completed in 1201.166 
seconds

(345 addresses/minute, primetime, large message, primarily 'outside' 
addresses)

Jan 14 16:00:07 2004 (17228) post to [a list] from [a addy], 
size=38412, success


Example 2:

Jan 16 03:03:27 2004 (13054) smtp for 6915 recips, completed in 144.519 
seconds

(2882 addresses/minute, off prime, small message, primarily 'outside' 
addresses)

Jan 16 03:03:27 2004 (13054) post to [a list] from [a addy], 
size=640, success


Example 3:

Jan 20 12:59:48 2004 (14466) smtp for 6915 recips, completed in 1125.579 
seconds

(368 addresses/minute, primetime, large message, primarily 'outside' 
addresses)

Jan 20 12:59:48 2004 (14466) post to [a list] from [a addy], 
size=38481, success

At least, that's my theory and I'm sticking to it.





More information about the Mailman-Users mailing list