Chapter 11. Majordomo (Listserv)

There are a variety of Listservs available which will probably work with Postfix but majordomo is undoubtedly the most popular and extensive information is available on it. The majordomo src.rpm is available at contrib.redhat.com and the source code is available at Great Circle Associates http://www.greatcircle.com/majordomo/. There aren't many problems with running majordomo with Postfix but there are two issues which bear watching. If you run moderated mailing lists you will have to hack the majordomo source to prevent bounces on moderator approval messages. The problem is that Postfix reads the Message-ID: on output and it does not allow repeats because it thinks it is a bounce. Hacking the majordomo source is not a trivial affair but it's been done. Information on how to do this is available at: http://www.reverse.net/postfix/faq.html#approve.

The second issue which arises with majordomo is much simpler to deal with. It is simply that the majordomo provided tool “bulk_mailer” is not as fast or as elegant a method of transmitting outgoing list mail as Postfix is by itself (note that bulk_mailer does speed things up with sendmail). The solution is a simple modification of your majordomo aliases. Here's a sample:

  ######  definitions for majordomo list sample ##
  ##############    regular list    ###################
  
  sample-owner:          owner@uguessit.com
  owner-sample:          sample-owner
  sample-approval:       sample-owner
  owner-sample-outgoing: sample-owner
   
  sample:   "|//usr/lib/majordomo/wrapper resend -R -r sample -l sample -h uguessit.com sample-outgoing"
  sample-outgoing:     "|/usr/sbin/bulk_mailer sample-owner@uguessit.com //var/lib/majordomo/lists/sample", sample-archive
  sample-request:  "|//usr/lib/majordomo/wrapper majordomo -l sample"
  sample-archive: "|//usr/lib/majordomo/wrapper archive2.pl -f //var/lib/majordomo/archives/sample.archive -u -m"
  
 
  ######  definitions for majordomo list sample##
  ##############    regular list    ###################
   
  sample-owner:          owner@uguessit.com
  owner-sample:          sample-owner
  sample-approval:       sample-owner
  owner-sample-outgoing: sample-owner
   
  sample:   "|//usr/lib/majordomo/wrapper resend -R -r sample -l sample -h uguessit.com sample-outgoing"
  sample-outgoing:     ":include://var/lib/majordomo/lists/sample", sample-archive
  sample-request:  "|//usr/lib/majordomo/wrapper majordomo -l sample"
  sample-archive: "|//usr/lib/majordomo/wrapper archive2.pl -f //var/lib/majordomo/archives/sample.archive -u -m"
  

Note that in the first example the sample-outgoing: alias uses bulk_mailer and in the second one it does not as it uses a simple include. The second example uses the recommended (and fastest) method for sending outgoing list mail with Postfix. Note that bulk_mailer will work with Postfix but it's not necessary and actually puts an unnecessary load on your mail host.