Site Administrator Documentation

The GNU Mailman - Installation Manual describes how to build and install Mailman. It contains general instructions, as well as specific details for various platforms, mail, and web servers. It is also available in DVI format (approx. 102k), PDF format (approx. 218k), PostScript format, (approx. 134k), and plain text format (approx. 69k).

By definition, the site administrator has shell access to the Mailman installation, and the proper permissions for total control over Mailman at the site. The site admin can edit the Mailman/ configuration file, and can run the various and sundry command line scripts.

Command line scripts

This is a brief overview of the current crop of command line scripts available to the site administrator in the bin directory. For more details, run the script with the --help option, which will print out the usage synopsis. You must run these scripts from the bin directory in the Mailman installation location, default /usr/local/mailman.
Use this script to mass add members to a mailing list. Input files are plain text, with one address per line. Command line options allow you to add the addresses as digest or regular members, select whether various notification emails are sent, and choose which list to add the members to.
Use this to rebuild a list's archive. This script can't be used to modify a list's raw mbox file, but once you've edited the mbox file some other way, you can use this script to regenerate the HTML version of the on-line archive.
Use this to change the password for a specific mailing list.
Use this script to check the integrity of a list's config.pck and config.pck.last database files.
Use this script to check, and optionally fix, the permissions of the various files in a Mailman installation.
Use this script to check a .mbox file for unescaped From_ lines in the message bodies prior to using it as input to arch.
Use this script to clone an address on a particular list into different address. This is useful when someone is changing email addresses and wants to keep all their old configuration options. Eventually members will be able to do their own cloning, but for now, only the site administrator can do this. Command line options let you remove the old address, clone addresses in the list managers addresses, etc.
This is a very powerful script which lets you view and modify a list's configuration variables from the command line. E.g. you can dump out all the list options into a plain text file (actually a valid Python file!), complete with comments explaining each variable. Or you can apply the configuration from such a file to a particular list.

Where this might be useful is if you wanted to change the web_page_url attribute on every list. You could create a file containing only the line

web_page_url = ''
and then feed this file back to config_list for every list on your system. config_list only sets the list variables that it finds in the input file.
This script is deprecated.
Use this script to discard held messages for a list or lists.
This script dumps the plain text representation for any .db database file. These files usually contain Python marshaled dictionaries, and can be found in the qfiles directory, the lists/listname directory, etc. This script can also be used to print out the contents of a pickled message file, which are stored in .pck files.
Use this script to search all the lists, or some subset of lists, for an address matching a regular expression. command line options let you also search the list managers as well.
Use this script to regenerate the plain text and db alias files for Postfix (if you're using Postfix as your MTA).
Use this script to inject a message into a Mailman queue.
List all the owners of a mailing list.
List all, or some subset of, the mailing lists in the system.
List the members of a mailing list. Command line options let you print just the regular or just the digest members, print the case-preserved addresses of the members, etc.
This script is a variant of list_admins that can also list moderators and can select a subset of lists.
The main qrunner control script. Use this to start, stop, and restart the qrunner.
Use this script to set the site password, which can be used anywhere in the system a list or user password can be used. Essentially, the site password trumps any other password, so choose wisely!
This script is deprecated.
Use this script to create new mailing lists.
Use this to run a single qrunner once (for debugging).
Use this script to reduce the size of pre-Mailman 2.1.3 -article database files.
Use this list to remove members from a mailing list.
Use this script to remove a mailing list. By default, a list's archives are not removed unless the --archives option is given.
Use this script to display the message contained in one or more Mailman queue entry files.
Use this to synchronize mailing lists in a list's database with a plain text file of addresses, similar to what is used for add_members. In a sense, this script combines the functionality of add_members and remove_members. Any addresses in the file that are not present in the list roster are added, and any addresses in the roster that are not present in the file are removed.

Command line options let you send various notification emails, preview the changes, etc.

Use this script to to check the templates and message catalog of a translation to make sure that variables and tags referenced in the translation are the same as the variables and tags in the original templates and catalog.
Use this script to reprocess shunted messages after fixing the underying problem that caused the shunting.
Don't use this script manually; it is used as part of the installation and upgrade procedures.
Prints the Mailman version number.
This is the most powerful and flexible script in Mailman. With it you can do all manner of programmatic changes to mailing lists, or look at and interactively inspect almost any aspect of Mailman. By default, you run this using Python's interactive prompt, like so:
% cd /home/mailman
% python -i bin/withlist mylist
Loading list: mylist (unlocked)
Here you see that you're left at the Python prompt after the list has been loaded and instantiated. Note that without the --lock option, the list is not locked. List must be locked if you plan to make modifications to any attributes (and they must be explicitly saved, as withlist does not automatically save changes to list objects).

At the prompt, the global object m is the instantiated list object. It's a Python instance so you can do all the normal things to it, view or change attributes, or make method calls on it.

Have a look also at the --run option, which lets you put your programmatic changes into a Python module (file) and run that module over any mailing list you want. This makes withlist essentially a framework for easily adding your own list-specific command line scripts.

Cron scripts

Mailman comes with a number of scripts that are typically only run by cron. However, it is generally okay for the site administrator to run these scripts manually, say to force a sending of accumulated digests, or to mail out member passwords, etc. You generally run these by invoking the Python executable on them, like so:
% cd /home/mailman
% python -S cron/senddigests
The -S option is an optimization and (minor) security recommendation; it inhibits Python's implicit import site on initialization. Not all of these scripts support the --help option. Here is a brief description of what the cron scripts do:
Bumps the digest volume numbers for the specified lists. Resets the issue number to 1.
Checks for ending list requests (posts and subscriptions) and mails the list manager if there are any.
Removes and possibly archives old entries fron the 'bad' and 'shunt' queues.
Sends warning notices when due and ultimately unsubscribes members with delivery disabled by bounce.
Polls the NNTP servers for messages and forwards any new messages to their mailing list gateways.
Sends the password reminder emails to all users and all mailing lists.
Regenerates the Pipermail gzip'd flat archive files.
Sends all accumulated digests.