6.3. MTA Performance Tuning Tips for Sendmail

If you are interested in this topic, beg, borrow, or steal a copy of Nick Christensen's book "Sendmail Performance Tuning" (see http://www.jetcafe.org/~npc/book/sendmail/). This is the definitive work.

If you are looking for online resources with regards to this subject, see Nick's slides for his talk entitled "Performance Tuning Sendmail Systems" (see http://www.jetcafe.org/~npc/doc/performance_tuning.pdf). Then there are the slides for the talk by Brad Knowles entitled "Sendmail Performance Tuning for Large Systems" (see http://www.shub-internet.org/brad/papers/sendmail-tuning/). You may also be interested in Brad's paper "MTA Performance Comparison: sendmail, postfix, & exim on *BSD" (see http://www.shub-internet.org/brad/papers/mtacomparison/).

For papers that are specific to the issue of tuning sendmail for use with mailing lists, read Rob Kolstad's paper "Tuning Sendmail for Large Mailing Lists" (see http://www.usenix.org/publications/library/proceedings/lisa97/21.kolstad.html), and Strata Chalup's paper "Drinking from the Fire(walls) Hose: Another Approach to Very Large Mailing Lists" (see http://www.usenix.org/publications/library/proceedings/lisa98/chalup.html).

Other comments (taken from the mailing lists):

  http://mail.python.org/pipermail/mailman-users/2001-May/011257.html
  http://mail.python.org/pipermail/mailman-developers/2001-August/009329.html

If you're running anything less than sendmail 8.11 – upgrade, and spend some time configuring subdirectories to reduce I/O load and contention in the directory structures (QueueDirectory=/var/spool/mqueue/q* where * = at least 5 directories, with appropriate df/qf/xf subdirs).

If you aren't running DNS on that local machine, set up a caching-only name server. You'll see a significant increase in your performance by removing the network interactions, even if you're dealing with a DNS server on your local LAN.

I know that tweaking sendmail.cf files gives many people hives, and so people aren't likely to do it. It's also unneccesary.

You can do this without modifying your sendmail files at all. Instead, in your startup script, add:

        /usr/sbin/sendmail -bd -ODeliveryMode=defer \
                -ODaemonPortOptions=Name=MSA,Port=NNNN,M=E,Addr=127.0.0.1

Where NNNN is some port number not otherwise used (you can test if something's in use by doing "telnet localhost NNNN" – if it's refused, there's no daemon listening)

This sets up a sendmail process listening to the alternate port, in DEFER mode, but set to talk only to the localhost interface, so it's not accessible by anyoneother than your local machine: no open relay problems.

To make mailman access that port, add this to your mm_cfg.py:

 # define alternate SMTP port
 SMTPPORT = NNNN

I've been running this fine for about a week, and I'm quite comfortable with it. It works with sendmail 8.10 and later and doesn't require a sendmail god to implement.

Both of these answers culled from messages by Chuq Von Rospach chuqui@plaidworks.com

Converted from the Mailman FAQ Wizard

This is one of many Frequently Asked Questions.

MailmanWiki: DOC/MTA Performance Tuning Tips for Sendmail (last edited 2015-03-04 05:50:44 by msapiro)