diff options
| -rw-r--r-- | FAQ | 185 |
1 files changed, 185 insertions, 0 deletions
@@ -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 |
