diff options
| author | Barry Warsaw | 2009-08-24 08:45:16 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2009-08-24 08:45:16 -0400 |
| commit | f761b80526bc19eb21db6c6461c3675ecc850df2 (patch) | |
| tree | f3aabbb976f3355bd76beaa37d8b54858ff2fbf3 /docs | |
| parent | 7c918b077b844fc174240392138692b4b0efc629 (diff) | |
| download | mailman-f761b80526bc19eb21db6c6461c3675ecc850df2.tar.gz mailman-f761b80526bc19eb21db6c6461c3675ecc850df2.tar.zst mailman-f761b80526bc19eb21db6c6461c3675ecc850df2.zip | |
Documentation reorganization and update.
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/ACKNOWLEDGMENTS.txt | 252 | ||||
| -rw-r--r-- | docs/ALPHA.txt | 92 | ||||
| -rw-r--r-- | docs/NEWS.txt | 268 | ||||
| -rw-r--r-- | docs/OLD-NEWS.txt | 2835 | ||||
| -rw-r--r-- | docs/STYLEGUIDE.txt | 151 | ||||
| -rw-r--r-- | docs/gnu-COPYING-GPL | 340 | ||||
| -rw-r--r-- | docs/man/add_members.1 | 60 | ||||
| -rw-r--r-- | docs/man/check_db.1 | 60 | ||||
| -rw-r--r-- | docs/man/check_perms.1 | 46 | ||||
| -rw-r--r-- | docs/man/clone_member.1 | 71 | ||||
| -rw-r--r-- | docs/man/find_member.1 | 64 | ||||
| -rw-r--r-- | docs/man/list_members.1 | 78 | ||||
| -rw-r--r-- | docs/man/remove_members.1 | 63 | ||||
| -rw-r--r-- | docs/man/sync_members.1 | 81 | ||||
| -rw-r--r-- | docs/man/transcheck.1 | 41 | ||||
| -rw-r--r-- | docs/posting-flow-chart.ps | 735 |
16 files changed, 0 insertions, 5237 deletions
diff --git a/docs/ACKNOWLEDGMENTS.txt b/docs/ACKNOWLEDGMENTS.txt deleted file mode 100644 index 321470388..000000000 --- a/docs/ACKNOWLEDGMENTS.txt +++ /dev/null @@ -1,252 +0,0 @@ -Mailman - The GNU Mailing List Management System -Copyright (C) 1998-2007 by the Free Software Foundation, Inc. -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - -The following folks are or have been core developers of Mailman (in reverse -alphabetical order): - - Barry Warsaw, Mailman's yappy guard dog - Thomas Wouters, Mailman's Dutch treat - John Viega, Mailman's inventor - Mark Sapiro, Mailman's compulsive responder - Harald Meland, Norse Mailman - Ken Manheimer, Mailman's savior - Tokio Kikuchi, Mailman's weatherman - Scott Cotton, Cookie-Monster - -They can be contacted directly via mailman-cabal@python.org. - -Here is the list of other contributors who have donated large bits of -code, and have assigned copyright for contributions to the FSF: - - Juan Carlos Rey Anaya - Richard Barrett - Stephan Berndts - Norbert Bollow - Ben Gertzfield - Victoriano Giralt - Mads Kiilerich - The Dragon De Monsyne - Les Niles - Terri Oda - Simone Piunno - -Thanks also go to the following people for their important contributions in -other aspects of the Mailman project: - - Brad Knowles - JC Dill - -Thanks also to Dragon for his winning Mailman logo contribution, and -to Terri Oda for the neat shortcut icon and the member documentation. - -Control.com sponsored development of several Mailman 2.1 features, -including topics filters, external membership sources, and initial -virtual mailing list support. My thanks especially to Dan Pierson and -Ken Crater from Control.com. - -Here is the list of other people who have contributed useful ideas, -suggestions, bug fixes, testing, etc., or who have been very helpful -in answering questions on mailman-users. - - David Abrahams - William Ahern - Terry Allen - Jose Paulo Moitinho de Almeida - Sven Anderson - Matthias Andree - Anton Antonov - Mike Avery - Stonewall Ballard - Moreno Baricevic - Jeff Berliner - Stuart Bishop - David Blomquist - Bojan - Søren Bondrup - Grant Bowman - Alessio Bragadini - J. D. Bronson - Stan Bubrouski - Daniel Buchmann - Ben Burnett - Ted Cabeen - Mentor Cana - John Carnes - Julio A. Cartaya - Claudio Cattazzo - Donn Cave - David Champion - Hye-Shik Chang - Eric D. Christensen - Tom G. Christensen - Paul Cox - Stefaniu Criste - Robert Daeley - Ned Dawes - Emilio Delgado - John Dennis - Stefan Divjak - Maximillian Dornseif - Fred Drake - Maxim Dzumanenko - Piarres Beobide Egaña - Rob Ellis - Kerem Erkan - Fil - Patrick Finnerty - Bob Fleck - Erik Forsberg - Darrell Fuhriman - Robert Garrigós - Carson Gaspar - Pascal GEORGE - Vadim Getmanshchuk - David Gibbs - Dmitri I GOULIAEV - Terry Grace - Federico Grau - Pekka Haavisto - David Habben - Stig Hackvan - Jeff Hahn - Terry Hardie - Paul Hebble - Tollef Fog Heen - Peer Heinlein - James Henstridge - Walter Hop - Bert Hubert - Henny Huisman - Jeremy Hylton - Ikeda Soji - Rostyk Ivantsiv - Ron Jarrell - Matthias Juchem - Tamito KAJIYAMA - Nino Katic - SHIGENO Kazutaka - Ashley M. Kirchner - Matthias Klose - Harald Koch - Patrick Koetter - Eddie Kohler - Chris Kolar - Uros Kositer - Andrew Kuchling - Ricardo Kustner - L'homme Moderne - Sylvain Langlade - Ed Lau - J C Lawrence - Greg Lindahl - Christopher P. Lindsey - Martin von Loewis - Dario Lopez-Kästen - Tanner Lovelace - Jay Luker - Gergely Madarasz - Luca Maranzano - John A. Martin - Andrew Martynov - Jason R. Mastaler - Michael Mclay - Michael Meltzer - Marc MERLIN - Nigel Metheringham - Dan Mick - Garey Mills - Martin Mokrejs - Michael Fischer v. Mollard - David Martínez Moreno - Dirk Mueller - Jonas Muerer - Erik Myllymaki - Balazs Nagy - Moritz Naumann - Dale Newfield - Hrvoje Niksic - Les Niles - Mike Noyes - David B. O'Donnell - Timothy O'Malley - "office" - Dan Ohnesorg - Gerald Oskoboiny - Eva Österlind - Toni Panadès - Jon Parise - Chris Pepper - Tim Peters - Joe Peterson - PieterB - Rodolfo Pilas - Skye Poier - Martin Pool - Don Porter - Francesco Potortì - Bob Puff - Michael Ranner - John Read - Sean Reifschneider - Christian Reis - Ademar de Souza Reis, Jr. - Bernhard Reiter - Stephan Richter - Tristan Roddis - Heiko Rommel - Luigi Rosa - Guido van Rossum - Nicholas Russo - Chris Ryan - Cabel Sasser - Bartosz Sawicki - Kai Schaetzl - Karoly Segesdi - Gleydson Mazioli da Silva - Pasi Sjöholm - Chris Snell - Mikhail Sobolev - Greg Stein - Dale Stimson - Students of HIT <mailman-cn@mail.cs.hit.edu.cn> - Szabolcs Szigeti - Vizi Szilard - David T-G - Owen Taylor - Danny Terweij - Jim Tittsler - Todd (Freedom Lover) - Roger Tsang - Chuq Von Rospach - Jens Vagelpohl - Valia V. Vaneeva - Anti Veeranna - Todd Vierling - Bill Wagner - Greg Ward - Mark Weaver - Kathleen Webb - Florian Weimer - Ousmane Wilane - Dan Wilder - Seb Wills - Dai Xiaoguang - Ping Yeh - YASUDA Yukihiro - Michael Yount - Blair Zajac - Mikhail Zabaluev - Noam Zeilberger - Daniel Zeiss - Todd Zullinger - -And everyone else on mailman-developers@python.org and -mailman-users@python.org! Thank you, all. - - - -Local Variables: -mode: indented-text -indent-tabs-mode: nil -End: diff --git a/docs/ALPHA.txt b/docs/ALPHA.txt deleted file mode 100644 index dec6a01a7..000000000 --- a/docs/ALPHA.txt +++ /dev/null @@ -1,92 +0,0 @@ -Mailman - The GNU Mailing List Management System -Copyright (C) 2008-2009 by the Free Software Foundation, Inc. -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - -ALPHA RELEASE - - The Mailman 3 alpha releases are being provided to give developers and - other interested people an early look at the next major version. As such, - many things may not work yet. Your participation is encouraged. Your - feedback and contributions are welcome. Please submit bug reports on the - Mailman bug tracker at - - https://bugs.launchpad.net/mailman - - or on the mailman-developers mailing list. - - -USING THE ALPHA - - Python 2.6 is required. It can either be the default 'python' on your - $PATH or it can be accessible via the 'python2.6' binary. See - http://www.python.org for details on getting Python 2.6. - - Mailman 3 is now based on the zc.buildout infrastructure, which greatly - simplifies building and testing Mailman. - - This version of Mailman depends on an unofficial branch of the lazr.config - package. This branch adds a number of useful features and fixes some - bugs, but it is still under review and not yet part of the official - package. Start by checking out this unofficial branch: - - % cd wherever - % bzr branch lp:~barry/lazr.config/megamerge - - Now you need to edit Mailman's buildout.cfg file. Look for the 'develop' - line under the [buildout] section. Change the path to the megamerge - package to point to the location of your checked out branch above. - - You will need the gettext package (specifically, the msgfmt(1) command) in - order to build the I18N message catalogs. If you're missing this command, - it is known that the digests.txt test will fail. - - You do not need anything other than Python 2.6 and an internet connection - to get all the other Mailman 3 dependencies. Here are the commands to - build everything: - - % python2.6 bootstrap.py - % bin/buildout - - Now you can run the test suite via: - - % bin/test - - You should see no failures. - - At this point you can read the doctests by looking in all the 'doc' - directories under the 'mailman' package. Doctests are documentation - first, so they should give you a pretty good idea how various components - of Mailman 3 works. - - What, you actually want to /run/ Mailman 3? Oh well, if you insist. You - will need to set up a configuration file to override the defaults and set - things up for your environment. Currently Mailman 3 is configured with a - bastard mix of the old configuration system and lazr.config, which is an - ini-style configuration system. Eventually all configuration will be - converted to lazr.config. - - For now though, start by looking through src/mailman/config/schema.cfg. - Create a file for your overrides; it can be called anything and can live - anywhere, but I like to call it 'mailman.cfg'. For any value in - schema.cfg you want to override, just add a section header (the - square-bracketed names) and then the 'key: value' pair you want to - override. - - You will need to pass the -C flag to any bin command you want to invoke, - pointing it at your mailman.cfg file. The next release will make this - simpler by searching some default locations. - - You can use the create_list, remove_list, list_lists, add_members, and - list_members to set up and populate some mailing lists. You of course - also need to use mailmanctl to start the queue runners, and then you can - use the inject command to put some messages into the queue. For the most - part, they ought to get delivered <wink>. - - Please note that the web u/i does /not/ work yet. - - - -Local Variables: -mode: indented-text -indent-tabs-mode: nil -End: diff --git a/docs/NEWS.txt b/docs/NEWS.txt deleted file mode 100644 index a3fc04d31..000000000 --- a/docs/NEWS.txt +++ /dev/null @@ -1,268 +0,0 @@ -================================================ -Mailman - The GNU Mailing List Management System -================================================ - -Copyright (C) 1998-2009 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. - -3.0 alpha 4 -- "Vital Signs" -============================ -(20XX-XX-XX) - - -3.0 alpha 3 -- "Working Man" -============================ -(2009-08-21) - -Configuration -------------- - * Configuration is now done through lazr.config. Defaults.py is - dead. lazr.config files are essentially hierarchical ini files. - * Domains are now stored in the database instead of in the configuration file. - * pre- and post- initialization hooks are now available to plugins. Specify - additional hooks to run in the configuration file. - * Add the environment variable $MAILMAN_CONFIG_FILE which overrides the -C - command line option. - * Make LMTP more compliant with Postfix docs (Patrick Koetter) - * Added a NullMTA for mail servers like Exim which just work automatically. - -Architecture ------------- - - * 'bin/mailman' is a new super-command for managing Mailman from the command - line. Some older bin scripts have been converted, with more to come. - * Mailman now has an administrative REST interface which can be used to get - information from and manage Mailman remotely. - * Back port of Mailman 2.1's limit on .bak file restoration. After 3 - restores, the file is moved to the bad queue, with a .psv extension. (Mark - Sapiro) - * Digest creation is moved into a new queue runner so it doesn't block main - message processing. - -Other changes -------------- - * bin/make_instance is no longer necessary, and removed - * The debug log is turned up to info by default to reduce log file spam. - -Building and installation -------------------------- - * All doc tests can now be turned into documentation, via Sphinx. Just run - bin/docs after bin/buildout. - - -3.0 alpha 2 -- "Grand Designs" -============================== -(03-Jan-2009) - -Licensing ---------- - - * Mailman 3 is now licensed under the GPLv3. - -Bug fixes ---------- - - * Changed bin/arch to attempt to open the mbox before wiping the old - archive. Launchpad bug #280418. - - * Added digest.mbox and pending.pck to the 'list' files checked by - check_perms. Launchpad bug #284802. - -Architecture ------------- - - * Converted to using zope.testing as the test infrastructure. Use bin/test - now to run the full test suite. - <http://pypi.python.org/pypi/zope.testing/3.7.1> - * Partially converted to using lazr.config as the new configuration - regime. Not everything has been converted yet, so some manual editing - of mailman/Defaults.py is required. This will be rectified in future - versions. <http://launchpad.net/lazr.config> - * All web-related stuff is moved to its own directory, effectively moving - it out of the way for now. - * The email command infrastructure has been reworked to play more nicely - with the plug-in architecture. Not all commands have yet been - converted. - -Other changes -------------- - - * The LMTP server now properly calculates the message's original size. - * For command line scripts, -C names the configuration file to use. For - convenient testing, if -C is not given, then the environment variable - MAILMAN_CONFIG_FILE is consulted. - * Support added for a local MHonArc archiver, as well as archiving - automatically in the remote Mail-Archive.com service. - * The permalink proposal for supporting RFC 5064 has been adopted. - * Mailing lists no longer have a .web_page_url attribute; this is taken from - the mailing list's domain's base_url attribute. - * Incoming MTA selection is now taken from the config file instead of - plugins. An MTA for Postfix+LMTP is added. bin/genaliases works again. - * If a message has no Message-ID, the stock archivers will return None for - the permalink now instead of raising an assertion. - * IArchiver no longer has an is_enabled property; this is taken from the - configuration file now. - -Installation ------------- - - * Python 2.6 is the minimal requirement. - * Converted to using zc.buildout as the build infrastructure. See - docs/ALPHA.txt for details. - <http://pypi.python.org/pypi/zc.buildout/1.1.1> - - -3.0 alpha 1 -- "Leave That Thing Alone" -======================================= -(08-Apr-2008) - -User visible changes --------------------- - - * So called 'new style' subject prefixing is the default now, and the only - option. When a list's subject prefix is added, it's always done so before - any Re: tag, not after. E.g. '[My List] Re: The subject'. - * RFC 2369 headers List-Subscribe and List-Unsubscribe now use the preferred - -join and -leave addresses instead of the -request address with a subject - value. - -Configuration -------------- - - * There is no more separate configure; make; make install step. Mailman 3.0 - is a setuptools package. - * Mailman can now be configured via a 'mailman.cfg' file which lives in - $VAR_PREFIX/etc. This is used to separate the configuration from the - source directory. Alternative configuration files can be specified via - -C/--config for most command line scripts. mailman.cfg contains Python - code. mm_cfg.py is no more. You do not need to import Defaults.py in - etc/mailman.cfg. You should still consult Defaults.py for the list of site - configuration variables available to you. - - See the etc/mailman.cfg.sample file. - * PUBLIC_ARCHIVE_URL and DEFAULT_SUBJECT_PREFIX now takes $-string - substitutions instead of %-string substitutions. See documentation in - Defaults.py.in for details. - * Message headers and footers now only accept $-string substitutions; - %-strings are no longer supported. The substitution variable - '_internal_name' has been removed; use $list_name or $real_name - instead. The substitution variable $fqdn_listname has been added. - DEFAULT_MSG_FOOTER in Defaults.py.in has been updated accordingly. - * The KNOWN_SPAMMERS global variable is replaced with HEADER_MATCHES. The - mailing list's header_filter_rules variable is replaced with header_matches - which has the same semantics as HEADER_MATCHES, but is list-specific. - * DEFAULT_MAIL_COMMANDS_MAX_LINES -> EMAIL_COMMANDS_MAX_LINES - * All SMTP_LOG_* templates use $-strings and all consistently write the - Message-ID as the first item in the log entry. - * DELIVERY_MODULE now names a handler, not a module (yes, this is a - misnomer, but it will likely change again before the final release). - -Architecture ------------- - - * Internally, all strings are Unicodes. - * Implementation of a chain-of-rules based approach for deciding whether a - message should initially be accepted, held for approval, rejected/bounced, - or discarded. This replaces most of the disposition handlers in the - pipeline. The IncomingRunner now only processes message through the rule - chains, and once accepted, places the message in a new queue processed by - the PipelineRunner. - * Substantially reworked the entire queue runner process management, - including mailmanctl, a new master script, and the qrunners. This should - be much more robust and reliable now. - * The Storm ORM is used for data storage, with the SQLite backend as the - default relational database. - * Zope interfaces are used to describe the major components. - * Users are now stored in a unified database, and shared across all mailing - lists. - * Mailman's web interface is now WSGI compliant. WSGI is a Python standard - (PEP 333) allowing web applications to be (more) easily integrated with any - number of existing Python web application frameworks. For more information - see: - - http://www.wsgi.org/wsgi - http://www.python.org/dev/peps/pep-0333/ - - Mailman can still be run as a traditional CGI program of course. - * Mailman now provides an LMTP server for more efficient integration with - supporting mail servers (e.g. Postfix, Sendmail). The Local Mail Transport - Protocol is defined in RFC 2033: - - http://www.faqs.org/rfcs/rfc2033.html - * Virtual domains are now fully supported in that mailing lists of the same - name can exist in more than one domain. This is accomplished by renaming - the lists/ and archives/ subdirectories after the list's posting address. - For example, data for list foo in example.com and list foo in example.org - will be stored in lists/foo@example.com and lists/foo@example.org. - - For Postfix or manual MTA users, you will need to regenerate your mail - aliases. Use bin/genaliases. - - VIRTUAL_HOST_OVERVIEW has been removed, effectively Mailman now operates - as if it were always enabled. If your site has more than one domain, - you must configure all domains by using add_domain() in your - etc/mailman.cfg flie (see below -- add_virtual() has been removed). - * If you had customizations based on Site.py, you will need to re-implement - them. Site.py has been removed. - * The site list is no more. You can remove your 'mailman' site list unless - you want to retain it for other purposes, but it is no longer used (or - required) by Mailman. You should set NO_REPLY_ADDRESS to an address that - throws away replies, and you should set SITE_OWNER_ADDRESS to an email - address that reaches the person ultimately responsible for the Mailman - installation. The MAILMAN_SITE_LIST variable has been removed. - * qrunners no longer restart on SIGINT; SIGUSR1 is used for that now. - -Internationalization Big Changes --------------------------------- - - * Translators should work only on messages/<lang>/LC_MESSAGES/mailman.po. - Templates files are generated from mailman.po during the build process. - -New Features ------------- - - * Confirmed member change of address is logged in the 'subscribe' log, and if - admin_notify_mchanges is true, a notice is sent to the list owner using a - new adminaddrchgack.txt template. - * There is a new list attribute 'subscribe_auto_approval' which is a list of - email addresses and regular expressions matching email addresses whose - subscriptions are exempt from admin approval. RFE 403066. - -Command line scripts --------------------- - - * Most scripts have grown a -C/--config flag to allow you to specify a - different configuration file. Without this, the default etc/mailman.cfg - file will be used. - * the -V/--virtual-host-overview switch in list_lists has been removed, while - -d/--domain and -f/--full have been added. - * bin/newlist is renamed bin/create_list and bin/rmlist is renamed - bin/remove_list. Both take fully-qualified list names now (i.e. the list's - posting address), but also accept short names, in which case the default - domain is used. newlist's -u/--urlhost and -e/--emailhost switches have - been removed. The domain that the list is being added to must already - exist. - * Backport the ability to specify additional footer interpolation variables - by the message metadata 'decoration-data' key. - -Bug fixes and other patches ---------------------------- - - * Removal of DomainKey/DKIM signatures is now controlled by Defaults.py - mm_cfg.py variable REMOVE_DKIM_HEADERS (default = No). - * Queue runner processing is improved to log and preserve for analysis in the - shunt queue certain bad queue entries that were previously logged but lost. - Also, entries are preserved when an attempt to shunt throws an exception - (1656289). - * The processing of Topics regular expressions has changed. Previously the - Topics regexp was compiled in verbose mode but not documented as such which - caused some confusion. Also, the documentation indicated that topic - keywords could be entered one per line, but these entries were not handled - properly. Topics regexps are now compiled in non-verbose mode and multi- - line entries are 'ored'. Existing Topics regexps will be converted when - the list is updated so they will continue to work. - * The List-Help, List-Subscribe, and List-Unsubscribe headers were - incorrectly suppressed in messages that Mailman sends directly to users. - * The 'adminapproved' metadata key is renamed 'moderator_approved'. diff --git a/docs/OLD-NEWS.txt b/docs/OLD-NEWS.txt deleted file mode 100644 index c87635640..000000000 --- a/docs/OLD-NEWS.txt +++ /dev/null @@ -1,2835 +0,0 @@ -Mailman - The GNU Mailing List Management System -Copyright (C) 1998-2007 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.1.10b4 (13-Mar-2008) - - Security - - - The 2.1.9 fixes for CVE-2006-3636 were not complete. In particular, - some potential cross-site scripting attacks were not detected in - editing templates and updating the list's info attribute via the web - admin interface. This has been assigned CVE-2008-0564 and has been - fixed. Thanks again to Moritz Naumann for assistance with this. - - New Features - - - Changed cmd_who.py to list all members if authorization is with the - list's admin or moderator password and to accept the password if the - roster is public. Also changed the web roster to show hidden members - when authorization is by site or list's admin or moderator password - (1587651). - - - Added the ability to put a list name in accept_these_nonmembers - to accept posts from members of that list (1220144). - - - Added a new 'sibling list' feature to exclude members of another list - from receiving a post from this list if the other list is in the To: or - Cc: of the post or to include members of the other list if that list is - not in the To: or Cc: of the post (Patch ID 1347962). - - - Added the admin_member_chunksize attribute to the admin General Options - interface (Bug 1072002, Partial RFE 782436). - -Internationalization - - - Added the Hebrew translation from Dov Zamir. This includes addition of - a direction ('ltr', 'rtl') to the LC_DESCRIPTIONS table. The - add_language() function defaults direction to 'ltr' to not break - existing mm_cfg.py files. - - - Added the Slovak translation from Martin Matuska. - - - Added the Galician translation from Frco. Javier Rial Rodríguez. - - Bug fixes and other patches - - - Added bounce recognition for several additional bounce formats. - - - Fixed CommandRunner.py to decode a quoted-printable or base64 encoded - message part (1829061). - - - Fixed Scrubber.py to avoid loss of an implicit text/plain message part - with no Content-* headers in a MIME multipart message (759841). Fixed - several other minor scrubber issues (1242450). - - - Added Date and Message-ID headers to the confirm reply message that - Mailman adds to the admin notification (1471318). - - - Fixed Cgi/options.py to not present the "empty" topic to user. - - - Fixed Handlers/CalcRecips.py to not process topics if topics are - disabled for the list. This caused users who had previously subscribed - to topics and elected to not receive non-matching posts to receive no - messages after topics were disabled for the list. - - - Fixed MaildirRunner.py to handle hyphenated list names. - - - Fixed a bug in MimeDel.py (content filtering) which caused - *_filename_extensions to not match if the extension in the message was - not all lower case. - - - Fixed versions.py to not call a non-existant method when converting held - posts from Mailman 1.0.x lists. - - - Added a test to configure to detect a missing python-devel package on - some RedHat systems. - - - Fixed bin/dumpdb to once again be able to dump marshals (broken since - 2.1.5) (963137). - - - Worked around a bug in the Python email library that could cause Mailman - to not get the correct value for the sender of a message from an RFC - 2231 encoded header causing spurious held messages. - - - Fixed bin/check_perms to detect certain missing permissions on the - archives/private/ and archives/private/<list>/database/ directories. - - - Improved exception handling in cron/senddigests. - - - Changed the admindb page to not show the "Discard all messages marked - Defer" checkbox when there are only (un)subscribes and no held messages. - Also added a separator and heading for "Held Messages" like the ones for - "Subscribe Requests" and "Unsubscribe Requests". Suppressed the - "Database Updated" message when coming from the login page. Also - removed the "Discard all messages marked Defer" checkbox from the - details page where it didn't work (1562922, 1000699). - - - Fixed admin.py so null VARHELP category is handled (1573393). - - - Fixed OldStyleMemberships.py to preserve delivery statuses BYADMIN - and BYUSER on a straight change of address (1642388). Also fixed a - bug that could result in a member key with uppercase in the domain. - - - Fixed bin/withlist so that -r can take a full package path to a - callable. - - - Removal of DomainKey/DKIM signatures is now controlled by Defaults.py - mm_cfg.py variable REMOVE_DKIM_HEADERS (default = No). Also, if - REMOVE_DKIM_HEADERS = Yes, an Authentication-Results: header will be - removed if present. - - - The DeprecationWarning issued by Python 2.5 regarding string exceptions - is supressed. - - - format=flowed and delsp=yes are now preserved for message bodies when - message headers/footers are added and attachments are scrubbed - (1495122). - - - Queue runner processing is improved to log and preserve for analysis in - the shunt queue certain bad queue entries that were previously logged - but lost. Also, entries are preserved when an attempt to shunt throws - an exception (1656289). - - - The admin Membership List pages have been changed in that the email - address which forms a part of the various CGI data keys is now - urllib.quote()ed. This allows changing options for and unsubbing an - address which contains a double-quote character, but it may require - changes to scripts that screen-scrape the web admin interface to - produce a membership list so they will report an unquoted address. - - - The fix for bug 1181161 in 2.1.7 was incomplete. The Approve(d): line - wasn't always found in quoted-printable encoded parts and was never - found in base64 encoded parts. This is now fixed. - - - Fixed a mail loop if a list owner puts the list's -bounces or -admin - address in the list's owner attribute (1834569). - - - Fixed the mailto: link in archived messages to prefix the subject with - Re: and to put the correct message-id in In-Reply-To (1621278, 1834281). - - - Coerced list name arguments to lower case in the change_pw, inject, - list_admins and list_owners command line tools (patch 1842412). - - - Fixed cron/disabled to test if bounce info is stale before disabling - a member when the threshold has been reduced. - - - It wasn't noted here, but in 2.1.9, queue runner processing was made - more robust by making backups of queue entries when they were dequeued - so they could be recovered in the event of a system failure. This - opened the possibility that if a message itself caused a runner to - crash, a loop could result that would endlessly reprocess the message. - This has now been fixed by adding a dequeue count to the entry and - moving the entry aside and logging the fact after the third dequeue of - the same entry. - - - Fixed the command line scripts add_members, sync_members and - clone_member to properly handle banned addresses (1904737). - - - Fixed bin/newlist to add the list's preferred language to the list's - available_languages if it is other than the server's default language - (1906368). - - - Changed the first URL in the RFC 2369 List-Unsubscribe: header to go - to the options login page instead of the listinfo page. - - - Changed the options login page to not issue the "No address given" error - when coming from the List-Unsubscribe and other direct links. Also - changed to remember the user's language selection when redisplaying the - page following an error. - - - Changed cmd_subscribe.py to properly accept (no)digest without a - password and to recognize (no)digest and address= case insensitively. - - Miscellaneous - - - Brad Knowles' mailman daily status report script updated to 0.0.17. - -2.1.9 (12-Sep-2006) - - Security - - - A malicious user could visit a specially crafted URI and inject an - apparent log message into Mailman's error log which might induce an - unsuspecting administrator to visit a phishing site. This has been - blocked. Thanks to Moritz Naumann for its discovery. - - - Fixed denial of service attack which can be caused by some - standards-breaking RFC 2231 formatted headers. CVE-2006-2941. - - - Several cross-site scripting issues have been fixed. Thanks to Moritz - Naumann for their discovery. CVE-2006-3636 - - - Fixed an unexploitable format string vulnerability. Discovery and fix - by Karl Chen. Analysis of non-exploitability by Martin 'Joey' Schulze. - Also thanks go to Lionel Elie Mamane. CVE-2006-2191. - - Internationalization - - - New languages: Arabic, Vietnamese. - - Bug fixes and other patches - - - Fixed Decorate.py so that characters in message header/footer which - are not in the character set of the list's language are ignored rather - than causing shunted messages (1507248). - - - Switchboard.py - Closed very tiny holes at the upper ends of queue - slices that could result in unprocessable queue entries. Improved FIFO - processing when two queue entries have the same timestamp. - -2.1.8 (15-Apr-2006) - - Security - - - A cross-site scripting hole in the private archive script of 2.1.7 - has been closed. Thanks to Moritz Naumann for its discovery. - - Bug fixes and other patches - - - Bouncers support added: 'unknown user', Microsoft SMTPSVC, Prodigy.net - and several others. - - - Updated email library to 2.5.7 which will encode payload into qp/base64 - upon setting. This enabled backing out the scrubber related patches - including 'X-Mailman-Scrubbed' header in 2.1.7. - - - Fix SpamDetect.py potential hold/reject loop problem. - - - A warning message from email package to the stderr can cause error - in Logging because stderr may be detached from the process during - the qrunner run. We chose not to output errors to stderr but to - the logs/error if the process is running under mailmanctl subprocess. - - - DKIM header cleansing was separated from Cleanse.py and added to - -owner messages too. - - - Fixes: Lose Topics when go directly to topics URL (1194419). - UnicodeError running bin/arch (1395683). edithtml.py missing import - (1400128). Bad escape in cleanarch. Wrong timezone in list archive - index pages (1433673). bin/arch fails with TypeError (1430236). - Subscription fails with some Language combinations (1435722). - Postfix delayed notification not recognized (863989). 2.1.7 (VERP) - mistakes delay notice for bounce (1421285). show_qfiles: 'str' - object has no attribute 'as_string' (1444447). Utils.get_domain() - wrong if VIRTUAL_HOST_OVERVIEW off (1275856). - - Miscellaneous - - - Brad Knowles' mailman daily status report script updated to 0.0.16. - -2.1.7 (31-Dec-2005) - - Security - - - The fix for CAN-2005-0202 has been enhanced to issue an appropriate - message instead of just quietly dropping ./ and ../ from URLs. - - - A note on CVE-2005-3573: Although the RFC2231 bug example in the CVE has - been solved in Mailman 2.1.6, there may be more cases where - ToDigest.send_digests() can block regular delivery. We put the - send_digests() calling part in a try/except clause and leave a message - in the error log if something happened in send_digests(). Daily call of - cron/senddigests will provide more detail to the site administrator. - - - List administrators can no longer change the user's option/subscription - globally. Site admin can change these only if - mm_cfg.ALLOW_SITE_ADMIN_COOKIES is set to Yes. - - - <script> tags are HTML-escaped in the edithtml CGI script. - - - Since the probe message for disabled users may reach unintended - recipients, the password is excluded from sendProbe() and probe.txt. - Note that the default value of VERP_PROBE has been set to `No' from - 2.1.6., thus this change doesn't affect the default behavior. - - New Features - - - Always remove DomainKey (and similar) headers from messages sent to the - list. (1287546) - - - List owners can control the content filter behavior when collapsing - multipart/alternative parts to its first subpart. This allows the - option of letting the HTML part pass through after other content - filtering is done. - - Internationalization - - - New language: Interlingua. - - Bug fixes and other patches - - - Defaults.py.in: SCRUBBER_DONT_USE_ATTACHMENT_FILENAME is set to True for - safer operation. - - - Fixed the bug where Scrubber.py munges quoted-printable by introducing - the 'X-Mailman-Scrubbed' header which marks that the payload is - scrubber-munged. The flag is referenced in ToDigest.py, ToArchive.py, - Decorate.py and Archiver. A similar problem in ToDigest.py where the - plain digest is generated is also fixed. - - - Fixed Syslog.py to write quopri encoded messages when it fail to write - 8-bit characters. - - - Fixed MTA/Postfix.py to check aliases group permission in check_perms - and fixed mailman-install document on this matter (1378270). - - - Fixed private.py to go to the original URL after authorization - (1080943). - - - Fixed bounce log score messages to be more consistent. - - - Fixed bin/remove_members to accept no arguments when both --fromall and - --file= options are specified. - - - Changed cgi-bin and mail wrapper "group not found" error message to be - more descriptive of the actual problem. - - - The list's ban_list now applies to address changes, admin mass - subscribes and invites, and to confirmations/approvals of address - changes, subscriptions and invitations. - - - quoted-printable and base64 encoded parts are decoded before passing to - HTML_TO_PLAIN_TEXT_COMMAND (1367783). - - - Approve: header is removed from posts, and treated the same as the - Approved: header. (1355707) - - - Fixed the removal of the line following Approve[d]: line in body of - post. (1318883) - - - The Approve[d]: <password> header is removed from all text/* parts in - addition the initial text/plain part. It must still be the first - non-blank line in the first text/plain part or it won't be found or - removed at all. (1181161) - - - Posts are now logged in post log file with the true sender, not - listname-bounces. (1287921) - - - Correctly initialize and remember the list's default_member_moderation - attribute in the web list creation page. (1263213) - - - PEP263 charset is added to the config_list output. (1343100) - - - Fixed header_filter_rules getting lost if accessed directly and - authentication was needed by login page. (1230865) - - - Obscure email when the poster doesn't set full name in 'From:' header. - - - Preambles and epilogues are taken into account when calculating message - sizes for holding purposes. (Mark Sapiro) - - - Logging/Logger.py unicode transform option. (1235567) - - - bin/update crashes with bogus files. (949117) - - - Bugs and patches: 1212066/1301983 (Date header in create/remove notice) - -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 doc/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. - - - Restore the ability to control which headers show up in messages - included in plaintext and MIME digests. See the variables - PLAIN_DIGEST_KEEP_HEADERS and MIME_DIGEST_KEEP_HEADERS in - Defaults.py. - - - Messages included in the plaintext digests are now sent through - the scrubber to remove (and archive) attachments. Otherwise, - attachments would screw up plaintext digests. MIME digests - include the attachments inline. - -2.1 final (30-Dec-2002) - - Last minute bug fixes and language updates. - -2.1 rc 1 (24-Dec-2002) - - Bug fixes and language updates. Also, - - - Lithuanian support has been added. - - - bin/remove_members grew --nouserack and --noadminack switches - - - configure now honors --srcdir - -2.1 beta 6 (09-Dec-2002) - - Lots and lots of bug fixes, and translation updates. Also, - - - ARCHIVER_OBSCURES_EMAILADDRS is now set to true by default. - - - QRUNNER_SAVE_BAD_MESSAGES is now set to true by default. - - - Bounce messages which were recognized, but in which no member - addresses were found are no longer forwarded to the list - administrator. - - - bin/arch grew a --wipe option which first removes the entire old - archive before regenerating the new one. - - - bin/mailmanctl -u now prints a warning that permission problems - could appear, such as when trying to delete a list through the - web that has some archives in it. - - - bin/remove_members grew --nouserack/-n and -noadminack/-N options. - - - A new script bin/list_owners has been added for printing out - list owners and moderators. - - - Dates in the web version of archived messages are now relative - to the local timezone, and include the timezone names, when - available. - -2.1 beta 5 (19-Nov-2002) - - As is typical for a late beta release, this one includes the usual - bug fixes, tweaks, and massive new features (just kidding). - - IMPORTANT: If you are using Pipermail, and you have any archives - that were created or added to in 2.1b4, you will need to run - bin/b4b5-archfix, followed by bin/check_perms to fix some serious - performance problems. From you install directory, run - "bin/b4b5-archfix --help" for details. - - - The personalization options have been tweaked to provide more - control over mail header and decoration personalizations. In - 2.1b4, when personalization was enabled, the To and Cc headers - were always overwritten. But that's usually not appropriate for - anything but announce lists, so now these headers aren't changed - unless "Full personalization" is enabled. - - - You now need to go to the General category to enable emergency - moderation. - - - The order of the hold modules in the GLOBAL_PIPELINE has - changed, again. Now Moderate comes before Hold. - - - Estonian language support has been added. - - - All posted messages should now get decorated with headers and - footers in a MIME-safe way. Previously, some MIME type messages - didn't get decorated at all. - - - bin/arch grew a -q/--quiet option - - - bin/list_lists grew a -b/--bare option - -2.1 beta 4 (26-Oct-2002) - - The usual assortment of bug fixes and language updates, some u/i - tweaks, as well as the following: - - - Configuring / building / installing - o Tightened up some configure checks; it will now bark loudly - if you don't have the Python distutils package available - (some Linux distros only include distutils in their "devel" - packages). - - o Mailman's username/group security assertions are now done by - symbolic name instead of numeric id. This provides a level - of indirection that makes it much easier to move or package - Mailman. --with-mail-gid and --with-cgi-gid are retained, - but they control the group names used instead. - - - Command line scripts - o A new script, bin/transcheck that language teams can use to - check their .po files. - - o bin/list_members grew a --fullnames/-f option to print the - full names along with the addresses. - - o cron/senddigests grew --help/-h and --listname/-l options. - - o bin/fix_url.py grew some command line options to support moving - a list to a specific virtual domain. - - - Pipermail / archiving - o Reworked the directory layout for archive attachments to be - less susceptible to inode overload. Attachments are now - placed in - - archives/private/<listname>/attachments/<YYYYMMDD>/<msgidhash> - - o Internationalization support in the archiver has been improved. - - - Internationalization - o New languages: Swedish. - - - Mail handling - o Content filtering now has a pass_mime_type variable, which - is a whitelist of MIME types to allow in postings. See the - details of the variable in the Content Filtering category - for more information. - - o If a member has enabled their DontReceiveDuplicates option, - we'll also strip their addresses from the Cc headers in the - copy of the message sent to the list. This helps keep the - Cc lines from growing astronomically. - - o Bounce messages are now forwarded to the list administrators - both if they are unrecognized, and if no list member's - address could be extracted. - - o Content filtering now has a filter_action variable which - controls what happens when a message matches the content - filter rules. The default is still to discard the message. - - o When searching for an Approve/Approved header, the first - non-whitespace line of the body of the message is also - checked, if the body has a MIME type of text/plain. - - o If a list is personalized, and the list's posting address is - not included in a Reply-To header, the posting address is - copied into a Cc header, otherwise there was no (easy) way a - recipient could reply back to the list. - - o Added a MS Exchange bounce recognizer. - - o New configuration variable news_moderation which allows the - mail->news gateway to properly post to moderated newsgroups. - - o Messages sent to a list's owners now comes from the site - list to prevent mail loops when list owners or moderators - having bouncing addresses. - - - Miscellaneous - o mailanctl prevents runaway restarts by imposing a maximum - restart value (defaulting to 10) for restarting the - qrunners. If you hit this limit, do "mailmanctl stop" - followed by "mailmanctl start". - - o The Membership Management page's search feature now includes - searching on members real names. - - o The start of a manual for list administrators is given in - Python HOWTO format (LaTeX). It's in doc/mailman-admin.tex - but it still needs lots of fleshing out. - - o More protections against creating a list with an invalid name. - -2.1 beta 3 (09-Aug-2002) - - The usual assortment of bug fixes and language updates. - - - New languages: Dutch, Portuguese (Brazil) - - - New configure script options: --with-mailhost, --with-urlhost, - --without-permcheck. See ./configure --help for details. - - - The encoding of Subject: prefixes is controlled by a new list - option encode_ascii_prefixes. This is useful for languages with - character sets other than us-ascii. See the Languages admin - page for details. - - - A new list option news_prefix_subject_too controls whether - postings gated from mail to news should have the subject prefix - added to their Subject: header. - - - The algorithm for upgrading the moderation controls for a - Mailman 2.0.x list has changed. The change should be - transparent, but you'll want to double check the moderation - controls after upgrading from MM2.0.x. This should have no - effect for upgrades from a previous MM2.1 beta. - - See the UPGRADING file for details. - - - On the Mass Subscribe admin page, a text box has been added so - that the admin can add a custom message to be prepended to the - welcome/invite notification. - - - On the admindb page, a link is included to more easily reload - the page. - - - The Sendmail.py delivery module is sabotaged so that it can't be - used naively. You need to read the comments in the file and - edit the code to use this unsafe module. - - - When a member sends a `help' command to the request address, - the url to their options page is included in the response. - - - Autoresponses, -request command responses, and posting hold - notifications are inhibited for any message that has a - Precedence: {bulk|list|junk} header. This is to avoid mail - loops between email 'bots. If the original message has an - X-Ack: yes header, the response is sent. - - Responses are also limited to a maximum number per day, as - defined in the site variable MAX_AUTORESPONSES_PER_DAY. This is - another guard against 'bot loops, and it defaults to 10. - - - When a Reply-To: header is munged to include both the original - and the list address, the list address is always added last. - - - The cron/mailpasswds script has grown a -l/--listname option. - - - The cron/disabled script has grown options to send out - notifications for reasons other than bounce-disabled. It has - also grown a -f/--force option. See cron/disabled --help for - details. - - - The bin/dumpdb script has grown a -n/--noprint option. - - - An experimental new mechanism for processing incoming messages - has been added. If you can configure your MTA to do qmail-style - Maildir delivery, Mailman now has a MaildirRunner qrunner. This - may turn out to be much more efficient and scalable, but for - MM2.1, it will not be officially supported. See Defaults.py.in - and Mailman/Queue/MaildirRunner.py for details. - -2.1 beta 2 (05-May-2002) - - Lots of bug fixing, and the following new features and changes: - - - A "de-mime" content filter feature has been added. This - oft-requested feature allows you to specify MIME types that - Mailman should strip off of any messages before they're posted - to the list. You can also optionally convert text/html to - text/plain (by default, through lynx if it's available). - - - Changes to the way the RFC 2919 and 2369 headers (i.e. the - List-*: headers) are added: - o List-Id: is always added - o List-Post:, List-Help:, List-Subscribe:, - List-Unsubscribe:, and List-Archive: are only added to - posting messages. - o X-List-Administrivia: is only added to messages Mailman - creates and sends out of its own accord. - - Also, if the site administrator allows it, list owners can - suppress the addition of all the List-*: headers. List owners - can also separately suppress the List-Post: header for - announce-only lists. - - - A new framework for email commands has been added. This allows - you to easily add, delete, or change the email commands that - Mailman understands, on a per-site, per-list, or even per-user - basis. - - - Users can now change their digest delivery type from MIME to - plain text globally, for all lists they are subscribed to. - - - No language select pulldowns are shown if the list only supports - one language. - - - More mylist-admin eradication. - - - Several performance improvements in the bounce qrunner, one of - which is to make it run only once per minute instead of once per - second. - - - Korean language support as been added. - - - Gatewaying from news -> mail uses its connections to the nntpd - more efficiently. - - - In bin/add_members, -n/--non-digest-members-file command line - switch is deprecated in favor of -r/--regular-members-file. - - - bin/sync_members grew a -g/--goodbye-msg switch. - -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 - QRUNNER_SAVE_BAD_MESSAGES. - - 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 - explicitly CC'd. - - 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 - outgoing messages. - - 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_DISABLE and - DEFAULT_BOUNCE_NOTIFY_OWNER_ON_REMOVAL control the default - behavior. - - 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 - DEFAULT_BOUNCE_UNRECOGNIZED_GOES_TO_LIST_OWNER. - - 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 - different format). - - 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 - this. - - 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 - automatically rejected. - - 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 - updated. - - o DEFAULT_PRIVATE_ROSTER now defaults to 1. - - o Passwords are no longer included in the confirmation pages. - - - Internationalization - o With the approval of Tamito KAJIYAMA, the Japanese codecs - 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 installation. - - 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 - disabled membership. - - o bin/list_members has grown some new command line switches - for filtering on different criteria (digest mode, disable - mode, etc.) - - 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. - - - Archiver - 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 - now optional. - - 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. - - -2.1 alpha 4 (31-Dec-2001) - - - The administrative requests database page (admindb) has been - redesigned for better usability when there are lots of held - postings. Changes include: - o A summary page which groups held messages by sender email - address. On this page you can dispose of all the sender's - messages in one action. You can also view the details of - all the sender's messages, or the details of a single - message. You can also add the sender to one of the list's - sender filters. - - o A details page where you can view all messages, just those - for a particular sender, or just a single held message. - This details page is laid out the same as the old admindb - page. - - o The instructions have been shorted on the summary and - details page, with links to more detailed explanations. - - - Bounce processing - o Mailman now keeps track of the reason a member's delivery - has been disabled: explicitly by the administrator, - explicitly by the user, by the system due to excessive - bounces, or for (legacy) unknown reasons. - - o A new bounce processing algorithm has been implemented (we - might actually understand this one ;). When an address - starts bouncing, the member gets a "bounce score". Hard - (fatal) bounces score 1.0, while soft (transient) bounces - score 0.5. - - List administrators can specify a bounce threshold above - which a member gets disabled. They can also specify a time - interval after which, if no bounces are received from the - member, the member's bounce score is considered stale and is - thrown away. - - o A new cron script, cron/disabled, periodically sends - notifications to members who are bounce disabled. After a - certain number of warnings the member is deleted from the - list. List administrators can control both the number of - notifications and the amount of time between notifications. - - Notifications include a confirmation cookie that the member - can use to re-enable their subscription, via email or web. - - o New configuration variables to support the bounce processing - are DEFAULT_BOUNCE_SCORE_THRESHOLD, - DEFAULT_BOUNCE_INFO_STALE_AFTER, - DEFAULT_BOUNCE_YOU_ARE_DISABLED_WARNINGS, - DEFAULT_BOUNCE_YOU_ARE_DISABLED_WARNINGS_INTERVAL. - - - Privacy and security - o Sender filters can now be regular expressions. If a line - starts with ^ it is taken as a (raw string) regular - expression, otherwise it is a literal email address. - - o Fixes in 2.0.8 ported forward: prevent cross-site scripting - exploits. - - - Mail delivery - o Aliases have all been changed so that there's more - consistency between the alias a message gets delivered to, - and the script & queue runner that handles the message. - - I've also renamed the mail wrapper script to `mailman' from - `wrapper' to avoid collisions with other MLM's. You /will/ - need to regenerate your alias files with bin/genaliases, and - you may need to update your smrsh (Sendmail) configs.a - - Bounces always go to listname-bounces now, since - administration has been separated from bounce processing. - listname-admin is obsolete. - - o VERP support! This greatly improves the accuracy of bounce - detection. Configuration variables which control this feature - include VERP_DELIVERY_INTERVAL, VERP_PERSONALIZED_DELIVERIES, - VERP_PASSWORD_REMINDERS, VERP_REGEXP, and VERP_FORMAT. The - latter two must be tuned to your MTA. - - o A new alias mailman-loop@dom.ain is added which directs all - output to the file $prefix/data/owner-bounces.mbox. This is - used when sending messages to the site list owners, as the - final fallback for bouncing messages. - - o New configuration variable POSTFIX_STYLE_VIRTUAL_DOMAINS - which should be set if you are using the Postfix MTA and - want Mailman to play nice with Postfix-style virtual - domains. - - - Miscellaneous - o Better interoperability with Python 2.2. - - o MailList objects now record the date (in seconds since - epoch) that they were created. This is in a hidden - attribute `created_at'. - - o bin/qrunner grows a -s/--subproc switch which is usually - used only when it's started from mailmanctl. - - o bin/newlist grows a -l/--language option so that the list's - preferred language can be set from the command line. - - o cron changes: admin reminders go out at 8am local time instead - of 10pm local time. - - - Pipermail archiver - o MIME attachments are scrubbed out into separate files which - can be viewed by following a link in the original article. - Article contains an indication of the size of the - attachment, its type, and other useful information. - - o New script bin/cleanarch which can be used to `clean' an - .mbox archive file by fixing unescaped embedded Unix From_ - lines. - - o New configuration variable ARCHIVE_SCRUBBER in - Defaults.py.in which names the module that Pipermail should - use to scrub articles of MIME attachments. - - o New configuration variable ARCHIVE_HTML_SANITIZER which - describes how the scrubber should handle text/html - attachments. - - o PUBLIC_ARCHIVE_URL has change its semantics. It is now an - absolute url, with the hostname and listname parts - interpolated into it on a per-list basis. - - o Pipermail should now provide the proper character set in the - Content-Type: header for archived articles. - - - Internationalization - o Czech translations by Dan Ohnesorg. - - o The Hungarian charset has be fixed to be iso-8859-2. - - o The member options login page now has a language selection - widget. - - - Building, configuration - o email-0.96 package is required (see the misc directory). - - o New recipes for integrating Mailman and Sendmail, - contributed by David Champion. - - -2.1 alpha 3 (22-Oct-2001) - - - Realname support - o Mailman now tracks a member's Real Name in addition to their - email address. - - 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@dom.ain (Real Name)" - and "Real Name <email@dom.ain>" entries, for both - in-text-box and file-upload mass subscriptions. - - - 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 - X-Reply-To: - - 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 - membership mining. - - 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 - admin pages. - - 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. - - - Performance - o misc/mailman is a Unix init script, appropriate for - /etc/init.d, and containing chkconfig hooks for systems that - support it. - - o bin/mailmanctl has been rewritten; the `restart' command - actually works now. It now also accepts -s, -q, and -u - options. - - 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 - encapsulation. - - 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 There is now an API for an external process to post a - message to a list. This posting process can also specify an - explicit list of recipients, in effect turning the mailing - list into a "virtual list" with a fluid membership. See - Mailman/Post.py for details. - - - Building/testing/configuration - 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 - flexible. - - 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 - called "mailman@your.site". - - 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). - - - Internationalization - o Support for German, Hungarian, Italian, Japanese, and - Norwegian have been added. - - - Miscellaneous - o Lots of new bounce detectors. Bounce detectors can now - discard temporary bounce messages by returning a special - Stop value. - - 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 - subscription. - - - 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 - -2.1 alpha 2 (11-Jul-2001) - - - Building - o mimelib 0.4 is now required. Get it from - http://mimelib.sf.net. If you've installed an earlier - version of mimelib, you must upgrade. - - o /usr/local/mailman is now the default installation - directory. Use configure's --prefix switch to change it - back to the default (/home/mailman) or any other - installation directory of your choice. - - - Security - o Better definition of authentication domains. The following - roles have been defined: user, list-admin, list-moderator, - creator, site-admin. - - o There is now a separate role of "list moderator", which has - access to the pending requests (admindb) page, but not the - list configuration pages. - - o Subscription confirmations can now be performed via email or - via URL. When a subscription is received, a unique (sha) - confirm URL is generated in the confirmation message. - Simply visiting this URL completes the subscription process. - - o In a similar manner, removal requests (via web or email - command) no longer require the password. If the correct - password is given, the removal is performed immediately. If - no password is given, then a confirmation message is - generated. - - - Internationalization - o More I18N patches. The basic infrastructure should now be - working correctly. Spanish templates and catalogs are - included, and English, French, Hungarian, and Big5 templates - are included. - - o Cascading specializations and internationalization of - templates. Templates are now search for in the following - order: list-specific location, domain-specific location, - site-wide location, global defaults. Each search location - is further qualified by the language being displayed. This - means that you only need to change the templates that are - different from the global defaults. - - Templates renamed: admlogin.txt => admlogin.html - Templates added: private.html - - - Web UI - o Redesigned the user options page. It now sits behind an - authentication so user options cannot be viewed without the - proper password. The other advantage is that the user's - password need not be entered on the options page to - unsubscribe or change option values. The login screen also - provides for password mail-back, and unsubscription w/ - confirmation. - - Other new features accessible from the user options page - include: ability to change email address (with confirmation) - both per-list and globally for all list on virtual domain; - global membership password changing; global mail delivery - disable/enable; ability to suppress password reminders both - per-list and globally; logout button. - - [Note: the handle_opts cgi has gone away] - - o Color schemes for non-template based web pages can be defined - via mm_cfg. - - o Redesign of the membership management page. The page is now - split into three subcategories (Membership List, Mass - Subscription, and Mass Removal). The Membership List - subcategory now supports searching for member addresses by - regular expression, and if necessary, it groups member - addresses first alphabetically, and then by chunks. - - Mass Subscription and Mass Removal now support file upload, - with one address per line. - - o Hyperlinks from the logos in the footers have been removed. - The sponsors got too much "unsubscribe me!" spam from - desperate user of Mailman at other sites. - - o New buttons on the digest admin page to send a digest - immediately (if it's non-empty), to start a new digest - volume with the next digest, and to select the interval with - which to automatically start a new digest volume (yearly, - monthly, quarterly, weekly, daily). - - DEFAULT_DIGEST_VOLUME_FREQUENCY is a new configuration - variable, initially set to give a new digest volume monthly. - - o Through-the-web list creation and removal, using a separate - site-wide authentication role called the "list creator and - destroyer" or simply "list creator". If the configuration - variable OWNERS_CAN_DELETE_THEIR_OWN_LISTS is set to 1 (by - default, it's 0), then list admins can delete their own - lists. - - This feature requires an adaptor for the particular MTA - you're using. An adaptor for Postfix is included, as is a - dumb adaptor that just emails mailman@yoursite with the - necessary Sendmail style /etc/alias file changes. Some MTAs - like Exim can be configured to automatically recognize new - lists. The adaptor is selected via the MTA option in - mm_cfg.py - - - Email UI - o In email commands, "join" is a synonym for - "subscribe". "remove" and "leave" are synonyms for - "unsubscribe". New robot addresses are support to make - subscribing and unsubscribing much easier: - - mylist-join@mysite - mylist-leave@mysite - - o Confirmation messages have a shortened Subject: header, - containing just the word "confirm" and the confirmation - cookie. This should help for MUAs that like to wrap long - Subject: lines, messing up confirmation. - - o Mailman now recognizes an Urgent: header, which, if it - contains the list moderator or list administrator password, - forces the message to be delivered immediately to all - members (i.e. both regular and digest members). The message - is also placed in the digest. If the password is incorrect, - the message will be bounced back to the sender. - - - Performance - o Refinements to the new qrunner subsystem which preserves - FIFO order of messages. - - o The qrunner is no longer started from cron. It is started - by a Un*x init-style script called bin/mailmanctl (see - below). cron/qrunner has been removed. - - - Command line scripts - o bin/mailmanctl script added, which is used to start, stop, - and restart the qrunner daemon. - - o bin/qrunner script added which allows a single sub-qrunner - to run once through its processing loop. - - o bin/change_pw script added (eases mass changing of list - passwords). - - o bin/update grows a -f switch to force an update. - - o bin/newlang renamed to bin/addlang; bin/rmlang removed. - - o bin/mmsitepass has grown a -c option to set the list - creator's password. The site-wide `create' web page is - linked to from the admin overview page. - - o bin/newlist's -o option is removed. This script also grows - a way of spelling the creation of a list in a specific - virtual domain. - - o The `auto' script has been removed. - - o bin/dumpdb has grown -m/--marshal and -p/--pickle options. - - o bin/list_admins can be used to print the owners of a mailing list. - - o bin/genaliases regenerates from scratch the aliases and - aliases.db file for the Postfix MTA. - - - Archiver - o New archiver date clobbering option, which allows dates to - only be clobber if they are outrageously out-of-date - (default setting is 15 days on either side of received - timestamp). New configuration variables: - - ARCHIVER_CLOBBER_DATE_POLICY - ARCHIVER_ALLOWABLE_SANE_DATE_SKEW - - The archived copy of messages grows an X-List-Received-Date: - header indicating the time the message was received by - Mailman. - - o PRIVATE_ARCHIVE_URL configuration variable is removed (this - can be calculated on the fly, and removing it actually makes - site configuration easier). - - - Miscellaneous - o Several new README's have been added. - - o Most syslog entries for the qrunner have been redirected to - logs/error. - - o On SIGHUP, qrunner will re-open all its log files and - restart all child processes. See "bin/mailmanctl restart". - - - Patches and bug fixes - o SF patches and bug fixes applied: 420396, 424389, 227694, - 426002, 401372 (partial), 401452. - - o Fixes in 2.0.5 ported forward: - Fix a lock stagnation problem that can result when the - user hits the `stop' button on their browser during a - write operation that can take a long time (e.g. hitting - the membership management admin page). - - o Fixes in 2.0.4 ported forward: - Python 2.1 compatibility release. There were a few - questionable constructs and uses of deprecated modules - that caused annoying warnings when used with Python 2.1. - This release quiets those warnings. - - o Fixes in 2.0.3 ported forward: - Bug fix release. There was a small typo in 2.0.2 in - ListAdmin.py for approving an already subscribed member - (thanks Thomas!). Also, an update to the OpenWall - security workaround (contrib/securelinux_fix.py) was - included. Thanks to Marc Merlin. - -2.1 alpha 1 (04-Mar-2001) - - - Python 2.0 or newer required. Also required is `mimelib' a new - library for handling MIME documents. This will be bundled in - future releases, but for now, you must download and install it - (using Python's distutils) from - - http://barry.wooz.org/software/Code/mimelib-0.2.tar.gz - - You need mimelib 0.2 or better. - - - Redesigned qrunner subsystem. Now there are multiple message - queues, and considerable flexibility in file formats for - integration with external systems. The current crop of queues - include: - - archive -- for posting messages to an archiver - commands -- for incoming email commands and bounces - in -- for list-destined incoming email - news -- for messages outgoing to a nntp server - out -- for messages outgoing to a smtp server - shunt -- for messages that trigger unexpected exceptions in Mailman - virgin -- for messages that are generated by Mailman - - cron/qrunner is now a long running script that forks off - sub-runners for each of the above queues. qrunner still plays - nice with cron, but it is expected to be started by init at some - point in the future. Some support exists for parallel - processing of messages in the queues. - - - Support for internationalization support merged in. Original - work done by Juan Carlos Rey Anaya and Victoriano Giralt. I've - tested about 90% of the web side, 50% of the email, and 50% of - the command line / cron scripts. - - New scripts: bin/newlang, bin/rmlang - - - New delivery script `auto' for automatic integration with the - Postfix MTA. - - - A bunch of new bounce detectors. - - Changes ported from Mailman 2.0.2 and 2.0.1: - - - A fix for a potential privacy exploit where a clever list - administrator could gain access to user passwords. This doesn't - allow them to do much more harm to the user then they normally - could, but they still shouldn't have access to the passwords. - - - In the admindb page, don't complain when approving a - subscription of someone who's already on the list (SF bug - #222409 - Thomas Wouters). - - Also, quote for HTML the Subject: text printed for held - messages, otherwise messages with e.g. "Subject: </table>" could - royally screw page formatting. - - - Docstring fix bin/newlist to remove mention of "immediate" - argument (Thomas Wouters). - - - Fix for bin/update when PREFIX != VAR_PREFIX (SF bug #229794 -- - Thomas Wouters). - - - Bug fix release, namely fixes a buglet in bin/withlist affecting - the -l and -r flags; also a problem that can cause qrunner to - stop processing mail after disk-full events (SourceForge bug - 127199). - -2.0 final (21-Nov-2000) - - No changes from rc3. - -2.0 release candidate 3 (16-Nov-2000) - - - By popular demand, Reply-To: munging policy is now to always - override any Reply-To: header in the original message, if - reply_goes_to_list is set to "This list" or "Explicit Address" - - - bin/newlist given -q/--quiet flag instead of the <immediate> - positional argument - - - Hopefully last fix to DEFAULT_URL not ending in a slash - sensitivity - - - 2.0rc2 buglets fixed: - o newlist argument parsing - o updating with unlocked lists - o HyperArch.py traceback when there's no - Content-Transfer-Encoding: header - - - SourceForge bugs fixed: - 122358 (qmail-to-mailman.py listname case folding) - - - SourceForge patches applied: - 102373 (qmail-to-mailman.py listname case folding) - -2.0 release candidate 2 (10-Nov-2000) - - - Documentation updates: start in the doc/ directory. - - - bin/withlist accepts additional command line arguments when used - with the --run flag; bin/mmsitepass and bin/newlist accept - -h/--help flags - - - bin/newlist has a -o/--output flag to append /etc/aliases - suggestions to a specified file - - - SourceForge bugs fixed: - 116615 (README.BSD update), 117015 (duplicate messages on - moderated posts), 117548 (exception in HyperArch.py), 117682 - (typos), 121185 (vsnprintf signature), 121591 and 122017 - (bogus link after web unsubscribe), 121811 (`subscribe' in - Subject: doesn't get archived) - - - SourceForge patches applied: - 101812 (securelinux_fix.py contrib), 102097 (fix for bug - 117548), 102211 (additional args for withlist), 102268 (case - insensitive Content-Transfer-Encoding:) - -2.0 release candidate 1 (23-Oct-2000) - - - Bug fixes and security patches. - - - Better html rendition of articles in non us-ascii charsets - (Jeremy Hylton). See VERBATIM_ENCODING variable in - Defaults.py.in for customization. - -2.0 beta 6 (22-Sep-2000) - - - Building - o Tested with Python 1.5.2, Python 1.6, and Python 2.0 beta 1. - Conducted on RH Linux 6.1 only, but should work - cross-platform. - - o Configure now accepts --with-username, --with-groupname, - --with-var-prefix flags. See `configure --help' or the - INSTALL file for details. - - o Setting the CFLAGS environment variable before invoking - configure now works. - - o The icons are now copied into $prefix/icons at install time. - Patch by David Champion. - - - Standards - o Compliance with RFC 2369 (List-*: headers). Patch by - Darrell Fuhriman. List-ID: header is kept for historical - reasons. - - o Fixes by Jeremy Hylton to Pipermail in support of non-ASCII - charsets, based on the Content-Type: and encoded-words in - the original message. Mail headers are now decoded as per - RFC 2047. - - o Many more bounce formats are detected: Microsoft's SMTPSVC, - Compuserve, GroupWise, SMTP32, and the more generic - SimpleMatch (which catches lots of similar but slightly - different formats). - - - Defaults - o Email addresses can now be obscured in Pipermail archives by - setting mm_cfg.ARCHIVER_OBSCURES_EMAILADDRS to 1 (obscuring - is turned off by default). Patch provided by Chris Snell. - - o The default NNTP host can now be set by editing - mm_cfg.DEFAULT_NNTP_HOST. Patch by David Champion. - - o The default archiving mode (public/private) can now be set - by editing mm_cfg.DEFAULT_ARCHIVE. Patch by Ted Cabeen. - - - Web UI - o The variable details pages in the administrators interface - is now `live', i.e. there's a submit button on the details - page. - - o A link to the administrative interface is placed in the - footer of the general user pages (authentication still - required, of course!) - - o The user options change results page has a link back to the - user's main page. - - o In the admindb page (for dealing with held postings), the - default forward address is now listname-owner instead of - listname-admin. This avoids bounce detection on the - forwarded message. - - - Miscellaneous - o Fixed config.db corruption problem when disk-full errors are - encountered. - - o Command line scripts accept list names case-insensitively. - - o bin/remove_members takes a -a flag to remove all members of - a list in one fell swoop. - - o List admin passwords must be non-empty. - - o Mailman generated passwords are slightly more mnemonic, and - shouldn't have confusing character selections (i.e. `i' - only, but no `1' or `l'). - - o Crossposting to two gated mailing lists should be fixed. - - o Many other bug fixes and minor web UI improvements. - -2.0 beta 5 (01-Aug-2000) - - - Bug fix release. This includes a fix for a small security hole - which could be exploited to gain mailman group access by a local - user (not a mail or web user). - - - As part of the fix for the "cookie reauthorization" bug, only - session cookies are used now. This means that administrative - and private archive cookies expire only when the browser session - is quit, however an explicit "Logout" button has been added. - -2.0 beta 4 (06-Jul-2000) - - - Bug fix release. - -2.0 beta 3 (29-Jun-2000) - - - Delivery mechanism (qrunner) refined to support immediate - queuing, queuing directly from MTA, and queuing on any error - along the delivery pipeline. This means 1) that huge lists - can't time out the MTA's program delivery channel; 2) it is much - harder to completely lose messages; 3) eventually, qrunner will - be elaborated to meter delivery to the MTA so as not to swamp - it. The tradeoff is in more disk I/O since every message coming - into the system (and most that are generated by the system) live - on disk for some part of their journey through Mailman. - - For now, see the Default.py variables QRUNNER_PROCESS_LIFETIME - and QRUNNER_MAX_MESSAGES for primitive resource management. - - The API to the pipeline handler modules has changed. See - Mailman/Handlers/HandlerAPI.py for details. - - - Revamped admindb web page: held messages are split into headers - and bodies so they are easier to vette; admins can now also - preserve a held message (for spam evidence gathering) or forward - the message to a specified email address; disposition of held - messages can be deferred; held messages have a more context - meaningful default rejection message. - - - Change to the semantics for `acceptable_aliases' list - configuration variable, based on suggestions by Harald Meland. - - - New mm_cfg.py variables NNTP_USERNAME and NNTP_PASSWORD can be - set on a site-wide basis if connection to your nntpd requires - authentication. - - - The list attribute `num_spawns' has been removed. The mm_cfg.py - variables MAX_SPAWNS, and DEFAULT_NUM_SPAWNS removed too. - - - LIST_LOCK_LIFETIME cranked to 5 hours and LIST_LOCK_TIMEOUT - shortened to 10 seconds. QRUNNER_LOCK_LIFETIME cranked up to 10 - hours. This should decrease the changes for bogus and harmful - lock breaking. - - - Resent-to: is now one of the headers checked for explicit - destinations. - - - Tons more bounce formats are recognized. The API to the bounce - modules has changed. - - - A rewritten LockFile module which should fix most (hopefully all) - bugs in the locking machinery. Many improvements suggested by - Thomas Wouters and Harald Meland. - - - Experimental support (disabled by default) for delivering SMTP - chunks to the MTA via multiple threads. Your Python executable - must have been compiled with thread support enabled, and you - must set MAX_DELIVERY_THREADS in mm_cfg.py. Note that this may - not improve your overall system performance. - - - Some changes and additions to scripts: bin/find_member now - supports a -w/--owner flag to match regexps against mailing list - owners; bin/find_member now supports multiple regexps; - cron/gate_news command line option changes; new script - bin/dumbdb for debugging purposes; bin/clone_member can now also - remove the old address and change change the list owner - addresses. - - - The News/Mail gateway admin page has a button that lets you do - an explicit catchup of the newsgroup. - - - The CVS repository has been moved out to SourceForge. For more - information, see the project summary at - - http://sourceforge.net/project/?group_id=103 - - - Lots 'o bug fixes and some performance improvements. - -2.0 beta 2 (07-Apr-2000) - - - Rewritten gate_news cron script which should be more efficient - and avoid race and locking problems. Each list now maintains - its own watermark, and when you use the admin CGI script to turn - on gating from Usenet->mail, an automatic mass catch up is done - to avoid flooding the mailing list. cron/gate_news's command - line interface has also changed. See its docstring for - details. - - - A new cron script called qrunner has been added to retry message - deliveries that fail because of temporary smtpd problems. - - - New command line script called bin/list_lists which does exactly - that: lists all the mailing lists on the system (much like the - listinfo CGI does). - - - bin/withlist is now directly executable, however if you want to - use python -i, you must still explicitly invoke it. - bin/withlist also now cleans up after itself by unlocking any - locked lists. It does NOT save any dirty lists though - you - must do this explicitly. - - - $prefix permissions (and all subdirs) must now be 02775. - bin/check_perms has been updated to fix all the subdir - permissions. - - - "make update" (a.k.a. bin/update) is run automatically when you - do a "make install" - - - The CGI driver script now puts information about the Python - environment into the logs/error file (but not the diagnostic web - page). - - - Bug fixes and some performance improvements - -2.0 beta 1 (19-Mar-2000) - - - Python 1.5.2 (or newer) is now required. - - - A new bundled auto-responder has been added. You can now - configure an autoresponse text for each list's primary - addresses: - - listname@yourhost.com -- the general posting address - listname-request@... -- the automated "request bot" address - listname-admin@... -- the human administrator address - - - The standard UI now includes three logos at the bottom of the - page: Dragon's Mailman logo, the Python Powered logo, and the - GNU logo. All point to their respective home pages. - - - It is now possible to set the Reply-To: field on lists to an - arbitrary address. NOTE: Reply-To: munging is generally - considered harmful! However for some read-only lists, it is - useful to direct replies to a parallel discussion list. - - - There is a new message delivery architecture which uses a - pipeline processor for incoming and internally generated - messages. Mailman no longer contains a bundled bulk-mailer; - instead message delivery is handled completely by the MTA. Most - MTAs give a high enough priority to connections from the - localhost that mail will not be lost because of system load, but - this is not guaranteed (or handled) by Mailman currently. Be - careful also if your smtpd is on a different host than the - Mailman host. In practice, mail lossage has not be observed. - - For this reason cron/run_queue is no longer needed (see the - UPGRADING file for details). - - Also, you can choose whether you want direct smtp delivery, or - delivery via the command line to a sendmail-compatible daemon. - You can also easily add your own delivery module. See - Mailman/Defaults.py for details. - - - A similar pipeline architecture for the parsing of bounce - messages has been added. Most common bounce formats are now - handled, including Qmail, Postfix, and DSN. It is now much - easier to add new bounce detectors. - - - The approval pending architecture has also been revamped. - Subscription requests and message posts waiting for admin - approval are no longer kept in the config.db file, but in a - separate requests.db file instead. - - - Finally made consistent the use of Sender:/From:/From_ in the - matching of headers for such things as member-post-only. Now, - if USE_ENVELOPE_SENDER is true, Sender: will always be chosen - over From:, however the default has been changed to - USE_ENVELOPE_SENDER false so that From: is always chosen over - Sender:. In both cases, if no header is found, From_ (i.e. the - envelope sender is used). Note that the variable is now - misnamed! Most people want From: matching anyway and any are - easily spoofable. - - - New scripts bin/move_list, bin/config_list - - - cron/upvolumes_yearly, cron/upvolumes_monthly, cron/archive, - cron/run_queue all removed. Edit your crontab if you used these - scripts. Other scripts removed: contact_transport, deliver, - dumb_deliver. - - - Several web UI improvements, especially in the admin page. - - - Remove X-pmrqc: headers to prevent return reciepts for Pegasus - mail users. - - - Security patch when using external archivers. - - - Honor "X-Archive: No" header by not putting this message in the - archive. - - - Changes to the log file format. - - - The usual bug fixes. - -1.1 (05-Nov-1999) - - - All GIFs removed. See http://www.gnu.org/philosophy/gif.html - for the reason why. - - - Improvements to the Pipermail archiver which make things faster. - Primary change is that the .txt files are not gzipped on every - posted message. Instead, use the new cron script `nightly_gzip' - to gzip the .txt file in batches (this means that the .txt file - will lag behind the on-line archives a little). - - - From the C drivers programs, Python is invoked with the -S - option. This tells Python to avoid importing the site module, - which can improve start up time of the Python process - considerably. Note that the command line script invocation has - not been changed. - - - New configuration variables PUBLIC_EXTERNAL_ARCHIVER and - PRIVATE_EXTERNAL_ARCHIVER which can contain a shell command - string for os.popen(). This can be used to invoke an external - archiver instead of the bundled Pipermail archiver. See - Defaults.py for details. - - - new script `bin/find_member' which can be used to search for a - member by regular expression. - - - More child processes are reaped, which should eliminate most - occurrences of zombie processes. - - - A few small miscellaneous bug fixes (including PR#99, PR#107) - and improvements to the file locking algorithms. - -1.0 (30-Jul-1999) - - - Configure script now allows $PREFIX (by default /home/mailman) - to be permissions 02755. Also, configure now tests for - vsnprintf() - - - Workaround, taken from GNU screen, for systems missing - vsnprintf() - - - Return-Receipt-To: and Disposition-Notification-To: headers are - always removed from posted messages (they can be used to troll - for list membership). - - - Workaround for MSIE4.01 (and possibly other versions) bug in the - handling of cookies. - - - A small collection of other bug fixes. - -1.0rc3 (10-Jul-1999) - - - new script bin/check_perms which checks (and optionally fixes) - the permissions and group ownerships of the files in your - Mailman installation. - - - Removed a bottleneck in the archiving code that was causing - performance problems on highly loaded servers. - - - The code that saves a list's state and configuration database - has been made more robust. - - - Additional exception handlers have been added in several places - to alleviate problems with Mailman bombing out when it really - would be better to print/log a helpful message. - - - The "password" mail command will now mail back the sender's - subscription password when given with no arguments. - - - The embarrassing subject-prefixing bug present in rc2 has been - fixed. - - - A small (but nice :) collection of other squashed bugs. - -1.0rc2 (14-Jun-1999) - - - A security flaw in the CGI cookie mechanisms was discovered -- - the Mailman-issued cookies were easily spoofable, implying that - e.g. admin access to all Mailman lists via the web interface - could be compromised. This flaw has now been fixed. - - - Handling of SMTP errors has been improved. - - - Both "Mass Subscription" via web admin interface and - bin/add_members have been greatly sped up. - - - autoconf check for syslog has been revamped, and is now verified - to work on SCO OpenServer 5. If syslog can't be found, the C - wrappers will compile, but without any syslog calls. - - - Various other bug fixes. - -1.0rc1 (04-May-1999) - - - There is a new Mailman logo, contributed by The Dragon De - Monsyne. Please read the INSTALL file for information about - installing the logo in a place your Web server can find it. - - - USE_ENVELOPE_SENDER is now set to 0 by default. Turning this on - caused problems for too many users; lists restricted to - member-only posts were not matching the addresses correctly. - - - A revamped bin/withlist to be a little more useful. - - - A revamped cron/mailpasswds which groups users by virtual hosts. - - - The usual assortment of bug fixes. - -1.0b11 (03-Apr-1999) - - - Bug fixes and improvements for case preservation of subscribed - addresses. The DATA_FILE_VERSION has been bumped to 14. - - - New script bin/withlist, useful for interactive debugging. - -1.0b10 (26-Mar-1999) - - - New script bin/sync_members which can be used to synchronize a - list's membership against a flat (e.g. sendmail :include: style) - file. - - - bin/add_members and bin/remove_members now accept addresses on - the command line with `-' as the value for the -d and -n - options. - - - Added variable USE_ENVELOPE_SENDER to Defaults.py for site-wide - configuration of address matching scheme. With this variable - set to true, the envelope sender (e.g. Unix "From_" header) is - used to match addresses, otherwise the From: header is used. - Envelope sender matching seems not to work on many systems. - This variable is currently defaulted to 1, but may change to 0 - for the final release. - - - Reorganization of the membership management admin page. Also - member addresses are linked to their options page. Only the - `General' category has the admin password change form. - - - Major reorganization of email command handling and responses. - `notmetoo' is the preferred email command instead of `norcv', - although the latter is still accepted as an argument. If more - than 5 errors are found in the message, command processing is - halted. - - - User options page now shows the user their case-preserved - subscribed address as well. - - - The usual assortment of bug fixes. - -1.0b9 (01-Mar-1999) - - - New bin scripts: clone_member, list_members, add_members (a - consolidation of convertlist and populate_new_list which have - been removed). - - - Two new readmes have been added: README.LINUX and README.QMAIL - - - New configure option --with-cgi-ext which can be used if your - Web server requires extensions on CGI scripts. The extension - must include a dot (e.g. --with-cgi-ext=".cgi"). - - - Many bug fixes, including the setgid problem that was causing - mail to be lost on some versions of Linux. - -1.0b8 (14-Jan-1999) - - - Bug fixes and workarounds for certain Linuxes. - - - Illegal addresses are no longer allowed to be subscribed, from - any interface. - -1.0b7 (31-Dec-1998) - - - Many, many bug fixes. Some performance improvements for large - lists. Some improvements in the Web interfaces. Some security - improvements. Improved compatibility with Python 1.5. - - - bin/convert_list and bin/populate_new_list have been replaced - by bin/add_members. - - - Admins can now get notification on subscriptions and - unsubscriptions. Posts are now logged. - - - The username portion of email addresses are now case-preserved - for delivery purposes. All other address comparisions are - case-insensitive. - - - New default SMTP_MAX_RCPTS that limits the number of "RCPT TO" - SMTP commands that can be given for a single message. Most - MTAs have some hard limit. - - - "Precedence: bulk" header and "List-id:" header are now added - to all outgoing messages. The latter is not added if the - message already has a "List-id:" header. See RFC 2046 and - draft-chandhok-listid-02 for details. - - - The standard (as of Python 1.5.2) smtplib.py is now used. - - - The install process now compiles all the .py files in the - installation. - - - Versions of the Mailman papers given at IPC7 and LISA-98 are - now included. - -1.0b6 (07-Nov-1998) - - - Archiving is (finally) back in. - - - Administrivia filter added. - - - Mail queue mechanism revamped with better concurrency control. - - - For recipients that have estmp MTAs, set delivery notification - status so that only delivery failure notices are sent out, - inhibiting 4 hour and N day warning notices. - - - Now expire old unconfirmed subscription requests, rather than - keeping them forever. - - - Added proposed standard List-Id: header, and our own - X-MailmanVersion header. - - - Prevent havoc from attempts to subscribe a list to itself. (!) - - - Refine mail command processing to prevent loops. - - - Pending subscription DB redone with better locking and cleaner - interface. - - - posters functionality expanded. - - - Subscription policy more flexible, sensible, and - site-configurable. - - - Various and sundry bug fixes. - -1.0b5 (27-Jul-1998) - - - New file locking that should be portable and work w/ NFS. - - - Better use of packages. - - - Better error logging and reporting. - - - Less startup overhead. - - - Various and sundry bug fixes. - - -1.0b4 (03-Jun-1998) - - - A configure script for easy installation (Barry Warsaw) - - - The ability to install Mailman to locations other than - /home/mailman (Barry Warsaw) - - - Use cookies on the admin pages (also hides admin pages from - others) (Scott Cotton) - - - Subscription requests send a request for confirmation, which may - be done by simply replying to the message (Scott Cotton) - - - Facilities for gating mail to a newsgroup, and for gating a - newsgroup to a mailing list (John Viega) - - - Contact the SMTP port instead of calling sendmail (primarily for - portability) (John Viega) - - - Changed all links on web pages to relative links where appropriate. - (John Viega) - - - Use MD5 if crypt is not available (John Viega) - - - Lots of fixing up of bounce handling (Ken Manheimer) - - - General UI polishing (Ken Manheimer) - - - mm_html: Make it prominent when the user's delivery is disabled - on his option page. (Ken Manheimer) - - - mallist:DeleteMember() Delete the option setings if any. (Ken - Manheimer) - -1.0b3 (03-May-1998) - - - mm_message:Deliverer.DeliverToList() added missing newline - between the headers and message body. Without it, any sequence - of initial body lines that _looked_ like headers ("Sir: Please - excuse my impertinence, but") got treated like headers. - - - Fixed typo which broke subscription acknowledgement message - (thanks to janne sinkonen for pointing this out promptly after - release). (Anyone who applied my intermediate patch will - probably see this one trigger patch'es reversed-patch - detector...) - - - Fixed cgi-wrapper.c so it doesn't segfault when invoked with - improper uid or gid, and generally wrappers are cleaned up a - bit. - - - Prevented delivery-failure notices for misdirected subscribe- - confirmation requests from bouncing back to the -request addr, - and then being treated as failing requests. - - Implemented two measures. Set the reply-to for the - confirmation- request to the -request addr, and the sender to be - the list admin. This way, bounces go to list admin instead of - to -request addr. (Using the errors-to header wasn't - sufficient. Thanks, barry, for pointing out the use of sender - here.) Second, ignore any mailcommands coming from postmaster - or non-login system type accounts (mailer-daemon, daemon, - postoffice, etc.) - - - Reenabled admin setting of web_page_url - crucial for having - lists use alternate names of a host that occupies multiple - addresses. - - - Fixed and refined admin-options help mechanism. Top-level visit - to general-category (where the "general" isn't in the URL) was - broken. New help presentation shows the same row that shows on - the actual options page. - - - cron/crontab.in crontab template had wrong name for senddigests. - - - Default digest format setting, as distributed, is now non-MIME, - on urging of reasoned voices asserting that there are still - enough bad MIME implementations in the world to be a nuisance to - too many users if MIME is the default. Sigh. - - - MIME digests now preserve the structure of MIME postings, - keeping attachments as attachments, etc. They also are more - structured in general. - - - Added README instructions explaining how to determine the right - UID and GID settings for the wrapper executables, and improved - some of the explanations about exploratory interaction - w/mailman. - - - Removed the constraint that subscribers have their domain - included in a static list in the code. We might want to - eventually reincorporate the check for the sake of a warning - message, to give a heads up to the subscriber, but try delivery - anyway... - - - Added missing titles to error docs. - - - Improved several help details, including particularly explaining - better how real_name setting is used. - - - Strengthened admonition against setting reply_goes_to_list. - - - Added X-BeenThere header to postings for the sake of prevention - of external mail loops. - - - Improved handling of bounced messages to better recognize - members address, and prevent duplicate attempts to react (which - could cause superfluous notices to administrator). - - - Added __delitem__ method to mm_message.OutgoingMessage, to fix - the intermediate patch posted just before this one. - - - Using keyword substitution format for more message text (ie, - "substituting %(such)s into text" % {'such': "something"}) to - make the substitutions less fragile and, presumably, easier to - debug. - - - Removed hardwired (and failure-prone) /tmp file logging from - answer.majordomo_mail, and generally spiffed up following janne - sinkkonen's lead. - -1.0b2 (13-Apr-1998) -1.0b1 (09-Apr-1998) - - 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 - - Mailing List 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 mailing list 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 mailing list 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:). - - Random details (not complete, sorry): - - make archival frequency a list option - - Option for daily digest dispatch, in addition to size threshhold - - make sure users only get one periodic password notifcation message for - all the lists they're on (repaired 1.0b1.1 varying-case mistake) - - Fix rmlist sans-argument bug causing deletion of all lists! - - doubled generated random passwords to four letters - - Cleaned lots and lots of notices - - Lots and lots of html page cleanup, including table-of-contents, etc - - Admin options sections - don't do the "if so" if the ensuing list - is empty - - Prevent list subject-prefix cascade - - Sources under CVS - - Various spam filters - implicit-destination, header-field - - Adjusted permissions for group access - - Prevent redundant subscription from redundant vetted requests - - Instituted centralize, robustish logging - - Wrapper sources use syslog for logging (john viega) - - Sorting of users done on presentation, not in list. - - Edit options - give an error for non-existent users, not an options page. - - Bounce handling - offer 'disable' option, instead of remove, and - never remove without notifying admin - - Moved subscribers off of listinfo (and made private lists visible - modulo authentication) - - Parameterize default digest headers and footers and create some - - Put titles on cgi result pages that do not get titles (all?) - - Option for immediate admin notifcation via email of pending - requests, as well as periodic - - Admin options web-page help - - Enabled grouped and cascading lists despite implicit-name constraint - - Changed subscribers list so it has its own script (roster) - - Welcome pages: http://www.python.org/mailman/{admin,listinfo}/ - -0.95 (25-Jan-1997) - - Fixed a bug in sending out digests added when adding disable mime option. - - Added an option to not notify about bounced posts. - - Added hook for pre-posting filters. These could be used to - auto-strip signatures. I'm using the feature to auto-strip footers - that are auto-generated by mail received from another mailing list. - -0.94 (22-Jan-1997) - - Made admin password work ubiquitously in place of a user password. - - Added an interface for getting / setting user options. - - Added user option to disable mime digests (digested people only) - - Added user option to not receive your own posts (nondigested people only) - - Added user option to ack posts - - Added user option to disable list delivery to their box. - - Added web interface to user options - - Config number of sendmail spawns on a per-list basis - - Fixed extra space at beginning of each message in digests... - - Handled comma separated emails in bounce messages... - - Added a FindUser() function to MailList. Used it where appropriate. - - Added mail interface to setting list options. - - Added name links to the templates options page - - Added an option so people can hide their names from the subscription list. - - Added an answer_majordomo_mail script for people switching... - -0.93 (18/20-Jan-1997) - - When delivering to list, don't call sendmail directly. Write to a file, - and then run the new deliver script, which forks and exits in the parent - immediately to avoid hanging when delivering mail for large lists, so that - large lists don't spend a lot of time locked. - - GetSender() no longer assumes that you don't have an owner-xxx address. - - Fixed unsubscribing via mail. - - Made subscribe via mail generate a password if you don't supply one. - - Added an option to clobber the date in the archives to the date the list - resent the post, so that the archive doesn't get mail from people sending - bad dates clumped up at the beginning or end. - - Added automatic error message processing as an option. Currently - logging to /tmp/bounce.log - - Changed archive to take a list as an argument, (the old way was broken) - - Remove (ignore) spaces in email addresses - - Allow user passwords to be case insensitive. - - Removed the cleanup script since it was now redundant. - - Fixed archives if there were no archives. - - Added a Lock() call to Load() and Create(). This fixes the - problem of loading then locking. - - Removed all occurances of Lock() except for the ones in mailing - list since creating a list - now implicitly locks it. - - Quote single periods in message text. - - Made bounce system handle digest users fairly. - -0.92 (13/16-Jan-1997) - - Added Lock and Unlock methods to list to ensure each operation is atomic - - Added a cmd that rms all files of a mailing list (but not the aliases) - - Fixed subscribing an unknown user@localhost (confirm this) - - Changed the sender to list-admin@... to ensure we avoid mail loops. - - check to make sure there are msgs to archive before calling pipermail. - - started using this w/ real mailing lists. - - Added a cron script that scours the maillog for User/Host unknown errs - - Sort membership lists - - Always display digest_is_default option - - Don't slam the TO list unless you're sending a digest. - - When making digest summaries, if missing sender name, use their email. - - Hacked in some protection against crappy dates in pipermail.py - - Made it so archive/digest volumes can go up monthly for large large lists. - - Number digest messages - - Add headers/footers to each message in digest for braindead mailers - - I removed some forgotten debug statements that caused server errors - when a CGI script sent mail. - - Removed loose_matches flag, since everything used it. - - Fixed a problem in pipermail if there was no From line. - - In upvolume_ scripts, remove INDEX files as we leave a volume. - - Threw a couple of scripts in bin for generating archives from majordomo's - digest-archives. I wouldn't recommend them for the layman, though, they - were meant to do a job quickly, not to be usable. - -0.91 (23-Dec-1996) - - broke code into mixins for managability - - tag parsing instead of lots of gsubs - - tweaked pipermail (see comments on pipermail header) - - templates are now on a per-list basis as intended. - - request over web that your password be emailed to you. - - option so that web subscriptions require email confirmation. - - wrote a first pass at an admin interface to configurable variables. - - made digests mime-compliant. - - added a FakeFile class that simulates enough of a file object on a - string of text to fool rfc822.Message in non-seek mode. - - changed OutgoingMessage not to require its args in constructor. - - added an admin request DB interface. - - clearly separated the internal name from the real name. - - replaced lots of ugly, redundant code w/ nice code. - (added Get...Email() interfaces, GetScriptURL, etc...) - - Wrote a lot of pretty html formatting functions / classes. - - Fleshed out the newlist command a lot. It now mails the new list - admin, and auto-updates the aliases file. - - Made multiple owners acceptable. - - Non-advertised lists, closed lists, max header length, max msg length - - Allowed editing templates from list admin pages. - - You can get to your info page from the web even if the list is closed. - - -Local Variables: -mode: indented-text -indent-tabs-mode: nil -End: diff --git a/docs/STYLEGUIDE.txt b/docs/STYLEGUIDE.txt deleted file mode 100644 index d4a7bc527..000000000 --- a/docs/STYLEGUIDE.txt +++ /dev/null @@ -1,151 +0,0 @@ -Python coding style guide for Mailman -Copyright (C) 2002-2009 Barry A. Warsaw - -NOTE: The canonical version of this style guide can be found at: - - http://barry.warsaw.us/software/STYLEGUIDE.txt - -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: - - 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 PEP 8. - -- After file comments (e.g. license block), add a __metaclass__ definition so - that (in Python 2.x) all classes will be new-style. Following that, add an - __all__ section that names, one-per-line, all the public names exported by - this module. - -- Imports are always put at the top of the file, just after any module - comments and docstrings, and before module globals and constants, but after - any __future__ imports, or __metaclass__ and __all__ definitions. - - Imports should be grouped, with the order being: - - 1. standard library imports - 2. related major package imports (e.g. all email package imports next) - 3. application specific imports - - 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 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 by not - including them in the __all__ section. - - Give the class and the module the same name, differing only by case as PEP 8 - recommends. E.g. - - 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 - - If this spelling causes name clashes, then spell them - - import myclass - import foo.bar.yourclass - - and use "myclass.MyClass" - - You can also use 'import...as' to rename a clashing symbol. - -- Right hanging comments are discouraged, in favor of preceding comments. - E.g. bad: - - foo = blarzigop(bar) # if you don't blarzigop it, it'll shlorp - - Good: - - # If you don't blarzigop it, it'll shlorp. - foo = blarzigop(bar) - - Comments should always be complete sentences, with proper capitalization and - full stops at the end. - -- Major sections of code in a module should be separated by line feed - 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. - -- Put two blank lines between any top level construct or block of code - (e.g. after import blocks). Put only one blank line between methods in a - class. No blank lines between the class definition and the first method in - the class. No blank lines between a class/method and its docstrings. - -- 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. - - 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 - """ - -- Write docstrings for modules, functions, classes, and methods. Docstrings - can be omitted for special methods (e.g. __init__() or __str__()) where the - meaning is obvious. - -- 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 - - Optional plotz says to frobnicate the bizbaz first. - """ - -- For one liner docstrings, keep the closing """ on the same line. - -- <> is strongly preferred over != (Sadly, Python is making this harder to - follow and it cannot be followed for Python 3). - -- fill-column for docstrings should be 78. - -- When testing the emptiness of sequences, use "if len(seq) == 0" instead of - relying on the falseness of empty sequences. However, if a variable can be - one of several false values, it's okay to just use "if seq", though a - preceding comment is usually in order. - -- Always decide whether a class's methods and instance variables should be - public or non-public. - - 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. - - 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/docs/gnu-COPYING-GPL b/docs/gnu-COPYING-GPL deleted file mode 100644 index 3912109b5..000000000 --- a/docs/gnu-COPYING-GPL +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/docs/man/add_members.1 b/docs/man/add_members.1 deleted file mode 100644 index d442a2b66..000000000 --- a/docs/man/add_members.1 +++ /dev/null @@ -1,60 +0,0 @@ -.\" -.\" GNU Mailman Manual -.\" -.\" add_members -.\" -.\" Documenter: Terri Oda -.\" terri (at) zone12.com -.\" Created: September 12, 2004 -.\" Last Updated: September 12, 2004 -.\" -.TH add_members 1 "September 12, 2004" "Mailman 2.1" "GNU Mailman Manual" -.\"===================================================================== -.SH NAME -add_members \- Remove members from a Mailman mailing list. -.\"===================================================================== -.SH SYNOPSIS -.B add_members -[-r \fIfile\fP] -[-d \fIfile\fP] -[-w <\fIy|n\fP>] -[-a <\fIy|n\fP>] -[-h] -\fIlistname\fP -.\"===================================================================== -.SH DESCRIPTION -.B add_members -adds members to a Mailman mailing list from the command line. -.PP -You must supply at least one of -r and -d options. At most one of the -files can be `-'. -.\"===================================================================== -.SH OPTIONS -.IP "--regular-members-file=\fIfile\fP, -r \fIfile\fP" -A file containing addresses of the members to be added, one -address per line. This list of people become non-digest -members. If file is `-', read addresses from stdin. Note that --n/--non-digest-members-file are deprecated synonyms for this option. -.IP "--digest-members-file=\fIfile\fP, -d \fIfile\fP" -Similar to above, but these people become digest members. -.IP "--welome-msg=<\fIy|n\fP>, -w <\fIy|n\fP>" -Set whether or not to send the list members a welcome message, -overriding whatever the list's `send_welcome_msg' setting is. -.IP "--admin-notify=<\fIy|n\fP>, -a <\fIy|n\fP>" -Set whether or not to send the list administrators a notification on -the success/failure of these subscriptions, overriding whatever the -list's `admin_notify_mchanges' setting is. -.IP \fIlistname\fP -The name of the list to which you wish to add members. -.\"===================================================================== -.SH SEE ALSO -.BR clone_member (1), -.BR find_member (1), -.BR list_members (1), -.BR remove_members (1) -.PP -The Mailman website: http://www.list.org -.\"===================================================================== -.SH AUTHOR -This man page was created by Terri Oda <terri (at) zone12.com>. -Use <mailman-developers@python.org> to contact the developers. diff --git a/docs/man/check_db.1 b/docs/man/check_db.1 deleted file mode 100644 index 28a3b8149..000000000 --- a/docs/man/check_db.1 +++ /dev/null @@ -1,60 +0,0 @@ -.\" -.\" GNU Mailman Manual -.\" -.\" check_db -.\" -.\" Documenter: Terri Oda -.\" terri (at) zone12.com -.\" Created: September 14, 2004 -.\" Last Updated: September 14, 2004 -.\" -.TH check_db 1 "September 14, 2004" "Mailman 2.1" "GNU Mailman Manual" -.\"===================================================================== -.SH NAME -check_db \- Check a Mailman mailing list's config database file for integrity. -.\"===================================================================== -.SH SYNOPSIS -.B check_db -[-a] -[-v] -[-h] -[\fIlistname\fP [\fIlistname\fP ...]] -.\"===================================================================== -.SH DESCRIPTION -.B check_db -checks a list's config database file for integrity. -.PP -All of the following files are checked: -.RS - config.pck - config.pck.last - config.db - config.db.last - config.safety -.RE -.PP -It's okay if any of these are missing. config.pck and config.pck.last are -pickled versions of the config database file for 2.1a3 and beyond. config.db -and config.db.last are used in all earlier versions, and these are Python -marshals. config.safety is a pickle written by 2.1a3 and beyond when the -primary config.pck file could not be read. -.\"===================================================================== -.SH OPTIONS -.IP "--all, -a" -Check the databases for all lists. Otherwise only the lists named on -the command line are checked. -.IP "--verbose, -v" -Verbose output. The state of every tested file is printed. -Otherwise only corrupt files are displayed. -.IP "--help, -h" -Print help text and exit. -.\"===================================================================== -.SH SEE ALSO -.BR check_perms (1), -.BR transcheck (1) -.PP -The Mailman website: http://www.list.org -.\"===================================================================== -.SH AUTHOR -This man page was created by Terri Oda <terri (at) zone12.com>. -Use <mailman-developers@python.org> to contact the developers. diff --git a/docs/man/check_perms.1 b/docs/man/check_perms.1 deleted file mode 100644 index 76966a87c..000000000 --- a/docs/man/check_perms.1 +++ /dev/null @@ -1,46 +0,0 @@ -.\" -.\" GNU Mailman Manual -.\" -.\" check_perms -.\" -.\" Documenter: Terri Oda -.\" terri (at) zone12.com -.\" Created: September 14, 2004 -.\" Last Updated: September 14, 2004 -.\" -.TH check_perms 1 "September 14, 2004" "Mailman 2.1" "GNU Mailman Manual" -.\"===================================================================== -.SH NAME -check_perms \- Check the permissions for the Mailman installation. -.\"===================================================================== -.SH SYNOPSIS -.B check_perms -[-f] -[-v] -[-h] -.\"===================================================================== -.SH DESCRIPTION -.B check_perms -checks the permissions for the Mailman installation. -.PP -With no arguments, just check and report all the files that have bogus -permissions or group ownership. With -f (and run as root), fix all the -permission problems found. With -v be verbose. -.\"===================================================================== -.SH OPTIONS -.IP "-f" -Run as root and fix all the permission problems found. -.IP "-v" -Verbose output. -.IP "--help, -h" -Print help message and exit. -.\"===================================================================== -.SH SEE ALSO -.BR check_db (1), -.BR transcheck (1) -.PP -The Mailman website: http://www.list.org -.\"===================================================================== -.SH AUTHOR -This man page was created by Terri Oda <terri (at) zone12.com>. -Use <mailman-developers@python.org> to contact the developers. diff --git a/docs/man/clone_member.1 b/docs/man/clone_member.1 deleted file mode 100644 index 35148f6af..000000000 --- a/docs/man/clone_member.1 +++ /dev/null @@ -1,71 +0,0 @@ -.\" -.\" GNU Mailman Manual -.\" -.\" clone_member -.\" -.\" Documenter: Terri Oda -.\" terri (at) zone12.com -.\" Created: September 14, 2004 -.\" Last Updated: September 14, 2004 -.\" -.TH clone_member 1 "September 14, 2004" "Mailman 2.1" "GNU Mailman Manual" -.\"===================================================================== -.SH NAME -clone_member \- Clone a Mailman mailing list member address. -.\"===================================================================== -.SH SYNOPSIS -.B clone_member -[-l \fIlistname\fP] -[-r] -[-a] -[-q] -[-n] -[-h] -\fIfromoldaddr\fP \fItonewaddr\fP -.\"===================================================================== -.SH DESCRIPTION -.B clone_member -clones a member address. -.PP -Cloning a member address means that a new member will be added who has all the -same options and passwords as the original member address. Note that this -operation is fairly trusting of the user who runs it -- it does no -verification to the new address, it does not send out a welcome message, etc. -.PP -The existing member's subscription is usually not modified in any way. If you -want to remove the old address, use the -r flag. If you also want to change -any list admin addresses, use the -a flag. -.\"===================================================================== -.SH OPTIONS -.IP "--listname=\fIlistname\fP, -l \fIlistname\fP" -Check and modify only the named mailing lists. If -l is not given, -then all mailing lists are scanned from the address. Multiple -l -options can be supplied. -.IP "--remove, -r" -Remove the old address from the mailing list after it's been cloned. -.IP "--admin, -a" -Scan the list admin addresses for the old address, and clone or change -them too. -.IP "--quiet, -q" -Do the modifications quietly. -.IP "--nomodify, -n" -Print what would be done, but don't actually do it. Inhibits the ---quiet flag. -.IP "--help, -h" -Print help message and exit. -.IP \fIfromoldaddr\fP -(`from old address') is the old address of the user. -.IP \fItonewaddr\fP -(`to new address') is the new address of the user. -.\"===================================================================== -.SH SEE ALSO -.BR add_member (1), -.BR find_member (1), -.BR list_members (1), -.BR remove_members (1) -.PP -The Mailman website: http://www.list.org -.\"===================================================================== -.SH AUTHOR -This man page was created by Terri Oda <terri (at) zone12.com>. -Use <mailman-developers@python.org> to contact the developers. diff --git a/docs/man/find_member.1 b/docs/man/find_member.1 deleted file mode 100644 index 9d76bf5db..000000000 --- a/docs/man/find_member.1 +++ /dev/null @@ -1,64 +0,0 @@ -add.\" -.\" GNU Mailman Manual -.\" -.\" find_member -.\" -.\" Documenter: Terri Oda -.\" terri (at) zone12.com -.\" Created: September 13, 2004 -.\" Last Updated: September 13, 2004 -.\" -.TH find_member 1 "September 13, 2004" "Mailman 2.1" "GNU Mailman Manual" -.\"===================================================================== -.SH NAME -find_member \- Find all Mailman mailing lists to which a given address is -subscribed. -.\"===================================================================== -.SH SYNOPSIS -.B find_member -[-l \fIlistname\fP] -[-x \fIlistname\fP] -[-w] -[-h] -\fIregex\fP -.\"===================================================================== -.SH DESCRIPTION -.B find_member -finds all Mailman mailing lists to which a member's address is subscribed. -.PP -The interaction between -l and -x is as follows. If any -l option is given -then only the named list will be included in the search. If any -x option is -given but no -l option is given, then all lists will be search except those -specifically excluded. -.PP -Regular expression syntax is Perl5-like, using the Python re module. Complete -specifications are at: -.PP -http://www.python.org/doc/current/lib/module-re.html -.PP -Address matches are case-insensitive, but case-preserved addresses are -displayed. -.\"===================================================================== -.SH OPTIONS -.IP "--listname=\fIlistname\fP, -l \fIlistname\fP" -Include only the named list in the search. -.IP "--exclude=\fIlistname\fP, -x \fIlistname\fP" -Exclude the named list from the search. -.IP "--owners, -w" -Search list owners as well as members. -.IP "--help, -h" -Print help message and exit. -.IP \fIregex\fP -A Python regular expression to match. -.\"===================================================================== -.SH SEE ALSO -.BR add_members (1), -.BR clone_member (1), -.BR list_members (1), -.BR remove_members (1) -.PP -The Mailman website: http://www.list.org -.\"===================================================================== -.SH AUTHOR -This man page was created by Terri Oda <terri (at) zone12.com>. -Use <mailman-developers@python.org> to contact the developers. diff --git a/docs/man/list_members.1 b/docs/man/list_members.1 deleted file mode 100644 index cbf338a40..000000000 --- a/docs/man/list_members.1 +++ /dev/null @@ -1,78 +0,0 @@ -add.\" -.\" GNU Mailman Manual -.\" -.\" list_members -.\" -.\" Documenter: Terri Oda -.\" terri (at) zone12.com -.\" Created: September 13, 2004 -.\" Last Updated: September 13, 2004 -.\" -.TH list_member 1 "September 13, 2004" "Mailman 2.1" "GNU Mailman Manual" -.\"===================================================================== -.SH NAME -list_member \- List all the members of a Mailman mailing list. -.\"===================================================================== -.SH SYNOPSIS -.B list_member -[-o \fIfile\fP] -[-r] -[-d [\fIkind\fP]] -[-n [\fIwhy\fI]] -[-f] -[-p] -[-i] -[-u] -[-h] -\fIlistname\fP -.\"===================================================================== -.SH DESCRIPTION -.B list_member -lists all members of a mailing list. -.PP -Note that if neither -r or -d is supplied, both regular members are printed -first, followed by digest members, but no indication is given as to address -status. -.\"===================================================================== -.SH OPTIONS -.IP "--output \fIfile\fP, -o \fIfile\fP" -Write output to specified file instead of standard out. -.IP "--regular, -r" -Print just the regular (non-digest) members. -.IP "--digest[=\fIkind\fP], -d [\fIkind\fP]" -Print just the digest members. Optional argument can be "mime" or -"plain" which prints just the digest members receiving that kind of -digest. -.IP "--nomail[=\fIwhy\fP], -n[\fIwhy\fP]" -Print the members that have delivery disabled. Optional argument can -be "byadmin", "byuser", "bybounce", or "unknown" which prints just the -users who have delivery disabled for that reason. It can also be -"enabled" which prints just those member for whom delivery is -enabled. -.IP "--fullnames, -f" -Include the full names in the output. -.IP "--preserve, -p" -Output member addresses case preserved the way they were added to the -list. Otherwise, addresses are printed in all lowercase. -.IP "--invalid, -i" -Print only the addresses in the membership list that are invalid. -Ignores -r, -d, -n. -.IP "--unicode, -u" -Print addresses which are stored as Unicode objects instead of normal -string objects. Ignores -r, -d, -n. -.IP "--help, -h" -Print help message and exit. -.IP "\fIlistname\fP" -The name of the mailing list to use. -.\"===================================================================== -.SH SEE ALSO -.BR add_members (1), -.BR clone_member (1), -.BR find_member (1), -.BR remove_members (1) -.PP -The Mailman website: http://www.list.org -.\"===================================================================== -.SH AUTHOR -This man page was created by Terri Oda <terri (at) zone12.com>. -Use <mailman-developers@python.org> to contact the developers. diff --git a/docs/man/remove_members.1 b/docs/man/remove_members.1 deleted file mode 100644 index 69ed545d6..000000000 --- a/docs/man/remove_members.1 +++ /dev/null @@ -1,63 +0,0 @@ -add.\" -.\" GNU Mailman Manual -.\" -.\" remove_members -.\" -.\" Documenter: Terri Oda -.\" terri (at) zone12.com -.\" Created: September 13, 2004 -.\" Last Updated: September 13, 2004 -.\" -.TH remove_members 1 "September 13, 2004" "Mailman 2.1" "GNU Mailman Manual" -.\"===================================================================== -.SH NAME -remove_members \- Remove members from a Mailman mailing list. -.\"===================================================================== -.SH SYNOPSIS -.B remove_members -[-f \fIfile\fP] -[-a] -[--fromall] -[-n] -[-N] -[-h] -[\fIlistname\fP] -[\fIaddr1\fP ...] -.\"===================================================================== -.SH DESCRIPTION -.B remove_members -removes members from a Mailman mailing list from the command line. -.\"===================================================================== -.SH OPTIONS -.IP "---file=\fIfile\fP, -f \fIfile\fP" -Remove member addresses found in the given file. If file is -`-', read stdin. -.IP "--all, -a" -Remove all members of the mailing list. -(mutually exclusive with --fromall) -.IP "--fromall" -Removes the given addresses from all the lists on this system -regardless of virtual domains if you have any. This option cannot be -used -a/--all. Also, you should not specify a listname when -using this option. -.IP "--nouserack, -n" -Don't send the admin acknowledgements. If not specified, the list -default value is used. -.IP "--help, -h" -Print help message and exit. -.IP \fPlistname\fI -The name of the mailing list to use. -.IP \fPaddr1\fI ... -Additional addresses to remove. -.\"===================================================================== -.SH SEE ALSO -.BR add_members (1), -.BR clone_member (1), -.BR find_member (1), -.BR list_members (1) -.PP -The Mailman website: http://www.list.org -.\"===================================================================== -.SH AUTHOR -This man page was created by Terri Oda <terri (at) zone12.com>. -Use <mailman-developers@python.org> to contact the developers. diff --git a/docs/man/sync_members.1 b/docs/man/sync_members.1 deleted file mode 100644 index b185ae3c1..000000000 --- a/docs/man/sync_members.1 +++ /dev/null @@ -1,81 +0,0 @@ -add.\" -.\" GNU Mailman Manual -.\" -.\" list_members -.\" -.\" Documenter: Terri Oda -.\" terri (at) zone12.com -.\" Created: September 13, 2004 -.\" Last Updated: September 13, 2004 -.\" -.TH sync_members 1 "September 13, 2004" "Mailman 2.1" "GNU Mailman Manual" -.\"===================================================================== -.SH NAME -sync_members \- Synchronize a Mailman mailing list's membership with a flat file. -.\"===================================================================== -.SH SYNOPSIS -.B sync_members -[-n] -[-w <\fIyes|no\fP>] -[-g <\fIyes|no\fP>] -[-d <\fIyes|no\fP>] -[-a <\fIyes|no\fP>] -[-h] --f \fIfilename\fP -\fIlistname\fP -.\"===================================================================== -.SH DESCRIPTION -.B sync_members -synchronizes a Mailman mailing list's membership with a flat file. -.PP -This script is useful if you have a Mailman mailing list and a sendmail -:include: style list of addresses (also as is used in Majordomo). For every -address in the file that does not appear in the mailing list, the address is -added. For every address in the mailing list that does not appear in the -file, the address is removed. Other options control what happens when an -address is added or removed. -.\"===================================================================== -.SH OPTIONS -.IP "--no-change -n" -Don't actually make the changes. Instead, print out what would be -done to the list. -.IP "-welcome-msg[=<\fIyes|no\fP>], -w[=<\fIyes|no\fP>]" -Sets whether or not to send the newly added members a welcome -message, overriding whatever the list's `send_welcome_msg' setting -is. With -w=yes or -w, the welcome message is sent. With -w=no, no -message is sent. -.IP "--goodbye-msg[=<\fIyes|no\fP>], -g[=<\fIyes|no\fP>]" -Sets whether or not to send the goodbye message to removed members, -overriding whatever the list's `send_goodbye_msg' setting is. With --g=yes or -g, the goodbye message is sent. With -g=no, no message is -sent. -.IP "--digest[=<\fIyes|no\fP>], -d[=<\fIyes|no\fP>]" -Selects whether to make newly added members receive messages in -digests. With -d=yes or -d, they become digest members. With -d=no -(or if no -d option given) they are added as regular members. -.IP "--notifyadmin[=<\fIyes|no\fP>], -a[=<\fIyes|no\fP>]" -Specifies whether the admin should be notified for each subscription -or unsubscription. If you're adding a lot of addresses, you -definitely want to turn this off! With -a=yes or -a, the admin is -notified. With -a=no, the admin is not notified. With no -a option, -the default for the list is used. -.IP "--file <\fIfilename | -\fp>, -f <\fIfilename | -\fP>" -This option is required. It specifies the flat file to synchronize -against. Email addresses must appear one per line. If filename is -`-' then stdin is used. -.IP "--help, -h" -Print help message. -.IP \fIlistname\fP -Required. This specifies the list to synchronize. -.\"===================================================================== -.SH SEE ALSO -.BR add_members (1), -.BR clone_member (1), -.BR list_members (1), -.BR remove_members (1) -.PP -The Mailman website: http://www.list.org -.\"===================================================================== -.SH AUTHOR -This man page was created by Terri Oda <terri (at) zone12.com>. -Use <mailman-developers@python.org> to contact the developers. diff --git a/docs/man/transcheck.1 b/docs/man/transcheck.1 deleted file mode 100644 index 6e16a10f8..000000000 --- a/docs/man/transcheck.1 +++ /dev/null @@ -1,41 +0,0 @@ -.\" -.\" GNU Mailman Manual -.\" -.\" transcheck -.\" -.\" Documenter: Terri Oda -.\" terri (at) zone12.com -.\" Created: September 18, 2004 -.\" Last Updated: September 18, 2004 -.\" -.TH transcheck 1 "September 18, 2004" "Mailman 2.1" "GNU Mailman Manual" -.\"===================================================================== -.SH NAME -transcheck \- Check a given Mailman translation -.\"===================================================================== -.SH SYNOPSIS -.B transcheck -[-q] -\fIlang\fP -.\"===================================================================== -.SH DESCRIPTION -.B transcheck -checks a given Mailman translation, making sure that variables and -tags referenced in translation are the same variables and tags in -the original templates and catalog. -.\"===================================================================== -.SH OPTIONS -.IP "-q" -Asks for a brief summary. -.IP "\fIlang\fP" -Your country code. (e.g. 'it' for Italy) -.\"===================================================================== -.SH SEE ALSO -.BR check_perms (1), -.BR check_db (1) -.PP -The Mailman website: http://www.list.org -.\"===================================================================== -.SH AUTHOR -This man page was created by Terri Oda <terri (at) zone12.com>. -Use <mailman-developers@python.org> to contact the developers. diff --git a/docs/posting-flow-chart.ps b/docs/posting-flow-chart.ps deleted file mode 100644 index e8d47e27c..000000000 --- a/docs/posting-flow-chart.ps +++ /dev/null @@ -1,735 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: posting-flow-chart -%%Creator: Dia v0.86 -%%CreationDate: Mon Oct 15 13:46:55 2001 -%%For: a user -%%DocumentPaperSizes: A4 -%%Orientation: Landscape -%%BeginSetup -%%EndSetup -%%EndComments -%%BeginProlog -[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright -/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one -/two /three /four /five /six /seven /eight /nine /colon /semicolon -/less /equal /greater /question /at /A /B /C /D /E -/F /G /H /I /J /K /L /M /N /O -/P /Q /R /S /T /U /V /W /X /Y -/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c -/d /e /f /g /h /i /j /k /l /m -/n /o /p /q /r /s /t /u /v /w -/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright -/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior -/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf -/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla -/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde -/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex -/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring -/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis -/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave -/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def -/Times-Roman-latin1 - /Times-Roman findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Times-Italic-latin1 - /Times-Italic findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Times-Bold-latin1 - /Times-Bold findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Times-BoldItalic-latin1 - /Times-BoldItalic findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/AvantGarde-Book-latin1 - /AvantGarde-Book findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/AvantGarde-BookOblique-latin1 - /AvantGarde-BookOblique findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/AvantGarde-Demi-latin1 - /AvantGarde-Demi findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/AvantGarde-DemiOblique-latin1 - /AvantGarde-DemiOblique findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Bookman-Light-latin1 - /Bookman-Light findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Bookman-LightItalic-latin1 - /Bookman-LightItalic findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Bookman-Demi-latin1 - /Bookman-Demi findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Bookman-DemiItalic-latin1 - /Bookman-DemiItalic findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Courier-latin1 - /Courier findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Courier-Oblique-latin1 - /Courier-Oblique findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Courier-Bold-latin1 - /Courier-Bold findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Courier-BoldOblique-latin1 - /Courier-BoldOblique findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Helvetica-latin1 - /Helvetica findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Helvetica-Oblique-latin1 - /Helvetica-Oblique findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Helvetica-Bold-latin1 - /Helvetica-Bold findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Helvetica-BoldOblique-latin1 - /Helvetica-BoldOblique findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Helvetica-Narrow-latin1 - /Helvetica-Narrow findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Helvetica-Narrow-Oblique-latin1 - /Helvetica-Narrow-Oblique findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Helvetica-Narrow-Bold-latin1 - /Helvetica-Narrow-Bold findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Helvetica-Narrow-BoldOblique-latin1 - /Helvetica-Narrow-BoldOblique findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/NewCenturySchoolbook-Roman-latin1 - /NewCenturySchoolbook-Roman findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/NewCenturySchoolbook-Italic-latin1 - /NewCenturySchoolbook-Italic findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/NewCenturySchoolbook-Bold-latin1 - /NewCenturySchoolbook-Bold findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/NewCenturySchoolbook-BoldItalic-latin1 - /NewCenturySchoolbook-BoldItalic findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Palatino-Roman-latin1 - /Palatino-Roman findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Palatino-Italic-latin1 - /Palatino-Italic findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Palatino-Bold-latin1 - /Palatino-Bold findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Palatino-BoldItalic-latin1 - /Palatino-BoldItalic findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Symbol-latin1 - /Symbol findfont -definefont pop -/ZapfChancery-MediumItalic-latin1 - /ZapfChancery-MediumItalic findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/ZapfDingbats-latin1 - /ZapfDingbats findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/cp {closepath} bind def -/c {curveto} bind def -/f {fill} bind def -/a {arc} bind def -/ef {eofill} bind def -/ex {exch} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth pop} bind def -/tr {translate} bind def - -/ellipsedict 8 dict def -ellipsedict /mtrx matrix put -/ellipse -{ ellipsedict begin - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def /savematrix mtrx currentmatrix def - x y tr xrad yrad sc - 0 0 1 startangle endangle arc - savematrix setmatrix - end -} def - -/mergeprocs { -dup length -3 -1 roll -dup -length -dup -5 1 roll -3 -1 roll -add -array cvx -dup -3 -1 roll -0 exch -putinterval -dup -4 2 roll -putinterval -} bind def -%%EndProlog - - -%%Page: 1 1 -gs -90 rotate -10.504277 -10.504277 scale --7.390052 13.596868 translate -n 15.000000 -5.986920 m 79.927437 -5.986920 l 79.927437 35.463012 l 15.000000 35.463012 l 15.000000 -5.986920 l clip -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0 slj -0 slc -0 slj -[] 0 sd -1.000000 1.000000 1.000000 srgb -n 28.288577 -5.936920 m 34.143683 -5.936920 l 34.952105 -5.936920 35.607460 -5.489205 35.607460 -4.936920 c 35.607460 -4.384635 34.952105 -3.936920 34.143683 -3.936920 c 28.288577 -3.936920 l 27.480155 -3.936920 26.824800 -4.384635 26.824800 -4.936920 c 26.824800 -5.489205 27.480155 -5.936920 28.288577 -5.936920 c f -0.000000 0.000000 0.000000 srgb -n 28.288577 -5.936920 m 34.143683 -5.936920 l 34.952105 -5.936920 35.607460 -5.489205 35.607460 -4.936920 c 35.607460 -4.384635 34.952105 -3.936920 34.143683 -3.936920 c 28.288577 -3.936920 l 27.480155 -3.936920 26.824800 -4.384635 26.824800 -4.936920 c 26.824800 -5.489205 27.480155 -5.936920 28.288577 -5.936920 c s -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(post a msg) dup sw 2 div 31.216130 ex sub -4.742230 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 31.228705 0.448229 m 34.632611 3.852135 l 31.228705 7.256041 l 27.824799 3.852135 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 31.228705 0.448229 m 34.632611 3.852135 l 31.228705 7.256041 l 27.824799 3.852135 l cp s -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(is a) dup sw 2 div 31.228705 ex sub 3.646825 m gs 1 -1 sc sh gr -0.000000 0.000000 0.000000 srgb -(member?) dup sw 2 div 31.228705 ex sub 4.446825 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 31.228700 0.448231 m 31.216100 -3.936920 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 30.826403 -0.350616 m 31.228700 0.448231 l 31.626400 -0.352915 l f -1.000000 1.000000 1.000000 srgb -n 22.333205 8.807639 m 25.737111 12.211545 l 22.333205 15.615451 l 18.929299 12.211545 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 22.333205 8.807639 m 25.737111 12.211545 l 22.333205 15.615451 l 18.929299 12.211545 l cp s -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(mod bit) dup sw 2 div 22.333205 ex sub 12.006235 m gs 1 -1 sc sh gr -0.000000 0.000000 0.000000 srgb -(set?) dup sw 2 div 22.333205 ex sub 12.806235 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 22.333200 8.807640 m 27.824800 3.852140 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 22.659157 7.974722 m 22.333200 8.807640 l 23.195108 8.568655 l f -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -() dup sw 2 div 15.000000 ex sub 5.000000 m gs 1 -1 sc sh gr -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(yes) dup sw 2 div 28.675700 ex sub 3.001160 m gs 1 -1 sc sh gr -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(yes) dup sw 2 div 19.780300 ex sub 11.360600 m gs 1 -1 sc sh gr -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(no) dup sw 2 div 23.184200 ex sub 14.764500 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 34.632600 3.852140 m 40.261205 8.139600 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 39.382424 7.973037 m 40.261205 8.139600 l 39.867187 7.336637 l f -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(no) dup sw 2 div 33.781600 ex sub 3.001160 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 40.261205 8.139600 m 43.907510 11.959285 l 40.261205 15.778970 l 36.614900 11.959285 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 40.261205 8.139600 m 43.907510 11.959285 l 40.261205 15.778970 l 36.614900 11.959285 l cp s -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(explicit) dup sw 2 div 40.261205 ex sub 11.753975 m gs 1 -1 sc sh gr -0.000000 0.000000 0.000000 srgb -(accept?) dup sw 2 div 40.261205 ex sub 12.553975 m gs 1 -1 sc sh gr -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(yes) dup sw 2 div 39.349629 ex sub 14.824049 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 59.913105 8.346249 m 63.559411 11.992555 l 59.913105 15.638861 l 56.266799 11.992555 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 59.913105 8.346249 m 63.559411 11.992555 l 59.913105 15.638861 l 56.266799 11.992555 l cp s -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(explicit) dup sw 2 div 59.913105 ex sub 11.787245 m gs 1 -1 sc sh gr -0.000000 0.000000 0.000000 srgb -(reject?) dup sw 2 div 59.913105 ex sub 12.587245 m gs 1 -1 sc sh gr -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(yes) dup sw 2 div 59.001528 ex sub 14.727284 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 54.324011 11.922575 m 56.266799 11.992555 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 55.452919 12.363498 m 56.266799 11.992555 l 55.481716 11.564017 l f -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(no) dup sw 2 div 42.995934 ex sub 11.004364 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 71.066405 8.389389 m 74.712711 12.035695 l 71.066405 15.682001 l 67.420099 12.035695 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 71.066405 8.389389 m 74.712711 12.035695 l 71.066405 15.682001 l 67.420099 12.035695 l cp s -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(explicit) dup sw 2 div 71.066405 ex sub 11.830385 m gs 1 -1 sc sh gr -0.000000 0.000000 0.000000 srgb -(discard?) dup sw 2 div 71.066405 ex sub 12.630385 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 63.559411 11.992555 m 67.420100 12.035700 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 66.615680 12.426735 m 67.420100 12.035700 l 66.624620 11.626785 l f -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(no) dup sw 2 div 62.647834 ex sub 11.080979 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 71.066400 15.682000 m 71.055000 19.434500 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 70.657432 18.633289 m 71.055000 19.434500 l 71.457429 18.635719 l f -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(yes) dup sw 2 div 70.154800 ex sub 14.770400 m gs 1 -1 sc sh gr -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(no) dup sw 2 div 73.801100 ex sub 11.124100 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 59.913105 15.638861 m 59.907500 19.455400 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 59.508675 18.654813 m 59.907500 19.455400 l 60.308674 18.655988 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0 slc -0.000000 0.000000 0.000000 srgb -n 22.333200 15.615400 m 22.362400 21.044900 l 27.166900 21.015055 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 26.369400 21.420017 m 27.166900 21.015055 l 26.364431 20.620032 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0 slj -0 slc -0 slj -[] 0 sd -1.000000 1.000000 1.000000 srgb -n 28.954977 29.425200 m 34.810083 29.425200 l 35.618505 29.425200 36.273860 29.964050 36.273860 30.628755 c 36.273860 31.293460 35.618505 31.832310 34.810083 31.832310 c 28.954977 31.832310 l 28.146555 31.832310 27.491200 31.293460 27.491200 30.628755 c 27.491200 29.964050 28.146555 29.425200 28.954977 29.425200 c f -0.000000 0.000000 0.000000 srgb -n 28.954977 29.425200 m 34.810083 29.425200 l 35.618505 29.425200 36.273860 29.964050 36.273860 30.628755 c 36.273860 31.293460 35.618505 31.832310 34.810083 31.832310 c 28.954977 31.832310 l 28.146555 31.832310 27.491200 31.293460 27.491200 30.628755 c 27.491200 29.964050 28.146555 29.425200 28.954977 29.425200 c s -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(hold for) dup sw 2 div 31.882530 ex sub 30.423445 m gs 1 -1 sc sh gr -0.000000 0.000000 0.000000 srgb -(moderation) dup sw 2 div 31.882530 ex sub 31.223445 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0 slj -0 slc -0 slj -[] 0 sd -1.000000 1.000000 1.000000 srgb -n 28.666900 19.811500 m 34.666900 19.811500 l 35.495328 19.811500 36.166900 20.350350 36.166900 21.015055 c 36.166900 21.679760 35.495328 22.218610 34.666900 22.218610 c 28.666900 22.218610 l 27.838472 22.218610 27.166900 21.679760 27.166900 21.015055 c 27.166900 20.350350 27.838472 19.811500 28.666900 19.811500 c f -0.000000 0.000000 0.000000 srgb -n 28.666900 19.811500 m 34.666900 19.811500 l 35.495328 19.811500 36.166900 20.350350 36.166900 21.015055 c 36.166900 21.679760 35.495328 22.218610 34.666900 22.218610 c 28.666900 22.218610 l 27.838472 22.218610 27.166900 21.679760 27.166900 21.015055 c 27.166900 20.350350 27.838472 19.811500 28.666900 19.811500 c s -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(pass thru) dup sw 2 div 31.666900 ex sub 21.209745 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0 slj -0 slc -0 slj -[] 0 sd -1.000000 1.000000 1.000000 srgb -n 57.222377 19.455400 m 62.592683 19.455400 l 63.334168 19.455400 63.935260 19.903115 63.935260 20.455400 c 63.935260 21.007685 63.334168 21.455400 62.592683 21.455400 c 57.222377 21.455400 l 56.480892 21.455400 55.879800 21.007685 55.879800 20.455400 c 55.879800 19.903115 56.480892 19.455400 57.222377 19.455400 c f -0.000000 0.000000 0.000000 srgb -n 57.222377 19.455400 m 62.592683 19.455400 l 63.334168 19.455400 63.935260 19.903115 63.935260 20.455400 c 63.935260 21.007685 63.334168 21.455400 62.592683 21.455400 c 57.222377 21.455400 l 56.480892 21.455400 55.879800 21.007685 55.879800 20.455400 c 55.879800 19.903115 56.480892 19.455400 57.222377 19.455400 c s -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(bounce it) dup sw 2 div 59.907530 ex sub 20.650090 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0 slj -0 slc -0 slj -[] 0 sd -1.000000 1.000000 1.000000 srgb -n 67.885077 19.434500 m 74.224983 19.434500 l 75.100342 19.434500 75.809960 19.882215 75.809960 20.434500 c 75.809960 20.986785 75.100342 21.434500 74.224983 21.434500 c 67.885077 21.434500 l 67.009718 21.434500 66.300100 20.986785 66.300100 20.434500 c 66.300100 19.882215 67.009718 19.434500 67.885077 19.434500 c f -0.000000 0.000000 0.000000 srgb -n 67.885077 19.434500 m 74.224983 19.434500 l 75.100342 19.434500 75.809960 19.882215 75.809960 20.434500 c 75.809960 20.986785 75.100342 21.434500 74.224983 21.434500 c 67.885077 21.434500 l 67.009718 21.434500 66.300100 20.986785 66.300100 20.434500 c 66.300100 19.882215 67.009718 19.434500 67.885077 19.434500 c s -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(discard it) dup sw 2 div 71.055030 ex sub 20.629190 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0 slc -0.000000 0.000000 0.000000 srgb -n 40.261205 15.778970 m 40.184200 21.044900 l 36.166900 21.015055 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 36.969849 20.621009 m 36.166900 21.015055 l 36.963906 21.420987 l f -1.000000 1.000000 1.000000 srgb -n 65.017305 25.865999 m 69.790811 30.639505 l 65.017305 35.413011 l 60.243799 30.639505 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 65.017305 25.865999 m 69.790811 30.639505 l 65.017305 35.413011 l 60.243799 30.639505 l cp s -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(generic) dup sw 2 div 65.017305 ex sub 30.034195 m gs 1 -1 sc sh gr -0.000000 0.000000 0.000000 srgb -(non-member) dup sw 2 div 65.017305 ex sub 30.834195 m gs 1 -1 sc sh gr -0.000000 0.000000 0.000000 srgb -(disposition) dup sw 2 div 65.017305 ex sub 31.634195 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0 slc -0.000000 0.000000 0.000000 srgb -n 74.712700 12.035700 m 77.310000 12.068400 l 77.310000 30.668100 l 69.790800 30.639500 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 70.592316 30.242546 m 69.790800 30.639500 l 70.589273 31.042540 l f -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(discard) dup sw 2 div 68.632800 ex sub 24.246900 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 66.210600 27.059400 m 71.055000 21.434500 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 70.836024 22.301708 m 71.055000 21.434500 l 70.229848 21.779644 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 63.823900 27.059400 m 59.907500 21.455400 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 60.693636 21.882004 m 59.907500 21.455400 l 60.037899 22.340271 l f -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(reject) dup sw 2 div 61.865700 ex sub 24.257400 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 60.243800 30.639500 m 36.273860 30.628755 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 37.074039 30.229114 m 36.273860 30.628755 l 37.073681 31.029114 l f -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(hold) dup sw 2 div 48.258830 ex sub 30.634128 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0 slc -0.000000 0.000000 0.000000 srgb -n 18.929299 12.211545 m 17.707519 12.274592 l 17.707519 30.574592 l 27.491200 30.628755 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 26.688998 31.024320 m 27.491200 30.628755 l 26.693427 30.224332 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 61.437100 29.446100 m 35.727550 21.866089 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 36.608013 21.708655 m 35.727550 21.866089 l 36.381775 22.475998 l f -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(accept) dup sw 2 div 48.582325 ex sub 25.656094 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 50.677705 8.276269 m 54.324011 11.922575 l 50.677705 15.568881 l 47.031399 11.922575 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 50.677705 8.276269 m 54.324011 11.922575 l 50.677705 15.568881 l 47.031399 11.922575 l cp s -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(explicit) dup sw 2 div 50.677705 ex sub 11.717265 m gs 1 -1 sc sh gr -0.000000 0.000000 0.000000 srgb -(hold?) dup sw 2 div 50.677705 ex sub 12.517265 m gs 1 -1 sc sh gr -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(yes) dup sw 2 div 49.766128 ex sub 14.657304 m gs 1 -1 sc sh gr -/Courier-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(no) dup sw 2 div 53.412434 ex sub 11.010998 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0 slc -0.000000 0.000000 0.000000 srgb -n 50.677705 15.568881 m 50.723859 19.674592 l 35.845120 29.777721 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 36.282254 28.997392 m 35.845120 29.777721 l 36.731664 29.659231 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 43.907510 11.959285 m 47.031399 11.922575 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 46.236154 12.331948 m 47.031399 11.922575 l 46.226754 11.532003 l f -/Courier-latin1 ff 2.000000 scf sf -0.000000 0.000000 0.000000 srgb -(Sender Moderation Flowchart) dup sw 2 div 57.443403 ex sub 1.624592 m gs 1 -1 sc sh gr -gr -showpage - |
