summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ACKNOWLEDGMENTS4
-rw-r--r--FAQ19
-rw-r--r--INSTALL589
-rw-r--r--NEWS389
-rw-r--r--README211
-rw-r--r--README.BSD27
-rw-r--r--README.EXIM348
-rw-r--r--README.LINUX56
-rw-r--r--README.MACOSX31
-rw-r--r--README.POSTFIX223
-rw-r--r--README.QMAIL186
-rw-r--r--README.SENDMAIL73
-rw-r--r--STYLEGUIDE.txt175
-rw-r--r--UPGRADING101
14 files changed, 628 insertions, 1804 deletions
diff --git a/ACKNOWLEDGMENTS b/ACKNOWLEDGMENTS
index d5cdf3e83..e184d9514 100644
--- a/ACKNOWLEDGMENTS
+++ b/ACKNOWLEDGMENTS
@@ -66,6 +66,7 @@ in answering questions on mailman-users.
Ted Cabeen
Mentor Cana
John Carnes
+ Julio A. Cartaya
Claudio Cattazzo
Donn Cave
David Champion
@@ -199,6 +200,7 @@ in answering questions on mailman-users.
Mikhail Sobolev
Greg Stein
Dale Stimson
+ Students of HIT <mailman-cn@mail.cs.hit.edu.cn>
Szabolcs Szigeti
Vizi Szilard
David T-G
@@ -220,6 +222,8 @@ in answering questions on mailman-users.
Ousmane Wilane
Dan Wilder
Seb Wills
+ Dai Xiaoguang
+ Ping Yeh
YASUDA Yukihiro
Michael Yount
Blair Zajac
diff --git a/FAQ b/FAQ
index cf510638b..f064ac72c 100644
--- a/FAQ
+++ b/FAQ
@@ -1,5 +1,5 @@
Mailman - The GNU Mailing List Management System
-Copyright (C) 1998,1999,2000,2001,2002 by the Free Software Foundation, Inc.
+Copyright (C) 1998-2005 by the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Note: We're migrating the FAQ to an on-line interactive system called
@@ -40,19 +40,14 @@ A. These headers are described in RFC 2369 and are added by Mailman
Q. Can I put the user's address in the footer that Mailman adds to
each message?
-A. Yes, in Mailman 2.1. The site admin needs to enable
- personalization by setting the following variables in the mm_cfg.py
- file:
+A. Yes, in Mailman 2.1. The site admin needs to enable personalization by
+ setting the following variable in the mm_cfg.py file:
- VERP_PASSWORD_REMINDERS = 1
- VERP_PERSONALIZED_DELIVERIES = 1
- VERP_DELIVERY_INTERVAL = 1
- VERP_CONFIRMATIONS = 1
+ OWNERS_CAN_ENABLE_PERSONALIZATION = Yes
- Once this is done, list admins can enable personalization for
- regular delivery members (digest deliveries can't be
- personalized currently). A personalized list can include the
- user's address in the footer.
+ Once this is done, list admins can enable personalization for regular
+ delivery members (digest deliveries can't be personalized currently). A
+ personalized list can include the user's address in the footer.
Q. My users hate HTML in their email and for security reasons, I want
to strip out all MIME attachments. How can I do this?
diff --git a/INSTALL b/INSTALL
index 6f580abb2..9485a392e 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,586 +1,21 @@
Mailman - The GNU Mailing List Management System
-Copyright (C) 1998-2003 Free Software Foundation, Inc.
+Copyright (C) 1998-2005 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-This file contains installation instructions for GNU Mailman, which is
-configured using the standard GNU autoconf software. You first need
-to prepare your system as outlined in the sections below, and then
-configure and install the Mailman software.
+The installation and upgrading instructions are now completely contained in
+the Mailman Installation Guide. Web, PostScript, PDF, and plaintext formats
+for this guide are available both within this source distribution and online.
-UPGRADING: Upgrading is usually as easy as just installing the new
-version over the existing installation. However, you should read the
-notes in the file UPGRADING for important information before you
-upgrade.
+All manuals within this source distribution are provided in the admin/www
+directory:
+ HTML : admin/www/mailman-install/index.html
+ PostScript : admin/www/mailman-install.ps
+ PDF : admin/www/mailman-install.pdf
+ plain text : admin/www/mailman-install.txt
-0. Installation requirements
-
- You must have a mail server (MTA) that you can send messages to,
- and a web server that supports the CGI/1.1 API. Apache makes a
- fine choice for web server, and MTAs such as Postfix, Exim,
- Sendmail, and qmail should work just fine.
-
- You will need an ANSI C compiler to build Mailman's security
- wrappers. The GNU C compiler gcc 2.8.1 or later is known to work
- well. For more information about obtaining gcc, see
-
- http://www.gnu.org
-
- You must have the Python interpreter installed somewhere on your
- system. Currently Python 2.1.3 or Python 2.2.1 is recommended.
- For information about obtaining Python source code, RPM packages,
- or pre-compiled binaries please see:
-
- http://www.python.org
-
- If you are building Python from source, you should be fine with
- the standard "./configure ; make install" for most Unix-like
- OSes. If you run "make test", you'll see a bunch of tests skipped
- -- don't worry, you probably won't need them. Mailman tries to
- stick to the basics that compile on most systems.
-
- If there is a README.<yourMTA> file that describes your mail
- server (MTA), read it now. Some MTAs can be integrated more
- seamlessly with Mailman for support of some advanced features
- (like creation and removal of lists through-the-web). Examples
- are Exim and Postfix. Setup instructions for specific MTAs are
- contained in these README files.
-
-
-1. System setup
-
- You will need to be root to perform the steps in this section.
-
- Before installing the Mailman software, you need to prepare your
- system by adding certain users and groups.
-
- - Add a new user called `mailman'. Typically this is added to
- your /etc/passwd file. If username `mailman' is already in use,
- choose something else unique and see the --with-username flag
- below.
-
- - Add a new group called `mailman'. Typically this is added to
- your /etc/group file. The Mailman files will be installed under
- the `mailman' group, with the set-group-id bit. Mailman's
- security is based on group-ownership permissions, so it is
- important to get this step right. If groupname `mailman' is
- already in use, choose something else unique and see the
- --with-groupname below. The mailman user created in the
- previous step must be a member of this group.
-
- - Create an installation directory (called $prefix in the
- documentation that follows). All of the Mailman files will be
- installed under $prefix. Run "configure --help" for ways to
- split the installation based on read-only vs. read/write files.
-
- The default installation directory for Mailman 2.1 is
- /usr/local/mailman. It used to be /home/mailman for all
- versions prior to Mailman 2.1alpha2. You can override the
- default by using the --prefix option to configure (see below).
- If you're upgrading from a version previous to Mailman 2.1, you
- will need to use --prefix unless you move your mailing lists
- (this can be a wise upgrade strategy).
-
- Watch out if your site does something like mount /usr/local with
- the nosuid option. This will break Mailman, which relies on
- set-gid programs for its security. If this describes your
- environment, simply install Mailman in a location that allows
- setgid programs.
-
- Make sure the install directory is set to group `mailman' (or
- whatever you're going to specify as --with-groupname) and has
- the setgid bit set (but see README.BSD if you're on a BSD
- system). You probably also want to guarantee that this
- directory is readable and executable by everyone. For example,
- these shell commands will accomplish this:
-
- % cd $prefix
- % chgrp mailman .
- % chmod a+rx,g+ws .
-
- You are now ready to configure and install the Mailman software.
-
-
-2. Running configure
-
- TAKE SPECIAL NOTE OF THE --with-mail-gid AND --with-cgi-gid
- OPTIONS BELOW. YOU WILL PROBABLY NEED TO USE THESE!
-
- You should not be root while performing the steps in this section.
- Do them under your own login, or whatever account you typically
- use to install software. You do not need to do these steps as
- user mailman, but you could. However, make sure that the login
- used is a member of the mailman group as that that group has write
- permissions to the $prefix directory made in the previous step.
-
- Make sure that you have write permissions to the target
- installation directory, and permission to create a setgid file in
- the file system where it resides (NFS and other mounts can be
- configured to inhibit setgid settings).
-
- If you've installed other GNU software, you should be familiar
- with the configure script. Usually you can just cd to the
- directory you unpacked the Mailman source tarball into, and run
- configure with no arguments:
-
- % cd mailman-<version>
- % ./configure
- % make install
-
- The following options allow you to customize your Mailman
- installation.
-
- --prefix=<dir>
- Standard GNU configure option which changes the base
- directory that Mailman is installed into. By default
- $prefix is /usr/local/mailman. This directory must
- already exist, and be set up as described in section 1
- above.
-
- --exec-prefix=<dir>
- Standard GNU configure option which lets you specify a
- different installation directory for architecture
- dependent binaries.
-
- --with-var-prefix=<dir>
- Store mutable data under <dir> instead of under the prefix
- or exec_prefix.
-
- --with-python=</path/to/python>
- Specify an alternative Python interpreter to use for the
- wrapper programs. The default is to use the interpreter
- found first on your shell's $PATH. Note that when running
- the scripts from the command line, the first Python
- interpreter found on $PATH is always used.
-
- --with-username=<username-or-uid>
- Specify a different username than `mailman' to use as a
- default. Use this only if the username `mailman' is
- already in use by somebody (e.g. Mark Ailman's login
- name). This switch can take an integer user id or a user
- name. Be sure your $prefix directory is owned by this
- user.
-
- --with-groupname=<groupname-or-gid>
- Specify a different groupname than `mailman' to use as a
- default. Use this only if the groupname `mailman' is
- already in use. This switch can take an integer group id
- or a group name. Be sure your $prefix directory is
- group-owned by this group.
-
- --with-mail-gid=<group-or-groups>
- Specify an alternative group for running scripts via the
- mail wrapper. <group-or-groups> can be a list of one or
- more integer group ids or symbolic group names. The first
- value in the list that resolves to an existing group is
- used. By default, the value is the list
- `mailman other mail daemon'.
-
- This is highly system dependent and you must get this
- right, because the group id is compiled into the mail
- wrapper program for added security. On systems using
- sendmail, the sendmail.cf configuration file designates
- the group id of sendmail processes using the "DefaultUser"
- option. (If commented out, it still may be indicating the
- default...)
-
- Check your MTA's documentation and configuration files to
- find the right value for this switch.
-
- --with-cgi-gid=<group-or-groups>
- Specify an alternative group for running scripts via the
- CGI wrapper. <group-or-groups> can be a list of one or
- more integer group ids or symbolic group names. The first
- value in the list that resolves to an existing group is
- used. By default, the value is the the list
- `www www-data nobody'.
-
- The proper value for this is dependent on your web server
- configuration. You must get this right, because the group
- id is compiled into the CGI wrapper program for added
- security, and no Mailman CGI scripts will run if this is
- incorrect.
-
- If you're using Apache, check the values for the `Group'
- option in your httpd.conf file.
-
- --with-cgi-ext=<extension>
- Specify an extension for cgi-bin programs. The CGI
- wrappers placed in $PREFIX/cgi-bin will have this
- extension (some web servers require an extension).
- <extension> must include the dot.
-
- --with-gcc=no
- Don't use gcc, even if it is found. In this case, `cc'
- must be found on your $PATH.
-
-
-3. Check your installation
-
- After you've run "make install", you can check that your
- installation has all the correct permissions and group ownerships
- by running the check_perms script:
-
- - cd to $prefix
-
- - Run bin/check_perms
-
- Don't try to run bin/check_perms from the source directory; it
- will only run from the install (i.e. $prefix) directory.
-
- If this reports no problems, then it's very likely <wink> that
- your installation is set up correctly. If it reports problems,
- then you can either fix them manually, re-run the installation, or
- use check_perms to fix the problems (probably the easiest
- solution):
-
- - You need to become the user that did the installation (and that
- owns all the files in $prefix), or root.
-
- - Run bin/check_perms -f
-
- - Repeat previous step until no more errors are reported!
-
-
-4. Final system set-up
-
- Congratulations! You've installed the Mailman software. To get
- everything running you need to hook Mailman up to both your web
- server and your mail system.
-
- - If you plan on running your MTA and web server on different
- machines, sharing Mailman installations via NFS, be sure that
- the clocks on those two machines are synchronized closely. You
- might take a look at the file Mailman/LockFile.py; the constant
- CLOCK_SLOP helps the locking mechanism compensate for clock skew
- in this type of environment.
-
- - Configure your web server to give $prefix/cgi-bin permission to
- run CGI scripts. You probably need to be root to do this.
-
- The line you should add might look something like the following
- (with the real absolute directory substituted for $prefix, of
- course):
-
- Exec /mailman/* $prefix/cgi-bin/*
- or:
- ScriptAlias /mailman/ $prefix/cgi-bin/
-
- Consult your web server's documentation for details.
-
- - You want to be very sure that the user id under which your CGI
- scripts run is *not* in the `mailman' group you created above,
- otherwise private archives will be accessible to anyone.
-
- - Copy the Mailman, Python, and GNU logos to a location accessible
- to your web server. E.g. with Apache, you've usually got an
- `icons' directory that you can drop the images into. For
- example:
-
- % cp $prefix/icons/*.{jpg,png} /path/to/apache/icons
-
- You then want to add a line to your $prefix/Mailman/mm_cfg.py
- file which sets the base URL for the logos. For example:
-
- IMAGE_LOGOS = '/images/'
-
- The default value for IMAGE_LOGOS is '/icons/'. Read the
- comment in Defaults.py.in for details.
-
- - Configure your web server to point to the Pipermail public
- mailing list archives:
-
- For example, in Apache:
-
- Alias /pipermail/ $varprefix/archives/public/
-
- where $varprefix is usually $prefix unless you've used the
- --with-var-prefix option to configure.
-
- Consult your web server's documentation for details. Also be
- sure to configure your web server to follow symbolic links in
- this directory, otherwise public Pipermail archives won't be
- accessible. For Apache users, consult the FollowSymLinks
- option.
-
- Also, if you're going to be supporting internationalized public
- archives, you will probably want to turn off any default charset
- directive for the Pipermail directory, otherwise your
- multilingual archive pages won't show up correctly. Here's an
- example for Apache, based on the standard installation
- directories:
-
- <Directory "/usr/local/mailman/archives/public/">
- AddDefaultCharset Off
- </Directory>
-
- Now restart your web server.
-
- - Create a "site-wide" mailing list. This is the one that
- password reminders will appear to come from. Usually this
- should be the "mailman" mailing list, but if you need to change
- this, be sure to change the MAILMAN_SITE_LIST variable in
- mm_cfg.py (see below).
-
- % bin/newlist mailman
-
- Follow the prompts, and see the README file for more
- information.
-
- Now configure your site list. There is a convenient template
- for a generic site list in misc/sitelist.cfg to help you with
- this. The template can be applied to your site list by running:
-
- % bin/config_list -i data/sitelist.cfg mailman
-
- Before doing this, review the configuration options in the
- template (note that many options are not changed by
- sitelist.cfg). After you do this, be sure you review the
- configurations via the admin pages for this list.
-
- Be sure to subscribe yourself to the site list, but use the
- admin interface because mailback subscription confirmations
- won't work at this point.
-
- - Set up the crontab entries. Mailman runs a number of cron jobs
- for its basic functionality. Note that if you're upgrading from
- a previous version of Mailman, you'll want to install the new
- crontab, but be careful if you're running multiple Mailman
- installations on your site! Changing the crontab could mess
- with other parallel Mailman installations.
-
- If your version of crontab supports the -u option, you must be
- root to do this next step. Add $prefix/cron/crontab.in as a
- crontab entry by executing these commands:
-
- % cd $prefix/cron
- % crontab -u mailman crontab.in
-
- If you used the --with-username option, use that user name
- instead of mailman for the -u argument value. If your crontab
- does not support the -u option, try these commands:
-
- % cd $prefix/cron
- % su - mailman
- % crontab crontab.in
-
- - Start the Mailman qrunner daemon, by executing the following
- from the $prefix directory:
-
- % bin/mailmanctl start
-
- If you want to start Mailman every time you reboot your system,
- and your OS supports the chkconfig command (e.g. RedHat and
- Mandrake Linuxes) you can simply do the following (as root, from
- the Mailman install directory):
-
- % cp scripts/mailman /etc/init.d/mailman
- % chkconfig --add mailman
-
- (Note that /etc/init.d may be /etc/rc.d/init.d on some systems.)
-
- On Debian, you probably want to use
-
- % update-rc.d mailman defaults
-
- instead of chkconfig.
-
- For Unixes that don't support chkconfig, simply copy
- scripts/mailman as above:
-
- % cp scripts/mailman /etc/init.d/mailman
-
- then set up the following symbolic links, again as root:
-
- % cp misc/mailman /etc/init.d
- % cd /etc/rc.d/rc0.d
- % ln -s ../init.d/mailman K12mailman
- % cd ../rc1.d
- % ln -s ../init.d/mailman K12mailman
- % cd ../rc2.d
- % ln -s ../init.d/mailman S98mailman
- % cd ../rc3.d
- % ln -s ../init.d/mailman S98mailman
- % cd ../rc4.d
- % ln -s ../init.d/mailman S98mailman
- % cd ../rc5.d
- % ln -s ../init.d/mailman S98mailman
- % cd ../rc6.d
- % ln -s ../init.d/mailman K12mailman
-
- - Check the values for DEFAULT_EMAIL_HOST and DEFAULT_URL_HOST in
- Defaults.py. Make any necessary changes in the mm_cfg.py file.
- Note that if you change either of these two values, you'll want
- to add the following afterwards in the mm_cfg.py file:
-
- add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
-
-
-5. Customize Mailman
-
- You should do these steps using the account you installed Mailman
- under in section 2 above.
-
- - The file $prefix/Mailman/Defaults.py contains a number of
- defaults for your installation. If any of these are incorrect,
- override them in $prefix/Mailman/mm_cfg.py, NOT IN Defaults.py!
- See the comments in Defaults.py for details. Once a list is
- created, editing many of these variables will have no effect.
- At that point, you'll need to configure your lists through the
- web admin interface or through the command line script
- bin/withlist or bin/config_list.
-
- The install process will not overwrite an existing mm_cfg.py
- file so you can freely make changes to this file.
-
- Note: Do *not* change HOME_DIR or MAILMAN_DIR. These are set
- automatically by the configure script.
-
- - Create the site password using:
-
- % $prefix/bin/mmsitepass <your-site-password>
-
- This password can be used anywhere that individual user or
- mailing list administrator passwords are required, giving the
- mailman site administrator the ability to adjust these things
- when necessary.
-
- You may also want to create a password for the site-wide "list
- creator" role (someone other than the site administrator who as
- privileges to create and remove lists through the web). Use the
- -c option to mmsitepass to set this.
-
-
-6. Getting started
-
- See the README file under the section "CREATE YOUR FIRST LIST" for
- a quick introduction to creating an initial test list.
-
-
-7. Troubleshooting
-
- If you encounter problems with running Mailman, first check the
- "Common Problems" section, below. If your problem is not covered
- there, check both the FAQ file and the online FAQ Wizard. Also
- check for errors your syslog files and in the $prefix/logs/error
- file.
-
- Where syslog lives on your particular machine may vary. It may be
- in /var/log/maillog. It may also be in /var/log/syslog. On many
- machines, syslog files live in /adm/log/ instead of /var/log.
-
- If you encounter an error, send an error report to
- mailman-users@python.org. Include a description of what you're
- doing to cause the problem, and the relevant lines from your
- syslog. Also include information on your operating system, which
- version of Python you're using, and which version of Mailman
- you're installing.
-
-
-8. Common Problems
-
- Problem: All Mailman web pages give a 404 File not found error.
-
- Solution: Your web server has not been set up properly for handling
- Mailman's cgi commands. Make sure you've:
-
- 1) Configured the web server to give permissions to
- $prefix/cgi-bin
- 2) Restarted the web server properly.
-
- Consult your web server's documentation for instructions
- on how to do these things.
-
-
- Problem: All Mailman web pages give an "Internal Server Error".
-
- Solution: The likely problem is that you are using the wrong GID or
- UID for CGI scripts. Check your syslog. If you see, for
- example, a line like:
-
- Attempt to exec script with invalid gid 51, expected 99
-
- You need to reinstall Mailman, and specify $CGI_GID to be 51,
- as described in the installation instructions.
-
-
- Problem: I send mail to the list, and get back mail saying the
- list is not found!
-
- Solution: You probably didn't add the necessary aliases to the system
- alias database, given to you when you ran the newlist
- command. If you did add them, you likely did not update
- the alias database, or your system requires you to run
- newaliases explicitly. Refer to section 5 above for
- more information.
-
-
- Problem: I send mail to the list, and get back mail saying,
- "unknown mailer error".
-
- Solution: The likely problem is that you are using the wrong GID or
- UID for mail. Check your syslog. If you see, for
- example, a line like:
-
- Attempt to exec script with invalid gid 51, expected 99
-
- You need to reinstall Mailman, and specify $MAIL_GID to
- be 51, as described in the installation
- instructions. see notes on Postfix below, as by default
- it will create these problems on installation.
-
-
- Problem: I use Postfix for my MTA and the mail wrapper programs
- are logging complaints about the wrong GID.
-
- Solution: Create a separate aliases file for Postfix in its
- main.cf config file under the variable "alias_maps". Put
- the file somewhere in Mailman's home directory, or
- somewhere else where the user mailman has write access
- to it; *as user mailman* call Postfix's "postalias" on the
- alias file.
-
- % postalias <the alias file>
-
- Also as user mailman, run
-
- % python -c'import os; print os.getgid()'
-
- This should print out the group id that Mailman should
- be configured to expect when the mail wrapper programs
- are run. Call it "thegid". Rebuild Mailman with
-
- % ./configure --with-mail-gid=thegid
-
- See also the README.POSTFIX file for more information on
- connecting Postfix and Mailman.
-
-
- Problem: I send mail to the list, and get back mail saying,
- "sh: mailman not available for sendmail programs"
-
- Solution: Your system uses sendmail restricted shell (smrsh). You
- need to configure smrsh by creating a symbolic link from
- the mail wrapper ($prefix/mail/mailman) to the directory
- identifying executables allowed to run under smrsh.
-
- Some common names for this directory are
- /var/admin/sm.bin, /usr/admin/sm.bin or /etc/smrsh.
-
- Note that on Debian Linux, the system makes
- /usr/lib/sm.bin, which is wrong, you will need to create
- the directory /usr/admin/sm.bin and add the link there.
- Note further any aliases newaliases spits out will need
- to be adjusted to point to the secure link to the
- wrapper.
-
-
- Problem: I messed up when I called configure. How do I clean
- things up and re-install?
-
- Solution: % make clean
- % ./configure --with-the-right-options
- % make install
+Or go online at http://www.list.org/site.html to find the online installation
+guide.
diff --git a/NEWS b/NEWS
index e977094ec..d660f2d73 100644
--- a/NEWS
+++ b/NEWS
@@ -1,16 +1,397 @@
Mailman - The GNU Mailing List Management System
-Copyright (C) 1998-2003 by the Free Software Foundation, Inc.
+Copyright (C) 1998-2005 by the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Here is a history of user visible changes to Mailman.
2.2 alpha 1 (XX-XXX-200X)
+2.1.7 (XX-XXX-200X)
- - STEALTH_MODE defaults to On and is now configurable via mm_cfg.py
+ New Features
- - Integrated Catalan support from Robert Garrigós and Toni Panadčs.
+ - List owners can customize content filter behavior as not to collapse
+ multipart/alternative to its first content. This allows HTML part
+ to pass through after other content filtering is done.
- Bug fixes ported forward from 2.1.3, including
+ Bug fixes and other patches
+
+ - Logging/Logger.py unicode transform option (1235567).
+
+ - bin/update crashes with bogus files (949117).
+
+2.1.6 (30-May-2005)
+
+ Security
+
+ - Critical security patch for path traversal vulnerability in private
+ archive script (CAN-2005-0202).
+
+ - Added the ability for Mailman generated passwords (both member and list
+ admin) to be more cryptographically secure. See new configuration
+ variables USER_FRIENDLY_PASSWORDS, MEMBER_PASSWORD_LENGTH, and
+ ADMIN_PASSWORD_LENGTH. Also added a new bin/withlist script called
+ reset_pw.py which can be used to reset all member passwords. Passwords
+ generated by Mailman are now 8 characters by default for members, and 10
+ characters for list administrators.
+
+ - A potential cross-site scripting hole in the driver script has been
+ closed. Thanks to Florian Weimer for its discovery. Also, turn
+ STEALTH_MODE on by default.
+
+ Internationalization
+
+ - Chinese languages are now supported. They have been moved from 'big5'
+ and 'gb' to 'zh_TW' and 'zh_CN' respectively for compliance to the IANA
+ spec. Note, however, that the character sets were changed from 'Big5'
+ or 'GB2312' to 'UTF-8' to cope with the insufficient codecs support in
+ Python 2.3 and earlier. You may have to install Chinese capable codecs
+ (like CJKCodecs) separately to handle the incoming messages which are in
+ local charsets, or upgrade your Python to 2.4 or newer.
+
+ Behavior or defaults changes
+
+ - VERP_PROBES is disabled by default.
+
+ - bin/withlist can be run without a list name, but only if -i is given.
+ Also, withlist puts the directory it's found in at the end of sys.path,
+ making it easier to run withlist scripts that live in $prefix/bin.
+
+ - bin/newlist grew two new options: -u/--urlhost and -e/--emailhost which
+ lets the user provide the web and email hostnames for the new mailing
+ list. This is a better way to specify the domain for the list, rather
+ than the old 'mylist@hostname' syntax (which is still supported for
+ backward compatibility, but deprecated).
+
+ Compatibility
+
+ - Python 2.4 compatibility issue: time.strftime() became strict about the
+ 'day of year' range. (1078482)
+
+ New Features
+
+ - New feature: automatic discards of held messages. List owners can now
+ set how many days to hold the messages in the moderator request queue.
+ cron/checkdb will automatically discard old messages. See the
+ max_days_to_hold variable in the General Options and
+ DEFAULT_MAX_DAYS_TO_HOLD in Defaults.py. This defaults to 0
+ (i.e. disabled). (790494)
+
+ - New feature: subject_prefix can be configured to include a sequence
+ number which is taken from the post_id variable. Also, the prefix is
+ always put at the start of the subject, i.e. "[list-name] Re: original
+ subject", if mm_cfg.OLD_STYLE_PREFIXING is set No. The default style
+ is "Re: [list-name]" if numbering is not set, for backward compatibility.
+ If the list owner is using numbering feature by "%d" directive, the new
+ style, "[list-name 123] Re:", is always used.
+
+ - List owners can now cusomize the non-member rejection notice from
+ admin/<listname>/privacy/sender page. (1107169)
+
+ - Allow editing of the welcome message from the admin page (1085501).
+
+ - List owners can now use Scrubber to get the attachments scrubbed (held
+ in the web archive), if the site admin permits it in mm_cfg.py. New
+ variables introduced are SCRUBBER_DONT_USE_ATTACHMENT_FILENAME and
+ SCRUBBER_USE_ATTACHMENT_FILENAME_EXTENSION in Defaults.py for scrubber
+ behavior. (904850)
+
+ Documentation
+
+ - Most of the installation instructions have been moved to a latex
+ document. See admin/www/mailman-install/index.html for details.
+
+ Bug fixes and other patches
+
+ - Mail-to-news gateway now strips subject prefix off from a response
+ by a mail user if news_prefix_subject_too is not set.
+
+ - Date and Message-Id headers are added for digests. (1116952)
+
+ - Improved mail address sanity check. (1030228)
+
+ - SpamDetect.py now checks attachment header. (1026977)
+
+ - Filter attachments by filename extensions. (1027882)
+
+ - Bugs and patches: 955381 (older Python compatibility), 1020102/1013079/
+ 1020013 (fix spam filter removed), 665569 (newer Postfix bounce
+ detection), 970383 (moderator -1 admin requests pending), 873035
+ (subject handling in -request mail), 799166/946554 (makefile
+ compatibility), 872068 (add header/footer via unicode), 1032434
+ (KNOWN_SPAMMERS check for multi-header), 1025372 (empty Cc:), 789015
+ (fix pipermail URL), 948152 (Out of date link on Docs), 1099138
+ (Scrubber.py breaks on None part), 1099840/1099840 (deprecated %
+ insertion), 880073/933762 (List-ID RFC compliance), 1090439 (passwd
+ reminder shunted), 1112349 (case insensitivity in acceptable_aliases),
+ 1117618 (Don't Cc for personalized anonymous list), 1190404 (wrong
+ permission after editing html)
+
+2.1.5 (15-May-2004)
+
+ - The admindb page has a checkbox that allows you to discard all held
+ messages that are marked Defer. On heavy lists with lots of spam holds,
+ this makes clearing them much faster.
+
+ - The qrunner system has changed to use only one file per message.
+ However the configuration variable METADATA_FORMAT has been removed, and
+ support for SAVE_MSGS_AS_PICKLES has been changed. The latter no longer
+ writes messages as plain text. Instead, they are stored as pickles of
+ plain strings, using the text pickle format. This still makes them
+ non-binary files readable and editable by humans.
+
+ bin/dumpdb also works differently. It will print out the entire pickle
+ file (with more verbosity) and if used with 'python -i', it binds msg to
+ a list of all objects found in the pickle file.
+
+ Removed from Defaults.py: PENDINGDB_LOCK_TIMEOUT,
+ PENDINGDB_LOCK_ATTEMPTS, METAFMT_MARSHAL, METAFMT_BSDDB_NATIVE,
+ METAFMT_ASCII, METADATA_FORMAT
+
+ - The bounce processor has been redesigned so that now when an address's
+ bounce score reaches the threshold, that address will be sent a probe
+ message. Only if the probe bounces will the address be disabled. The
+ score is reset to zero when the probe is sent. Also, bounce events are
+ now kept in an event file instead of in memory. This should help
+ contain the bloat of the BounceRunner.
+
+ New supporting variables in Defaults.py: VERP_PROBE_FORMAT,
+ VERP_PROBE_REGEXP
+
+ REGISTER_BOUNCES_EVERY is promoted to a Defaults.py variable.
+
+ - The pending database has been changed from a global pickle file, to a
+ unique pickle file per mailing list.
+
+ - The 'request' database file has changed from a marshal, to the more
+ secure pickle format.
+
+ - Disallow multiple password retrievals.
+
+ - SF patch #810675 which adds a "Discard all messages marked Defer" button
+ for faster admindb maintenance.
+
+ - The email package is updated to version 2.5.5.
+
+ - New language: Turkish.
+
+ - Bugs and patches: 869644, 869647 (NotAMemberError for old cookie data),
+ 878087 (bug in Slovenian catalog), 899263 (ignore duplicate pending
+ ids), 810675 (discard all defers button)
+
+2.1.4 (31-Dec-2003)
+
+ - Close some cross-site scripting vulnerabilities in the admin pages
+ (CAN-2003-0965).
+
+ - New languages: Catalan, Croatian, Romanian, Slovenian.
+
+ - New mm_cfg.py/Defaults.py variable PUBLIC_MBOX which allows the site
+ administrator to disable public access to all the raw list mbox files
+ (this is not a per-list configuration).
+
+ - Expanded header filter rules under Privacy -> Spam Filters. Now you can
+ specify regular expression matches against any header, with specific
+ actions tied to those matches.
+
+ - Rework the SMTP error handling in SMTPDirect.py to avoid scoring bounces
+ for all recipients when a permanent error code is returned by the mail
+ server (e.g. because of content restrictions).
+
+ - Promoted SYNC_AFTER_WRITE to a Default.py/mm_cfg.py variable and
+ make it control syncing on the config.pck file. Also, we always flush
+ and sync message files.
+
+ - Reduce archive bloat by not storing the HTML body of Article objects in
+ the Pipermail database. A new script bin/rb-archfix was added to clean
+ up older archives.
+
+ - Proper RFC quoting for List-ID descriptions.
+
+ - PKGDIR can be passed to the make command in order to specify a different
+ directory to unpack the distutils packages in misc. (SF bug 784700).
+
+ - Improved logging of the origin of subscription requests.
+
+ - Bugs and patches: 832748 (unsubscribe_policy ignored for unsub button on
+ member login page), 846681 (bounce disabled cookie was always out of
+ date), 835870 (check VIRTUAL_HOST_OVERVIEW on through the web list
+ creation), 835036 (global address change when the new address is already
+ a member of one of the lists), 833384 (incorrect admin password on a
+ hold message confirmation attachment would discard the message), 835012
+ (fix permission on empty archive index), 816410 (confirmation page
+ consistency), 834486 (catch empty charsets in the scrubber), 777444 (set
+ the process's supplemental groups if possible), 860135 (ignore
+ DiscardMessage exceptions during digest scrubbing), 828811 (reduce
+ process size for list and admin overviews), 864674/864676 (problems
+ accessing private archives and rosters with admin password), 865661
+ (Tokio Kikuchi's i18n patches), 862906 (unicode prefix leak in admindb),
+ 841445 (setting new_member_options via config_list), n/a (fixed email
+ command 'set delivery')
+
+2.1.3 (28-Sep-2003)
+
+ Performance, Reliability, Security
+
+ - Closed a cross-site scripting exploit in the create cgi script.
+
+ - Improvements in the performance of the bounce processor.
+ Now, instead of processing each bounce immediately (which
+ can cause severe lock contention), bounce events are queued.
+ Every 15 minutes by default, the queued bounce events are
+ processed en masse, on a list-per-list basis, so that each
+ list only needs to be locked once.
+
+ - When some or all of a message's recipients have temporary
+ delivery failures, the message is moved to a "retry" queue.
+ This queue wakes up occasionally and moves the file back to
+ the outgoing queue for attempted redelivery. This should
+ fix most observed OutgoingRunner 100% cpu consumption,
+ especially for bounces to local recipients when using the
+ Postfix MTA.
+
+ - Optional support for fsync()'ing qfile data after writing.
+ Under some catastrophic system failures (e.g. power lose),
+ it would be possible to lose messages because the data
+ wasn't sync'd to disk. By setting SYNC_AFTER_WRITE to True
+ in Mailman/Queue/Switchboard.py, you can force Mailman to
+ fsync() queue files after flushing them. The benefits are
+ debatable for most operating environments, and you must
+ ensure that your Python has the os.fsync() function defined
+ before enabling this feature (it isn't, even on all
+ Unix-like operating systems).
+
+ Internationalization
+
+ - New languages Ukrainian, Serbian, Danish, Euskara/Basque.
+
+ - Fixes to template lookup. Lists with local overriding
+ templates would find the wrong template.
+
+ - .mo files (for internationalization) are now generated at
+ build time instead of coming as part of the source
+ distribution.
+
+ Documentation
+
+ - A first draft of member documentation by Terri Oda. There
+ is also a Japanese translation of this manual by Ikeda Soji.
+
+ Archiver / Pipermail
+
+ - In the configuration variables PUBLIC_EXTERNAL_ARCHIVER, and
+ PRIVATE_EXTERNAL_ARCHIVER, %(hostname)s has been added to
+ the list of allowable substitution variables.
+
+ - The timezone is now taken into account when figuring the
+ posting date for an article.
+
+ Scripts / Cron
+
+ - Fixes to cron/disabled for NotAMemberError crashes.
+
+ - New script bin/show_qfiles which prints the contents of .pck
+ message files. New script bin/discard which can be used to
+ mass discard held messages.
+
+ - Fixes to cron/mailpasswds to account for old password-less
+ subscriptions.
+
+ - bin/list_members has grown two new options: --invalid/-i
+ prints only the addresses in the member database that are
+ invalid (which could have snuck in via old releases);
+ --unicode/-u prints addresses which are stored as Unicode
+ objects instead of as normal strings.
+
+ Miscellaneous
+
+ - Fixes to problems in some configurations where Python wouldn't
+ be able to find its standard library.
+
+ - Fixes to the digest which could cause MIME-losing missing
+ newlines when parts are scrubbed via the content filters.
+
+ - In the News/Mail gateway admin page, the configuration variable
+ nntp_host can now be a name:port pair.
+
+ - When messages are pulled from NNTP, the member moderation checks
+ are short-circuited.
+
+ - email 2.5.4 is included. This fixes an RFC 2231 bug, among
+ possibly others.
+
+ - Fixed some extra spaces that could appear in the List-ID header.
+
+ - Fixes to ensure that invalid email addresses can't be invited.
+
+ - WEB_LINK_COLOR in Defaults.py/mm_cfg.py should now work.
+
+ - Fixes so that shunted message file names actually match
+ those logged in log/errors.
+
+ - An improved pending action cookie generation algorithm has
+ been added.
+
+ - Fixes to the DSN bounce detector.
+
+ - The usual additional u/i, internationalization, unicode, and
+ other miscellaneous fixes.
+
+2.1.2 (22-Apr-2003)
+
+ - New languages Portuguese (Portugal) and Polish.
+
+ - Many convenient constants have been added to the Defaults.py
+ module to (hopefully) make it more readable.
+
+ - Email addresses which contain 8-bit characters in them are now
+ rejected and won't be subscribed. This is not the same as 8-bit
+ characters in the realname, which is still allowed.
+
+ - The X-Originating-Email header is removed for anonymous lists.
+ Hotmail apparently adds this header.
+
+ - When running make to build Mailman, you can specify $DESTDIR to
+ the install target to specify an alternative location for
+ installation, without influencing the paths stored in
+ e.g. Defaults.py. This is useful to package managers.
+
+ - New Defaults.py variable DELIVERY_RETRY_WAIT which controls how
+ long the outgoing qrunner will wait before it retries a
+ tempfailure delivery.
+
+ - The semantics for the extend.py hook to MailList objects has
+ changed slightly. The hook is now called before attempting to
+ lock and load the database.
+
+ - Mailman now uses the email package version 2.5.1
+
+ - bin/transcheck now checks for double-%'s
+
+ - bin/genaliases grew a -q / --quiet flag
+
+ - cron/checkdbs grew a -h / --help option.
+
+ - The -c / --change-msg option has been removed from bin/add_members
+
+ - bin/msgfmt.py has been added, taken from Python 2.3's Tools/i18n
+ directory. The various .mo files are now no longer distributed
+ with Mailman. They are generated at build time instead.
+
+ - A new file misc/sitelist.cfg which can be used with
+ bin/config_list provides a small number of recommended settings
+ for your site list. Be sure to read it over before applying!
+ sitelist.cfg is installed into the data directory.
+
+ - Many bug fixes, including these SourceForge bugs closed and
+ patches applied: 677668, 690448, 700538, 700537, 673294, 683906,
+ 671294, 522080, 521124, 534297, 699900, 697321, 695526, 703941,
+ 658261, 710678, 707608, 671303, 717096, 694912, 707624, 716755,
+ 661138, 716754, 716702, 667167, 725369, 726415
+
+
+2.1.1 (08-Feb-2003)
+
+ Lots of bug fixes and language updates. Also:
- Closed a cross-site scripting vulnerability in the user options page.
diff --git a/README b/README
index 80dffce4c..0849b19f7 100644
--- a/README
+++ b/README
@@ -1,79 +1,73 @@
Mailman - The GNU Mailing List Management System
-Copyright (C) 1998,1999,2000,2001,2002 by the Free Software Foundation, Inc.
+Copyright (C) 1998-2005 by the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
INTRODUCTION
- This is GNU Mailman, a mailing list management system distributed
- under the terms of the GNU General Public License (GPL). The name
- of this software is spelled "Mailman" with a leading capital `M'
- but with a lower case second `m'. Any other spelling is
- incorrect.
+ This is GNU Mailman, a mailing list management system distributed under
+ the terms of the GNU General Public License (GPL). The name of this
+ software is spelled "Mailman" with a leading capital `M' but with a lower
+ case second `m'. Any other spelling is incorrect.
- Mailman is written primarily in Python, a free object-oriented
- scripting language. There is some ANSI C code for security
- purposes.
+ Mailman is written primarily in Python, a free object-oriented scripting
+ language. There is some ANSI C code for security purposes.
- Mailman was originally developed by John Viega. Subsequent
- development (through version 1.0b3) was by Ken Manheimer. Further
- work towards the 1.0 final release was a group effort, with the
- core contributors being: Barry Warsaw, Ken Manheimer, Scott
- Cotton, Harald Meland, and John Viega. Version 1.0 and beyond
- have been primarily maintained by Barry Warsaw with contributions
- from many; see the ACKNOWLEDGMENTS file for details. Jeremy
+ Mailman was originally developed by John Viega. Subsequent development
+ (through version 1.0b3) was by Ken Manheimer. Further work towards the
+ 1.0 final release was a group effort, with the core contributors being:
+ Barry Warsaw, Ken Manheimer, Scott Cotton, Harald Meland, and John Viega.
+ Version 1.0 and beyond have been primarily maintained by Barry Warsaw with
+ contributions from many; see the ACKNOWLEDGMENTS file for details. Jeremy
Hylton helped considerably with the Pipermail code in Mailman 2.0.
- The Mailman home page is
+ The Mailman home page is:
- http://www.gnu.org/software/mailman
+ http://www.list.org
- with mirrors at
+ with mirrors at:
- http://www.list.org
+ http://www.gnu.org/software/mailman
http://mailman.sf.net
- Mailman 2.1 requires Python 2.1.3 or greater, which can be
- downloaded from
+ Mailman 2.2 requires Python 2.3.5 or greater, which can be downloaded from:
http://www.python.org
- It is recommended that you use Python 2.1.3 or Python 2.2.1, the
- latest releases as of this writing. Mailman 2.1 is not compatible
- with Python 2.0 or any earlier version.
+ It is recommended that you use Python 2.4.1, the latest release as of this
+ writing (28-Aug-2005).
+
+ http://www.python.org/2.4.1
- You will also need an ANSI C compiler to build both Python and
- Mailman; gcc (the GNU C compiler) works just fine. Mailman
- currently works only on GNU/Linux and other Unix-like operating
- systems (e.g. Solaris, *BSD, MacOSX, etc.). It does not run on
- Windows, although web and mail clients on any platform should be
- able to interact with Mailman just fine.
+ You will also need an ANSI C compiler to build both Python and Mailman;
+ gcc (the GNU C compiler) works just fine. Mailman currently works only on
+ GNU/Linux and other Unix-like operating systems (e.g. Solaris, *BSD,
+ MacOSX, etc.). It does not run on Windows, although web and mail clients
+ on any platform should be able to interact with Mailman just fine.
- See the INSTALL file for installation instructions. If you are
- upgrading from a previous version of Mailman, you need to read the
- UPGRADING file for important information.
+ See the INSTALL file for installation instructions. If you are upgrading
+ from a previous version of Mailman, you need to read the UPGRADING file
+ for important information.
FEATURES
- Read the NEWS file for a list of changes since version 0.9. Read
- the TODO file for our (extensive) wish list. You can see Mailman
- 2.1 in action at
+ Read the NEWS file for a list of changes since version 0.9. Read the TODO
+ file for our (extensive) wish list. You can see Mailman 2.1 in action at:
http://mail.python.org/mailman-21/listinfo
- Mailman has most of the standard features you'd expect in a
- mailing list manager, and more:
+ Mailman has most of the standard features you'd expect in a mailing list
+ manager, and more:
- Web based list administration for nearly all tasks. Web based
- subscriptions and user configuration management. A customizable
- "home page" for each mailing list.
+ subscriptions and user configuration management. A customizable "home
+ page" for each mailing list.
- - Privacy features such as moderation, open and closed list
- subscription policies, private membership rosters, and
- sender-based filters.
+ - Privacy features such as moderation, open and closed list subscription
+ policies, private membership rosters, and sender-based filters.
- - Automatic web based archiving built-in with support for private
- and public archives, and hooks for external archivers.
+ - Automatic web based archiving built-in with support for private and
+ public archives, and hooks for external archivers.
- Per-user configuration optional digest delivery for either
MIME-compliant or RFC 1153 style "plain text" digests.
@@ -95,85 +89,24 @@ FEATURES
REQUIREMENTS
- The default mail delivery mechanism uses a direct SMTP connection
- to whatever mail transport agent you have running on port 25. You
- can thus use Mailman with any such MTA, however with certain MTAs
- (e.g. Exim and Postfix), Mailman will support thru-the-web
- creation and removal of mailing lists.
-
- Mailman works with any web server that supports CGI/1.1. The HTML
- it generates is quite pedestrian and stingy on the graphics so it
- should be friendly to most web browsers and network connections.
- It is regularly tested with IE 5.5, Netscape 4.7x, and Mozilla on
- Windows and Netscape 4.7x and Mozilla on Linux (and occasionally
- Lynx on Linux and Netscape and Mozilla on MacOS too!).
-
- You will need root access on the machine hosting your Mailman
- installation in order to complete some of the configuration
- steps. See the INSTALL file for details.
-
- Mailman's web and email user interface should be compatible with
- just about any mail reader or web browser, although a mail reader
- that is MIME aware will be a big help. You do not need Java,
- JavaScript, or any other fancy plugins.
-
-
-CREATE YOUR FIRST LIST
-
- These instructions assume that you've installed and configured
- Mailman according to the instructions in the INSTALL file. To
- create and test your first list, try the following:
-
- - First, initialize the site administrator's password by cd'ing to
- the install directory (by default /usr/local/mailman) and typing
+ The default mail delivery mechanism uses a direct SMTP connection to
+ whatever mail transport agent you have running on port 25. You can thus
+ use Mailman with any such MTA, however with certain MTAs (e.g. Exim and
+ Postfix), Mailman will support thru-the-web creation and removal of
+ mailing lists.
- % bin/mmsitepass
- New site password: [yourpassword]
- Again to confirm password: [yourpassword]
- Password changed.
+ Mailman works with any web server that supports CGI/1.1. The HTML it
+ generates is quite pedestrian and stingy on the graphics so it should be
+ friendly to most web browsers and network connections.
- - Visit the url
+ You will need root access on the machine hosting your Mailman installation
+ in order to complete some of the configuration steps. See the INSTALL
+ file for details.
- http://my.dom.ain/mailman/create
-
- Fill out the form as described in the on-screen instructions, and
- in the "List creator's password" field, type the password you
- entered above. Type your own email address for the "Initial
- list owner address", and select "Yes" to notify the list
- administrator.
-
- - Hit "Create List"
-
- - Check your email for a message from Mailman informing you that
- your new mailing list was created.
-
- - NOTE: If you are using an MTA other than Exim or Postfix
- (e.g. Sendmail or qmail), then you'll need to do the extra step
- of installing the mailing list aliases manually. Follow the
- instructions in an email message that you should have received
- (you'll need to know how to do this for your particular MTA, see
- the README for your MTA for more information).
-
- - Now visit the list's admin page (either by following the link on
- the web page or entering the link from the email Mailman just
- sent you). Typically the url will be something like
-
- http://my.dom.ain/mailman/admin/mysitelist
-
- Type in the list's password and click on "Let me in..."
-
- - Click on "Membership Management" and then on "Mass Subscription".
-
- - Enter your email address in the big text field, and click on
- "Submit Your Changes"
-
- - Now go to your email and send a message to yourlist@my.dom.ain.
- Within a minute or two you should see your message reflected
- back to you via Mailman.
-
- Congratulations! You've just set up and tested your first Mailman
- mailing list. If you had any problems along the way, please see
- the section below on FOR MORE INFORMATION.
+ Mailman's web and email user interface should be compatible with just
+ about any mail reader or web browser, although a mail reader that is MIME
+ aware will be a big help. You do not need Java, JavaScript, or any other
+ fancy plugins.
FOR MORE INFORMATION
@@ -193,43 +126,47 @@ FOR MORE INFORMATION
to help you get going with Mailman.
Mailman-Users
- An list for users of Mailman, for posting questions or
- problems related to installation, use, etc. We'll try to keep
- the deep technical discussions off this list.
+ An list for users of Mailman, for posting questions or problems
+ related to installation, use, etc. We'll try to keep the deep
+ technical discussions off this list.
http://mail.python.org/mailman/listinfo/mailman-users
Listowners
This mailing list with a non-technical focus, specifically for
- discussions from the perspective of listowners and moderators
- who do not have "shell access" to the mailing list server
- where the Mailman software runs.
+ discussions from the perspective of listowners and moderators who do
+ not have "shell access" to the mailing list server where the Mailman
+ software runs.
http://listowner.org
Mailman-Announce
- A read-only list for release announcements an other important
- news.
+ A read-only list for release announcements an other important news.
http://mail.python.org/mailman/listinfo/mailman-announce
Mailman-Developers
- A list for those of you interested in helping develop
- Mailman's future direction. This list will contain in-depth
- technical discussions.
+ A list for those of you interested in helping develop Mailman 2's
+ future direction. This list will contain in-depth technical
+ discussions.
http://mail.python.org/mailman/listinfo/mailman-developers
+ Mailman3-Dev
+ Get involved now in the development of Mailman 3!
+
+ http://mail.python.org/mailman/listinfo/mailman3-dev
+
Mailman-I18N
A list for the discussion of the Mailman internationalization
- effort. Mailman 2.1 will be fully multi-lingual.
+ effort. Mailman 2.1 is fully multi-lingual.
http://mail.python.org/mailman/listinfo/mailman-i18n
Mailman-Checkins
- A read-only list which is an adjunct to the public anonymous
- CVS repository. You can stay on the bleeding edge of Mailman
- development by subscribing to this list.
+ A read-only list which is an adjunct to the public anonymous CVS
+ repository. You can stay on the bleeding edge of Mailman development
+ by subscribing to this list.
http://mail.python.org/mailman/listinfo/mailman-checkins
diff --git a/README.BSD b/README.BSD
deleted file mode 100644
index 6a128c3cc..000000000
--- a/README.BSD
+++ /dev/null
@@ -1,27 +0,0 @@
-Mailman - The GNU Mailing List Management System
-Copyright (C) 1998,1999,2000,2001,2002 by the Free Software Foundation, Inc.
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-
-BSD ISSUES
-
-1. Vivek Khera writes that BSD does nightly security scans for setuid
- file changes. Setgid directories also come up on the scan when
- they change. He says that setgid bit is not necessary on BSD
- systems because group ownership is automatically inherited on files
- created in directories. On other Un*xes, this only happens when
- the directory has the setgid bit turned on.
-
- To install without turning on the setgid bit on directories, simply
- pass in the DIRSETGID variable to make, like so:
-
- % make DIRSETGID=: install
-
- This turns off the chmod g+s on each directory as they are
- installed.
-
-
-
-Local Variables:
-mode: text
-indent-tabs-mode: nil
-End:
diff --git a/README.EXIM b/README.EXIM
deleted file mode 100644
index 72e3eaa51..000000000
--- a/README.EXIM
+++ /dev/null
@@ -1,348 +0,0 @@
-Using Exim and Mailman Together
-===============================
-
-[This is derived from Nigel Metheringham's "HOWTO - Using Exim and
- Mailman together", which covers Mailman 2.0.x and Exim 3. It
- has been updated to cover Mailman 2.1 and Exim 4. The original
- document is here: http://www.exim.org/howto/mailman.html]
-
-
-Mailman configuration
----------------------
-
-There is no Mailman configuration needed other than the standard
-options detailed in the Mailman install documentation. The Exim
-configuration is transparent to Mailman. The user and group settings
-for Mailman must match those in the config fragments given below.
-
-
-Exim configuration
-------------------
-
-The Exim configuration is built so that a list created within Mailman
-automatically appears to Exim without the need for defining any
-additional aliases.
-
-The drawback of this configuration is that it will work poorly on
-systems supporting lists in several different mail domains. While
-Mailman handles virtual domains, it does not yet support having two
-distinct lists with the same name in different virtual domains, using
-the same Mailman installation. This will eventually change. (But see
-below for a variation on this scheme that should accommodate virtual
-domains better.)
-
-The configuration file excerpts below are for use in an already
-functional Exim configuration, which accepts mail for the domain in
-which the list resides. If this domain is separate from the others
-handled by your Exim configuration, then you'll need to:
-
- * add the list domain, "my.list.domain" to local_domains
-
- * add a "domains=my.list.domain" option to the director
- (router) for the list
-
- * (optional) exclude that domain from your other directors (routers)
-
-[Note: the instructions in this document should work with either Exim 3
-or Exim 4. In Exim 3, you must have a 'local_domains' configuration
-setting; in Exim 4, you most likely have a 'local_domains' domainlist.
-If you don't, you probably know what you're doing and can adjust
-accordingly. Similarly, in Exim 4 the concept of "directors" has
-disappeared -- there are only routers now. So if you're using Exim 4,
-whenever this document says "director", read "router".]
-
-Whether you are using Exim 3 or Exim 4, you will need to add some macros
-to the main section of your Exim config file. You will also need to
-define one new transport. With Exim 3, you'll need to add a new
-director; with Exim 4, a new router plays the same role.
-
-Finally, the configuration supplied here should allow co-habiting
-Mailman 2.0 and 2.1 installations, with the proviso that you'll probably
-want to use "mm21" in place of "mailman" -- e.g., MM21_HOME,
-mm21_transport, etc.
-
-
-Main configuration settings
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-First, you need to add some macros to the top of your Exim config file.
-These just make the director (router) and transport below a bit
-cleaner. Obviously, you'll need to edit these based on how you
-configured and installed Mailman.
-
- # Home dir for your Mailman installation -- aka Mailman's prefix
- # directory.
- MAILMAN_HOME=/usr/local/mailman
- MAILMAN_WRAP=MAILMAN_HOME/mail/mailman
-
- # User and group for Mailman, should match your --with-mail-gid
- # switch to Mailman's configure script.
- MAILMAN_USER=mailman
- MAILMAN_GROUP=mailman
-
-
-Transport for Exim 3
-~~~~~~~~~~~~~~~~~~~~
-
-Add this to the transports section of your Exim config file,
-i.e. somewhere between the first and second "end" line:
-
- mailman_transport:
- driver = pipe
- command = MAILMAN_WRAP \
- '${if def:local_part_suffix \
- {${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} \
- {post}}' \
- $local_part
- current_directory = MAILMAN_HOME
- home_directory = MAILMAN_HOME
- user = MAILMAN_USER
- group = MAILMAN_GROUP
-
-
-Director for Exim 3
-~~~~~~~~~~~~~~~~~~~
-
-If you're using Exim 3, you'll need to add the following director to
-your config file (directors go between the second and third "end"
-lines). Also, don't forget that order matters -- e.g. you can make
-Mailman lists take precedence over system aliases by putting this
-director in front of your aliasfile director, or vice-versa.
-
- # Handle all addresses related to a list 'foo': the posting address.
- # Automatically detects list existence by looking
- # for lists/$local_part/config.pck under MAILMAN_HOME.
- mailman_director:
- driver = smartuser
- require_files = MAILMAN_HOME/lists/$local_part/config.pck
- suffix_optional
- suffix = -bounces : -bounces+* : \
- -confirm+* : -join : -leave : \
- -owner : -request : -admin
- transport = mailman_transport
-
-
-Router for Exim 4
-~~~~~~~~~~~~~~~~~
-
-In Exim 4, there's no such thing as directors -- you need to add a new
-router instead. Also, the canonical order of the configuration file was
-changed so routers come before transports, so the router for Exim 4
-comes first here. Put this router somewhere after the "begin routers"
-line of your config file, and remember that order matters.
-
- mailman_router:
- driver = accept
- require_files = MAILMAN_HOME/lists/$local_part/config.pck
- local_part_suffix_optional
- local_part_suffix = -bounces : -bounces+* : \
- -confirm+* : -join : -leave : \
- -owner : -request : -admin
- transport = mailman_transport
-
-
-Transports for Exim 4
-~~~~~~~~~~~~~~~~~~~~~
-
-The transport for Exim 4 is the same as for Exim 3; just copy the
-transport given above to somewhere under the "begin transports" line of
-your Exim config file.
-
-
-Notes
------
-
-Exim should be configured to allow reasonable volume -- e.g. don't set
-max_recipients down to a silly value -- and with normal degrees of
-security -- specifically, be sure to allow relaying from 127.0.0.1, but
-pretty much nothing else. Parallel deliveries and other tweaks can also
-be used if you like; experiment with your setup to see what works.
-Delay warning messages should be switched off or configured to only
-happen for non-list mail, unless you like receiving tons of mail when
-some random host is down.
-
-
-Problems
---------
-
- * Mailman will send as many MAIL FROM/RCPT TO as it needs. It may result
- in more than 10 or 100 messages sent in one connection, which will exceed
- the default value of Exim's smtp_accept_queue_per_connection
- This is bad because it will cause Exim to switch into queue mode and
- severely delay delivery of your list messages.
- The way to fix this is to set mailman's SMTP_MAX_SESSIONS_PER_CONNECTION
- (in ~mailman/Mailman/mm_cfg.py) to a smaller value than Exim's
- smtp_accept_queue_per_connection
-
- * Mailman should ignore Exim delay warning messages, even though
- Exim should never send this to list messages. Mailman 2.1's
- general bounce detection and VERP support should greatly improve
- the bounce detector's hit rates.
-
- * List existence is determined by the existence of a config.pck file
- for a list. If you delete lists by foul means, be aware of this.
-
- * If you are getting Exim or Mailman complaining about user ids when
- you send mail to a list, check that the MAILMAN_USER and
- MAILMAN_GROUP match those of Mailman itself (i.e. what were used
- in the configure script). Also make sure you do not have aliases
- in the main alias file for the list.
-
-
-Receiver Verification
----------------------
-
-Exim's receiver verification feature is very useful -- it lets Exim
-reject unrouteable addresses at SMTP time. However, this is most useful
-for externally-originating mail that is addressed to mail in one of your
-local domains. For Mailman list traffic, mail originates on your
-server, and is addressed to random external domains that are not under
-your control. Furthermore, each message is addressed to many recipients
--- up to 500 if you use Mailman's default configuration and don't tweak
-SMTP_MAX_RCPTS.
-
-Doing receiver verification on Mailman list traffic is a recipe for
-trouble. In particular, Exim will attempt to route every recipient
-addresses in outgoing Mailman list posts. Even though this requires
-nothing more than a few DNS lookups for each address, it can still
-introduce significant delays. Therefore, you should disable recipient
-verification for Mailman traffic.
-
-Under Exim 3, put this in your main configuration section:
-
- receiver_verify_hosts = !127.0.0.1
-
-Under Exim 4, this is probably already taken care of for you by the
-default recipient verification ACL statement (in the "RCPT TO" ACL):
-
- accept domains = +local_domains
- endpass
- message = unknown user
- verify = recipient
-
-which only does recipient verification on addresses in your domain.
-(That's not exactly the same as doing recipient verification only on
-messages coming from non-127.0.0.1 hosts, but it should do the trick for
-Mailman.)
-
-
-SMTP Callback
--------------
-
-Exim's SMTP callback feature is an even more powerful way to detect
-bogus sender addresses than normal sender verification. Unfortunately,
-lots of servers send bounce messages with a bogus address in the header,
-and there are plenty that send bounces with bogus envelope senders
-(even though they're supposed to just use an empty envelope sender for
-bounces).
-
-In order to ensure that Mailman can disable/remove bouncing addresses,
-you generally want to receive bounces for Mailman lists, even if those
-bounces are themselves not bounceable. Thus, you might want to disable
-SMTP callback on bounce messages.
-
-With Exim 4, you can accomplish this using something like the following
-in your "RCPT TO" ACL:
-
- # Accept bounces to lists even if callbacks or other checks would fail
- warn message = X-WhitelistedRCPT-nohdrfromcallback: Yes
- condition = \
- ${if and {{match{$local_part}{(.*)-bounces\+.*}}
- {exists {MAILMAN_HOME/lists/$1/config.pck}}} \
- {yes}{no}}
- {yes}{no}}
-
- accept condition = \
- ${if and {{match{$local_part}{(.*)-bounces\+.*}}
- {exists {MAILMAN_HOME/lists/$1/config.pck}}} \
- {yes}{no}}
- {yes}{no}}
-
- # Now, check sender address with SMTP callback.
- deny !verify = sender/callout=90s
-
-If you also do SMTP callbacks on header addresses, you'll want something
-like this in your "DATA" ACL:
-
- deny !condition = $header_X-WhitelistedRCPT-nohdrfromcallback:
- !verify = header_sender/callout=90s
-
-
-Doing VERP with Exim and Mailman
---------------------------------
-
-VERP will send one email, with a separate envelope sender (return path),
-for each of your subscribers -- read the information in
-~mailman/Mailman/Default.py for the options that start with VERP. In a
-nutshell, all you need to do to enable VERP with Exim is to add these
-lines to ~mailman/Mailman/mm_cfg.py:
-
- VERP_PASSWORD_REMINDERS = 1
- VERP_PERSONALIZED_DELIVERIES = 1
- VERP_DELIVERY_INTERVAL = 1
- VERP_CONFIRMATIONS = 1
-
-(The director (router) above is smart enough to deal with VERP bounces.)
-
-
-Virtual Domains
----------------
-
-One approach to handling virtual domains is to use a separate Mailman
-installation for each virtual domain. (Currently, this is the only way
-to have lists with the same name in different virtual domains handled by
-the same machine.)
-
-In this case, the MAILMAN_HOME and MAILMAN_WRAP macros are useless --
-you can remove them. Change your director (router) to something like
-this:
-
- require_files = /virtual/${domain}/mailman/lists/${lc:$local_part}/config.pck
-
-and change your transport like this:
-
- command = /virtual/${domain}/mailman/mail/mailman \
- ${if def:local_part_suffix \
- {${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}}
- {post}} \
- $local_part
- current_directory = /virtual/${domain}/mailman
- home_directory = /virtual/${domain}/mailman
-
-
-List Verification
------------------
-
-This is how a set of address tests for the Exim lists look on a working
-system. The list in question is quixote-users@mems-exchange.org, and
-these commands were run on the mems-exchange.org mail server ("% "
-indicates the Unix shell prompt):
-
- % exim -bt quixote-users
- quixote-users@mems-exchange.org
- router = mailman_main_router, transport = mailman_transport
-
- % exim -bt quixote-users-request
- quixote-users-request@mems-exchange.org
- router = mailman_router, transport = mailman_transport
-
- % exim -bt quixote-users-bounces
- quixote-users-bounces@mems-exchange.org
- router = mailman_router, transport = mailman_transport
-
- % exim -bt quixote-users-bounces+luser=example.com
- quixote-users-bounces+luser=example.com@mems-exchange.org
- router = mailman_router, transport = mailman_transport
-
-If your "exim -bt" output looks something like this, that's a start: at
-least it means Exim will pass the right messages to the right Mailman
-commands. It by no means guarantees that your Exim/Mailman installation
-is functioning perfectly, though!
-
-
-Document History
-----------------
-
-Originally written by Nigel Metheringham <postmaster@exim.org>.
-Updated by Marc Merlin <marc_soft@merlins.org> for Mailman 2.1, Exim 4.
-Overhauled/reformatted/clarified/simplified by Greg Ward <gward@python.net>.
diff --git a/README.LINUX b/README.LINUX
deleted file mode 100644
index 55dfff8bb..000000000
--- a/README.LINUX
+++ /dev/null
@@ -1,56 +0,0 @@
-Mailman - The GNU Mailing List Management System
-Copyright (C) 1998-2003 by the Free Software Foundation, Inc.
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-
-
-GNU/LINUX ISSUES
-
- GNU/Linux seems to be the most popular platform on which to run
- Mailman. Here are some hints on getting Mailman to run on Linux:
-
- If you are getting errors with hard link creations and/or you are using
- a special secure kernel (securelinux/openwall/grsecurity), see
- contrib/README.check_perms_grsecurity.
-
- Note that if you are using Linux Mandrake in secure mode, you are probably
- concerned by this.
-
- Apparently Mandrake 9.0 changed the permissions on gcc, so if you
- build as the mailman user, you need to be sure mailman is in the
- cctools group.
-
-
-PYTHON PACKAGES
-
- Note that if you installed Python from your Linux distribution's
- package manager (e.g. .rpms for Redhat-derived systems or .deb for
- Debian), you must install the `development' package of Python, or
- you may not get everything you need.
-
- For example, using Python 2.2 on Debian, you will need to install
- the python2.2-dev package. On Redhat, you probably need the
- python2-devel package.
-
- If you install Python from source, you should be fine.
-
- One symptom of this problem, although for unknown reasons, is that
- you might get an error such as this during your install:
-
- Traceback (most recent call last):
- File "bin/update", line 44, in ?
- import paths
- ImportError: No module named paths
- make: *** [update] Error 1
-
- If this happens, install the Python development package and try
- "configure ; make install" again.
-
- This problem can manifest itself in other Linux distributions in
- different ways, although usually it appears as ImportErrors.
-
-
-
-Local Variables:
-mode: text
-indent-tabs-mode: nil
-End:
diff --git a/README.MACOSX b/README.MACOSX
deleted file mode 100644
index f78598899..000000000
--- a/README.MACOSX
+++ /dev/null
@@ -1,31 +0,0 @@
-Mailman - The GNU Mailing List Management System
-Copyright (C) 2002 by the Free Software Foundation, Inc.
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-
-
-MacOSX ISSUES
-
- Mailman should run on MacOSX, although I have not personally had
- time to try it yet. Here are some pointers we've collected on
- getting Mailman to run on MacOSX.
-
- - Jaguar (MacOSX 10.2) comes with Python 2.2. While this isn't
- the very latest stable version of Python, it ought to be
- sufficient to run Mailman 2.1.
-
- - David B. O'Donnell has a web page describing his configuration
- of Mailman 2.0.13 and Postfix on MacOSX Server.
-
- http://www.afp548.com/Articles/mail/python-mailman.html
-
- - Kathleen Webb posted her experiences in getting Mailman running
- on Jaguar using Sendmail.
-
- http://mail.python.org/pipermail/mailman-users/2002-October/022947.html
-
-
-
-Local Variables:
-mode: text
-indent-tabs-mode: nil
-End:
diff --git a/README.POSTFIX b/README.POSTFIX
deleted file mode 100644
index e4f184c0e..000000000
--- a/README.POSTFIX
+++ /dev/null
@@ -1,223 +0,0 @@
-Mailman - The GNU Mailing List Management System
-Copyright (C) 2001-2003 by the Free Software Foundation, Inc.
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-
-
-GENERAL SETUP INFORMATION
-
- Mailman should work pretty much out of the box with a standard
- Postfix installation. As of this writing I've tested it with
- Postfix 19991231 up to pl13, 200010228 up to pl08, and up to
- Postfix 2.0.15.
-
- By default, Postfix treats -owner and -request addresses
- specially. Since we want Postfix to deliver such messages to
- Mailman, you should turn off this option by adding this to your
- main.cf file:
-
- owner_request_special = no
-
- In order to support Mailman's optional VERP delivery, you will
- want to disable luser_relay (the default) and you will want to set
- recipient_delimiter for extended address semantics. You should
- comment out any luser_relay value in your main.cf and just go with
- the defaults. Also, add this to your main.cf file:
-
- recipient_delimiter = +
-
- Using + as the delimiter works well with the default values for
- VERP_FORMAT and VERP_REGEXP in Defaults.py.
-
- When attempting to deliver a message to a non-existent local
- address, Postfix may return a 450 error code. Since this is a
- non-transient error code, Mailman will continue to attempt to
- delivery the message for DELIVERY_RETRY_PERIOD (5 days by
- default). You might want to set Postfix up so that it returns
- permanent error codes for non-existent local users by adding the
- following to your main.cf file:
-
- unknown_local_recipient_reject_code = 550
-
- Finally, if you are using Postfix-style virtual domains, read the
- section on virtual domain support below.
-
-
-INTEGRATING POSTFIX AND MAILMAN
-
- You can integrate Postfix and Mailman such that when new lists are
- created, or lists are removed, Postfix's alias database will be
- automatically updated. The following are the steps you need to
- take to make this work.
-
- In the description below, we assume that you've installed Mailman
- in the default location, i.e. /usr/local/mailman. If that's not
- the case, adjust the instructions according to your use of
- configure's --prefix and --with-var-prefix options.
-
- - If you are using virtual domains and you want Mailman to honor
- your virtual domains, read the section below first!
-
- - Add this to the bottom of the $prefix/Mailman/mm_cfg.py file:
-
- MTA = 'Postfix'
-
- The MTA variable names a module in Mailman/MTA which contains the
- MTA-specific functions to be executed when a list is created or
- removed.
-
- - Look at the Defaults.py file for the variables POSTFIX_ALIAS_CMD
- and POSTFIX_MAP_CMD command. Make sure these point to your
- postalias and postmap programs respectively. Remember that if
- you need to make changes, do it in mm_cfg.py.
-
- - Run the genaliases script to initialize your aliases file.
-
- % cd /usr/local/mailman
- % bin/genaliases
-
- Make sure that the owner of the data/aliases and data/aliases.db
- file is `mailman' and that the group owner for those files is
- `mailman'. E.g.:
-
- % su
- % chown mailman:mailman data/aliases*
-
- - Hack your Postfix's main.cf file to include the following path
- in your alias_maps variable:
-
- /usr/local/mailman/data/aliases
-
- (no trailing .db). Do not include this in your alias_database
- variable. This is because you do not want Postfix's newaliases
- command to modify Mailman's aliases.db file, but you do want
- Postfix to consult aliases.db when looking for local addresses.
-
- You probably want to use a hash: style database for this entry.
- Here's an example:
-
- alias_maps = hash:/etc/postfix/aliases,
- hash:/usr/local/mailman/data/aliases
-
- - When you configure Mailman, use the --with-mail-gid=mailman
- switch (actually, this will be the default if you configured
- Mailman after adding the `mailman' owner). Because the owner of
- the aliases.db file is `mailman', Postfix will execute Mailman's
- wrapper program as uid and gid mailman.
-
- That's it! One caveat: when you add or remove a list, the
- aliases.db file will updated, but it will not automatically run
- "postfix reload". This is because you need to be root to run this
- and suid-root scripts are not secure. The only effect of this is
- that it will take about a minute for Postfix to notice the change
- to the aliases.db file and update its tables. I consider this a
- minor inconvenience.
-
-
-VIRTUAL DOMAINS
-
- Postfix 2.0 supports "virtual alias domains", essentially what
- used to be called Postfix-style virtual domains in earlier Postfix
- versions. To make virtual alias domains work with Mailman, you
- need to do some setup in both Postfix and Mailman. Mailman will
- write all virtual alias mappings to a file called, by default,
- /usr/local/mailman/data/virtual-mailman. It will also use postmap
- to create the virtual-mailman.db file that Postfix will actually
- use.
-
- First, you need to set up the Postfix virtual alias domains as
- described in the Postfix documentation (see Postfix's virtual(5)
- manpage). Note that it's your responsibility to include the
- "virtual-alias.domain anything" line as described manpage; Mailman
- will not include this line in virtual-mailman. I highly encourage
- you to make sure your virtual alias domains are working properly
- before integrating with Mailman.
-
- Next, add a path to Postfix's virtual_alias_maps variable,
- pointing to the virtual-mailman file, e.g.:
-
- virtual_alias_maps = <your normal virtual alias files>,
- hash:/usr/local/mailman/data/virtual-mailman
-
- assuming you've installed Mailman in the default location. If
- you're using an older version of Postfix which doesn't have the
- virtual_alias_maps variable, use the virtual_maps variable
- instead.
-
- Next, in your mm_cfg.py file, you will want to set the variable
- POSTFIX_STYLE_VIRTUAL_DOMAINS to the list of virtual domains that
- Mailman should update. This may not be all of the virtual alias
- domains that your Postfix installation supports! The values in
- this list will be matched against the host_name attribute of
- mailing lists objects, and must be an exact match.
-
- Here's an example:
-
- Let's say I've set up Postfix to handle the virtual domains
- dom1.ain, dom2.ain, and dom3.ain. Let's say further that in
- main.cf you've got the following settings:
-
- myhostname = mail.dom1.ain
- mydomain = dom1.ain
- mydestination = $myhostname, localhost.$mydomain
- virtual_alias_maps =
- hash:/some/path/to/virtual-dom1,
- hash:/some/path/to/virtual-dom2,
- hash:/some/path/to/virtual-dom2
-
- Let's say further that in virtual-dom1, you've got the following
- lines:
-
- dom1.ain IGNORE
- @dom1.ain @mail.dom1.ain
-
- This tells Postfix to deliver anything addressed to dom1.ain to
- the same mailbox at mail.dom1.com, its default destination.
-
- In this case you would not include dom1.ain in
- POSTFIX_STYLE_VIRTUAL_DOMAINS because otherwise Mailman will write
- entries for mailing lists in the dom1.ain domain as
-
- mylist@dom1.ain mylist
- mylist-request@dom1.ain mylist-request
- # and so on...
-
- The more specific entries trump your more general entries, thus
- breaking the delivery of any dom1.ain mailing list.
-
- However, you would include dom2.ain and dom3.ain in mm_cfg.py:
-
- POSTFIX_STYLE_VIRTUAL_DOMAINS = ['dom2.ain', 'dom3.ain']
-
- Now, any list that Mailman creates in either of those two domains,
- will have the correct entries written to
- /usr/local/mailman/data/virtual-mailman
-
- As above with the data/aliases* files, you want to make sure that
- both data/virtual-mailman and data/virtual-mailman.db are user and
- group owned by the `mailman' user/group. So to get things
- started, set up your virtual domains, run bin/genaliases, and
- check the ownerships of the files. From here on out, you should
- be good to go.
-
-
-AN ALTERNATIVE APPROACH
-
- Fil <fil@rezo.net> has an alternative approach based on virtual
- maps and regular expressions, as described at:
-
- (French) http://listes.rezo.net/comment.php
- (English) http://listes.rezo.net/how.php
-
- This is a good (and simpler) alternative if you don't mind
- exposing an additional hostname in the domain part of the
- addresses people will use to contact your list. I.e. if people
- should use mylist@lists.dom.ain instead of mylist@dom.ain.
-
- I have not extensively tested this approach however.
-
-
-
-Local Variables:
-mode: text
-indent-tabs-mode: nil
-End:
diff --git a/README.QMAIL b/README.QMAIL
deleted file mode 100644
index 72ab96e31..000000000
--- a/README.QMAIL
+++ /dev/null
@@ -1,186 +0,0 @@
-Mailman - The GNU Mailing List Management System
-Copyright (C) 1998,1999,2000,2001,2002 by the Free Software Foundation, Inc.
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-
-QMAIL ISSUES
-
-There are some issues that users of the qmail mail transport agent
-have encountered. None of the core maintainers use qmail, so all of
-this information has been contributed by the Mailman user community,
-especially Martin Preishuber and Christian Tismer, with notes by
-Balazs Nagy (BN) and Norbert Bollow (NB).
-
-- You might need to set the mail-gid user to either "qmail", "mailman", or
- "nofiles" by using the --with-mail-gid configure option.
-
- BN: it highly depends on your mail storing policy. For example if
- you use the simple ~alias/.qmail-* files, you can use `id -g alias`.
- But if you use /var/qmail/users, the specified mail gid can be
- used.
-
- If you are going to be directing virtual domains directly to the
- "mailman" user (using "virtualdomains" on a list-only domain, for
- example), you will have to use --with-mail-gid=<gid of mailman user's group>
- This is incompatible with having list aliases in ~alias, unless that alias
- simply forwards to "mailman-listname*".
-
-- If there is a user `mailman' on your system, the alias
- `mailman-owner' will work only in ~mailman. You have to do a "touch
- .qmail-owner" in ~mailman directory to create this alias.
-
- NB: An alternative, IMHO better solution is to `chown root
- ~mailman', that will stop qmail from considering `mailman' to be a
- user to whom mail can be delivered. (See `man 8 qmail-getpw'.)
-
-- In a related issue, if you have any users with the same name as one
- of your mailing lists, you will have problems if list names contain
- `-' in them. Putting .qmail redirections into the user's home
- directory doesn't work because the Mailman wrappers will not get
- spawned with the proper GID. The solution is to put the following
- lines in the /var/qmail/users/assign file:
-
- +zope-:alias:112:11:/var/qmail/alias:-:zope-:
- .
-
- where in this case the listname is e.g. zope-users.
-
- NB: Alternatively, you could host the lists on a virtual domain, and
- use the /var/qmail/control/virtualdomains file to put the mailman
- user in charge of this virtual domain.
-
-- BN: If inbound messages are delivered by another user than mailman,
- it's necessary to allow it to access ~mailman. Be sure that
- ~mailman has group writing access and setgid bit is set. Then put
- the delivering user to mailman group, and you can deny access to
- ~mailman to others. Be sure that you can do the same with the WWW
- service.
-
- By the way the best thing is to make a virtual mail server to handle
- all of the mail. NB: E.g. make an additional "A" DNS record for the
- virtual mailserver pointing to your IP address, add the line
- `lists.kva.hu:mailman' to /var/qmail/control/virtualdomains and a
- `lists.kva.hu' line to /var/qmail/control/rcpthosts file. Don't
- forget to HUP the qmail-send after modifying "virtualdomains". Then
- every mail to lists.kva.hu will arrive to mail.kva.hu's mailman
- user.
-
- Then make your aliases:
- .qmail => mailman@...'s letters
- .qmail-owner => mailman-owner's letters
-
-
- For list aliases, you can either create them manually:
- .qmail-list => posts to the 'list' list
- .qmail-list-admin => posts to the 'list's owner
- .qmail-list-request => requests to 'list'
- etc
-
- or for automatic list alias handling (when using the lists.kva.hu virtual
- as above), see "contrib/qmail-to-mailman.py" in the Mailman distribution.
- Modify the "~mailman/.qmail-default" to include:
-
- |/path/to/python /path/to/qmail-to-mailman.py
-
- and new lists will automatically be picked up.
-
-- You have to make sure that the localhost can relay. If you start
- qmail via inetd and tcpenv, you need some line the following in your
- /etc/hosts.allow file:
-
- tcp-env: 127. 10.205.200 : setenv RELAYCLIENT
-
- where 10.205.200. is your IP address block. If you use tcpserver, then you
- need something like the following in your /etc/tcp.smtp file:
-
- 10.205.200.:allow,RELAYCLIENT=""
- 127.:allow,RELAYCLIENT=""
-
-- BN: Bigger /var/qmail/control/concurrencyremote values work better
- sending outbound messages, within reason. Unless you know your system
- can handle it (many if not most cannot) this should not be set to a value
- greater than 120.
-
-- More information about setting up qmail and relaying can be found in
- the qmail documentation.
-
-BN: Last but not least, here's a little script to generate aliases to
-your lists (if for some reason you can/will not have them
-automatically picked up using "contrib/qmail-to-mailman.py"):
-
-This script is for the Mailman 2.0 series:
-#!/bin/sh
-if [ $# = 1 ]; then
- i=$1
- echo Making links to $i in the current directory...
- echo "|preline /home/mailman/mail/mailman post $i" > .qmail-$i
- echo "|preline /home/mailman/mail/mailman mailowner $i" > .qmail-$i-admin
- echo "|preline /home/mailman/mail/mailman mailowner $i" > .qmail-$i-owner
- echo "|preline /home/mailman/mail/mailman mailowner $i" > .qmail-owner-$i
- echo "|preline /home/mailman/mail/mailman mailcmd $i" > .qmail-$i-request
-fi
-
-This script is for the Mailman 2.1 series:
-Note: this is for a new Mailman 2.1 installation. Users upgrading from
- Mailman 2.0 would most likely change /usr/local/mailman to
- /home/mailman. If in doubt, refer to the --prefix option passed to
- configure during compile time.
-
-#!/bin/sh
-if [ $# = 1 ]; then
- i=$1
- echo Making links to $i in the current directory...
- echo "|preline /usr/local/mailman/mail/mailman post $i" > .qmail-$i
- echo "|preline /usr/local/mailman/mail/mailman admin $i" > .qmail-$i-admin
- echo "|preline /usr/local/mailman/mail/mailman bounces $i" > .qmail-$i-bounces
- # The following line is for VERP
- # echo "|preline /usr/local/mailman/mail/mailman bounces $i" > .qmail-$i-bounces-default
- echo "|preline /usr/local/mailman/mail/mailman confirm $i" > .qmail-$i-confirm
- echo "|preline /usr/local/mailman/mail/mailman join $i" > .qmail-$i-join
- echo "|preline /usr/local/mailman/mail/mailman leave $i" > .qmail-$i-leave
- echo "|preline /usr/local/mailman/mail/mailman owner $i" > .qmail-$i-owner
- echo "|preline /usr/local/mailman/mail/mailman request $i" > .qmail-$i-request
- echo "|preline /usr/local/mailman/mail/mailman subscribe $i" > .qmail-$i-subscribe
- echo "|preline /usr/local/mailman/mail/mailman unsubscribe $i" > .qmail-$i-unsubscribe
-fi
-
-INFORMATION ON VERP
-
-You will note in the alias generating script for 2.1 above, there is a
-line for VERP that has been commented out. If you are interested in VERP
-there are two options. The first option is to allow Mailman to do the
-VERP formatting. To activate this, uncomment that line and add the
-following lines to your mm_cfg.py file:
-
-VERP_FORMAT = '%(bounces)s-+%(mailbox)s=%(host)s'
-VERP_REGEXP = r'^(?P<bounces>.*?)-\+(?P<mailbox>[^=]+)=(?P<host>[^@]+)@.*$'
-
-The second option is a patch on SourceForge located at:
-
-http://sourceforge.net/tracker/?func=detail&atid=300103&aid=645513&group_id=103
-
-This patch currently needs more testing and might best be suitable for
-developers or people well familiar with qmail. Having said that, this
-patch is the more qmail-friendly approach resulting in large performance
-gains.
-
-VIRTUAL MAIL SERVER
-
-As mentioned in the ISSUES area for a virtual mail server, a patch under
-testing is located at:
-
-http://sf.net/tracker/index.php?func=detail&aid=621257&group_id=103&atid=300103
-
-Again, this patch is for people familiar with their qmail installation.
-
-MORE INFORMATION
-
-You might be interested in some information on modifying footers that
-Norbert Bollow has written about Mailman and qmail, available here:
-
- http://mailman.cis.to/qmail-verh/
-
-
-Local Variables:
-mode: text
-indent-tabs-mode: nil
-End:
diff --git a/README.SENDMAIL b/README.SENDMAIL
deleted file mode 100644
index 6edef10cc..000000000
--- a/README.SENDMAIL
+++ /dev/null
@@ -1,73 +0,0 @@
-Mailman - The GNU Mailing List Management System
-Copyright (C) 1998,1999,2000,2001,2002 by the Free Software Foundation, Inc.
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-
-SECURITY NOTE
-
- You may be tempted to set the DELIVERY_MODULE configuration
- variable in mm_cfg.py to `Sendmail' when using the Sendmail MTA.
- Don't. The Sendmail.py module is misnamed -- it's really a
- command line based message handoff scheme as opposed to the SMTP
- scheme used in SMTPDirect (the default). Sendmail.py has known
- security holes and is provided as a proof-of-concept only. If you
- are having problems using SMTPDirect.py please fix those instead
- of using Sendmail.py, or you may open your system up to security
- exploits.
-
-
-SENDMAIL `smrsh' COMPATIBILITY
-
- Many newer versions of Sendmail come with a restricted execution
- utility called "smrsh", which limits the executables that Sendmail
- will allow to be used as mail filter programs. You need to
- explicitly allow Mailman's wrapper program to be used with smrsh
- before it will work. If mail is not getting delivered to
- Mailman's wrapper program and you're getting an "operating system
- error" in your mail syslog, this could be your problem.
-
- One good way of doing this is to:
-
- - cd into /etc/smrsh (or where ever it happens to reside on
- your system, such as /var/smrsh or /usr/local/smrsh).
-
- - create a symbolic link to Mailman's wrapper program
-
- For example, if you've installed Mailman in the standard location,
- you can just execute these commands (you might have to do these as
- root):
-
- % cd /etc/smrsh
- % ln -s /usr/local/mailman/mail/mailman mailman
-
-
-INTEGRATING SENDMAIL AND MAILMAN
-
- David Champion has contributed a recipe for more closely
- integrating Sendmail and Mailman, such that Sendmail will
- automatically recognize and deliver to new mailing lists as they
- are created, without having to manually edit alias tables.
-
- In the contrib directory, you will find four files
-
- mm-handler.readme - an explanation of how to set everything up
- mm-handler - the mail delivery agent (MDA)
- mailman.mc - a toy configuration file sample
- virtusertable - a sample for RFC 2142 address exceptions
-
-
-PERFORMANCE NOTES
-
- One of the surest performance killers for Sendmail users is when
- Sendmail is configured to synchronously verify the recipient's
- host via DNS. If it does this for messages posted to it from
- Mailman, you will get horrible performance. Since Mailman usually
- connects via localhost (i.e. 127.0.0.1) to the SMTP port of
- Sendmail, you should be sure to configure Sendmail /not/ to do DNS
- verification synchronously for localhost connections.
-
-
-
-Local Variables:
-mode: text
-indent-tabs-mode: nil
-End:
diff --git a/STYLEGUIDE.txt b/STYLEGUIDE.txt
index 2063f9ea1..6fa25aa92 100644
--- a/STYLEGUIDE.txt
+++ b/STYLEGUIDE.txt
@@ -1,23 +1,24 @@
-Python coding style guide for GNU Mailman
-Copyright (C) 2002-2003 Python Software Foundation, Barry A. Warsaw
+Python coding style guide for Mailman
+Copyright (C) 2002-2004 Barry A. Warsaw
+$Revision: 7464 $
-This document contains a style guide for Python programming, as used
-in GNU Mailman. In general, Guido van Rossum's style guide should be
-taken as a basis, as embodied in PEP 8:
+NOTE: The canonical version of this style guide can be found at:
- http://python.sourceforge.net/peps/pep-0008.html
+ http://barry.warsaw.us/software/STYLEGUIDE.txt
-however, my (Barry Warsaw's) personal preferences differ from Guido's
-in a few places. "When in Rome..." should apply meaning, when coding
-stuff for Python, Guido's style should rule, however when coding for
-Mailman, I'd like to see my preferences used instead. For software
-like the email package, which is both standalone and distributed in
-Python's standard library, please adhere to the established style,
-which means please use my style.
+This document contains a style guide for Python programming, as used in
+Mailman. In general, Guido van Rossum's style guide should be taken as a
+basis, as embodied in PEP 8:
-Remember rule #1, A Foolish Consistency is the Hobgoblin of Little
-Minds. That said, here's a quick outline of where my preferences
-depart from Guido's:
+ http://www.python.org/peps/pep-0008.html
+
+however, my (Barry Warsaw's) personal preferences differ from Guido's in a few
+places. "When in Rome..." should apply meaning, when coding stuff for Python,
+Guido's style should rule, however when coding for Mailman, I'd like to see my
+preferences used instead.
+
+Remember rule #1, A Foolish Consistency is the Hobgoblin of Little Minds.
+That said, here's a quick outline of where my preferences depart from Guido's:
- Imports usually should be on separate lines. While it's sometimes
okay to say
@@ -32,44 +33,42 @@ depart from Guido's:
- Imports are always put at the top of the file, just after any module
comments and docstrings, and before module globals and constants.
- Imports should be grouped, with the order being
+ Imports should be grouped, with the order being:
1. standard library imports
2. related major package imports (i.e. all email package imports next)
3. application specific imports
- Dotted imports should follow non-dotted imports. Non-dotted imports
- should be grouped by increasing length, while dotted imports should
- be grouped roughly alphabetically.
+ From-imports should follow non-from imports. Dotted imports should follow
+ non-dotted imports. Non-dotted imports should be grouped by increasing
+ length, while dotted imports should be grouped roughly alphabetically.
-- In general, there should be at most one class per module, if the
- module contains class definitions. If it's a module of functions,
- that's fine, group them as common sense dictates. A
- class-containing module can also contain some helper functions, but
- it's best to keep these non-public (i.e. use a single leading
- underscore).
+- In general, there should be at most one class per module, if the module
+ contains class definitions. If it's a module of functions, that's fine,
+ group them as common sense dictates. A class-containing module can also
+ contain some helper functions, but it's best to keep these non-public
+ (i.e. use a single leading underscore).
- Always give the class and the module the same name.
+ Always give the class and the module the same name, differing only by case
+ as PEP 8 recommends. E.g.
- Note though that Zope3's module naming style has a lot of merit.
- Here, package and module names are all lower cased. I'm
- experimenting with this approach for Mailman3.
+ from mailman.parser import Parser
- When importing a class from a class-containing module, it's usually
okay to spell this
- from MyClass import MyClass
- from foo.bar.YourClass import YourClass
+ from myclass import MyClass
+ from foo.bar.yourclass import YourClass
If this spelling causes name clashes, then spell them
- import MyClass
- import foo.bar.YourClass
+ import myclass
+ import foo.bar.yourclass
- and use "MyClass.MyClass"
+ and use "myclass.MyClass"
-- Right hanging comments are discouraged, in favor of preceding
- comments. E.g.
+- Right hanging comments are discouraged, in favor of preceding comments.
+ E.g.
foo = blarzigop(bar) # if you don't blarzigop it, it'll shlorp
@@ -82,43 +81,39 @@ depart from Guido's:
characters (e.g. ^L -- that's a single character control-L not two
characters). This helps with Emacs navigation.
- Always put a ^L before module-level functions, before class
- definitions, before big blocks of constants which follow imports,
- and any place else that would be convenient to jump to. Always put
- two blank lines before a ^L.
+ Always put a ^L before module-level functions, before class definitions,
+ before big blocks of constants which follow imports, and any place else that
+ would be convenient to jump to. Always put two blank lines before a ^L.
-- Also put to blank lines between any module level function. Put only
- one blank line between methods in a class. No blank lines between
- the class definition and the first method in the class (although
- class docstrings often go in this space).
+- Put to blank lines between any module level function. Put only one blank
+ line between methods in a class. No blank lines between the class
+ definition and the first method in the class (although class docstrings
+ often go in this space).
-- Try to minimize the vertical whitespace in a class. If you're
- inclined to separate stanzas of code for readability, consider
- putting a comment in describing what the next stanza's purpose is.
- Don't put stupid or obvious comments in just to avoid vertical
- whitespace though.
+- Try to minimize the vertical whitespace in a class. If you're inclined to
+ separate stanzas of code for readability, consider putting a comment in
+ describing what the next stanza's purpose is. Don't put stupid or obvious
+ comments in just to avoid vertical whitespace though.
-- Unless internal quote characters would mess things up, the general
- rule is that single quotes should be used for short strings, double
- quotes for triple-quoted multi-line strings and docstrings. E.g.
+- Unless internal quote characters would mess things up, the general rule is
+ that single quotes should be used for short strings, double quotes for
+ triple-quoted multi-line strings and docstrings. E.g.
foo = 'a foo thing'
warn = "Don't mess things up"
notice = """Our three chief weapons are:
- - surprise
- - deception
- - an almost fanatical devotion to the pope
- """
+ - surprise
+ - deception
+ - an almost fanatical devotion to the pope
+ """
-- Write docstrings for all public modules, functions, classes, and
- methods. Docstrings are not necessary and usually discouraged for
- non-public methods, but you should have a comment that describes
- what the method does. This comment should appear after the "def"
- line.
+- Write docstrings for all public modules, functions, classes, and methods.
+ Docstrings are not necessary and usually discouraged for non-public methods,
+ but you should have a comment that describes what the method does. This
+ comment should appear after the "def" line.
-- PEP 257 describes good docstrings conventions. Note that most
- importantly, the """ that ends a multiline docstring should be on a
- line by itself, e.g.:
+- PEP 257 describes good docstrings conventions. Note that most importantly,
+ the """ that ends a multiline docstring should be on a line by itself, e.g.:
"""Return a foobang
@@ -132,34 +127,36 @@ depart from Guido's:
- fill-column for docstrings should be 78.
-- Always use string methods instead of string module functions, unless
- your code must work with Python 1.5.2 (but let's hope not).
+- Always use string methods instead of string module functions.
-- For sequences, (strings, lists, tuples), use the fact that empty
- sequences are false, so "if not seq" or "if seq" is preferable to
- "if len(seq)" or "if not len(seq)". Unless you must be compatible
- with Pythons before 2.2.1, always use True and False instead of 1
- and 0 for boolean values.
+- For sequences, (strings, lists, tuples), use the fact that empty sequences
+ are false, so "if not seq" or "if seq" is preferable to "if len(seq)" or "if
+ not len(seq)". Always use True and False instead of 1 and 0 for boolean
+ values.
-- Always decide whether a class's methods and instance variables
- should be public or non-public. In general, never make data
- variables public unless you're implementing essentially a record.
- It's almost always preferable to give a functional interface to
- your class instead (Python 2.2's descriptors and properties make
- this much nicer).
+- Always decide whether a class's methods and instance variables should be
+ public or non-public. In general, never make data variables public unless
+ you're implementing essentially a record. It's almost always preferable to
+ give a functional interface to your class instead (Python 2.2's descriptors
+ and properties make this much nicer).
Also decide whether your attributes should be private or not. The
- difference between private and non-public is that the former will
- never be useful for a derived class, while the latter might be.
- Yes, you should design your classes with inheritance in mind!
+ difference between private and non-public is that the former will never be
+ useful for a derived class, while the latter might be. Yes, you should
+ design your classes with inheritance in mind!
+
+- Single leading underscores are generally preferred for non-public
+ attributes. Use double leading underscores only in classes designed for
+ inheritance to ensure that truly private attributes will never name clash.
- Private attributes should have two leading underscores, no trailing
- underscores.
+ Public attributes should have no leading or trailing underscores unless they
+ conflict with reserved words, in which case, a single trailing underscore is
+ preferable to a leading one, or a corrupted spelling, e.g. class_ rather
+ than klass.
- Non-public attributes should have a single leading underscore, no
- trailing underscores.
- Public attributes should have no leading or trailing underscores
- (unless they conflict with reserved words, in which case, a single
- trailing underscore is preferable to a leading one, or a corrupted
- spelling, e.g. class_ rather than klass).
+
+Local Variables:
+mode: indented-text
+indent-tabs-mode: nil
+End:
diff --git a/UPGRADING b/UPGRADING
index 6ceb16577..6f8ede6e1 100644
--- a/UPGRADING
+++ b/UPGRADING
@@ -1,63 +1,82 @@
Mailman - The GNU Mailing List Management System
-Copyright (C) 1998-2003 by the Free Software Foundation, Inc.
+Copyright (C) 1998-2004 by the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-A NOTE ABOUT MODERATION
+UPGRADING FROM PREVIOUS VERSIONS
- When you upgrade from Mailman 2.0.x to Mailman 2.1, you should
- double check that your moderation and privacy options are still
- set the way you want them. The Mailman options dealing with
- moderation and privacy have changed significantly, to make them
- easier to understand and control. Ever effort was taken to
- translate the old configuration variables to the new configuration
- variables, but because the old semantics were so complex, it is
- possible your settings may not have been correctly translated.
-
- Check especially the values for (in Privacy -> Sender Filters)
- default_member_moderation, generic_nonmember_action, and
- accept_these_nonmembers. Check also the moderation flag on member
- accounts in the Membership Management screen.
+ For the most part, upgrading Mailman entails installing the latest version
+ over the existing version. Usually, you can unpack the new release, run
+ 'configure' with the same options you used in your previous install, and
+ then do a 'make install'. However, there are some changes that may need
+ to be taken care of manually.
+ What you need to do depends on the version you are using and the version
+ you are upgrading to. In all cases, you should first turn off your mail
+ and web access to your Mailman installation. You're essentially upgrading
+ a database, and it's usually a good idea to make sure the database cannot
+ be modified in the middle of the upgrade.
-UPGRADING FROM PREVIOUS VERSIONS
+ My recommendations are:
- For the most part, upgrading Mailman is as easy as just installing
- the latest version over the existing version. However, there are
- some changes that need to be taken care of manually.
+ - Turn off your incoming mail daemon. Most remote smtp servers will
+ simply queue up messages destined for your domain if port 25 is shut
+ off.
- What you need to do depends on the version you are using and the
- version you are upgrading to. In all cases, you should first turn
- off your mail and web access to your Mailman installation. You're
- essentially upgrading a database, and it's usually a good idea to
- make sure the database cannot be modified in the middle of the
- upgrade.
+ - Temporarily disable web access to Mailman. You can do this by either
+ turning off your web server temporarily, or by setting up a temporary
+ redirect to a "service unavailable" page for the Mailman URLs. Refer to
+ your web server documentation for details.
- My recommendations are
- - Turn off your incoming mail daemon. Most remote smtp servers
- will simply queue up messages destined for your domain if port
- 25 is shut off.
+UPGRADING FROM 2.1.4 to 2.1.5
- - Temporarily disable web access to Mailman. You can do this by
- either turning off your web server temporarily, or by setting up
- a temporary redirect to a "service unavailable" page for the
- Mailman URLs. Refer to your web server documentation for
- details.
+ In Mailman 2.1.5, some significant changes have been made to the file
+ formats for qfiles and the pendings database. All care has been taken to
+ make sure the upgrades happen automatically and smoothly, but you should
+ double check and, for the ultra-paranoid, make backups of your Mailman
+ site before you upgrade. BE SURE TO TURN OFF MAILMAN AS DESCRIBED ABOVE
+ BEFORE YOU UPGRADE.
- Mailman will NOT upgrade the template files for existing lists.
- Chuq Von Rospach gives some useful advice in this message to the
- users mailing list:
+ Specifically, in MM2.1.4 every message in the queues were represented by
+ two files, a .msg or .pck file containing the email message, and a .db
+ file containing metadata about the message. In MM2.1.5 this has been made
+ more efficient by using only one file (with a .pck extension) for both the
+ message and metadata. This should make MM2.1.5 half as hostile to the
+ file system.
- http://mail.python.org/pipermail/mailman-users/2000-September/006826.html
+ The bin/upgrade script, which is run automatically when you upgrade,
+ should convert all the old style qfiles to the new style qfiles. Note
+ that this could take a long time if you have a lot of files in your qfiles
+ subdirectories. Pay particular attention to files you might have in
+ qfiles/shunt; these will get upgraded too, although files in qfiles/bad
+ will not.
- [Actually, the upgrade to MM2.1a2 /will/ shuffle template files,
- deleting any that it detects are unchanged from the original
- defaults (calculated via md5 checksums).]
+ In MM2.1.4, the database file containing pending actions (i.e
+ subscriptions, unsubscriptions, message holds, etc.) was shared globally
+ among all mailing lists. In MM2.1.5, each list now has its own pending
+ database file. All care has been taken to properly split pending actions
+ from the global to the list-specific files, but it's possible there are
+ bugs here. Best practice is to clear all pending actions before you
+ upgrade, although this is not always possible.
UPGRADING FROM 2.0.x to 2.1
+ When you upgrade from Mailman 2.0.x to Mailman 2.1, you should double
+ check that your moderation and privacy options are still set the way you
+ want them. The Mailman options dealing with moderation and privacy have
+ changed significantly, to make them easier to understand and control.
+ Ever effort was taken to translate the old configuration variables to the
+ new configuration variables, but because the old semantics were so
+ complex, it is possible your settings may not have been correctly
+ translated.
+
+ Check especially the values for (in Privacy -> Sender Filters)
+ default_member_moderation, generic_nonmember_action, and
+ accept_these_nonmembers. Check also the moderation flag on member
+ accounts in the Membership Management screen.
+
In Mailman 2.1, the qrunner subsystem has been completely
rewritten. You no longer start qrunner from cron! Instead, there
is a bin/mailmanctl script which is used to start, stop, and