[Mailman-developers] Mailman 1.0b2 available
Ken Manheimer
klm@python.org
Mon, 13 Apr 1998 16:42:31 -0400 (EDT)
Finally, i've got a complete package of mailman 1.0b2 ready for
consumption. This has some substantial features beyond friday(?)'s
prerelease, particularly support for private archives and fix of a bug
handling addresses containing quotes. It also has lots of niggles
polished in preparing the release, so i'd strongly suggest using
getting this version even if you got the prerelease.
Here's the encompassing README. I (in the grand Python tradition -
didn't mean to do it, but i can see now how this happens) will be away
the rest of this week, for the most part, but may be able to field
some immediate problems or whatever tomorrow.
Below is the encompassing README - cheers!
Ken Manheimer klm@python.org 703 620-8990 x268
(orporation for National Research |nitiatives
# If you appreciate Python, consider joining the PSA! #
# <http://www.python.org/psa/>. #
Distribution README for mailman 1.0b2.
This is mailman v1.0b2.0 - probably the first real, full-function
beta-level release of V1. In case you don't know, mailman is a
maillist management system with full web-based administration and
membership interfaces. It is written almost wholly in Python, and
nicely extensible. See the README in the mailman directory for more
details.
To use it, unpack the tar file and move the mailman directory to
within ~mailman on your system. See the README in the mailman
directory for more details.
Mailman was devised by John Viega, who developed it pretty far but
lost later versions in a system crash. The current version is based
on an early release (1.0b1) that john did which i (ken manheimer)
picked up and stashed away, until such time that i could pay attention
to it. Turns out i had one of the most recent surviving copies, so it
became the basis of the current system. However, that version was in
some ways still at the prototype stage, so i've spent some time
polishing it up, enough at first to get it running for use with the
maillists here at python.org, and perhaps a bit more to get it looking
better, easier to use, and a bit more solid. I'd say this release, if
not ready for prime time, is ready for general use and development.
Below is a list of the major new features added since the original
release (1.0b1.1), bugs stomped and still pending, and thoughts about
further develpment necessary and/or desirable. For anyone interested
in joining in on the development crowd, or just tracking the progress,
there's a maillist for you to join (we're considering using mailman to
run it - kidding!), mailman-developers@python.org. Visit
http://www.python.org/mailman/listinfo/mailman-developers for more
info.
New Features
Web pages much more polished
- Better organized, text more finely crafted
- Easier, more refined layout
- List info and admin interface overviews, enumerate all public lists
(via, e.g., http://www.python.org/mailman/listinfo - sans the
specific list)
- Admin interface broken into sections, with help elaboration for
complicated configuration options
Maillist Archives
- Integrated with a newer, *much* improved, external pipermail - to be
found at http://starship.skyport.net/crew/amk/maintained/pipermail.html
- Private archives protected with maillist members passwords, cookie-fied.
Spam prevention
- New spam prevention measures catch most if not all spam without
operator intervention or general constraints on who can post to
list:
require_explicit_destination option imposes hold of any postings
that do not have the list name in any of the to or cc header
destination addresses. This catches the vast majority of random
spam.
Other options (forbidden_posters, bounce_matching_headers) provide
for filtering of known transgressors.
- Option obscure_addresses (default on) causes maillist subscriber
lists on the web to be slightly mangled so they're not directly
recognizable as email address by web spiders, which might be
seeking targets for spammers.
Site configuration arrangement organized - in mailman/mailman/modules:
- When installing, create a mailman/modules/mm_cfg.py (if there's not
one already there), using mm_cfg.py.dist as a template.
mm_default.py contains the distributed defaults, including
descriptions of the values. mm_cfg.py does a 'from mm_defaults.py
import *' to get the distributed defaults. Include settings in
mm_cfg.py for any values in mm_defaults.py that need to be
customized for your site, after the 'from .. import *'.
See mm_cfg.py.dist for more details.
Logging
- Major operations (subscription, admin approval, bounce,
digestification, cgi script failure tracebacks) logged in files
using a reliable mechanism
- Wrapper executables log authentication complaints via syslog
Wrappers
- All cgi-script wrapper executables combined in a single source,
easier to configure. (Mail and aliases wrappers separate.)
List structure version migration
- Provision for automatic update of list structures when moving to a
new version of the system. See modules/versions.py.
Code cleaning
- Many more module docstrings, __version__ settings, more function
docstrings.
- Most unqualified exception catches have been replaced with more
finely targeted catches, to avoid concealing bugs.
- Lotsa long lines wrapped (pet peeve:).
Many Bugs Stomped
-----------------
Many bugs stomped. Some memorable ones:
- Subscriber addresses containing quotes (eg,
Ken_O'Manheimer@python.org) were not properly escaped to survive
transmission through shell to sendmail
- Specifying a non-existent user for editing user options now
complains immediately, rather than presenting a form.
- Ad-hoc /tmp log files (which could bollix things if unwritable) gone
- User changing from digest to non-digest and vice versa doesn't
escape sort order.
- Users are not sorted by address, internally - only on presentation
- htmlformat.py no longer silently hides bugs in format operations.
Instead, unexpected objects show as repr() would - easier to debug,
without making htmlformat fragile.
- File creation bracketed by proper umask setting to ensure specified
file permissions.
- Notices are sent for rejections of moderated postings (but not for
discarded ones).
- Web pages now all have titles.
- Duplicate approvals of subscription requests do not lead to
duplicate memberships.
Pending bugs
------------
- Mime digests a bit feeble - postings containing mime attachments
not properly handled
- Bounce processing
- Turning off bounce processing doesn't?
- Turning on non-member-post exclusion doesn't
- More generally mm_utils.AddressesMatch() needs to be really
thought out. For instance, klm@python.org vs klm@acm.org should
be seen as different, but klm@parrot.python.org and
klm@larch.python.org and klm@python.org should probably be seen
as the same. There may be more criteria...
- Bounces of the confirmation notices sent to people attempting
web-based subscriptions are, necessarily, directed (via reply-to
header) to maillist-request addr, and get mishandled there as
unrecognized requests. Not sure how to solve this one short of
recognizing bad subscriber addrs before sending out the notice.
Pending Developments and Issues
-------------------------------
Some modest Pending Refinements:
- Use re module everywhere instead of regexp and regsub.
- Implement a reasonable administrivia filter for lists (but less
likely to misfire than majordomo's) (administrivia is, eg,
unsubscribe request mistakenly sent to list posting addr)
- Refine any unqualified exception guards to specify target exceptions.
- Turn standard mailman exceptions into class exceptions.
- Implement cookies (with moderate lifetimes) for user and admin passwords.
- Unravel edit-options functionality from cgi/subscribe script - give
edit-options a script of its own. (Not imperative, maybe when the
bigger project of implementing member profiles is done.)
- Relax constraint that everything be installed in /home/mailman.
(I'll probably do this for the next release. We can probably use
relative paths for most things, particularly the routine sys.path
setting in all the python code, and possibly for the wrappers.)
- Foolproof list deletion (bin/rmlist) a bit by asking for password
(and have list admin or site password work).
- Should member deletion be confirmed with email?
- Submission of edited user options should return to edit-options
page, like admin options pages do.
- People mass subscribed on admin form should not require approval,
even for closed-subscribe lists.
Some bigger Pending Projects
- User and Admin Guides - HOWTOs
- Developers guide - documentation
- Implement email interface to admin commands.
- Implement a 'which' mailcmd. (Probably not hard! May be good intro
project for someone wading into mailman development.)
- Put the admin interface and other things like private subscriber rosters
*behind* passwords, like the private archives are. Eg, instead of
putting the password box on the listinfo form, have it always be just
a regular link to the roster, but then the roster page would be a
password page if the roster is private and there's no cookie for it.
- Generalize and refine admindb so that pending bounces,
subscriptions, etc are stored in the filesystem, nicely catalogued,
and the interfaces for handling them (eg, admindb) shows succinct
summaries, with links to see the entire things. (I may work on this.)
- Develop subscription mechanisms so real confirmation happens, and
use that as basis for option to change existing subscription
delivery address. (Scott cotton is working on this.)
- Deliver by connect to SMTP 25 instead of sendmail. (I'm checking
in modules/smtplib.py module john's played with some.)
- Robustify aliases handling to not just append entries if they
already exist, and ideally, edit existing ones if they need to change.
- Implement a real admin/membership-management section, that includes
includes hidden subscribers, provides easy perusal and changing of
all members (including concealed members) status, including
disabling or removal from list.
- Implement some automated validation of installation - check for
obvious problems with options settings, file access permissions,
sendmail hookup, etc.
? Have an implicit list-managers list for every site, which includes
all the list managers?
- Make listinfo page static, regenerated every time admin options are
changed. This will speed up and reduce load for listinfo page
loading.
More Fundamental, or just more bigger:), Pending Projects
- Refine locking to only necessary sections, so there's less room for
unnecessary contention.
- Implement the system as a persistent server. (John's planning to
do this.)
- Implement member profiles, using a class. For name, organization,
description, etc, and defaults options settings. The lists,
themselves, could still have copies of the specific passwords and
the compact bitmaps (for the sake of efficiency) for list-specific
options like digest/nondigest, but the user could set their default
choices - delivery address, password, delivery mode - in their
profile.