[Mailman-Users] Re: Upgrade from 2.0.11 to 2.1.5

Bruce Timberlake bruce at brtnet.org
Fri May 28 23:43:31 CEST 2004

> I'm in the middle of planning an upgrade of our mailman
> installation and was looking for some pointers. The current version
> is 2.0.11 and I'm planning on going to the current 2.1.5. I'm
> actually moving the installation from an older desktop system to a
> newer server 

I just did a 2.0.3 to 2.1.5 same-server upgrade last night. It seemed 
to go fairly smoothly - I did a clean install and then copied lists/* 
and archives/* to the new directories. I'm always leery of 
upgrades-in-place... some sort of cruft always seems to get left 

I made sure to shut down the old mailman and sendmail, kill all 
processes, and flush the old queue.

The main gotcha that took me a while to figure out (it was *early* in 
the morning by the time I did this!) was the extra lines that needed 
to be added for each list to virtusertable (the server is running 
Sendmail) - the 2.0.x versions seemed to have fewer addresses per 
list. Without some of the new entries - like listname-bounces - no 
outbound mail was being processed. Got stuck for a while on thinking 
smrsh and the mailman wrapper was the problem... 

The server had about 55 lists on it; rather than type out all the 
virtusertable entries by hand, I wrote an ugly little Perl script to 
read through a file containing the list names and spit out another 
file containing all the virtusertable entries. Here it is - maybe it 
will save you some time!

- - - - -


# Script to generate virtusertable entries
# for Mailman 2.1.5
# (c) 2004 by Bruce Timberlake <bruce at brtnet dot org>
# create all-lists.txt with
#    bin/list_lists -b > all-lists.txt

$listfile = "all-lists.txt";
$virtfile = "virt-file.txt";
$hostname = "\@www.example.com";

open INPUT,  "<$listfile" or die "Can't open $listfile: $!\n";
open OUTPUT, ">$virtfile" or die "Can't open $virtfile: $!\n";

while (<INPUT>) {
	print OUTPUT "## List: $_\n";
	print OUTPUT "$_$hostname\t$_\n";
	print OUTPUT "$_-admin$hostname\t$_-admin\n";
	print OUTPUT "$_-bounces$hostname\t$_-bounces\n";
	print OUTPUT "$_-confirm$hostname\t$_-confirm\n";
	print OUTPUT "$_-join$hostname\t$_-join\n";
	print OUTPUT "$_-leave$hostname\t$_-leave\n";
	print OUTPUT "$_-owner$hostname\t$_-owner\n";
	print OUTPUT "$_-request$hostname\t$_-request\n";
	print OUTPUT "$_-subscribe$hostname\t$_-subscribe\n";
	print OUTPUT "$_-unsubscribe$hostname\t$_-unsubscribe\n";
	print OUTPUT "\n";
close OUTPUT;
close INPUT;

- - - - -

I told you it was ugly! :)  But it was about 3 am when I did it, so... 
I generated the all-lists.txt file by using "bin/list_lists -b" in 
the new Mailman install after I copied the lists etc. across. Then I 
opened virtusertable in vi, manually deleted the old entries for the 
2.0.3 install and imported virt-file.txt. A quick makemap, restarting 
sendmail and Mailman, and all was well.

Since you're switching machines, you'll need to deal with a DNS 
changeover, and maybe editing mm_cfg.py to change the hostname etc. 
Or are you going to use the old domain name on the new server, so 
that the list address domain stays the same? I didn't have to deal 
with that, so I can't comment.

More information about the Mailman-Users mailing list