4.4. How can I use an external archiver with Mailman like MHonArc?

There are two basic ways to use an external archiver with Mailman:

  1. You can configure Mailman to use the external archiver instead of the internal pipermail.
  2. You can subscribe an address to each list you want archived which archives all mail sent to it.

Configuring Mailman to use an external archiver instead of the internal Pipermail is slightly finicky. A HOWTO for this was posted to the mailman-developers list and should be copied in here once someone finds it.

The MHonArc mailing list also had a copy posted:

A maintained patch which fully integrates Mailman with MHonArc, eliminates much of the external archiver setup work and supports selection of MHonArc or built-in-pipermail for archiving on a per-list basis (rather than for the whole site) is available here:

Also see https://bugs.launchpad.net/mailman/+bug/558089

This MHonArc integration patch is also compatible with the Mailman/htdig integration patch for archive search available here:

Also see https://bugs.launchpad.net/mailman/+bug/266554

One (possible) arrangement for using an archiving address is:

  1. First setup an account which is subscribed to the various lists you want to archive.
  2. Next setup the scripts so that mail received on that address is passed to MHonArc (don't bother with MHonArc RCs at this point) such that the messages are archived into the directories etc as you wish. I built/automated most of this section with various procmail recipes in a way that's not portable or particularly useful to anyone else (I stash all messages locally in MH folders and then run MHonArc against those folders etc). You'll need to build something that fits what you want to do.
  3. Finally, build RCs that archive the messages in the manner you want and plug those RCs into your MHonArc invocation in the scripts you just wrote.

Or more specifically:

  1. Subscribe archiver@yourdomain.com to the list.

  2. Configure your MTA on archiver@yourdomain.dom to use procmail as the LDA

  3. Write a procmail recipe which filters out the list posts (and ignores SPAM, password reminders, etc) and then invokes your archiver (eg MHonarc) on the message.

J C Lawrence (claw@kanga.nu) uses a slight variation on this arrangement. His notes:

As archiving is CPU and disk I/O expensive I don't do it at the time the message is received, but via a cron job. This reduces system contention and allows work to be scheduled when the system is less busy.

Some documentation and references on my system:

My entire setup except for the procmail recipes can be found here:

In particular the following file does the automatic index generation:

As seen (for instance) here:

http://www.kanga.nu/archives/MUD-Dev-L/ (URL no longer available)

My procmail recipes save to MH folders, so the make* scripts under here:

do the work of building the MHonArc archives off those MH folders, and:

is run via cron and does the symbolic link swizzling for the various archiving periods (trivial to change for months, week, or other periods)..

As for what it all looks like when running, see the various pages under here:

http://www.kanga.nu/archives/ (URL no longer available)

With the cannonical example of:

http://www.kanga.nu/archives/MUD-Dev-L/ (URL no longer available)

The above setup is PHP4 specific and needs the template supports from PHPLIB. The main reason for using the PHP aspects are that you get the ability to reply to archives messages on the web.

An example of a message, posted via the web-reply feature and then archived by the above code:

http://www.kanga.nu/archives/MUD-Dev-L/2001Q3/msg00745.php (URL no longer available)

If you need a setup which isn't reliant on PHP (and you don't need/want the ability to reply to list messages on the web), you can find my older RCs here:

No PHP required and generate a very similar look'n'feel to my current setup.

This is one of many Frequently Asked Questions.

MailmanWiki: DOC/4.04 How can I use an external archiver with Mailman like MHonArc? (last edited 2015-03-05 01:49:32 by JimTittsler)