summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FAQ185
1 files changed, 185 insertions, 0 deletions
diff --git a/FAQ b/FAQ
index b747e659a..1e63e5be8 100644
--- a/FAQ
+++ b/FAQ
@@ -264,6 +264,191 @@ A. If your Mailman installation run on an SSL-enabled web server
considered the price to pay for the convenience of not having to
type the password in every time.
+Q. How do I rename a list?
+
+A. Renaming a list is currently a bit of a pain to do completely
+ correctly, especially if you want to make sure that the old list
+ contacts are automatically forwarded to the new list. This ought
+ to be easier. :(
+
+ The biggest problem you have is how to stop mail and web traffic to
+ your list during the transition, and what to do about any mail
+ undelivered to the old list after the move. I don't think there
+ are any foolproof steps, but here's how you can reduce the risk:
+
+ - Temporarily disable qrunner. To do this, you need to edit the
+ user `mailman's crontab entry. Execute the following command,
+ commenting out the qrunner line when you're dropped into your
+ editor. Then save the file and quit the editor.
+
+ % crontab -u mailman -e
+
+ - Turn off your mail server. This is mostly harmless since remote
+ MTAs will just keep retrying until you turn it back on, and it's
+ not going to be off for very long.
+
+ - Next turn off your web server if possible. This of course means
+ your entire site will be off-line while you make the switch and
+ this may not be acceptable to you. The next best suggestion is
+ to set up your permanent redirects now for the list you're
+ moving. This means that anybody looking for the list under its
+ old name will be redirected to the new name, but they'll get
+ errors until you've completed the move.
+
+ Let's say the old name is "oldname" and the new name is
+ "newname". Here are some Apache directives that will do the
+ trick, though YMMV:
+
+ RedirectMatch permanent /mailman/(.*)/oldname(.*) http://www.dom.ain/mailman/$1/newname$2
+ RedirectMatch permanent /pipermail/oldname(.*) http://www.dom.ain/pipermail/newname$1
+
+ Add these to your httpd.conf file and restart Apache.
+
+ - Now cd to the directory where you've installed Mailman. Let's
+ say it's /usr/local/mailman:
+
+ % cd /usr/local/mailman
+
+ and cd to the `lists' subdirectory:
+
+ % cd lists
+
+ You should now see the directory `oldname'. Move this to
+ `newname':
+
+ % mv oldname newname
+
+ - Now cd to the private archives directory:
+
+ % cd ../archives/private
+
+ You will need to move the oldname's .mbox directory, and the
+ .mbox file within that directory. Don't worry about the public
+ archives; the next few steps will take care of them without
+ requiring you to fiddle around in the file system:
+
+ % mv oldname.mbox newname.mbox
+ % mv newname.mbox/oldname.mbox newname.mbox/newname.mbox
+
+ - You now need to run the `bin/move_list' script to update some of
+ the internal archiver paths. IMPORTANT: Skip this step if you
+ are using Mailman 2.1!
+
+ % cd ../..
+ % bin/move_list newname
+
+ - You should now regenerate the public archives:
+
+ % bin/arch newname
+
+ - You'll likely need to change some of your list's configuration
+ options, especially if you want to accept postings addressed to
+ the old list on the new list. Visit the admin interface for your
+ new list:
+
+ o Go to the General options
+
+ o Change the "real_name" option to reflect the new list's name,
+ e.g. "Newname"
+
+ o Change the subject prefix to reflect the new list's name,
+ e.g. "[Newname] " (yes, that's a trailing space character).
+
+ o Optionally, update other configuration fields like info,
+ description, or welcome_msg. YMMV.
+
+ o Save your changes
+
+ o Go to the Privacy options
+
+ o Add the old list's address to acceptable_aliases.
+ E.g. "oldname@dom.ain". This way, (after the /etc/aliases
+ changes described below) messages posted to the old list will
+ not be held by the new list for "implicit destination"
+ approval.
+
+ o Save your changes
+
+ - Now you want to update your /etc/aliases file to include the
+ aliases for the new list, and forwards for the old list to the
+ new list. Note that these instructions are for Sendmail style
+ alias files, adjust to the specifics of how your MTA is set up.
+
+ o Find the lines defining the aliases for your old list's name
+
+ o Copy and paste them just below the originals.
+
+ o Change all the references of "oldname" to "newname" in the
+ pasted stanza.
+
+ o Now change the targets of the original aliases to forward to
+ the new aliases. When you're done, you will end up with
+ /etc/aliases entries like the following (YMMV):
+
+ # Forward the oldname list to the newname list
+ oldname: newname@dom.ain
+ oldname-request: newname-request@dom.ain
+ oldname-admin: newname-admin@dom.ain
+ oldname-owner: newname-owner@dom.ain
+
+ newname: "|/usr/local/mailman/mail/wrapper post newname"
+ newname-admin: "|/usr/local/mailman/mail/wrapper mailowner newname"
+ newname-request: "|/usr/local/mailman/mail/wrapper mailcmd newname"
+ newname-owner: newname-admin
+
+ o Run newaliases
+
+ - Before you restart everything, you want to make one last check.
+ You're looking for files in the qfiles/ directory that may have
+ been addressed to the old list but weren't delivered before you
+ renamed the list. Do something like the following:
+
+ % cd /usr/local/mailman/qfiles
+ % grep oldname *.msg
+
+ If you get no hits, skip to the next step, you've got nothing to
+ worry about.
+
+ If you did get hits, then things get complicated. I warn you
+ that the rest of this step is untested. :(
+
+ For each of the .msg files that were destined for the old list,
+ you need to change the corresponding .db file. Unfortunately
+ there's no easy way to do this. Anyway...
+
+ Save the following Python code in a file called 'hackdb.py':
+
+ -------------------------hackdb.py
+ import sys
+ import marshal
+ fp = open(sys.argv[1])
+ d = marshal.load(fp)
+ fp.close()
+ d['listname'] = sys.argv[2]
+ fp = open(sys.argv[1], 'w')
+ marshal.dump(d, fp)
+ fp.close()
+ -------------------------
+
+ And then for each file that matched your grep above, do the
+ following:
+
+ % python hackdb.py reallylonghexfilenamematch1.db newname
+
+ - It's now safe to turn your MTA back on.
+
+ - Turn your qrunner back on by running
+
+ % crontab -u mailman -e
+
+ again and this time uncommenting the qrunner line. Save the file
+ and quit your editor.
+
+ - Rejoice, you're done. Send $100,000 in shiny new pennies to the
+ Mailman cabal as your downpayment toward making this easier for
+ the next list you have to rename. :)
+
+
Local Variables:
mode: text