[Mailman-Users] Moving lists

Mark Sapiro mark at msapiro.net
Sun Apr 11 18:39:09 CEST 2010

Geoff Shang wrote:
>I have someone moving their lists off our server which runs regular 
>Mailman to a server running Mailman under CPanel.  Since it's a Mailman 
>variant, I'm a bit reluctant to just copy stuff en mass over there, not 
>that I'd be installing it anyway.  On the other hand, the list has 679 
>members, 37 of whom are on digest and 46 of whom have delivery disabled 
>(10 by bounce).  Also, the configuration is a bit complicated.
>So I'm not exactly sure how or if I can do anything to aid migration of 
>the list, particularly since there's no way from the web to subscribe a 
>batch of people to digest or to nomail.
>Any thoughts?  This needs to happen in a few days and I need to start 
>telling peple how I'm going to manage this.

I will assume the people on the cPanel side have shell access to the
server. If not, there's not much that can be done.

Based on my limited knowledge of how cPanel does things, I would do the
following. Note that I have never done this and it may or may not work.

1) Create a list the cPanel way on cPanel. it should have the same name
as the existing list which I'll call listname, and create it in the
appropriate domain which I'll call example.com.

This will result in cPanel creating a directory named (I think)
/usr/local/cpanel/3rdparty/mailman/lists/listname_example.com/ This
directory will contain at least a file named config.pck

2) Move the config.pck in step 1) aside and replace it with the
lists/listname/config.pck from your server.

3) Step 1 should also have created a directory named (I think)
which I think will be empty. Put the
/archives/private/listname.mbox/listname.mbox file from your server in
this directory. I'm not sure whether it's name should be
listname_example.com.mbox or listname.mbox. In fact I'm not sure of
any of the names, but you should be able to adjust them as required by
looking at other lists. Also, make sure ownership and permissions are
consistent with other lists.

4) Here's where it gets tricky. I'm assuming that the command line
tools will be in /usr/local/cpanel/3rdparty/mailman/bin/ and that they
will work. This assumption may be overly optimistic. Perhaps these
next steps should be tested before you begin.

cd to /usr/local/cpanel/3rdparty/mailman and do bin/dumpdb on the
config.pck you moved aside in step 2. Look at the values for the
following attributes:


I expect these will be 'example.com', 'Listname', and
'http://example.com/mailman/' respectively. The real question will be
if there is some other list attribute whose value is
'listname_example.com'. I suspect not, but if there is, for discussion
let's say its name is xxx.

Now we hope withlist works. Do

 bin/withlist -l listname_example.com

Hopefully this will respond

Loading list listname_example.com (locked)
The variable `m' is the test MailList instance

Then at the >>> prompts type

>>> m.hostname = 'example.com'
>>> m.web_page_url = 'http://example.com/mailman/'

or what ever the actual values were from dumpdb. If the value of
real_name differed from 'listname' only in case, you don't need to
change it. You can change it later if desired in the web UI. If you
want to be sure, type

>>> m.real_name

which will respond with what this was on your host which is probably
what is wanted, i.e. something which differs only in case from

If there was some xxx attribute with a value 'listname_example.com',

>>> m.xxx = 'listname_example.com'

or whatever is appropriate to match the cPanel config.pck. Finally type

>>> m.Save()

and then control-D at the succeeding prompt and withlist should respond

Unlocking (but not saving) list: listname_example.com

Note that if the only changes required are host_name and web_page_url,
you should be able to replace the entire withlist interaction with

bin/withlist -l -r fix_url listname -u example.com

but that adds another unknown, potentially buggy piece to the process.

5) For the archives, you should be able to do

 bin/arch --wipe listname_example.com

but here again we have the problem that cPanel's patches are incomplete
and only address those things they expect to be used so the above
command may not work. If it fails, you could try

 bin/arch --wipe listname_example.com path/to/listname.mbox

where path/to/listname.mbox is an absolute or relative path to the file
you created at step 3.

If possible please report or get a report on how this all goes.
Inquiring minds want to know.

If you have problems, or if you just want to do the cPanel Mailman user
community a favor, get a tarball containing the Mailman/, bin/, cron/
and scripts/ directories from /usr/local/cpanel/3rdparty/mailman/ and
send it to me. This contains only code and generic Mailman information
except perhaps for Mailman/mm_cfg.py which I would like to see, but
which can be anonymized.

The purpose of this is to see cPanel's mods to be able to know more
precisely what they are doing. Under the GPL v2 which is the licence
that applies to GNU Mailman, cPanel Mailman is a derived work and I
don't believe cPanel's mods "can be reasonably considered independent
and separate works in themselves", thus cPanel Mailman can be
redistributed under the GPL.

Mark Sapiro <mark at msapiro.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