[Mailman-Users] Migrating Mailman to New Server (Same Domain)

Lindsay Haisley fmouse at fmp.com
Mon Oct 24 11:45:10 EDT 2016

FWIW, I've done two complete migrations of a number of mailman (v2)
lists as I've changed servers over the past few years. A couple of
scripts I've used have worked perfectly in every case. In every
migration, the basic Mailman installation is set up and running on the
new server. Mailman versions, as long as we're talking about v2.x.x,
are a no-nevermind. 

The first, which runs on the old server is called tar_list.sh, is kept
in /usr/local/sbin and is run as root:

    if [ "$1" = "" ]; then
    	    echo 'Usage: tar_list.sh <listname>'

    if [ ! -e /var/lib/mailman/lists/$1 ]; then
    	    echo "$1: No such list!"

    mkdir /tmp/$1
    cd /var/lib/mailman/lists/

    echo Creating $1_list.tar.gz ....
    tar -czvf $1_list.tar.gz $1
    mv $1_list.tar.gz /tmp/$1

    cd /var/lib/mailman/archives/private/

    echo Creating $1_archive.tar.gz ....
    tar -czvf $1_archive.tar.gz $1
    mv  $1_archive.tar.gz /tmp/$1

    echo Creating $1_archive_mbox.tar.gz ....
    tar -czvf $1_archive_mbox.tar.gz $1.mbox
    mv $1_archive_mbox.tar.gz /tmp/$1

    if [ -L /var/lib/mailman/archives/public/$1 ]; then
    	    touch /tmp/$1/$1_archive_is_public

The second script, on the new server, lives in ~mailman/bin and is run
as the mailman user (which, on my server, has a real, usable shell):

    if [ "$2" = "" ]; then
            echo 'Usage: untar_list.sh <server> <listname>'

    cd ~/tmp/
    echo "Give root password on remote system ..."
    scp root@$1:/tmp/$2/* .
    cd /var/lib/mailman/lists/

    echo ""
    echo "Creating list $2 ..."
    tar -xzvpf ~/tmp/$2_list.tar.gz

    cd /var/lib/mailman/archives/private/

    echo ""
    echo "Creating archive for $2 ..."
    tar --same-owner -xzvpf ~/tmp/$2_archive.tar.gz

    echo "Creating archive mbox for $1 ..."
    tar --same-owner -xzvpf ~/tmp/$2_archive_mbox.tar.gz

    if [ -e ~/tmp/$2_archive_is_public ]; then
    	    ln -s /var/lib/mailman/archives/private/$2 /var/lib/mailman/archives/public/$2

    echo "If no errors, delete files in ~/tmp and delete /tmp/$2 directory on remote system"

This does require (and this may be a show-stopper for some) that the
mailman user on the new system be able to ssh to the old server as
root. I'm sure there's an easy workaround for this, but since I've
always has full root access to my servers and run connections between
servers via encrypted VPNs, it's been simply a matter of modifying the
sshd_config file to allow this.

On Mon, 2016-10-24 at 13:41 +0000, Jewel Brueggeman-Makda wrote:
> Would it be best to copy the entire mailman directory to the new
> server or just the lists and archives?  
> Command issued on new server to copy data from old.
> rsync -avr root at serverip:/usr/local/mailman /usr/local/mailman
> -----Original Message-----
> From: Mailman-Users [mailto:mailman-users-bounces+jewel.makda=washbur
> n.edu at python.org] On Behalf Of Mark Sapiro
> Sent: Saturday, September 24, 2016 11:36 AM
> To: mailman-users at python.org
> Subject: Re: [Mailman-Users] Migrating Mailman to New Server (Same
> Domain)
> On 09/23/2016 02:50 PM, Jewel Brueggeman-Makda wrote:
> > 
> > TGIF Mailman Gurus,
> > 
> > My current Mailman 2.1.12 server is lists.washlaw.edu and is
> > running on a RedHat vm.  I need to move it onto a new server which
> > already has a new instance of Mailman 2.1.22 also on a RedHat vm. I
> > already ran the ./configure command to be the same setup as the OLD
> > server.  I have searched the discussion list archives on the steps
> > and am not fully understanding what needs to be done. Below are the
> > steps I do know I need to take but then I am at a loss.
> > 
> > 
> > 1.       Post Postfix, Apache and Mialman on OLD server and NEW
> > servers
> > 
> > 2.       Tar up the lists and archives from the mailman directory
> > and copy the tar files to the new server
> > 
> > a.       tar xvfx /usr/local/mailman/lists
> should be  'tar cpvzf lists.tgz /usr/local/mailman/lists'
> > 
> > b.      tar xvfz /usr/local/mailman/archives
> should be 'tar cpvzf archives.tgz /usr/local/mailman/archives'
> caveat: do not use the -h/--dereference option because
> archives/public contains only symlinks, and if it winds up with
> actual files, they don't get updated.
> > 
> > 3.       Untar the lists and archives onto NEW server
> > 
> > a.       tar -xvf lists.tgz
> > 
> > b.      tar -xvf archives.tgz
> Or instead of 2 and 3, if the two servers can talk to each other, use
> 'rsync -a'.
> > 
> > c.       Run from /usr/local/mailman/bin ./check_perms -f
> > 
> > 4.       Run newaliases
> You don't need to run newaliases, but you do need to run Mailman's
> bin/genaliases.
> Assuming the new server will ultimately be accessed via the old
> servers mail and web domain names, that's all you need.
> If domain names will change, you will need to run fix_url after
> moving the lists. See <https://wiki.list.org/x/4030616>.
> And, for the archives, in order to fix URLs to listinfo pages in the
> archives, the easiest thing is to just move the
> /usr/local/mailman/archives/private/LIST.mbox/LIST.mbox files and
> rebuild the pipermail archives with 'bin/arch --wipe'
Lindsay Haisley       | "The first casualty when
FMP Computer Services |         war comes is truth."
512-259-1190          |            
http://www.fmp.com    |     -- Hiram W Johnson

More information about the Mailman-Users mailing list