I've finally decided to put a fork in it and release the third, and
hopefully last alpha in the Mailman 2.1 series. If you want to see a
description of all the new stuff, please see
There's quite a lot there!
Everything should be up on SourceForge now, with updates to
www.list.org hopefully tomorrow some time. See also
for updated pages about Mailman 2.1.
Note that you no longer need to install the mimelib package. This has
been replaced by the email package, which comes with Python 2.2b1, or
for Python 2.1.1 or 2.0.1, you'll need to install email-0.93 which is
available in the misc/ directory. See the INSTALL file for details.
Below is an excerpt from the NEWS file for all the changes since 2.1
alpha 2. I'm hoping that this will be the last alpha release. That
means there's one more release in which we have an opportunity for new
features, so I suggest that you grab 2.1a3 and give it a good workout
(in a non-production environment <wink>). If there are glaring things
missing, as always, let me know.
Please, all discussion about 2.1 alpha should be conducted on the
mailman-developers(a)python.org mailing list.
I will be creating some test lists on python.org an you'll be able to
subscribe to them to try things out. I'd like to have a short cycle
for alpha3->beta1, with bug fixes only once beta1 comes out.
Language translators: I've updated the langpack on SourceForge with
the latest catalogs and templates. I've also uploaded the latest
README-I18N.en file if you'd like to contribute new languages. If
you've been holding off contributing new language files, please
consider finishing them off so that I can integrate them in time for
-------------------- snip snip --------------------
2.1 alpha 3 (22-Oct-2001)
- Realname support
o Mailman now tracks a member's Real Name in addition to their
o List members can now supply their Real Names when
subscribing via the web. Their Real Names are parsed from
any thru-email subscriptions.
o Members can change their Real Names on their options page,
and admins can change members' Real Names on the membership
pages. Mass subscribing accepts "email(a)dom.ain (Real Name)"
entries, for both in-text-box and file-upload mass
- Filtering and Privacy
o Reply-To: munging has been enhanced to allow a wider range
of list policies. You can now pre-strip any Reply-To:
headers before adding list-specific ones (i.e. you can
override or extend existing Reply-To: headers). If
stripping, the old headers are no longer saved on
o New sender moderation rules. The old `posters',
`member_only_posting', `moderated' and `forbidden_posters'
options have been removed in favor of a new moderation
scheme. Each member has a personal moderation bit, and
non-member postings can be automatically accepted, held for
approval, rejected (bounced) or discarded.
o When membership rosters are private, responses to
subscription (and other) requests are made more generic so
that these processes can't be covertly mined for hidden
addresses. If a subscription request comes in for a user
who is already subscribed, the user is notified of potential
o When a held message is approved via the admindb page, an
X-Moderated: header is added to the message.
o List admins can now set an unsubscribe policy which requires
them to approve of member unsubscriptions.
- Web U/I
o All web confirmations now require a two-click procedure,
where the first click gives them a page that allows them to
confirm or cancel their subscription. It is bad form for an
email click (HTTP GET) to have side effects.
o Lots of improvements for clarity.
o The Privacy category has grown three subcategories.
o The General options page as a number of subsection headers.
o The Passwords and Languages categories are now on separate
o The admin subcategories are now formated as two columns in
the top and bottom legends.
o When creating a list through the web, you can now specify
the initial list of supported languages.
o The U/I for unsubscribing a member on the admin's membership
page should be more intuitive now.
o There is now a separate configuration option for whether the
goodbye_msg is sent when a member is unsubscribed.
o misc/mailman is a Unix init script, appropriate for
/etc/init.d, and containing chkconfig hooks for systems that
o bin/mailmanctl has been rewritten; the `restart' command
actually works now. It now also accepts -s, -q, and -u
o bin/qrunner has been rewritten too; it can serve the role of
the old cron/qrunner script for those who want classic
cron-invoked mail delivery.
o Internally, messages are now stored in the qfiles directory
primarily as pickles. List configuration databases are now
stored as pickles too (i.e. config.pck). bin/dumpdb knows
how to display both pickles and marshals.
- Mail delivery
o If a user's message is held for approval, they are sent a
notification message containing a confirmation cookie. They
can use this confirmation cookie to cancel their own
postings (if they haven't already been approved).
o When held messages are forwarded to an explicit address
using the admindb page, it is done so in a message/rfc822
o When a message is first held for approval, the notification
sent to the list admin is a 3-part multipart/mixed. The
first part holds the notification message, the second part
hold the original message, and the third part hold a cookie
confirmation message, to which the admin can respond to
approve or discard the message via email.
o In the mail->news gateway, you can define mail headers that
must be modified or deleted before the message can be posted
to the nntp server.
o The list admin can send an immediate urgent message to the
entire list membership, bypassing digest delivery. This is
done by adding an Urgent: header with the list password.
Urgent messages with an invalid password are rejected.
o Lists can now optionally personalize email messages, if the
site admin allows it. Personalized messages mean that the
To: header includes the recipient's address instead of the
list's address, and header and footer messages can contain
user-specific information. Note that only regular
deliveries can currently be personalized.
o Message that come from Usenet but that have broken MIME
boundaries are ignored.
o If the site administrator agrees, list owners have the
ability to disable RFC 2369 List-* headers.
o mimelib is no longer required, but you must install the
email package (see the tarball in the misc directory).
o An (as yet) incomplete test suite has been added. Don't try
running it in a production environment!
o Better virtual host support by adding a mapping from the
host name given in cgi's HTTP_HOST/SERVER_NAME variable to
the email host used in list addresses. (E.g. www.python.org
maps to @python.org).
o Specifying urls to external public archivers is more
o The filters/ subdirectory has been removed.
o There is now a `site list' which is a mailing list that must
be created first, and from which all password reminders
appear to come from. It is recommended that this list be
o bin/move_list is no longer necessary (see the FAQ for
detailed instructions on renaming a list).
o A new script bin/fix_url.py can be used with bin/withlist to
change a list's web_page_url configuration variable (since
it is no longer modifiable through the web).
o Support for German, Hungarian, Italian, Japanese, and
Norwegian have been added.
o Lots of new bounce detectors. Bounce detectors can now
discard temporary bounce messages by returning a special
o bin/withlist now sports a -q/--quiet flag.
o bin/add_members has a new -a/--admin-notify flag which can
be used to inhibit list owner notification for each
- Membership Adaptors
o Internally, mailing list memberships are accessed through a
MemberAdaptor interface. This would allow for integrating
membership databases with external sources (e.g. Zope or
LDAP), although the only MemberAdaptor currently implemented
is a "classic" adaptor which stores the membership
information on the MailList object.
o There's a new pipeline handler module called FileRecips.py
which could be used to get all regular delivery mailing list
recipients from a Sendmail-style :include: file (see List
Extensibility bullet below).
This work was sponsored by Control.com
- List Extensibility
o A framework has been added which can be used to specialize
and extend specific mailing lists. If there is a file
called lists/<yourlist>/extend.py, it is execfile()'d after
the MailList object is instantiated. The file should
contain a function extend() which will be called with the
MailList instance. This function can do all sorts of deep
things, like modify the handler pipeline just for this list,
or even strip out particular admin GUI elements (see below).
o All the admin page GUI elements are now separate
components. This provides greater flexibility for list
customization. Also, each GUI element will be given an
opportunity to handle admin CGI form data.
This work was sponsored by Control.com
- Topic Filters
o A new feature has been added called "Topic Filters". A list
administrator can create topics, which are essentially
regular expression matches against Subject: and Keyword:
headers (including such pseudo-headers if they appear in the
first few lines of the body of a message).
List members can then `subscribe' to various topics, which
allows them to filter out any messages that don't match a
topic, or to filter out any message that does match a
topic. This can be useful for high volume lists where not
everyone will be interested in every message.
This work was sponsored by Control.com