[Mailman-Users] Throttling output

Mark Sapiro msapiro at value.net
Thu Jun 15 04:28:00 CEST 2006

Steve Campbell wrote:
>It eventually ends up there in mqueue, I saw, but I couldn't see how. I did know
>that there is a nice array defined in Defaults.py, and the input and output
>queues are in and out respectively. I also say an SMTPPORT config there, but
>wasn't sure if these could be overridden by site/list mm_cfg.py files.

You can override in mm_cfg.py anything that's in Defaults.py, although
sometimes it's tricky because if A is defined in Defaults.py and then
later used in the definition of B in Defaults.py, changing A alone in
mm_cfg.py won't affect the definition of B. A more concrete example is
the definition of QUEUE_DIR in Defaults.py followed by definitions of
INQUEUE_DIR, OUTQUEUE_DIR, etc. in terms of QUEUE_DIR. Changing
QUEUE_DIR alone in mm_cfg.py won't change any actual paths to the
queue directories because they have already been defined in terms of
the original QUEUE_DIR. If you wanted to change them, you would also
need to redefine INQUEUE_DIR, OUTQUEUE_DIR, etc. in mm_cfg.py.

Note that some things in Defaults.py should not be overridden unless
you really know what you're doing, but anything preceding the notation

# Nothing below here is user configurable.  Most of these values are in
# file for internal system convenience.  Don't change any of them or
# any of them in your mm_cfg.py file!

should be OK to change as required.

Just for completeness here, as I think you've moved beyond this in your
thinking, but here's how outgoing mail works.

Outgoing messages are placed in the 'out' queue. This entry is one file
(queue entry) per message and contains a list of all the recipients
for that message. It is a Python pickle and is only intelligible to
Python in a Mailman context.

This queue entry is picked up by OutgoingRunner which calls
DELIVERY_MODULE (normally SMTPDirect) to deliver it. SMTPDirect sorts
the recipient list by domain and breaks it into chunks of size = 1 if
personalization or VERP is being done, otherwise of size <=
SMTP_MAX_RCPTS. Then for each chunk, the message is decorated
(Headers/footers, possibly personalized ard added) and delivered to
the SMTP server at SMTPHOST and SMTPPORT in an SMTP transaction with
one MAIL FROM, chunk size RCPT TOs and one DATA, and then the process
repeats until all chunks are processed. If the message or any
recipients are refused at this level for a "non-permanent" error, the
message is put in the retry queue with the new (undelivered)
recipients. If recipients are refused for a "permanent" error, it is
treated as a bounce for those recipients.

Mark Sapiro <msapiro at value.net>       The highway is for gamblers,
San Francisco Bay Area, California    better use your sense - B. Dylan

More information about the Mailman-Users mailing list