[Mailman-Users] migrating Mailman server

Mark Sapiro msapiro at value.net
Mon Jan 29 21:37:24 CET 2007

Hank van Cleef wrote:

>I have just moved a 9-year-old list from another installation to mine,
>and have a draft how-to faq on how I did it that isn't quite ready for
>prime time.  Since I know there isn't any clear information on this in
>the current mailman FAQ tree, I'll give the salient points fairly
>briefly.   I'm sure that the Mailman developers will want to comment,
>so I'll let them do the talking after posting this.

I have a few initial remarks interspersed below.

>It's fairly easy to do a seamless migration of an old Mailman list's
>personality and history into a new Mailman install.  Based on a
>migration from Mailman 2.1.4 to 2.1.9, what you need from the old 
>installation are:
>(base directory is the old mailman tree, typically /usr/local/mailman)
>1. All of the files under the ./lists/<listname> directory.
>2. All of the files under the ./archives/private/<listname> directory.
>3. ./Mailman/mm_cfg.py
>4. Any other files in the ./archives directory with <listname> in
>their names.

Depending on how you do archives, you *may* not need 2. You may just
need the ./archives/private/<listname>.mbox/<listname>.mbox files.

>A tar of those directory trees plus the mm_cfg.py file gives you the
>old list's configuration, personality, membership data base, and
>On your new system, do a new installation of Mailman at the revision
>level that the old list was running on.  I was moving from a 2.1.4
>installation, and building from source, so had to get the Mailman
>2.1.4 sources.  Follow the instructions in the build and installation
>guide on the Mailman web site exactly (don't plan on just running
>configure and doing a make---there is a lot more you need to do).

It should not be necessary to install the "same" version and then
upgrade. In this example, it should be OK to just install Mailman
2.1.9 directly on the new system.

Mailman is aware enough to update a newly encountered, older version
config.pck (or even config.db from 2.0.x) to the current format. A lot
of what bin/update does when you update to a new release is stuff that
Mailman will do on the fly when you drop an 'old' list into a working
Mailman, or it is generic stuff having to do with file locations,
queue entry formats and other things not directly relevant to a list.

Thus, it is normally just fine to drop a 2.1.4 config.pck into a
working 2.1.9 installation.

>On the fresh installation, create a new list with the same name as the
>one you are moving.  For example, if you're moving from
>"waffles at wafflehaus.org," create a new "waffles" list.  Use that 
>newly-created list to check out your installation.  You can add a few
>local list member names to convenient mail addresses on your site, and
>use this to check out the integration with your mailer and web server.
>Use the old list's mm_cfg.py as a guide in chosing what to put in 
>your installation's mm_cfg.py.  
>Once you have your installation running, take a look in the
>./list/<listname directory>.  You'll find config.pck.  Check its
>owner/group and permissions.  Copy the old list's config.pck file into
>the new installation's directory and set its owner/group and
>permissions to match.  Run the fix_url script as needed to get the 
>correct URL for your new installation installed.  If there are html
>files in the old list's list/<listname> directory (template file
>overlays), copy them over as well.  
>You should now be able to go to the listinfo page for the list, go
>into the mailman administrator options page, and review such things as
>the administrator/moderator addresses and settings, list mailto
>address, etc.  Double check that the link-across URL's between pages
>are correct for your installation.  
>Populate the archives directories.  I still haven't worked out the
>best way for doing this, but you'll need the pipermail archives
>directories and files, and control files that the old Mailman created.
>The ./bin/check_perms script will help you getting all the owner/group
>and permissions set properly (Mailman is quite fussy about these).  

Assuming you have a complete
archives/private/<listname>.mbox/<listname>.mbox from the old
installation, you can completely build the pipermail archive on the
new installation by the following process.

0) Migrate the list and run fix_url if needed.
1) Copy the archives/private/<listname>.mbox/<listname>.mbox to the new
2) Run 
  bin/cleanarch -n < archives/private/<listname>.mbox/<listname>.mbox
to help find any unescaped 'From ' lines in the .mbox file. If that
finds any problems, run
  bin/cleanarch < archives/private/<listname>.mbox/<listname>.mbox > tmp
  cp tmp archives/private/<listname>.mbox/<listname>.mbox
3) Run
  bin/arch --wipe <listname>
to build the new archive. If the .mbox is large, this may choke in
which case, run for example:
  bin/arch --wipe --end=1000 <listname>
followed by
  bin/arch --start=1001 --end=2000 <listname>

Note --wipe on first bin/arch only. Do not try to run the above in
parallel - locks will prevent it anyway.

>You should now have your old list completely installed on your new
>site.  From there, you can build the current versions of Python
>(2.5), Mailman (2.1.9) and do an upgrade installation.  

As I indicate above, it is OK to start with an up-to-date installation
and avoid the upgrade step.

Mark Sapiro <msapiro at value.net>       The highway is for gamblers,
San Francisco Bay Area, California    better use your sense - B. Dylan

More information about the Mailman-Users mailing list