Ok, after several hours and several posts, I got mailman running close to the
same speed (ok a 4 hour sample is not good enough to really says this) as
ezmlm/qmail.

FIRST, let me say the hardware mailman is running on is 4 times the machine I
was running tclug on before, but, my goal was to get mailman running better then
it use to.

Ok, first, I use sendmail as the MTA, use many of you yelled at me about this
and YES qmail and zmail step all over sendmail for performance. But I like
sendmail for it's ability to EASILY incorporate MAPS stuff and I have been using
sendmail for many years.

Here is what I did to get sendmail tuned for a mailing list.

I added the following to my .mc file (we all use .mc files right?!)

define(QUEUE_DIR,`/var/spool/mqueue/q*')
define(`confTO_INITIAL', `2m')dnl
define(`confTO_CONNECT', `2m')dnl
define(`confTO_ICONNECT', `2m')dnl
define(`confTO_HELO', `2m')dnl
define(`confTO_RCPT', `2m')dnl
define(`confTO_QUEUERETURN', `1h')dnl
define(`confTO_QUEUEWARN', `30m')dnl

The confTO stuff is in your README.cf file or sendmail's web site. More or less
they turn down the amount of time sendmail waits for certain parts of the SMTP
conversation.

IMHO, the default are WAY to long.

The biggest performance boost is the define(QUEUE_DIR,`/var/spool/mqueue/q*')
statment. This let's sendmail look into /var/spool/mqueue for all directories
(and only directories) that start with a lower case 'q'.

Being an old admin, I stretched my imagination and just created 10 directories
like this:

# cd /var/spool/mqueue
# mkdir q0 q1 q2 q3 q4 q5 q6 q7 q8 q9
# chown root.mail q0 q1 q2 q3 q4 q5 q6 q7 q8 q9
# chmod 755 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9

Restart sendmail and you got 10 queues ready for parallel processing. The mailq
program will verify this for you.

# mailq
/var/spool/mqueue/q1 is empty
/var/spool/mqueue/q2 is empty
/var/spool/mqueue/q3 is empty
/var/spool/mqueue/q4 is empty
/var/spool/mqueue/q5 is empty
/var/spool/mqueue/q6 is empty
/var/spool/mqueue/q7 is empty
/var/spool/mqueue/q8 is empty
/var/spool/mqueue/q9 is empty
/var/spool/mqueue/q0 is empty
                Total Requests: 0


Next tune your mailman mm_cfg.py file. Add the following lines:
# Ceiling on the number of recipients that can be specified in a single SMTP
# transaction.  Set to 0 to submit the entire recipient list in one
# transaction.  Only used with the SMTPDirect DELIVERY_MODULE.
SMTP_MAX_RCPTS = 10

# Two other qrunner resource management variables.  The first controls the
# maximum lifetime of any single qrunner process, and the second controls the
# maximum number of messages a single qrunner process will, er, process.
# Exceeding either limit causes qrunner to exit, reclaiming system resources
# and deleting the lock.  Other qrunners will then process the remaining
# messages.  Set either to None to inhibit this resource check.
QRUNNER_PROCESS_LIFETIME = None
QRUNNER_MAX_MESSAGES = None

The SMTP_MAX_RCPTS is the most important tuning you can do. Setting it low to
something like 10 really breaks the delivery up and lets sendmail
parallel-process the delivery.

The QRUNNER stuff just makes sure your qfiles don't get to big.

This works will for me, instead of the 1000+ message in the qfiles area I am at
0 (yes zero) now and mail is flowing nicely.

If you have any questions, comments let me know. Thanks.



Keywords: sendmail mailman tuning FAST delivery
-- 
Bob Tanner <tanner at real-time.com>       | Phone : (612)943-8700
http://www.mn-linux.org                 | Fax   : (612)943-8500
Key fingerprint =  6C E9 51 4F D5 3E 4C 66 62 A9 10 E5 35 85 39 D9