I've released Mailman 2.1 beta 1; see below for a list of changes
since version 2.1 alpha 4. There have been tons of bug fixes, several
new languages, and lots of new features. We're finally in feature
freeze for Mailman 2.1, although I reserve the right to classify an
essential missing feature as a bug <wink>.
I'd like to get 2.1 final out soon, and I think it's only fair that we
eat our own dogfood before offering it to others, so I'll soon be
transfering the mailman-* lists to the new version. Please report all
bugs to SourceForge. Discussions about version 2.1 are preferred on
I'd also like to announce the mailman-docs(a)python.org mailing, which
indeed is running under 2.1b1. This list will help coordinate the
Mailman documentation effort, so if you'd like to contribute please
join that list. This is a great way to help us out, even if you
aren't into hacking the code.
-------------------- snip snip --------------------
2.1 beta 1 (16-Mar-2002)
In addition to the usual bug fixes, performance improvements, and
GUI changes, here are the highlights:
- MIME and other message handling
o More robustness against badly MIME encapsulated messages: if
a MessageParseError is raised during the initial parse, the
message can either be discarded or saved in qfiles/bad,
depending on the value of the new configuration variable
o There is a new per-user option that can be used to avoid
receipt of extra copies, when a member of the list is also
o Always add an RFC 2822 Date: header if missing, since not
all MTAs insert one automatically.
o The Sender: and Errors-To: headers are no longer added to
o Headers and footers are always added by concatenation, if
the message is not MIME and if the list's charset is a
superset of us-ascii.
- List administration
o An `invitation' feature has been added. This is selectable
as a radio button on the mass subscribe page. When
selected, users are invited to join instead of immediately
joined, i.e. they get a confirmation message.
o You can now enable and disable list owner notifications for
disabled-due-to-bouncing and removal-due-to-bouncing
actions. The site config variables
DEFAULT_BOUNCE_NOTIFY_OWNER_ON_REMOVAL control the default
o List owners can now decide whether they receive unrecognized
bounce messages or not (i.e. messages that the bounce
processor doesn't recognize). Site admins can set the
default value for this flag with the config variable
o The admindb summary page gives the option of clearing the
moderation flag of members who are on quarantined.
o The action to take when a moderated member posts to a list
is now configurable. The message can either be held,
rejected (bounced), or discarded. If the message is
rejected, a rejection notice string can be given.
o In the General admin page, you can now set the default value
for five per-user flags: concealing the user's email
address, acknowledging posts sent by the user, copy
suppression, not-me-too selection, and the default digest
type. Site admins can set the default bit field with the
new DEFAULT_NEW_MEMBER_OPTIONS variable.
o A new "Emergency brake" feature for turning on moderation of
all list postings. This is useful for when flamewars break
out, and the list needs a cooling off period. Messages
containing an Approved: header with the list owner password
are still allowed through, as are messages approved through
the admindb interface.
o When a moderated message is approved for the list, add an
X-Mailman-Approved-At: header which contains the timestamp
of the approval action (changed from X-Moderated: with a
o Lists can now be converted to using a less error prone
mechanism for variable substitution syntax in headers and
footers. Instead of %(var)s strings, you'd use $var
strings. You must use "bin/withlist -r convert" to enable
o When moderating held messages, the header text box and the
message excerpt text box are now both read-only.
o You can't delete the site list through the web.
o When creating new lists through the web, you have the option
of setting the "default member moderation" flag.
- Security and privacy
o New feature: banned subscription addresses. Privacy
options/subscription rules now have an additional list box
which can contain addresses or regular expressions.
Subscription requests from any matching address are
o Membership tests which compare message headers against list
rosters are now more robust. They now check, by default
these header in order: From:, unixfrom, Reply-To:, Sender:.
If any match, then the membership test succeeds.
o ALLOW_SITE_ADMIN_COOKIES is a new configuration variable
which says whether to allow AuthSiteAdmin cookies or not.
Normally, when a list administrator logs into a list with
the site password, they are issued a cookie that only allows
them to do administration for this one list. By setting
ALLOW_SITE_ADMIN_COOKIES to 1, the user only needs to
authenticate to one list with the site password, and they
can administer any mailing list.
I'm not sure this feature is wise, so the default value for
ALLOW_SITE_ADMIN_COOKIES is 0.
o Marc MERLIN's new recipes for secure Linuxes have been
o DEFAULT_PRIVATE_ROSTER now defaults to 1.
o Passwords are no longer included in the confirmation pages.
o With the approval of Tamito KAJIYAMA, the Japanese codes for
Python are now included automatically, so you don't need to
download and install these separate. It is installed in a
Mailman-specific place so it won't affect your larger Python
o The configure script will produce a warning if the Chinese
codes are not installed. This is not a fatal error.
o Russian templates and catalogs have been added.
o Finnish templates and catalogs have been added.
- Scripts and utilities
o New program bin/unshunt to safely move shunted messages back
into the appropriate processing queue.
o New program bin/inject for sending a plaintext message into
the incoming queue from the command line.
o New cron script cron/disabled for periodically culling the
o bin/list_members has grown some new command line switches
for filtering on different criteria (digest mode, disable
o bin/remove_members has grown the --fromall switch.
o You can now do a bin/rmlist -a to remove an archive even
after the list has been deleted.
o bin/update removes the $prefix/Mailman/pythonlib directory.
o bin/withlist grows a --all/-a flag so the --run/-r option
can be applied to all the mailing lists. Also, interactive
mode is now the default if -r isn't used. You don't need to
run this script as "python -i bin/withlist" anymore.
o There is a new script contrib/majordomo2mailman.pl which
should ease the transition from Majordomo to Mailman.
- MTA integration
o Postfix integration has been made much more robust, but now
you have to set POSTFIX_ALIAS_CMD and POSTFIX_MAP_CMD to
point to the postalias and postmap commands respectively.
o VERP-ish delivery has been made much more efficient by
eliminating extra disk copies of messages for each recipient
of a VERP delivery. It has also been made more robust in
the face of failures during chunk delivery. This required a
rewrite of SMTPDirect.py and one casualty of that rewrite
was the experimental threaded delivery. It is no longer
supported (but /might/ be resurrected if there's enough
demand -- or a contributed patch :).
o A new site config variable SMTP_MAX_SESSIONS_PER_CONNECTION
specifies how many consecutive SMTP sessions will be
conducted down the same socket connection. Some MTAs have a
limit on this.
o Support for VERP-ing confirmation messages. These are less
error prone since the Subject: header doesn't need to be
retained, and they allow a more user friendly (and i18n'd)
Subject: header. VERP_CONFIRM_FORMAT, VERP_CONFIRM_REGEXP,
and VERP_CONFIRMATIONS control this feature (only supported
for invitation confirmations currently, but will be expanded
to the other confirmations).
o Several new list-centric addresses have been added:
-subscribe and -unsubscribe are synonyms for -join and
-leave, respectively. Also -confirm has been added to
support VERP'd confirmations.
o There's now a default page for the Pipermail archive link
for when no messages have yet been posted to the list.
o Just the mere presence of an X-No-Archive: is enough to
inhibit archiving for this message; the value of the header
is now ignored.
- Configuring, building, installing
o Mailman now has a new favicon, donated by Terry Oda. Not
all web pages are linked to the favicon yet though.
o The add-on email package is now distributed and installed
automatically, so you don't need to do this. It is
installed in a Mailman-specific place so it won't affect
your larger Python installation.
o The default value of VERP_REGEXP has changed.
o New site configuration variables BADQUEUE_DIR and
QRUNNER_SAVE_BAD_MESSAGES which describe where to save
messages which are not properly MIME encoded.
o configure should be more POSIX-ly conformant.
o The Mailman/pythonlib directory has been removed, but a new
$prefix/pythonlib directory has been added.
o Regression tests are now installed.
o The second argument to add_virtual() calls in mm_cfg.py are
o DEFAULT_FIRST_STRIP_REPLY_TO now defaults to 0.
o Site administrators can edit the Mailman/Site.py file to
customize some filesystem layout policies.
Here's a great way to help with Mailman even if you don't fancy
yourself a hacker. Documentation, as always, lags far behind. I'd be
happy to work with someone (or perhaps a group of someones), on the
technical side, but a good technical writer I'm not.