Apply 80_fix_string_search.patch
[mspang/vmailman.git] / NEWS
1 Mailman - The GNU Mailing List Management System
2 Copyright (C) 1998-2006 by the Free Software Foundation, Inc.
3 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
4
5 Here is a history of user visible changes to Mailman.
6
7 2.1.9 (12-Sep-2006)
8
9   Security
10
11     - A malicious user could visit a specially crafted URI and inject an
12       apparent log message into Mailman's error log which might induce an
13       unsuspecting administrator to visit a phishing site.  This has been
14       blocked.  Thanks to Moritz Naumann for its discovery.
15
16     - Fixed denial of service attack which can be caused by some
17       standards-breaking RFC 2231 formatted headers.  CVE-2006-2941.
18
19     - Several cross-site scripting issues have been fixed.  Thanks to Moritz
20       Naumann for their discovery.  CVE-2006-3636
21
22     - Fixed an unexploitable format string vulnerability.  Discovery and fix
23       by Karl Chen.  Analysis of non-exploitability by Martin 'Joey' Schulze.
24       Also thanks go to Lionel Elie Mamane.  CVE-2006-2191.
25
26   Internationalization
27
28     - New languages: Arabic, Vietnamese.
29
30   Bug fixes and other patches
31
32     - Fixed Decorate.py so that characters in message header/footer which
33       are not in the character set of the list's language are ignored rather
34       than causing shunted messages (1507248).
35
36     - Switchboard.py - Closed very tiny holes at the upper ends of queue
37       slices that could result in unprocessable queue entries.  Improved FIFO
38       processing when two queue entries have the same timestamp.
39
40 2.1.8 (15-Apr-2006)
41
42   Security
43
44     - A cross-site scripting hole in the private archive script of 2.1.7
45       has been closed.  Thanks to Moritz Naumann for its discovery.
46
47   Bug fixes and other patches
48
49     - Bouncers support added: 'unknown user', Microsoft SMTPSVC, Prodigy.net
50       and several others.
51
52     - Updated email library to 2.5.7 which will encode payload into qp/base64
53       upon setting.  This enabled backing out the scrubber related patches
54       including 'X-Mailman-Scrubbed' header in 2.1.7.
55
56     - Fix SpamDetect.py potential hold/reject loop problem.
57
58     - A warning message from email package to the stderr can cause error
59       in Logging because stderr may be detached from the process during
60       the qrunner run.  We chose not to output errors to stderr but to
61       the logs/error if the process is running under mailmanctl subprocess.
62
63     - DKIM header cleansing was separated from Cleanse.py and added to
64       -owner messages too.
65
66     - Fixes: Lose Topics when go directly to topics URL (1194419).
67       UnicodeError running bin/arch (1395683).  edithtml.py missing import
68       (1400128).  Bad escape in cleanarch.  Wrong timezone in list archive
69       index pages (1433673).  bin/arch fails with TypeError (1430236).
70       Subscription fails with some Language combinations (1435722).
71       Postfix delayed notification not recognized (863989).  2.1.7 (VERP)
72       mistakes delay notice for bounce (1421285).  show_qfiles: 'str'
73       object has no attribute 'as_string' (1444447).  Utils.get_domain()
74       wrong if VIRTUAL_HOST_OVERVIEW off (1275856).
75
76   Miscellaneous
77
78     - Brad Knowles' mailman daily status report script updated to 0.0.16.
79
80 2.1.7 (31-Dec-2005)
81
82   Security
83
84     - The fix for CAN-2005-0202 has been enhanced to issue an appropriate
85       message instead of just quietly dropping ./ and ../ from URLs.
86
87     - A note on CVE-2005-3573: Although the RFC2231 bug example in the CVE has
88       been solved in Mailman 2.1.6, there may be more cases where
89       ToDigest.send_digests() can block regular delivery.  We put the
90       send_digests() calling part in a try/except clause and leave a message
91       in the error log if something happened in send_digests().  Daily call of
92       cron/senddigests will provide more detail to the site administrator.
93
94     - List administrators can no longer change the user's option/subscription
95       globally.  Site admin can change these only if
96       mm_cfg.ALLOW_SITE_ADMIN_COOKIES is set to Yes.
97
98     - <script> tags are HTML-escaped in the edithtml CGI script.
99
100     - Since the probe message for disabled users may reach unintended
101       recipients, the password is excluded from sendProbe() and probe.txt.
102       Note that the default value of VERP_PROBE has been set to `No' from
103       2.1.6., thus this change doesn't affect the default behavior.
104
105   New Features
106
107     - Always remove DomainKey (and similar) headers from messages sent to the
108       list. (1287546)
109
110     - List owners can control the content filter behavior when collapsing
111       multipart/alternative parts to its first subpart.  This allows the
112       option of letting the HTML part pass through after other content
113       filtering is done.
114
115   Internationalization
116
117     - New language: Interlingua.
118
119   Bug fixes and other patches
120
121     - Defaults.py.in: SCRUBBER_DONT_USE_ATTACHMENT_FILENAME is set to True for
122       safer operation.
123
124     - Fixed the bug where Scrubber.py munges quoted-printable by introducing
125       the 'X-Mailman-Scrubbed' header which marks that the payload is
126       scrubber-munged.  The flag is referenced in ToDigest.py, ToArchive.py,
127       Decorate.py and Archiver.  A similar problem in ToDigest.py where the
128       plain digest is generated is also fixed.
129
130     - Fixed Syslog.py to write quopri encoded messages when it fail to write
131       8-bit characters.
132
133     - Fixed MTA/Postfix.py to check aliases group permission in check_perms
134       and fixed mailman-install document on this matter (1378270).
135
136     - Fixed private.py to go to the original URL after authorization
137       (1080943).
138
139     - Fixed bounce log score messages to be more consistent.
140
141     - Fixed bin/remove_members to accept no arguments when both --fromall and
142       --file= options are specified.
143
144     - Changed cgi-bin and mail wrapper "group not found" error message to be
145       more descriptive of the actual problem.
146
147     - The list's ban_list now applies to address changes, admin mass
148       subscribes and invites, and to confirmations/approvals of address
149       changes, subscriptions and invitations.
150
151     - quoted-printable and base64 encoded parts are decoded before passing to
152       HTML_TO_PLAIN_TEXT_COMMAND (1367783).
153
154     - Approve: header is removed from posts, and treated the same as the
155       Approved: header. (1355707)
156
157     - Fixed the removal of the line following Approve[d]: line in body of
158       post.  (1318883)
159
160     - The Approve[d]: <password> header is removed from all text/* parts in
161       addition the initial text/plain part.  It must still be the first
162       non-blank line in the first text/plain part or it won't be found or
163       removed at all. (1181161)
164
165     - Posts are now logged in post log file with the true sender, not
166       listname-bounces. (1287921)
167
168     - Correctly initialize and remember the list's default_member_moderation
169       attribute in the web list creation page. (1263213)
170
171     - PEP263 charset is added to the config_list output. (1343100)
172
173     - Fixed header_filter_rules getting lost if accessed directly and
174       authentication was needed by login page. (1230865)
175
176     - Obscure email when the poster doesn't set full name in 'From:' header.
177
178     - Preambles and epilogues are taken into account when calculating message
179       sizes for holding purposes. (Mark Sapiro)
180
181     - Logging/Logger.py unicode transform option. (1235567)
182
183     - bin/update crashes with bogus files. (949117)
184
185     - Bugs and patches: 1212066/1301983 (Date header in create/remove notice)
186
187 2.1.6 (30-May-2005)
188
189   Security
190
191     - Critical security patch for path traversal vulnerability in private
192       archive script  (CAN-2005-0202).
193
194     - Added the ability for Mailman generated passwords (both member and list
195       admin) to be more cryptographically secure.  See new configuration
196       variables USER_FRIENDLY_PASSWORDS, MEMBER_PASSWORD_LENGTH, and
197       ADMIN_PASSWORD_LENGTH.  Also added a new bin/withlist script called
198       reset_pw.py which can be used to reset all member passwords.  Passwords
199       generated by Mailman are now 8 characters by default for members, and 10
200       characters for list administrators.
201
202     - A potential cross-site scripting hole in the driver script has been
203       closed.  Thanks to Florian Weimer for its discovery.  Also, turn
204       STEALTH_MODE on by default.
205
206   Internationalization
207
208     - Chinese languages are now supported.  They have been moved from 'big5'
209       and 'gb' to 'zh_TW' and 'zh_CN' respectively for compliance to the IANA
210       spec.  Note, however, that the character sets were changed from 'Big5'
211       or 'GB2312' to 'UTF-8' to cope with the insufficient codecs support in
212       Python 2.3 and earlier.  You may have to install Chinese capable codecs
213       (like CJKCodecs) separately to handle the incoming messages which are in
214       local charsets, or upgrade your Python to 2.4 or newer.
215
216   Behavior or defaults changes
217
218     - VERP_PROBES is disabled by default.
219
220     - bin/withlist can be run without a list name, but only if -i is given.
221       Also, withlist puts the directory it's found in at the end of sys.path,
222       making it easier to run withlist scripts that live in $prefix/bin.
223
224     - bin/newlist grew two new options: -u/--urlhost and -e/--emailhost which
225       lets the user provide the web and email hostnames for the new mailing
226       list.  This is a better way to specify the domain for the list, rather
227       than the old 'mylist@hostname' syntax (which is still supported for
228       backward compatibility, but deprecated).
229
230   Compatibility
231
232     - Python 2.4 compatibility issue: time.strftime() became strict about the
233       'day of year' range.  (1078482)
234
235   New Features
236
237     - New feature: automatic discards of held messages.  List owners can now
238       set how many days to hold the messages in the moderator request queue.
239       cron/checkdb will automatically discard old messages.  See the
240       max_days_to_hold variable in the General Options and
241       DEFAULT_MAX_DAYS_TO_HOLD in Defaults.py.  This defaults to 0
242       (i.e. disabled). (790494)
243
244     - New feature: subject_prefix can be configured to include a sequence
245       number which is taken from the post_id variable.  Also, the prefix is
246       always put at the start of the subject, i.e. "[list-name] Re: original
247       subject", if mm_cfg.OLD_STYLE_PREFIXING is set No.  The default style
248       is "Re: [list-name]" if numbering is not set, for backward compatibility.
249       If the list owner is using numbering feature by "%d" directive, the new
250       style, "[list-name 123] Re:", is always used.
251
252     - List owners can now cusomize the non-member rejection notice from
253       admin/<listname>/privacy/sender page. (1107169)
254
255     - Allow editing of the welcome message from the admin page (1085501).
256
257     - List owners can now use Scrubber to get the attachments scrubbed (held
258       in the web archive), if the site admin permits it in mm_cfg.py.  New
259       variables introduced are SCRUBBER_DONT_USE_ATTACHMENT_FILENAME and
260       SCRUBBER_USE_ATTACHMENT_FILENAME_EXTENSION in Defaults.py for scrubber
261       behavior.  (904850)
262
263   Documentation
264
265     - Most of the installation instructions have been moved to a latex
266       document.  See admin/www/mailman-install/index.html for details.
267
268   Bug fixes and other patches
269
270     - Mail-to-news gateway now strips subject prefix off from a response
271       by a mail user if news_prefix_subject_too is not set.
272
273     - Date and Message-Id headers are added for digests. (1116952)
274
275     - Improved mail address sanity check.  (1030228)
276
277     - SpamDetect.py now checks attachment header.  (1026977)
278
279     - Filter attachments by filename extensions.  (1027882)
280
281     - Bugs and patches: 955381 (older Python compatibility), 1020102/1013079/
282       1020013 (fix spam filter removed), 665569 (newer Postfix bounce
283       detection), 970383 (moderator -1 admin requests pending), 873035
284       (subject handling in -request mail), 799166/946554 (makefile
285       compatibility), 872068 (add header/footer via unicode), 1032434
286       (KNOWN_SPAMMERS check for multi-header), 1025372 (empty Cc:), 789015
287       (fix pipermail URL), 948152 (Out of date link on Docs),  1099138
288       (Scrubber.py breaks on None part),  1099840/1099840 (deprecated %
289       insertion),  880073/933762 (List-ID RFC compliance),  1090439 (passwd
290       reminder shunted), 1112349 (case insensitivity in acceptable_aliases),
291       1117618 (Don't Cc for personalized anonymous list), 1190404 (wrong
292       permission after editing html)
293
294 2.1.5 (15-May-2004)
295
296     - The admindb page has a checkbox that allows you to discard all held
297       messages that are marked Defer.  On heavy lists with lots of spam holds,
298       this makes clearing them much faster.
299
300     - The qrunner system has changed to use only one file per message.
301       However the configuration variable METADATA_FORMAT has been removed, and
302       support for SAVE_MSGS_AS_PICKLES has been changed.  The latter no longer
303       writes messages as plain text.  Instead, they are stored as pickles of
304       plain strings, using the text pickle format.  This still makes them
305       non-binary files readable and editable by humans.
306
307       bin/dumpdb also works differently.  It will print out the entire pickle
308       file (with more verbosity) and if used with 'python -i', it binds msg to
309       a list of all objects found in the pickle file.
310
311       Removed from Defaults.py: PENDINGDB_LOCK_TIMEOUT,
312       PENDINGDB_LOCK_ATTEMPTS, METAFMT_MARSHAL, METAFMT_BSDDB_NATIVE,
313       METAFMT_ASCII, METADATA_FORMAT
314
315     - The bounce processor has been redesigned so that now when an address's
316       bounce score reaches the threshold, that address will be sent a probe
317       message.  Only if the probe bounces will the address be disabled.  The
318       score is reset to zero when the probe is sent.  Also, bounce events are
319       now kept in an event file instead of in memory.  This should help
320       contain the bloat of the BounceRunner.
321
322       New supporting variables in Defaults.py: VERP_PROBE_FORMAT,
323       VERP_PROBE_REGEXP
324
325       REGISTER_BOUNCES_EVERY is promoted to a Defaults.py variable.
326
327     - The pending database has been changed from a global pickle file, to a
328       unique pickle file per mailing list.
329
330     - The 'request' database file has changed from a marshal, to the more
331       secure pickle format.
332
333     - Disallow multiple password retrievals.
334
335     - SF patch #810675 which adds a "Discard all messages marked Defer" button
336       for faster admindb maintenance.
337
338     - The email package is updated to version 2.5.5.
339
340     - New language: Turkish.
341
342     - Bugs and patches: 869644, 869647 (NotAMemberError for old cookie data),
343       878087 (bug in Slovenian catalog), 899263 (ignore duplicate pending
344       ids), 810675 (discard all defers button)
345
346 2.1.4 (31-Dec-2003)
347
348     - Close some cross-site scripting vulnerabilities in the admin pages
349       (CAN-2003-0965).
350
351     - New languages: Catalan, Croatian, Romanian, Slovenian.
352
353     - New mm_cfg.py/Defaults.py variable PUBLIC_MBOX which allows the site
354       administrator to disable public access to all the raw list mbox files
355       (this is not a per-list configuration).
356
357     - Expanded header filter rules under Privacy -> Spam Filters.  Now you can
358       specify regular expression matches against any header, with specific
359       actions tied to those matches.
360
361     - Rework the SMTP error handling in SMTPDirect.py to avoid scoring bounces
362       for all recipients when a permanent error code is returned by the mail
363       server (e.g. because of content restrictions).
364
365     - Promoted SYNC_AFTER_WRITE to a Default.py/mm_cfg.py variable and
366       make it control syncing on the config.pck file.  Also, we always flush
367       and sync message files.
368
369     - Reduce archive bloat by not storing the HTML body of Article objects in
370       the Pipermail database.  A new script bin/rb-archfix was added to clean
371       up older archives.
372
373     - Proper RFC quoting for List-ID descriptions.
374
375     - PKGDIR can be passed to the make command in order to specify a different
376       directory to unpack the distutils packages in misc.  (SF bug 784700).
377
378     - Improved logging of the origin of subscription requests.
379
380     - Bugs and patches: 832748 (unsubscribe_policy ignored for unsub button on
381       member login page), 846681 (bounce disabled cookie was always out of
382       date), 835870 (check VIRTUAL_HOST_OVERVIEW on through the web list
383       creation), 835036 (global address change when the new address is already
384       a member of one of the lists), 833384 (incorrect admin password on a
385       hold message confirmation attachment would discard the message), 835012
386       (fix permission on empty archive index), 816410 (confirmation page
387       consistency), 834486 (catch empty charsets in the scrubber), 777444 (set
388       the process's supplemental groups if possible), 860135 (ignore
389       DiscardMessage exceptions during digest scrubbing), 828811 (reduce
390       process size for list and admin overviews), 864674/864676 (problems
391       accessing private archives and rosters with admin password), 865661
392       (Tokio Kikuchi's i18n patches), 862906 (unicode prefix leak in admindb),
393       841445 (setting new_member_options via config_list), n/a (fixed email
394       command 'set delivery')
395
396 2.1.3 (28-Sep-2003)
397
398     Performance, Reliability, Security
399
400         - Closed a cross-site scripting exploit in the create cgi script.
401
402         - Improvements in the performance of the bounce processor.
403           Now, instead of processing each bounce immediately (which
404           can cause severe lock contention), bounce events are queued.
405           Every 15 minutes by default, the queued bounce events are
406           processed en masse, on a list-per-list basis, so that each
407           list only needs to be locked once.
408
409         - When some or all of a message's recipients have temporary
410           delivery failures, the message is moved to a "retry" queue.
411           This queue wakes up occasionally and moves the file back to
412           the outgoing queue for attempted redelivery.  This should
413           fix most observed OutgoingRunner 100% cpu consumption,
414           especially for bounces to local recipients when using the
415           Postfix MTA.
416
417         - Optional support for fsync()'ing qfile data after writing.
418           Under some catastrophic system failures (e.g. power lose),
419           it would be possible to lose messages because the data
420           wasn't sync'd to disk.  By setting SYNC_AFTER_WRITE to True
421           in Mailman/Queue/Switchboard.py, you can force Mailman to
422           fsync() queue files after flushing them.  The benefits are
423           debatable for most operating environments, and you must
424           ensure that your Python has the os.fsync() function defined
425           before enabling this feature (it isn't, even on all
426           Unix-like operating systems).
427
428     Internationalization
429
430         - New languages Ukrainian, Serbian, Danish, Euskara/Basque.
431
432         - Fixes to template lookup.  Lists with local overriding
433           templates would find the wrong template.
434
435         - .mo files (for internationalization) are now generated at
436           build time instead of coming as part of the source
437           distribution.
438
439     Documentation
440
441         - A first draft of member documentation by Terri Oda.  There
442           is also a Japanese translation of this manual by Ikeda Soji.
443
444     Archiver / Pipermail
445
446         - In the configuration variables PUBLIC_EXTERNAL_ARCHIVER, and
447           PRIVATE_EXTERNAL_ARCHIVER, %(hostname)s has been added to
448           the list of allowable substitution variables.
449
450         - The timezone is now taken into account when figuring the
451           posting date for an article.
452
453     Scripts / Cron
454
455         - Fixes to cron/disabled for NotAMemberError crashes.
456
457         - New script bin/show_qfiles which prints the contents of .pck
458           message files.  New script bin/discard which can be used to
459           mass discard held messages.
460
461         - Fixes to cron/mailpasswds to account for old password-less
462           subscriptions.
463
464         - bin/list_members has grown two new options: --invalid/-i
465           prints only the addresses in the member database that are
466           invalid (which could have snuck in via old releases);
467           --unicode/-u prints addresses which are stored as Unicode
468           objects instead of as normal strings.
469
470     Miscellaneous
471
472         - Fixes to problems in some configurations where Python wouldn't
473           be able to find its standard library.
474
475         - Fixes to the digest which could cause MIME-losing missing
476           newlines when parts are scrubbed via the content filters.
477
478         - In the News/Mail gateway admin page, the configuration variable
479           nntp_host can now be a name:port pair.
480
481         - When messages are pulled from NNTP, the member moderation checks
482           are short-circuited.
483
484         - email 2.5.4 is included.  This fixes an RFC 2231 bug, among
485           possibly others.
486
487         - Fixed some extra spaces that could appear in the List-ID header.
488
489         - Fixes to ensure that invalid email addresses can't be invited.
490
491         - WEB_LINK_COLOR in Defaults.py/mm_cfg.py should now work.
492
493         - Fixes so that shunted message file names actually match
494           those logged in log/errors.
495
496         - An improved pending action cookie generation algorithm has
497           been added.
498
499         - Fixes to the DSN bounce detector.
500
501         - The usual additional u/i, internationalization, unicode, and
502           other miscellaneous fixes.
503
504 2.1.2 (22-Apr-2003)
505
506     - New languages Portuguese (Portugal) and Polish.
507
508     - Many convenient constants have been added to the Defaults.py
509       module to (hopefully) make it more readable.
510
511     - Email addresses which contain 8-bit characters in them are now
512       rejected and won't be subscribed.  This is not the same as 8-bit
513       characters in the realname, which is still allowed.
514
515     - The X-Originating-Email header is removed for anonymous lists.
516       Hotmail apparently adds this header.
517
518     - When running make to build Mailman, you can specify $DESTDIR to
519       the install target to specify an alternative location for
520       installation, without influencing the paths stored in
521       e.g. Defaults.py.  This is useful to package managers.
522
523     - New Defaults.py variable DELIVERY_RETRY_WAIT which controls how
524       long the outgoing qrunner will wait before it retries a
525       tempfailure delivery.
526
527     - The semantics for the extend.py hook to MailList objects has
528       changed slightly.  The hook is now called before attempting to
529       lock and load the database.
530
531     - Mailman now uses the email package version 2.5.1
532
533     - bin/transcheck now checks for double-%'s
534
535     - bin/genaliases grew a -q / --quiet flag
536
537     - cron/checkdbs grew a -h / --help option.
538
539     - The -c / --change-msg option has been removed from bin/add_members
540
541     - bin/msgfmt.py has been added, taken from Python 2.3's Tools/i18n
542       directory.  The various .mo files are now no longer distributed
543       with Mailman.  They are generated at build time instead.
544
545     - A new file misc/sitelist.cfg which can be used with
546       bin/config_list provides a small number of recommended settings
547       for your site list.  Be sure to read it over before applying!
548       sitelist.cfg is installed into the data directory.
549
550     - Many bug fixes, including these SourceForge bugs closed and
551       patches applied: 677668, 690448, 700538, 700537, 673294, 683906,
552       671294, 522080, 521124, 534297, 699900, 697321, 695526, 703941,
553       658261, 710678, 707608, 671303, 717096, 694912, 707624, 716755,
554       661138, 716754, 716702, 667167, 725369, 726415
555
556
557 2.1.1 (08-Feb-2003)
558
559     Lots of bug fixes and language updates.  Also:
560
561     - Closed a cross-site scripting vulnerability in the user options page.
562
563     - Restore the ability to control which headers show up in messages
564       included in plaintext and MIME digests.  See the variables
565       PLAIN_DIGEST_KEEP_HEADERS and MIME_DIGEST_KEEP_HEADERS in
566       Defaults.py.
567
568     - Messages included in the plaintext digests are now sent through
569       the scrubber to remove (and archive) attachments.  Otherwise,
570       attachments would screw up plaintext digests.  MIME digests
571       include the attachments inline.
572
573 2.1 final (30-Dec-2002)
574
575     Last minute bug fixes and language updates.
576
577 2.1 rc 1 (24-Dec-2002)
578
579     Bug fixes and language updates.  Also,
580
581     - Lithuanian support has been added.
582
583     - bin/remove_members grew --nouserack and --noadminack switches
584
585     - configure now honors --srcdir
586
587 2.1 beta 6 (09-Dec-2002)
588
589     Lots and lots of bug fixes, and translation updates.  Also,
590
591     - ARCHIVER_OBSCURES_EMAILADDRS is now set to true by default.
592
593     - QRUNNER_SAVE_BAD_MESSAGES is now set to true by default.
594
595     - Bounce messages which were recognized, but in which no member
596       addresses were found are no longer forwarded to the list
597       administrator.
598
599     - bin/arch grew a --wipe option which first removes the entire old
600       archive before regenerating the new one.
601
602     - bin/mailmanctl -u now prints a warning that permission problems
603       could appear, such as when trying to delete a list through the
604       web that has some archives in it.
605
606     - bin/remove_members grew --nouserack/-n and -noadminack/-N options.
607
608     - A new script bin/list_owners has been added for printing out
609       list owners and moderators.
610
611     - Dates in the web version of archived messages are now relative
612       to the local timezone, and include the timezone names, when
613       available.
614
615 2.1 beta 5 (19-Nov-2002)
616
617     As is typical for a late beta release, this one includes the usual
618     bug fixes, tweaks, and massive new features (just kidding).
619
620     IMPORTANT: If you are using Pipermail, and you have any archives
621     that were created or added to in 2.1b4, you will need to run
622     bin/b4b5-archfix, followed by bin/check_perms to fix some serious
623     performance problems.  From you install directory, run
624     "bin/b4b5-archfix --help" for details.
625
626     - The personalization options have been tweaked to provide more
627       control over mail header and decoration personalizations.  In
628       2.1b4, when personalization was enabled, the To and Cc headers
629       were always overwritten.  But that's usually not appropriate for
630       anything but announce lists, so now these headers aren't changed
631       unless "Full personalization" is enabled.
632
633     - You now need to go to the General category to enable emergency
634       moderation.
635
636     - The order of the hold modules in the GLOBAL_PIPELINE has
637       changed, again.  Now Moderate comes before Hold.
638
639     - Estonian language support has been added.
640
641     - All posted messages should now get decorated with headers and
642       footers in a MIME-safe way.  Previously, some MIME type messages
643       didn't get decorated at all.
644
645     - bin/arch grew a -q/--quiet option
646
647     - bin/list_lists grew a -b/--bare option
648
649 2.1 beta 4 (26-Oct-2002)
650
651     The usual assortment of bug fixes and language updates, some u/i
652     tweaks, as well as the following:
653
654     - Configuring / building / installing
655         o Tightened up some configure checks; it will now bark loudly
656           if you don't have the Python distutils package available
657           (some Linux distros only include distutils in their "devel"
658           packages).
659
660         o Mailman's username/group security assertions are now done by
661           symbolic name instead of numeric id.  This provides a level
662           of indirection that makes it much easier to move or package
663           Mailman.  --with-mail-gid and --with-cgi-gid are retained,
664           but they control the group names used instead.
665
666     - Command line scripts
667         o A new script, bin/transcheck that language teams can use to
668           check their .po files.
669
670         o bin/list_members grew a --fullnames/-f option to print the
671           full names along with the addresses.
672
673         o cron/senddigests grew --help/-h and --listname/-l options.
674
675         o bin/fix_url.py grew some command line options to support moving
676           a list to a specific virtual domain.
677
678     - Pipermail / archiving
679         o Reworked the directory layout for archive attachments to be
680           less susceptible to inode overload.  Attachments are now
681           placed in
682
683           archives/private/<listname>/attachments/<YYYYMMDD>/<msgidhash>
684
685         o Internationalization support in the archiver has been improved.
686
687     - Internationalization
688         o New languages: Swedish.
689
690     - Mail handling
691         o Content filtering now has a pass_mime_type variable, which
692           is a whitelist of MIME types to allow in postings.  See the
693           details of the variable in the Content Filtering category
694           for more information.
695
696         o If a member has enabled their DontReceiveDuplicates option,
697           we'll also strip their addresses from the Cc headers in the
698           copy of the message sent to the list.  This helps keep the
699           Cc lines from growing astronomically.
700
701         o Bounce messages are now forwarded to the list administrators
702           both if they are unrecognized, and if no list member's
703           address could be extracted.
704
705         o Content filtering now has a filter_action variable which
706           controls what happens when a message matches the content
707           filter rules.  The default is still to discard the message.
708
709         o When searching for an Approve/Approved header, the first
710           non-whitespace line of the body of the message is also
711           checked, if the body has a MIME type of text/plain.
712
713         o If a list is personalized, and the list's posting address is
714           not included in a Reply-To header, the posting address is
715           copied into a Cc header, otherwise there was no (easy) way a
716           recipient could reply back to the list.
717
718         o Added a MS Exchange bounce recognizer.
719
720         o New configuration variable news_moderation which allows the
721           mail->news gateway to properly post to moderated newsgroups.
722
723         o Messages sent to a list's owners now comes from the site
724           list to prevent mail loops when list owners or moderators
725           having bouncing addresses.
726
727     - Miscellaneous
728         o mailanctl prevents runaway restarts by imposing a maximum
729           restart value (defaulting to 10) for restarting the
730           qrunners.  If you hit this limit, do "mailmanctl stop"
731           followed by "mailmanctl start".
732
733         o The Membership Management page's search feature now includes
734           searching on members real names.
735
736         o The start of a manual for list administrators is given in
737           Python HOWTO format (LaTeX).  It's in doc/mailman-admin.tex
738           but it still needs lots of fleshing out.
739
740         o More protections against creating a list with an invalid name.
741
742 2.1 beta 3 (09-Aug-2002)
743
744     The usual assortment of bug fixes and language updates.
745
746     - New languages: Dutch, Portuguese (Brazil)
747
748     - New configure script options: --with-mailhost, --with-urlhost,
749       --without-permcheck.  See ./configure --help for details.
750
751     - The encoding of Subject: prefixes is controlled by a new list
752       option encode_ascii_prefixes.  This is useful for languages with
753       character sets other than us-ascii.  See the Languages admin
754       page for details.
755
756     - A new list option news_prefix_subject_too controls whether
757       postings gated from mail to news should have the subject prefix
758       added to their Subject: header.
759
760     - The algorithm for upgrading the moderation controls for a
761       Mailman 2.0.x list has changed.  The change should be
762       transparent, but you'll want to double check the moderation
763       controls after upgrading from MM2.0.x.  This should have no
764       effect for upgrades from a previous MM2.1 beta.
765
766       See the UPGRADING file for details.
767
768     - On the Mass Subscribe admin page, a text box has been added so
769       that the admin can add a custom message to be prepended to the
770       welcome/invite notification.
771
772     - On the admindb page, a link is included to more easily reload
773       the page.
774
775     - The Sendmail.py delivery module is sabotaged so that it can't be
776       used naively.  You need to read the comments in the file and
777       edit the code to use this unsafe module.
778
779     - When a member sends a `help' command to the request address,
780       the url to their options page is included in the response.
781
782     - Autoresponses, -request command responses, and posting hold
783       notifications are inhibited for any message that has a
784       Precedence: {bulk|list|junk} header.  This is to avoid mail
785       loops between email 'bots.  If the original message has an
786       X-Ack: yes header, the response is sent.
787
788       Responses are also limited to a maximum number per day, as
789       defined in the site variable MAX_AUTORESPONSES_PER_DAY.  This is
790       another guard against 'bot loops, and it defaults to 10.
791
792     - When a Reply-To: header is munged to include both the original
793       and the list address, the list address is always added last.
794
795     - The cron/mailpasswds script has grown a -l/--listname option.
796
797     - The cron/disabled script has grown options to send out
798       notifications for reasons other than bounce-disabled.  It has
799       also grown a -f/--force option.  See cron/disabled --help for
800       details.
801
802     - The bin/dumpdb script has grown a -n/--noprint option.
803
804     - An experimental new mechanism for processing incoming messages
805       has been added.  If you can configure your MTA to do qmail-style
806       Maildir delivery, Mailman now has a MaildirRunner qrunner.  This
807       may turn out to be much more efficient and scalable, but for
808       MM2.1, it will not be officially supported.  See Defaults.py.in
809       and Mailman/Queue/MaildirRunner.py for details.
810
811 2.1 beta 2 (05-May-2002)
812
813     Lots of bug fixing, and the following new features and changes:
814
815     - A "de-mime" content filter feature has been added.  This
816       oft-requested feature allows you to specify MIME types that
817       Mailman should strip off of any messages before they're posted
818       to the list.  You can also optionally convert text/html to
819       text/plain (by default, through lynx if it's available).
820
821     - Changes to the way the RFC 2919 and 2369 headers (i.e. the
822       List-*: headers) are added:
823           o List-Id: is always added
824           o List-Post:, List-Help:, List-Subscribe:,
825             List-Unsubscribe:, and List-Archive: are only added to
826             posting messages.
827           o X-List-Administrivia: is only added to messages Mailman
828             creates and sends out of its own accord.
829
830       Also, if the site administrator allows it, list owners can
831       suppress the addition of all the List-*: headers.  List owners
832       can also separately suppress the List-Post: header for
833       announce-only lists.
834
835     - A new framework for email commands has been added.  This allows
836       you to easily add, delete, or change the email commands that
837       Mailman understands, on a per-site, per-list, or even per-user
838       basis.
839
840     - Users can now change their digest delivery type from MIME to
841       plain text globally, for all lists they are subscribed to.
842
843     - No language select pulldowns are shown if the list only supports
844       one language.
845
846     - More mylist-admin eradication.
847
848     - Several performance improvements in the bounce qrunner, one of
849       which is to make it run only once per minute instead of once per
850       second.
851
852     - Korean language support as been added.
853
854     - Gatewaying from news -> mail uses its connections to the nntpd
855       more efficiently.
856
857     - In bin/add_members, -n/--non-digest-members-file command line
858       switch is deprecated in favor of -r/--regular-members-file.
859
860     - bin/sync_members grew a -g/--goodbye-msg switch.
861
862 2.1 beta 1 (16-Mar-2002)
863
864     In addition to the usual bug fixes, performance improvements, and
865     GUI changes, here are the highlights:
866
867     - MIME and other message handling
868         o More robustness against badly MIME encapsulated messages: if
869           a MessageParseError is raised during the initial parse, the
870           message can either be discarded or saved in qfiles/bad,
871           depending on the value of the new configuration variable
872           QRUNNER_SAVE_BAD_MESSAGES.
873
874         o There is a new per-user option that can be used to avoid
875           receipt of extra copies, when a member of the list is also
876           explicitly CC'd.
877
878         o Always add an RFC 2822 Date: header if missing, since not
879           all MTAs insert one automatically.
880
881         o The Sender: and Errors-To: headers are no longer added to
882           outgoing messages.
883
884         o Headers and footers are always added by concatenation, if
885           the message is not MIME and if the list's charset is a
886           superset of us-ascii.
887
888     - List administration
889         o An `invitation' feature has been added.  This is selectable
890           as a radio button on the mass subscribe page.  When
891           selected, users are invited to join instead of immediately
892           joined, i.e. they get a confirmation message.
893
894         o You can now enable and disable list owner notifications for
895           disabled-due-to-bouncing and removal-due-to-bouncing
896           actions.  The site config variables
897           DEFAULT_BOUNCE_NOTIFY_OWNER_ON_DISABLE and
898           DEFAULT_BOUNCE_NOTIFY_OWNER_ON_REMOVAL control the default
899           behavior.
900
901         o List owners can now decide whether they receive unrecognized
902           bounce messages or not (i.e. messages that the bounce
903           processor doesn't recognize).  Site admins can set the
904           default value for this flag with the config variable
905           DEFAULT_BOUNCE_UNRECOGNIZED_GOES_TO_LIST_OWNER.
906
907         o The admindb summary page gives the option of clearing the
908           moderation flag of members who are on quarantined.
909
910         o The action to take when a moderated member posts to a list
911           is now configurable.  The message can either be held,
912           rejected (bounced), or discarded.  If the message is
913           rejected, a rejection notice string can be given.
914
915         o In the General admin page, you can now set the default value
916           for five per-user flags: concealing the user's email
917           address, acknowledging posts sent by the user, copy
918           suppression, not-me-too selection, and the default digest
919           type.  Site admins can set the default bit field with the
920           new DEFAULT_NEW_MEMBER_OPTIONS variable.
921
922         o A new "Emergency brake" feature for turning on moderation of
923           all list postings.  This is useful for when flamewars break
924           out, and the list needs a cooling off period.  Messages
925           containing an Approved: header with the list owner password
926           are still allowed through, as are messages approved through
927           the admindb interface.
928
929         o When a moderated message is approved for the list, add an
930           X-Mailman-Approved-At: header which contains the timestamp
931           of the approval action (changed from X-Moderated: with a
932           different format).
933
934         o Lists can now be converted to using a less error prone
935           mechanism for variable substitution syntax in headers and
936           footers.  Instead of %(var)s strings, you'd use $var
937           strings.  You must use "bin/withlist -r convert" to enable
938           this.
939
940         o When moderating held messages, the header text box and the
941           message excerpt text box are now both read-only.
942
943         o You can't delete the site list through the web.
944
945         o When creating new lists through the web, you have the option
946           of setting the "default member moderation" flag.
947
948     - Security and privacy
949         o New feature: banned subscription addresses.  Privacy
950           options/subscription rules now have an additional list box
951           which can contain addresses or regular expressions.
952           Subscription requests from any matching address are
953           automatically rejected.
954
955         o Membership tests which compare message headers against list
956           rosters are now more robust.  They now check, by default
957           these header in order: From:, unixfrom, Reply-To:, Sender:.
958           If any match, then the membership test succeeds.
959
960         o ALLOW_SITE_ADMIN_COOKIES is a new configuration variable
961           which says whether to allow AuthSiteAdmin cookies or not.
962           Normally, when a list administrator logs into a list with
963           the site password, they are issued a cookie that only allows
964           them to do administration for this one list.  By setting
965           ALLOW_SITE_ADMIN_COOKIES to 1, the user only needs to
966           authenticate to one list with the site password, and they
967           can administer any mailing list.
968
969           I'm not sure this feature is wise, so the default value for
970           ALLOW_SITE_ADMIN_COOKIES is 0.
971
972         o Marc MERLIN's new recipes for secure Linuxes have been
973           updated.
974
975         o DEFAULT_PRIVATE_ROSTER now defaults to 1.
976
977         o Passwords are no longer included in the confirmation pages.
978
979     - Internationalization
980         o With the approval of Tamito KAJIYAMA, the Japanese codecs
981           for Python are now included automatically, so you don't need
982           to download and install these separate.  It is installed in
983           a Mailman-specific place so it won't affect your larger
984           Python installation.
985
986         o The configure script will produce a warning if the Chinese
987           codes are not installed.  This is not a fatal error.
988
989         o Russian templates and catalogs have been added.
990
991         o Finnish templates and catalogs have been added.
992
993     - Scripts and utilities
994         o New program bin/unshunt to safely move shunted messages back
995           into the appropriate processing queue.
996
997         o New program bin/inject for sending a plaintext message into
998           the incoming queue from the command line.
999
1000         o New cron script cron/disabled for periodically culling the
1001           disabled membership.
1002
1003         o bin/list_members has grown some new command line switches
1004           for filtering on different criteria (digest mode, disable
1005           mode, etc.)
1006
1007         o bin/remove_members has grown the --fromall switch.
1008
1009         o You can now do a bin/rmlist -a to remove an archive even
1010           after the list has been deleted.
1011
1012         o bin/update removes the $prefix/Mailman/pythonlib directory.
1013
1014         o bin/withlist grows a --all/-a flag so the --run/-r option
1015           can be applied to all the mailing lists.  Also, interactive
1016           mode is now the default if -r isn't used.  You don't need to
1017           run this script as "python -i bin/withlist" anymore.
1018
1019         o There is a new script contrib/majordomo2mailman.pl which
1020           should ease the transition from Majordomo to Mailman.
1021
1022     - MTA integration
1023         o Postfix integration has been made much more robust, but now
1024           you have to set POSTFIX_ALIAS_CMD and POSTFIX_MAP_CMD to
1025           point to the postalias and postmap commands respectively.
1026
1027         o VERP-ish delivery has been made much more efficient by
1028           eliminating extra disk copies of messages for each recipient
1029           of a VERP delivery.  It has also been made more robust in
1030           the face of failures during chunk delivery.  This required a
1031           rewrite of SMTPDirect.py and one casualty of that rewrite
1032           was the experimental threaded delivery.  It is no longer
1033           supported (but /might/ be resurrected if there's enough
1034           demand -- or a contributed patch :).
1035
1036         o A new site config variable SMTP_MAX_SESSIONS_PER_CONNECTION
1037           specifies how many consecutive SMTP sessions will be
1038           conducted down the same socket connection.  Some MTAs have a
1039           limit on this.
1040
1041         o Support for VERP-ing confirmation messages.  These are less
1042           error prone since the Subject: header doesn't need to be
1043           retained, and they allow a more user friendly (and i18n'd)
1044           Subject: header.  VERP_CONFIRM_FORMAT, VERP_CONFIRM_REGEXP,
1045           and VERP_CONFIRMATIONS control this feature (only supported
1046           for invitation confirmations currently, but will be expanded
1047           to the other confirmations).
1048
1049         o Several new list-centric addresses have been added:
1050           -subscribe and -unsubscribe are synonyms for -join and
1051           -leave, respectively.  Also -confirm has been added to
1052           support VERP'd confirmations.
1053
1054     - Archiver
1055         o There's now a default page for the Pipermail archive link
1056           for when no messages have yet been posted to the list.
1057
1058         o Just the mere presence of an X-No-Archive: is enough to
1059           inhibit archiving for this message; the value of the header
1060           is now ignored.
1061
1062     - Configuring, building, installing
1063         o Mailman now has a new favicon, donated by Terry Oda.  Not
1064           all web pages are linked to the favicon yet though.
1065
1066         o The add-on email package is now distributed and installed
1067           automatically, so you don't need to do this.  It is
1068           installed in a Mailman-specific place so it won't affect
1069           your larger Python installation.
1070
1071         o The default value of VERP_REGEXP has changed.
1072
1073         o New site configuration variables BADQUEUE_DIR and
1074           QRUNNER_SAVE_BAD_MESSAGES which describe where to save
1075           messages which are not properly MIME encoded.
1076
1077         o configure should be more POSIX-ly conformant.
1078
1079         o The Mailman/pythonlib directory has been removed, but a new
1080           $prefix/pythonlib directory has been added.
1081
1082         o Regression tests are now installed.
1083
1084         o The second argument to add_virtual() calls in mm_cfg.py are
1085           now optional.
1086
1087         o DEFAULT_FIRST_STRIP_REPLY_TO now defaults to 0.
1088
1089         o Site administrators can edit the Mailman/Site.py file to
1090           customize some filesystem layout policies.
1091
1092
1093 2.1 alpha 4 (31-Dec-2001)
1094
1095     - The administrative requests database page (admindb) has been
1096       redesigned for better usability when there are lots of held
1097       postings.  Changes include:
1098         o A summary page which groups held messages by sender email
1099           address.  On this page you can dispose of all the sender's
1100           messages in one action.  You can also view the details of
1101           all the sender's messages, or the details of a single
1102           message.  You can also add the sender to one of the list's
1103           sender filters.
1104
1105         o A details page where you can view all messages, just those
1106           for a particular sender, or just a single held message.
1107           This details page is laid out the same as the old admindb
1108           page.
1109
1110         o The instructions have been shorted on the summary and
1111           details page, with links to more detailed explanations.
1112
1113     - Bounce processing
1114         o Mailman now keeps track of the reason a member's delivery
1115           has been disabled: explicitly by the administrator,
1116           explicitly by the user, by the system due to excessive
1117           bounces, or for (legacy) unknown reasons.
1118
1119         o A new bounce processing algorithm has been implemented (we
1120           might actually understand this one ;).  When an address
1121           starts bouncing, the member gets a "bounce score".  Hard
1122           (fatal) bounces score 1.0, while soft (transient) bounces
1123           score 0.5.
1124
1125           List administrators can specify a bounce threshold above
1126           which a member gets disabled.  They can also specify a time
1127           interval after which, if no bounces are received from the
1128           member, the member's bounce score is considered stale and is
1129           thrown away.
1130
1131         o A new cron script, cron/disabled, periodically sends
1132           notifications to members who are bounce disabled.  After a
1133           certain number of warnings the member is deleted from the
1134           list.  List administrators can control both the number of
1135           notifications and the amount of time between notifications.
1136
1137           Notifications include a confirmation cookie that the member
1138           can use to re-enable their subscription, via email or web.
1139
1140         o New configuration variables to support the bounce processing
1141           are DEFAULT_BOUNCE_SCORE_THRESHOLD,
1142           DEFAULT_BOUNCE_INFO_STALE_AFTER,
1143           DEFAULT_BOUNCE_YOU_ARE_DISABLED_WARNINGS,
1144           DEFAULT_BOUNCE_YOU_ARE_DISABLED_WARNINGS_INTERVAL.
1145
1146     - Privacy and security
1147         o Sender filters can now be regular expressions.  If a line
1148           starts with ^ it is taken as a (raw string) regular
1149           expression, otherwise it is a literal email address.
1150
1151         o Fixes in 2.0.8 ported forward: prevent cross-site scripting
1152           exploits.
1153
1154     - Mail delivery
1155         o Aliases have all been changed so that there's more
1156           consistency between the alias a message gets delivered to,
1157           and the script & queue runner that handles the message.
1158
1159           I've also renamed the mail wrapper script to `mailman' from
1160           `wrapper' to avoid collisions with other MLM's.  You /will/
1161           need to regenerate your alias files with bin/genaliases, and
1162           you may need to update your smrsh (Sendmail) configs.a
1163
1164           Bounces always go to listname-bounces now, since
1165           administration has been separated from bounce processing.
1166           listname-admin is obsolete.
1167
1168         o VERP support!  This greatly improves the accuracy of bounce
1169           detection.  Configuration variables which control this feature
1170           include VERP_DELIVERY_INTERVAL, VERP_PERSONALIZED_DELIVERIES,
1171           VERP_PASSWORD_REMINDERS, VERP_REGEXP, and VERP_FORMAT.  The
1172           latter two must be tuned to your MTA.
1173
1174         o A new alias mailman-loop@dom.ain is added which directs all
1175           output to the file $prefix/data/owner-bounces.mbox.  This is
1176           used when sending messages to the site list owners, as the
1177           final fallback for bouncing messages.
1178
1179         o New configuration variable POSTFIX_STYLE_VIRTUAL_DOMAINS
1180           which should be set if you are using the Postfix MTA and
1181           want Mailman to play nice with Postfix-style virtual
1182           domains.
1183
1184     - Miscellaneous
1185         o Better interoperability with Python 2.2.
1186
1187         o MailList objects now record the date (in seconds since
1188           epoch) that they were created.  This is in a hidden
1189           attribute `created_at'.
1190
1191         o bin/qrunner grows a -s/--subproc switch which is usually
1192           used only when it's started from mailmanctl.
1193
1194         o bin/newlist grows a -l/--language option so that the list's
1195           preferred language can be set from the command line.
1196
1197         o cron changes: admin reminders go out at 8am local time instead
1198           of 10pm local time.
1199
1200     - Pipermail archiver
1201         o MIME attachments are scrubbed out into separate files which
1202           can be viewed by following a link in the original article.
1203           Article contains an indication of the size of the
1204           attachment, its type, and other useful information.
1205
1206         o New script bin/cleanarch which can be used to `clean' an
1207           .mbox archive file by fixing unescaped embedded Unix From_
1208           lines.
1209
1210         o New configuration variable ARCHIVE_SCRUBBER in
1211           Defaults.py.in which names the module that Pipermail should
1212           use to scrub articles of MIME attachments.
1213
1214         o New configuration variable ARCHIVE_HTML_SANITIZER which
1215           describes how the scrubber should handle text/html
1216           attachments.
1217
1218         o PUBLIC_ARCHIVE_URL has change its semantics.  It is now an
1219           absolute url, with the hostname and listname parts
1220           interpolated into it on a per-list basis.
1221
1222         o Pipermail should now provide the proper character set in the
1223           Content-Type: header for archived articles.
1224
1225     - Internationalization
1226         o Czech translations by Dan Ohnesorg.
1227
1228         o The Hungarian charset has be fixed to be iso-8859-2.
1229
1230         o The member options login page now has a language selection
1231           widget.
1232
1233     - Building, configuration
1234         o email-0.96 package is required (see the misc directory).
1235
1236         o New recipes for integrating Mailman and Sendmail,
1237           contributed by David Champion.
1238
1239
1240 2.1 alpha 3 (22-Oct-2001)
1241
1242     - Realname support
1243         o Mailman now tracks a member's Real Name in addition to their
1244           email address.
1245
1246         o List members can now supply their Real Names when
1247           subscribing via the web.  Their Real Names are parsed from
1248           any thru-email subscriptions.
1249
1250         o Members can change their Real Names on their options page,
1251           and admins can change members' Real Names on the membership
1252           pages.  Mass subscribing accepts "email@dom.ain (Real Name)"
1253           and "Real Name <email@dom.ain>" entries, for both
1254           in-text-box and file-upload mass subscriptions.
1255
1256     - Filtering and Privacy
1257         o Reply-To: munging has been enhanced to allow a wider range
1258           of list policies.  You can now pre-strip any Reply-To:
1259           headers before adding list-specific ones (i.e. you can
1260           override or extend existing Reply-To: headers).  If
1261           stripping, the old headers are no longer saved on
1262           X-Reply-To:
1263
1264         o New sender moderation rules.  The old `posters',
1265           `member_only_posting', `moderated' and `forbidden_posters'
1266           options have been removed in favor of a new moderation
1267           scheme.  Each member has a personal moderation bit, and
1268           non-member postings can be automatically accepted, held for
1269           approval, rejected (bounced) or discarded.
1270
1271         o When membership rosters are private, responses to
1272           subscription (and other) requests are made more generic so
1273           that these processes can't be covertly mined for hidden
1274           addresses.  If a subscription request comes in for a user
1275           who is already subscribed, the user is notified of potential
1276           membership mining.
1277
1278         o When a held message is approved via the admindb page, an
1279           X-Moderated: header is added to the message.
1280
1281         o List admins can now set an unsubscribe policy which requires
1282           them to approve of member unsubscriptions.
1283
1284     - Web U/I
1285         o All web confirmations now require a two-click procedure,
1286           where the first click gives them a page that allows them to
1287           confirm or cancel their subscription.  It is bad form for an
1288           email click (HTTP GET) to have side effects.
1289
1290         o Lots of improvements for clarity.
1291
1292         o The Privacy category has grown three subcategories.
1293
1294         o The General options page as a number of subsection headers.
1295
1296         o The Passwords and Languages categories are now on separate
1297           admin pages.
1298
1299         o The admin subcategories are now formated as two columns in
1300           the top and bottom legends.
1301
1302         o When creating a list through the web, you can now specify
1303           the initial list of supported languages.
1304
1305         o The U/I for unsubscribing a member on the admin's membership
1306           page should be more intuitive now.
1307
1308         o There is now a separate configuration option for whether the
1309           goodbye_msg is sent when a member is unsubscribed.
1310
1311     - Performance
1312         o misc/mailman is a Unix init script, appropriate for
1313           /etc/init.d, and containing chkconfig hooks for systems that
1314           support it.
1315
1316         o bin/mailmanctl has been rewritten; the `restart' command
1317           actually works now.  It now also accepts -s, -q, and -u
1318           options.
1319
1320         o bin/qrunner has been rewritten too; it can serve the role of
1321           the old cron/qrunner script for those who want classic
1322           cron-invoked mail delivery.
1323
1324         o Internally, messages are now stored in the qfiles directory
1325           primarily as pickles.  List configuration databases are now
1326           stored as pickles too (i.e. config.pck).  bin/dumpdb knows
1327           how to display both pickles and marshals.
1328
1329     - Mail delivery
1330         o If a user's message is held for approval, they are sent a
1331           notification message containing a confirmation cookie.  They
1332           can use this confirmation cookie to cancel their own
1333           postings (if they haven't already been approved).
1334
1335         o When held messages are forwarded to an explicit address
1336           using the admindb page, it is done so  in a message/rfc822
1337           encapsulation.
1338
1339         o When a message is first held for approval, the notification
1340           sent to the list admin is a 3-part multipart/mixed.  The
1341           first part holds the notification message, the second part
1342           hold the original message, and the third part hold a cookie
1343           confirmation message, to which the admin can respond to
1344           approve or discard the message via email.
1345
1346         o In the mail->news gateway, you can define mail headers that
1347           must be modified or deleted before the message can be posted
1348           to the nntp server.
1349
1350         o The list admin can send an immediate urgent message to the
1351           entire list membership, bypassing digest delivery.  This is
1352           done by adding an Urgent: header with the list password.
1353           Urgent messages with an invalid password are rejected.
1354
1355         o Lists can now optionally personalize email messages, if the
1356           site admin allows it.  Personalized messages mean that the
1357           To: header includes the recipient's address instead of the
1358           list's address, and header and footer messages can contain
1359           user-specific information.  Note that only regular
1360           deliveries can currently be personalized.
1361
1362         o Message that come from Usenet but that have broken MIME
1363           boundaries are ignored.
1364
1365         o If the site administrator agrees, list owners have the
1366           ability to disable RFC 2369 List-* headers.
1367
1368         o There is now an API for an external process to post a
1369           message to a list.  This posting process can also specify an
1370           explicit list of recipients, in effect turning the mailing
1371           list into a "virtual list" with a fluid membership.  See
1372           Mailman/Post.py for details.
1373
1374     - Building/testing/configuration
1375         o mimelib is no longer required, but you must install the
1376           email package (see the tarball in the misc directory).
1377
1378         o An (as yet) incomplete test suite has been added.  Don't try
1379           running it in a production environment!
1380
1381         o Better virtual host support by adding a mapping from the
1382           host name given in cgi's HTTP_HOST/SERVER_NAME variable to
1383           the email host used in list addresses.  (E.g. www.python.org
1384           maps to @python.org).
1385
1386         o Specifying urls to external public archivers is more
1387           flexible.
1388
1389         o The filters/ subdirectory has been removed.
1390
1391         o There is now a `site list' which is a mailing list that must
1392           be created first, and from which all password reminders
1393           appear to come from.  It is recommended that this list be
1394           called "mailman@your.site".
1395
1396         o bin/move_list is no longer necessary (see the FAQ for
1397           detailed instructions on renaming a list).
1398
1399         o A new script bin/fix_url.py can be used with bin/withlist to
1400           change a list's web_page_url configuration variable (since
1401           it is no longer modifiable through the web).
1402
1403     - Internationalization
1404         o Support for German, Hungarian, Italian, Japanese, and
1405           Norwegian have been added.
1406
1407     - Miscellaneous
1408         o Lots of new bounce detectors.  Bounce detectors can now
1409           discard temporary bounce messages by returning a special
1410           Stop value.
1411
1412         o bin/withlist now sports a -q/--quiet flag.
1413
1414         o bin/add_members has a new -a/--admin-notify flag which can
1415           be used to inhibit list owner notification for each
1416           subscription.
1417
1418     - Membership Adaptors
1419         o Internally, mailing list memberships are accessed through a
1420           MemberAdaptor interface.  This would allow for integrating
1421           membership databases with external sources (e.g. Zope or
1422           LDAP), although the only MemberAdaptor currently implemented
1423           is a "classic" adaptor which stores the membership
1424           information on the MailList object.
1425
1426         o There's a new pipeline handler module called FileRecips.py
1427           which could be used to get all regular delivery mailing list
1428           recipients from a Sendmail-style :include: file (see List
1429           Extensibility bullet below).
1430
1431           This work was sponsored by Control.com
1432
1433     - List Extensibility
1434         o A framework has been added which can be used to specialize
1435           and extend specific mailing lists.  If there is a file
1436           called lists/<yourlist>/extend.py, it is execfile()'d after
1437           the MailList object is instantiated.  The file should
1438           contain a function extend() which will be called with the
1439           MailList instance.  This function can do all sorts of deep
1440           things, like modify the handler pipeline just for this list,
1441           or even strip out particular admin GUI elements (see below).
1442
1443         o All the admin page GUI elements are now separate
1444           components.  This provides greater flexibility for list
1445           customization.  Also, each GUI element will be given an
1446           opportunity to handle admin CGI form data.
1447
1448           This work was sponsored by Control.com
1449
1450     - Topic Filters
1451         o A new feature has been added called "Topic Filters".  A list
1452           administrator can create topics, which are essentially
1453           regular expression matches against Subject: and Keyword:
1454           headers (including such pseudo-headers if they appear in the
1455           first few lines of the body of a message).
1456
1457           List members can then `subscribe' to various topics, which
1458           allows them to filter out any messages that don't match a
1459           topic, or to filter out any message that does match a
1460           topic.  This can be useful for high volume lists where not
1461           everyone will be interested in every message.
1462
1463           This work was sponsored by Control.com
1464
1465 2.1 alpha 2 (11-Jul-2001)
1466
1467     - Building
1468         o mimelib 0.4 is now required.  Get it from
1469           http://mimelib.sf.net.  If you've installed an earlier
1470           version of mimelib, you must upgrade.
1471
1472         o /usr/local/mailman is now the default installation
1473           directory.  Use configure's --prefix switch to change it
1474           back to the default (/home/mailman) or any other
1475           installation directory of your choice.
1476
1477     - Security
1478         o Better definition of authentication domains.  The following
1479           roles have been defined: user, list-admin, list-moderator,
1480           creator, site-admin.
1481
1482         o There is now a separate role of "list moderator", which has
1483           access to the pending requests (admindb) page, but not the
1484           list configuration pages.
1485
1486         o Subscription confirmations can now be performed via email or
1487           via URL.  When a subscription is received, a unique (sha)
1488           confirm URL is generated in the confirmation message.
1489           Simply visiting this URL completes the subscription process.
1490
1491         o In a similar manner, removal requests (via web or email
1492           command) no longer require the password.  If the correct
1493           password is given, the removal is performed immediately.  If
1494           no password is given, then a confirmation message is
1495           generated.
1496
1497     - Internationalization
1498         o More I18N patches.  The basic infrastructure should now be
1499           working correctly.  Spanish templates and catalogs are
1500           included, and English, French, Hungarian, and Big5 templates
1501           are included.
1502
1503         o Cascading specializations and internationalization of
1504           templates.  Templates are now search for in the following
1505           order: list-specific location, domain-specific location,
1506           site-wide location, global defaults.  Each search location
1507           is further qualified by the language being displayed.  This
1508           means that you only need to change the templates that are
1509           different from the global defaults.
1510
1511           Templates renamed: admlogin.txt => admlogin.html
1512           Templates added: private.html
1513
1514     - Web UI
1515         o Redesigned the user options page.  It now sits behind an
1516           authentication so user options cannot be viewed without the
1517           proper password.  The other advantage is that the user's
1518           password need not be entered on the options page to
1519           unsubscribe or change option values.  The login screen also
1520           provides for password mail-back, and unsubscription w/
1521           confirmation.
1522
1523           Other new features accessible from the user options page
1524           include: ability to change email address (with confirmation)
1525           both per-list and globally for all list on virtual domain;
1526           global membership password changing; global mail delivery
1527           disable/enable; ability to suppress password reminders both
1528           per-list and globally; logout button.
1529
1530           [Note: the handle_opts cgi has gone away]
1531
1532         o Color schemes for non-template based web pages can be defined
1533           via mm_cfg.
1534
1535         o Redesign of the membership management page.  The page is now
1536           split into three subcategories (Membership List, Mass
1537           Subscription, and Mass Removal).  The Membership List
1538           subcategory now supports searching for member addresses by
1539           regular expression, and if necessary, it groups member
1540           addresses first alphabetically, and then by chunks.
1541
1542           Mass Subscription and Mass Removal now support file upload,
1543           with one address per line.
1544
1545         o Hyperlinks from the logos in the footers have been removed.
1546           The sponsors got too much "unsubscribe me!" spam from
1547           desperate user of Mailman at other sites.
1548
1549         o New buttons on the digest admin page to send a digest
1550           immediately (if it's non-empty), to start a new digest
1551           volume with the next digest, and to select the interval with
1552           which to automatically start a new digest volume (yearly,
1553           monthly, quarterly, weekly, daily).
1554
1555           DEFAULT_DIGEST_VOLUME_FREQUENCY is a new configuration
1556           variable, initially set to give a new digest volume monthly.
1557
1558         o Through-the-web list creation and removal, using a separate
1559           site-wide authentication role called the "list creator and
1560           destroyer" or simply "list creator".  If the configuration
1561           variable OWNERS_CAN_DELETE_THEIR_OWN_LISTS is set to 1 (by
1562           default, it's 0), then list admins can delete their own
1563           lists.
1564
1565           This feature requires an adaptor for the particular MTA
1566           you're using.  An adaptor for Postfix is included, as is a
1567           dumb adaptor that just emails mailman@yoursite with the
1568           necessary Sendmail style /etc/alias file changes.  Some MTAs
1569           like Exim can be configured to automatically recognize new
1570           lists.  The adaptor is selected via the MTA option in
1571           mm_cfg.py
1572
1573     - Email UI
1574         o In email commands, "join" is a synonym for
1575           "subscribe". "remove" and "leave" are synonyms for
1576           "unsubscribe".  New robot addresses are support to make
1577           subscribing and unsubscribing much easier:
1578
1579           mylist-join@mysite
1580           mylist-leave@mysite
1581
1582         o Confirmation messages have a shortened Subject: header,
1583           containing just the word "confirm" and the confirmation
1584           cookie.  This should help for MUAs that like to wrap long
1585           Subject: lines, messing up confirmation.
1586
1587         o Mailman now recognizes an Urgent: header, which, if it
1588           contains the list moderator or list administrator password,
1589           forces the message to be delivered immediately to all
1590           members (i.e. both regular and digest members).  The message
1591           is also placed in the digest.  If the password is incorrect,
1592           the message will be bounced back to the sender.
1593
1594     - Performance
1595         o Refinements to the new qrunner subsystem which preserves
1596           FIFO order of messages.
1597
1598         o The qrunner is no longer started from cron.  It is started
1599           by a Un*x init-style script called bin/mailmanctl (see
1600           below).  cron/qrunner has been removed.
1601
1602     - Command line scripts
1603         o bin/mailmanctl script added, which is used to start, stop,
1604           and restart the qrunner daemon.
1605
1606         o bin/qrunner script added which allows a single sub-qrunner
1607           to run once through its processing loop.
1608
1609         o bin/change_pw script added (eases mass changing of list
1610           passwords).
1611
1612         o bin/update grows a -f switch to force an update.
1613
1614         o bin/newlang renamed to bin/addlang; bin/rmlang removed.
1615
1616         o bin/mmsitepass has grown a -c option to set the list
1617           creator's password.  The site-wide `create' web page is
1618           linked to from the admin overview page.
1619
1620         o bin/newlist's -o option is removed.  This script also grows
1621           a way of spelling the creation of a list in a specific
1622           virtual domain.
1623
1624         o The `auto' script has been removed.
1625
1626         o bin/dumpdb has grown -m/--marshal and -p/--pickle options.
1627
1628         o bin/list_admins can be used to print the owners of a mailing list.
1629
1630         o bin/genaliases regenerates from scratch the aliases and
1631           aliases.db file for the Postfix MTA.
1632
1633     - Archiver
1634         o New archiver date clobbering option, which allows dates to
1635           only be clobber if they are outrageously out-of-date
1636           (default setting is 15 days on either side of received
1637           timestamp).  New configuration variables:
1638
1639           ARCHIVER_CLOBBER_DATE_POLICY
1640           ARCHIVER_ALLOWABLE_SANE_DATE_SKEW
1641
1642           The archived copy of messages grows an X-List-Received-Date:
1643           header indicating the time the message was received by
1644           Mailman.
1645
1646         o PRIVATE_ARCHIVE_URL configuration variable is removed (this
1647           can be calculated on the fly, and removing it actually makes
1648           site configuration easier).
1649
1650     - Miscellaneous
1651         o Several new README's have been added.
1652
1653         o Most syslog entries for the qrunner have been redirected to
1654           logs/error.
1655
1656         o On SIGHUP, qrunner will re-open all its log files and
1657           restart all child processes.  See "bin/mailmanctl restart".
1658
1659     - Patches and bug fixes
1660         o SF patches and bug fixes applied: 420396, 424389, 227694,
1661           426002, 401372 (partial), 401452.
1662
1663         o Fixes in 2.0.5 ported forward:
1664             Fix a lock stagnation problem that can result when the
1665             user hits the `stop' button on their browser during a
1666             write operation that can take a long time (e.g. hitting
1667             the membership management admin page).
1668
1669         o Fixes in 2.0.4 ported forward:
1670             Python 2.1 compatibility release.  There were a few
1671             questionable constructs and uses of deprecated modules
1672             that caused annoying warnings when used with Python 2.1.
1673             This release quiets those warnings.
1674
1675         o Fixes in 2.0.3 ported forward:
1676             Bug fix release.  There was a small typo in 2.0.2 in
1677             ListAdmin.py for approving an already subscribed member
1678             (thanks Thomas!).  Also, an update to the OpenWall
1679             security workaround (contrib/securelinux_fix.py) was
1680             included.  Thanks to Marc Merlin.
1681
1682 2.1 alpha 1 (04-Mar-2001)
1683
1684     - Python 2.0 or newer required.  Also required is `mimelib' a new
1685       library for handling MIME documents.  This will be bundled in
1686       future releases, but for now, you must download and install it
1687       (using Python's distutils) from
1688
1689       http://barry.wooz.org/software/Code/mimelib-0.2.tar.gz
1690
1691       You need mimelib 0.2 or better.
1692
1693     - Redesigned qrunner subsystem.  Now there are multiple message
1694       queues, and considerable flexibility in file formats for
1695       integration with external systems.  The current crop of queues
1696       include:
1697
1698       archive -- for posting messages to an archiver
1699       commands -- for incoming email commands and bounces
1700       in -- for list-destined incoming email
1701       news -- for messages outgoing to a nntp server
1702       out -- for messages outgoing to a smtp server
1703       shunt -- for messages that trigger unexpected exceptions in Mailman
1704       virgin -- for messages that are generated by Mailman
1705
1706       cron/qrunner is now a long running script that forks off
1707       sub-runners for each of the above queues.  qrunner still plays
1708       nice with cron, but it is expected to be started by init at some
1709       point in the future.  Some support exists for parallel
1710       processing of messages in the queues.
1711
1712     - Support for internationalization support merged in.  Original
1713       work done by Juan Carlos Rey Anaya and Victoriano Giralt.  I've
1714       tested about 90% of the web side, 50% of the email, and 50% of
1715       the command line / cron scripts.
1716
1717       New scripts: bin/newlang, bin/rmlang
1718
1719     - New delivery script `auto' for automatic integration with the
1720       Postfix MTA.
1721
1722     - A bunch of new bounce detectors.
1723
1724     Changes ported from Mailman 2.0.2 and 2.0.1:
1725
1726     - A fix for a potential privacy exploit where a clever list
1727       administrator could gain access to user passwords.  This doesn't
1728       allow them to do much more harm to the user then they normally
1729       could, but they still shouldn't have access to the passwords.
1730
1731     - In the admindb page, don't complain when approving a
1732       subscription of someone who's already on the list (SF bug
1733       #222409 - Thomas Wouters).
1734
1735       Also, quote for HTML the Subject: text printed for held
1736       messages, otherwise messages with e.g. "Subject: </table>" could
1737       royally screw page formatting.
1738
1739     - Docstring fix bin/newlist to remove mention of "immediate"
1740       argument (Thomas Wouters).
1741
1742     - Fix for bin/update when PREFIX != VAR_PREFIX (SF bug #229794 --
1743       Thomas Wouters).
1744
1745     - Bug fix release, namely fixes a buglet in bin/withlist affecting
1746       the -l and -r flags; also a problem that can cause qrunner to
1747       stop processing mail after disk-full events (SourceForge bug
1748       127199).
1749
1750 2.0 final (21-Nov-2000)
1751
1752     No changes from rc3.
1753
1754 2.0 release candidate 3 (16-Nov-2000)
1755
1756     - By popular demand, Reply-To: munging policy is now to always
1757       override any Reply-To: header in the original message, if
1758       reply_goes_to_list is set to "This list" or "Explicit Address"
1759
1760     - bin/newlist given -q/--quiet flag instead of the <immediate>
1761       positional argument
1762
1763     - Hopefully last fix to DEFAULT_URL not ending in a slash
1764       sensitivity
1765
1766     - 2.0rc2 buglets fixed:
1767         o newlist argument parsing
1768         o updating with unlocked lists
1769         o HyperArch.py traceback when there's no
1770           Content-Transfer-Encoding: header
1771
1772     - SourceForge bugs fixed:
1773         122358 (qmail-to-mailman.py listname case folding)
1774
1775     - SourceForge patches applied:
1776         102373 (qmail-to-mailman.py listname case folding)
1777
1778 2.0 release candidate 2 (10-Nov-2000)
1779
1780     - Documentation updates: start at admin/www/index.html
1781
1782     - bin/withlist accepts additional command line arguments when used
1783       with the --run flag; bin/mmsitepass and bin/newlist accept
1784       -h/--help flags
1785
1786     - bin/newlist has a -o/--output flag to append /etc/aliases
1787       suggestions to a specified file
1788
1789     - SourceForge bugs fixed:
1790         116615 (README.BSD update), 117015 (duplicate messages on
1791         moderated posts), 117548 (exception in HyperArch.py), 117682
1792         (typos), 121185 (vsnprintf signature), 121591 and 122017
1793         (bogus link after web unsubscribe), 121811 (`subscribe' in
1794         Subject: doesn't get archived)
1795
1796     - SourceForge patches applied:
1797         101812 (securelinux_fix.py contrib), 102097 (fix for bug
1798         117548), 102211 (additional args for withlist), 102268 (case
1799         insensitive Content-Transfer-Encoding:)
1800
1801 2.0 release candidate 1 (23-Oct-2000)
1802
1803     - Bug fixes and security patches.
1804
1805     - Better html rendition of articles in non us-ascii charsets
1806       (Jeremy Hylton).  See VERBATIM_ENCODING variable in
1807       Defaults.py.in for customization.
1808
1809 2.0 beta 6 (22-Sep-2000)
1810
1811     - Building
1812         o Tested with Python 1.5.2, Python 1.6, and Python 2.0 beta 1.
1813           Conducted on RH Linux 6.1 only, but should work
1814           cross-platform.
1815
1816         o Configure now accepts --with-username, --with-groupname,
1817           --with-var-prefix flags.  See `configure --help' or the
1818           INSTALL file for details.
1819
1820         o Setting the CFLAGS environment variable before invoking
1821           configure now works.
1822
1823         o The icons are now copied into $prefix/icons at install time.
1824           Patch by David Champion.
1825
1826     - Standards
1827         o Compliance with RFC 2369 (List-*: headers).  Patch by
1828           Darrell Fuhriman.  List-ID: header is kept for historical
1829           reasons.
1830
1831         o Fixes by Jeremy Hylton to Pipermail in support of non-ASCII
1832           charsets, based on the Content-Type: and encoded-words in
1833           the original message.  Mail headers are now decoded as per
1834           RFC 2047.
1835
1836         o Many more bounce formats are detected: Microsoft's SMTPSVC,
1837           Compuserve, GroupWise, SMTP32, and the more generic
1838           SimpleMatch (which catches lots of similar but slightly
1839           different formats).
1840
1841     - Defaults
1842         o Email addresses can now be obscured in Pipermail archives by
1843           setting mm_cfg.ARCHIVER_OBSCURES_EMAILADDRS to 1 (obscuring
1844           is turned off by default).  Patch provided by Chris Snell.
1845
1846         o The default NNTP host can now be set by editing
1847           mm_cfg.DEFAULT_NNTP_HOST.  Patch by David Champion.
1848
1849         o The default archiving mode (public/private) can now be set
1850           by editing mm_cfg.DEFAULT_ARCHIVE.  Patch by Ted Cabeen.
1851
1852     - Web UI
1853         o The variable details pages in the administrators interface
1854           is now `live', i.e. there's a submit button on the details
1855           page.
1856
1857         o A link to the administrative interface is placed in the
1858           footer of the general user pages (authentication still
1859           required, of course!)
1860
1861         o The user options change results page has a link back to the
1862           user's main page.
1863
1864         o In the admindb page (for dealing with held postings), the
1865           default forward address is now listname-owner instead of
1866           listname-admin.  This avoids bounce detection on the
1867           forwarded message.
1868
1869     - Miscellaneous
1870         o Fixed config.db corruption problem when disk-full errors are
1871           encountered.
1872
1873         o Command line scripts accept list names case-insensitively.
1874
1875         o bin/remove_members takes a -a flag to remove all members of
1876           a list in one fell swoop.
1877
1878         o List admin passwords must be non-empty.
1879
1880         o Mailman generated passwords are slightly more mnemonic, and
1881           shouldn't have confusing character selections (i.e. `i'
1882           only, but no `1' or `l').
1883
1884         o Crossposting to two gated mailing lists should be fixed.
1885
1886         o Many other bug fixes and minor web UI improvements.
1887
1888 2.0 beta 5 (01-Aug-2000)
1889
1890     - Bug fix release.  This includes a fix for a small security hole
1891       which could be exploited to gain mailman group access by a local
1892       user (not a mail or web user).
1893
1894     - As part of the fix for the "cookie reauthorization" bug, only
1895       session cookies are used now.  This means that administrative
1896       and private archive cookies expire only when the browser session
1897       is quit, however an explicit "Logout" button has been added.
1898
1899 2.0 beta 4 (06-Jul-2000)
1900
1901     - Bug fix release.
1902
1903 2.0 beta 3 (29-Jun-2000)
1904
1905     - Delivery mechanism (qrunner) refined to support immediate
1906       queuing, queuing directly from MTA, and queuing on any error
1907       along the delivery pipeline.  This means 1) that huge lists
1908       can't time out the MTA's program delivery channel; 2) it is much
1909       harder to completely lose messages; 3) eventually, qrunner will
1910       be elaborated to meter delivery to the MTA so as not to swamp
1911       it.  The tradeoff is in more disk I/O since every message coming
1912       into the system (and most that are generated by the system) live
1913       on disk for some part of their journey through Mailman.
1914
1915       For now, see the Default.py variables QRUNNER_PROCESS_LIFETIME
1916       and QRUNNER_MAX_MESSAGES for primitive resource management.
1917
1918       The API to the pipeline handler modules has changed.  See
1919       Mailman/Handlers/HandlerAPI.py for details.
1920
1921     - Revamped admindb web page: held messages are split into headers
1922       and bodies so they are easier to vette; admins can now also
1923       preserve a held message (for spam evidence gathering) or forward
1924       the message to a specified email address; disposition of held
1925       messages can be deferred; held messages have a more context
1926       meaningful default rejection message.
1927
1928     - Change to the semantics for `acceptable_aliases' list
1929       configuration variable, based on suggestions by Harald Meland.
1930
1931     - New mm_cfg.py variables NNTP_USERNAME and NNTP_PASSWORD can be
1932       set on a site-wide basis if connection to your nntpd requires
1933       authentication.
1934
1935     - The list attribute `num_spawns' has been removed.  The mm_cfg.py
1936       variables MAX_SPAWNS, and DEFAULT_NUM_SPAWNS removed too.
1937
1938     - LIST_LOCK_LIFETIME cranked to 5 hours and LIST_LOCK_TIMEOUT
1939       shortened to 10 seconds.  QRUNNER_LOCK_LIFETIME cranked up to 10
1940       hours.  This should decrease the changes for bogus and harmful
1941       lock breaking.
1942
1943     - Resent-to: is now one of the headers checked for explicit
1944       destinations.
1945
1946     - Tons more bounce formats are recognized.  The API to the bounce
1947       modules has changed.
1948
1949     - A rewritten LockFile module which should fix most (hopefully all)
1950       bugs in the locking machinery.  Many improvements suggested by
1951       Thomas Wouters and Harald Meland.
1952
1953     - Experimental support (disabled by default) for delivering SMTP
1954       chunks to the MTA via multiple threads.  Your Python executable
1955       must have been compiled with thread support enabled, and you
1956       must set MAX_DELIVERY_THREADS in mm_cfg.py.  Note that this may
1957       not improve your overall system performance.
1958
1959     - Some changes and additions to scripts: bin/find_member now
1960       supports a -w/--owner flag to match regexps against mailing list
1961       owners; bin/find_member now supports multiple regexps;
1962       cron/gate_news command line option changes; new script
1963       bin/dumbdb for debugging purposes; bin/clone_member can now also
1964       remove the old address and change change the list owner
1965       addresses.
1966
1967     - The News/Mail gateway admin page has a button that lets you do
1968       an explicit catchup of the newsgroup.
1969
1970     - The CVS repository has been moved out to SourceForge.  For more
1971       information, see the project summary at
1972
1973       http://sourceforge.net/project/?group_id=103
1974
1975     - Lots 'o bug fixes and some performance improvements.
1976
1977 2.0 beta 2 (07-Apr-2000)
1978
1979     - Rewritten gate_news cron script which should be more efficient
1980       and avoid race and locking problems.  Each list now maintains
1981       its own watermark, and when you use the admin CGI script to turn
1982       on gating from Usenet->mail, an automatic mass catch up is done
1983       to avoid flooding the mailing list.  cron/gate_news's command
1984       line interface has also changed.  See its docstring for
1985       details.
1986
1987     - A new cron script called qrunner has been added to retry message
1988       deliveries that fail because of temporary smtpd problems.
1989
1990     - New command line script called bin/list_lists which does exactly
1991       that: lists all the mailing lists on the system (much like the
1992       listinfo CGI does).
1993
1994     - bin/withlist is now directly executable, however if you want to
1995       use python -i, you must still explicitly invoke it.
1996       bin/withlist also now cleans up after itself by unlocking any
1997       locked lists.  It does NOT save any dirty lists though - you
1998       must do this explicitly.
1999
2000     - $prefix permissions (and all subdirs) must now be 02775.
2001       bin/check_perms has been updated to fix all the subdir
2002       permissions.
2003
2004     - "make update" (a.k.a. bin/update) is run automatically when you
2005       do a "make install"
2006
2007     - The CGI driver script now puts information about the Python
2008       environment into the logs/error file (but not the diagnostic web
2009       page).
2010
2011     - Bug fixes and some performance improvements
2012
2013 2.0 beta 1 (19-Mar-2000)
2014
2015     - Python 1.5.2 (or newer) is now required.
2016
2017     - A new bundled auto-responder has been added.  You can now
2018       configure an autoresponse text for each list's primary
2019       addresses:
2020
2021         listname@yourhost.com -- the general posting address
2022         listname-request@...  -- the automated "request bot" address
2023         listname-admin@...    -- the human administrator address
2024
2025     - The standard UI now includes three logos at the bottom of the
2026       page: Dragon's Mailman logo, the Python Powered logo, and the
2027       GNU logo.  All point to their respective home pages.
2028
2029     - It is now possible to set the Reply-To: field on lists to an
2030       arbitrary address.  NOTE: Reply-To: munging is generally
2031       considered harmful!  However for some read-only lists, it is
2032       useful to direct replies to a parallel discussion list.
2033
2034     - There is a new message delivery architecture which uses a
2035       pipeline processor for incoming and internally generated
2036       messages.  Mailman no longer contains a bundled bulk-mailer;
2037       instead message delivery is handled completely by the MTA.  Most
2038       MTAs give a high enough priority to connections from the
2039       localhost that mail will not be lost because of system load, but
2040       this is not guaranteed (or handled) by Mailman currently.  Be
2041       careful also if your smtpd is on a different host than the
2042       Mailman host.  In practice, mail lossage has not be observed.
2043
2044       For this reason cron/run_queue is no longer needed (see the
2045       UPGRADING file for details).
2046
2047       Also, you can choose whether you want direct smtp delivery, or
2048       delivery via the command line to a sendmail-compatible daemon.
2049       You can also easily add your own delivery module.  See
2050       Mailman/Defaults.py for details.
2051
2052     - A similar pipeline architecture for the parsing of bounce
2053       messages has been added.  Most common bounce formats are now
2054       handled, including Qmail, Postfix, and DSN.  It is now much
2055       easier to add new bounce detectors.
2056
2057     - The approval pending architecture has also been revamped.
2058       Subscription requests and message posts waiting for admin
2059       approval are no longer kept in the config.db file, but in a
2060       separate requests.db file instead.
2061
2062     - Finally made consistent the use of Sender:/From:/From_ in the
2063       matching of headers for such things as member-post-only.  Now,
2064       if USE_ENVELOPE_SENDER is true, Sender: will always be chosen
2065       over From:, however the default has been changed to
2066       USE_ENVELOPE_SENDER false so that From: is always chosen over
2067       Sender:.  In both cases, if no header is found, From_ (i.e. the
2068       envelope sender is used).  Note that the variable is now
2069       misnamed!  Most people want From: matching anyway and any are
2070       easily spoofable.
2071
2072     - New scripts bin/move_list, bin/config_list
2073
2074     - cron/upvolumes_yearly, cron/upvolumes_monthly, cron/archive,
2075       cron/run_queue all removed.  Edit your crontab if you used these
2076       scripts.  Other scripts removed: contact_transport, deliver,
2077       dumb_deliver.
2078
2079     - Several web UI improvements, especially in the admin page.
2080
2081     - Remove X-pmrqc: headers to prevent return reciepts for Pegasus
2082       mail users.
2083
2084     - Security patch when using external archivers.
2085
2086     - Honor "X-Archive: No" header by not putting this message in the
2087       archive.
2088
2089     - Changes to the log file format.
2090
2091     - The usual bug fixes.
2092
2093 1.1 (05-Nov-1999)
2094
2095     - All GIFs removed.  See http://www.gnu.org/philosophy/gif.html
2096       for the reason why.
2097
2098     - Improvements to the Pipermail archiver which make things faster.
2099       Primary change is that the .txt files are not gzipped on every
2100       posted message.  Instead, use the new cron script `nightly_gzip'
2101       to gzip the .txt file in batches (this means that the .txt file
2102       will lag behind the on-line archives a little).
2103
2104     - From the C drivers programs, Python is invoked with the -S
2105       option.  This tells Python to avoid importing the site module,
2106       which can improve start up time of the Python process
2107       considerably.  Note that the command line script invocation has
2108       not been changed.
2109
2110     - New configuration variables PUBLIC_EXTERNAL_ARCHIVER and
2111       PRIVATE_EXTERNAL_ARCHIVER which can contain a shell command
2112       string for os.popen().  This can be used to invoke an external
2113       archiver instead of the bundled Pipermail archiver.  See
2114       Defaults.py for details.
2115
2116     - new script `bin/find_member' which can be used to search for a
2117       member by regular expression.
2118
2119     - More child processes are reaped, which should eliminate most
2120       occurrences of zombie processes.
2121
2122     - A few small miscellaneous bug fixes (including PR#99, PR#107)
2123       and improvements to the file locking algorithms.
2124
2125 1.0 (30-Jul-1999)
2126
2127     - Configure script now allows $PREFIX (by default /home/mailman)
2128       to be permissions 02755.  Also, configure now tests for
2129       vsnprintf()
2130
2131     - Workaround, taken from GNU screen, for systems missing
2132       vsnprintf()
2133
2134     - Return-Receipt-To: and Disposition-Notification-To: headers are
2135       always removed from posted messages (they can be used to troll
2136       for list membership).
2137
2138     - Workaround for MSIE4.01 (and possibly other versions) bug in the
2139       handling of cookies.
2140
2141     - A small collection of other bug fixes.
2142
2143 1.0rc3 (10-Jul-1999)
2144
2145     - new script bin/check_perms which checks (and optionally fixes)
2146       the permissions and group ownerships of the files in your
2147       Mailman installation.
2148
2149     - Removed a bottleneck in the archiving code that was causing
2150       performance problems on highly loaded servers.
2151
2152     - The code that saves a list's state and configuration database
2153       has been made more robust.
2154
2155     - Additional exception handlers have been added in several places
2156       to alleviate problems with Mailman bombing out when it really
2157       would be better to print/log a helpful message.
2158
2159     - The "password" mail command will now mail back the sender's
2160       subscription password when given with no arguments.
2161
2162     - The embarrassing subject-prefixing bug present in rc2 has been
2163       fixed.
2164
2165     - A small (but nice :) collection of other squashed bugs.
2166
2167 1.0rc2 (14-Jun-1999)
2168
2169     - A security flaw in the CGI cookie mechanisms was discovered --
2170       the Mailman-issued cookies were easily spoofable, implying that
2171       e.g. admin access to all Mailman lists via the web interface
2172       could be compromised.  This flaw has now been fixed.
2173
2174     - Handling of SMTP errors has been improved.
2175
2176     - Both "Mass Subscription" via web admin interface and
2177       bin/add_members have been greatly sped up.
2178
2179     - autoconf check for syslog has been revamped, and is now verified
2180       to work on SCO OpenServer 5.  If syslog can't be found, the C
2181       wrappers will compile, but without any syslog calls.
2182
2183     - Various other bug fixes.
2184
2185 1.0rc1 (04-May-1999)
2186
2187     - There is a new Mailman logo, contributed by The Dragon De
2188       Monsyne.  Please read the INSTALL file for information about
2189       installing the logo in a place your Web server can find it.
2190
2191     - USE_ENVELOPE_SENDER is now set to 0 by default.  Turning this on
2192       caused problems for too many users; lists restricted to
2193       member-only posts were not matching the addresses correctly.
2194
2195     - A revamped bin/withlist to be a little more useful.
2196
2197     - A revamped cron/mailpasswds which groups users by virtual hosts.
2198
2199     - The usual assortment of bug fixes.
2200
2201 1.0b11 (03-Apr-1999)
2202
2203     - Bug fixes and improvements for case preservation of subscribed
2204       addresses.  The DATA_FILE_VERSION has been bumped to 14.
2205
2206     - New script bin/withlist, useful for interactive debugging.
2207
2208 1.0b10 (26-Mar-1999)
2209
2210     - New script bin/sync_members which can be used to synchronize a
2211       list's membership against a flat (e.g. sendmail :include: style)
2212       file.
2213
2214     - bin/add_members and bin/remove_members now accept addresses on
2215       the command line with `-' as the value for the -d and -n
2216       options.
2217
2218     - Added variable USE_ENVELOPE_SENDER to Defaults.py for site-wide
2219       configuration of address matching scheme.  With this variable
2220       set to true, the envelope sender (e.g. Unix "From_" header) is
2221       used to match addresses, otherwise the From: header is used.
2222       Envelope sender matching seems not to work on many systems.
2223       This variable is currently defaulted to 1, but may change to 0
2224       for the final release.
2225
2226     - Reorganization of the membership management admin page.  Also
2227       member addresses are linked to their options page.  Only the
2228       `General' category has the admin password change form.
2229
2230     - Major reorganization of email command handling and responses.
2231       `notmetoo' is the preferred email command instead of `norcv',
2232       although the latter is still accepted as an argument.  If more
2233       than 5 errors are found in the message, command processing is
2234       halted.
2235
2236     - User options page now shows the user their case-preserved
2237       subscribed address as well.
2238
2239     - The usual assortment of bug fixes.
2240
2241 1.0b9 (01-Mar-1999)
2242
2243     - New bin scripts: clone_member, list_members, add_members (a
2244       consolidation of convertlist and populate_new_list which have
2245       been removed).
2246
2247     - Two new readmes have been added: README.LINUX and README.QMAIL
2248
2249     - New configure option --with-cgi-ext which can be used if your
2250       Web server requires extensions on CGI scripts.  The extension
2251       must include a dot (e.g. --with-cgi-ext=".cgi").
2252
2253     - Many bug fixes, including the setgid problem that was causing
2254       mail to be lost on some versions of Linux.
2255
2256 1.0b8 (14-Jan-1999)
2257
2258      - Bug fixes and workarounds for certain Linuxes.
2259
2260      - Illegal addresses are no longer allowed to be subscribed, from
2261        any interface.
2262
2263 1.0b7 (31-Dec-1998)
2264
2265      - Many, many bug fixes.  Some performance improvements for large
2266        lists.  Some improvements in the Web interfaces.  Some security
2267        improvements.  Improved compatibility with Python 1.5.
2268
2269      - bin/convert_list and bin/populate_new_list have been replaced
2270        by bin/add_members.
2271
2272      - Admins can now get notification on subscriptions and
2273        unsubscriptions.  Posts are now logged.
2274
2275      - The username portion of email addresses are now case-preserved
2276        for delivery purposes.  All other address comparisions are
2277        case-insensitive.
2278
2279      - New default SMTP_MAX_RCPTS that limits the number of "RCPT TO"
2280        SMTP commands that can be given for a single message.  Most
2281        MTAs have some hard limit.
2282
2283      - "Precedence: bulk" header and "List-id:" header are now added
2284        to all outgoing messages.  The latter is not added if the
2285        message already has a "List-id:" header.  See RFC 2046 and
2286        draft-chandhok-listid-02 for details.
2287
2288      - The standard (as of Python 1.5.2) smtplib.py is now used.
2289
2290      - The install process now compiles all the .py files in the
2291        installation.
2292
2293      - Versions of the Mailman papers given at IPC7 and LISA-98 are
2294        now included.
2295
2296 1.0b6 (07-Nov-1998)
2297
2298      - Archiving is (finally) back in.
2299
2300      - Administrivia filter added.
2301
2302      - Mail queue mechanism revamped with better concurrency control.
2303
2304      - For recipients that have estmp MTAs, set delivery notification
2305        status so that only delivery failure notices are sent out,
2306        inhibiting 4 hour and N day warning notices.
2307
2308      - Now expire old unconfirmed subscription requests, rather than
2309        keeping them forever.
2310
2311      - Added proposed standard List-Id: header, and our own
2312        X-MailmanVersion header.
2313
2314      - Prevent havoc from attempts to subscribe a list to itself.  (!)
2315
2316      - Refine mail command processing to prevent loops.
2317
2318      - Pending subscription DB redone with better locking and cleaner
2319        interface.
2320
2321      - posters functionality expanded.
2322
2323      - Subscription policy more flexible, sensible, and
2324        site-configurable.
2325
2326      - Various and sundry bug fixes.
2327
2328 1.0b5 (27-Jul-1998)
2329
2330     - New file locking that should be portable and work w/ NFS.
2331
2332     - Better use of packages.
2333
2334     - Better error logging and reporting.
2335
2336     - Less startup overhead.
2337
2338     - Various and sundry bug fixes.
2339
2340
2341 1.0b4 (03-Jun-1998)
2342
2343     - A configure script for easy installation (Barry Warsaw)
2344
2345     - The ability to install Mailman to locations other than
2346       /home/mailman (Barry Warsaw)
2347
2348     - Use cookies on the admin pages (also hides admin pages from
2349       others) (Scott Cotton)
2350
2351     - Subscription requests send a request for confirmation, which may
2352       be done by simply replying to the message (Scott Cotton)
2353
2354     - Facilities for gating mail to a newsgroup, and for gating a
2355       newsgroup to a mailing list (John Viega)
2356
2357     - Contact the SMTP port instead of calling sendmail (primarily for
2358       portability) (John Viega)
2359
2360     - Changed all links on web pages to relative links where appropriate.
2361       (John Viega)
2362
2363     - Use MD5 if crypt is not available (John Viega)
2364
2365     - Lots of fixing up of bounce handling (Ken Manheimer)
2366
2367     - General UI polishing (Ken Manheimer)
2368
2369     - mm_html: Make it prominent when the user's delivery is disabled
2370       on his option page. (Ken Manheimer)
2371
2372     - mallist:DeleteMember() Delete the option setings if any. (Ken
2373       Manheimer)
2374
2375 1.0b3 (03-May-1998)
2376
2377     - mm_message:Deliverer.DeliverToList() added missing newline
2378       between the headers and message body.  Without it, any sequence
2379       of initial body lines that _looked_ like headers ("Sir: Please
2380       excuse my impertinence, but") got treated like headers.
2381
2382     - Fixed typo which broke subscription acknowledgement message
2383       (thanks to janne sinkonen for pointing this out promptly after
2384       release).  (Anyone who applied my intermediate patch will
2385       probably see this one trigger patch'es reversed-patch
2386       detector...)
2387
2388     - Fixed cgi-wrapper.c so it doesn't segfault when invoked with
2389       improper uid or gid, and generally wrappers are cleaned up a
2390       bit.
2391
2392     - Prevented delivery-failure notices for misdirected subscribe-
2393       confirmation requests from bouncing back to the -request addr,
2394       and then being treated as failing requests.
2395
2396       Implemented two measures.  Set the reply-to for the
2397       confirmation- request to the -request addr, and the sender to be
2398       the list admin.  This way, bounces go to list admin instead of
2399       to -request addr.  (Using the errors-to header wasn't
2400       sufficient.  Thanks, barry, for pointing out the use of sender
2401       here.)  Second, ignore any mailcommands coming from postmaster
2402       or non-login system type accounts (mailer-daemon, daemon,
2403       postoffice, etc.)
2404
2405     - Reenabled admin setting of web_page_url - crucial for having
2406       lists use alternate names of a host that occupies multiple
2407       addresses.
2408
2409     - Fixed and refined admin-options help mechanism.  Top-level visit
2410       to general-category (where the "general" isn't in the URL) was
2411       broken.  New help presentation shows the same row that shows on
2412       the actual options page.
2413
2414     - cron/crontab.in crontab template had wrong name for senddigests.
2415
2416     - Default digest format setting, as distributed, is now non-MIME,
2417       on urging of reasoned voices asserting that there are still
2418       enough bad MIME implementations in the world to be a nuisance to
2419       too many users if MIME is the default.  Sigh.
2420
2421     - MIME digests now preserve the structure of MIME postings,
2422       keeping attachments as attachments, etc.  They also are more
2423       structured in general.
2424
2425     - Added README instructions explaining how to determine the right
2426       UID and GID settings for the wrapper executables, and improved
2427       some of the explanations about exploratory interaction
2428       w/mailman.
2429
2430     - Removed the constraint that subscribers have their domain
2431       included in a static list in the code.  We might want to
2432       eventually reincorporate the check for the sake of a warning
2433       message, to give a heads up to the subscriber, but try delivery
2434       anyway...
2435
2436     - Added missing titles to error docs.
2437
2438     - Improved several help details, including particularly explaining
2439       better how real_name setting is used.
2440
2441     - Strengthened admonition against setting reply_goes_to_list.
2442
2443     - Added X-BeenThere header to postings for the sake of prevention
2444       of external mail loops.
2445
2446     - Improved handling of bounced messages to better recognize
2447       members address, and prevent duplicate attempts to react (which
2448       could cause superfluous notices to administrator).
2449
2450     - Added __delitem__ method to mm_message.OutgoingMessage, to fix
2451       the intermediate patch posted just before this one.
2452
2453     - Using keyword substitution format for more message text (ie,
2454       "substituting %(such)s into text" % {'such': "something"}) to
2455       make the substitutions less fragile and, presumably, easier to
2456       debug.
2457
2458     - Removed hardwired (and failure-prone) /tmp file logging from
2459       answer.majordomo_mail, and generally spiffed up following janne
2460       sinkkonen's lead.
2461
2462 1.0b2 (13-Apr-1998)
2463 1.0b1 (09-Apr-1998)
2464
2465   Web pages much more polished
2466    - Better organized, text more finely crafted
2467    - Easier, more refined layout
2468    - List info and admin interface overviews, enumerate all public lists
2469      (via, e.g., http://www.python.org/mailman/listinfo - sans the
2470      specific list)
2471    - Admin interface broken into sections, with help elaboration for
2472      complicated configuration options
2473
2474   Mailing List Archives
2475    - Integrated with a newer, *much* improved, external pipermail - to be
2476      found at http://starship.skyport.net/crew/amk/maintained/pipermail.html
2477    - Private archives protected with mailing list members passwords,
2478      cookie-fied.
2479
2480   Spam prevention
2481    - New spam prevention measures catch most if not all spam without
2482      operator intervention or general constraints on who can post to
2483      list:
2484        require_explicit_destination option imposes hold of any postings
2485        that do not have the list name in any of the to or cc header
2486        destination addresses.  This catches the vast majority of random
2487        spam.
2488      Other options (forbidden_posters, bounce_matching_headers) provide
2489      for filtering of known transgressors.
2490    - Option obscure_addresses (default on) causes mailing list subscriber
2491      lists on the web to be slightly mangled so they're not directly
2492      recognizable as email address by web spiders, which might be
2493      seeking targets for spammers.
2494
2495   Site configuration arrangement organized - in mailman/mailman/modules:
2496    - When installing, create a mailman/modules/mm_cfg.py (if there's not
2497      one already there), using mm_cfg.py.dist as a template.
2498      mm_default.py contains the distributed defaults, including
2499      descriptions of the values.  mm_cfg.py does a 'from mm_defaults.py
2500      import *' to get the distributed defaults.  Include settings in
2501      mm_cfg.py for any values in mm_defaults.py that need to be
2502      customized for your site, after the 'from .. import *'.
2503    See mm_cfg.py.dist for more details.
2504
2505   Logging
2506    - Major operations (subscription, admin approval, bounce,
2507      digestification, cgi script failure tracebacks) logged in files
2508      using a reliable mechanism
2509    - Wrapper executables log authentication complaints via syslog
2510
2511   Wrappers
2512    - All cgi-script wrapper executables combined in a single source,
2513      easier to configure.  (Mail and aliases wrappers separate.)
2514
2515   List structure version migration
2516    - Provision for automatic update of list structures when moving to a
2517      new version of the system.  See modules/versions.py.
2518
2519   Code cleaning
2520    - Many more module docstrings, __version__ settings, more function
2521      docstrings.
2522    - Most unqualified exception catches have been replaced with more
2523      finely targeted catches, to avoid concealing bugs.
2524    - Lotsa long lines wrapped (pet peeve:).
2525
2526   Random details (not complete, sorry):
2527    - make archival frequency a list option
2528    - Option for daily digest dispatch, in addition to size threshhold
2529    - make sure users only get one periodic password notifcation message for
2530      all the lists they're on (repaired 1.0b1.1 varying-case mistake)
2531    - Fix rmlist sans-argument bug causing deletion of all lists!
2532    - doubled generated random passwords to four letters
2533    - Cleaned lots and lots of notices
2534    - Lots and lots of html page cleanup, including table-of-contents, etc
2535    - Admin options sections - don't do the "if so" if the ensuing list
2536      is empty
2537    - Prevent list subject-prefix cascade
2538    - Sources under CVS
2539    - Various spam filters - implicit-destination, header-field
2540    - Adjusted permissions for group access
2541    - Prevent redundant subscription from redundant vetted requests
2542    - Instituted centralize, robustish logging
2543    - Wrapper sources use syslog for logging (john viega)
2544    - Sorting of users done on presentation, not in list.
2545    - Edit options - give an error for non-existent users, not an options page.
2546    - Bounce handling - offer 'disable' option, instead of remove, and
2547      never remove without notifying admin
2548    - Moved subscribers off of listinfo (and made private lists visible
2549      modulo authentication)
2550    - Parameterize default digest headers and footers and create some
2551    - Put titles on cgi result pages that do not get titles (all?)
2552    - Option for immediate admin notifcation via email of pending
2553      requests, as well as periodic
2554    - Admin options web-page help
2555    - Enabled grouped and cascading lists despite implicit-name constraint
2556    - Changed subscribers list so it has its own script (roster)
2557    - Welcome pages: http://www.python.org/mailman/{admin,listinfo}/
2558
2559 0.95 (25-Jan-1997)
2560   - Fixed a bug in sending out digests added when adding disable mime option.
2561   - Added an option to not notify about bounced posts.
2562   - Added hook for pre-posting filters.  These could be used to
2563     auto-strip signatures.  I'm using the feature to auto-strip footers
2564     that are auto-generated by mail received from another mailing list.
2565
2566 0.94 (22-Jan-1997)
2567   - Made admin password work ubiquitously in place of a user password.
2568   - Added an interface for getting / setting user options.
2569   - Added user option to disable mime digests (digested people only)
2570   - Added user option to not receive your own posts (nondigested people only)
2571   - Added user option to ack posts
2572   - Added user option to disable list delivery to their box.
2573   - Added web interface to user options
2574   - Config number of sendmail spawns on a per-list basis
2575   - Fixed extra space at beginning of each message in digests...
2576   - Handled comma separated emails in bounce messages...
2577   - Added a FindUser() function to MailList.  Used it where appropriate.
2578   - Added mail interface to setting list options.
2579   - Added name links to the templates options page
2580   - Added an option so people can hide their names from the subscription list.
2581   - Added an answer_majordomo_mail script for people switching...
2582
2583 0.93 (18/20-Jan-1997)
2584   -  When delivering to list, don't call sendmail directly.  Write to a file,
2585      and then run the new deliver script, which forks and exits in the parent
2586      immediately to avoid hanging when delivering mail for large lists, so that
2587      large lists don't spend a lot of time locked.
2588   -  GetSender() no longer assumes that you don't have an owner-xxx address.
2589   -  Fixed unsubscribing via mail.
2590   -  Made subscribe via mail generate a password if you don't supply one.
2591   -  Added an option to clobber the date in the archives to the date the list
2592      resent the post, so that the archive doesn't get mail from people sending
2593       bad dates clumped up at the beginning or end.
2594   -  Added automatic error message processing as an option.  Currently
2595      logging to /tmp/bounce.log
2596   -  Changed archive to take a list as an argument, (the old way was broken)
2597   -  Remove (ignore) spaces in email addresses
2598   -  Allow user passwords to be case insensitive.
2599   -  Removed the cleanup script since it was now redundant.
2600   -  Fixed archives if there were no archives.
2601   -  Added a Lock() call to Load() and Create().  This fixes the
2602      problem of loading then locking.
2603   -  Removed all occurances of Lock() except for the ones in mailing
2604      list since creating a list
2605      now implicitly locks it.
2606   -  Quote single periods in message text.
2607   - Made bounce system handle digest users fairly.
2608
2609 0.92 (13/16-Jan-1997)
2610   -  Added Lock and Unlock methods to list to ensure each operation is atomic
2611   -  Added a cmd that rms all files of a mailing list (but not the aliases)
2612   -  Fixed subscribing an unknown user@localhost (confirm this)
2613   -  Changed the sender to list-admin@... to ensure we avoid mail loops.
2614   -  check to make sure there are msgs to archive before calling pipermail.
2615   -  started using this w/ real mailing lists.
2616   -  Added a cron script that scours the maillog for User/Host unknown errs
2617   -  Sort membership lists
2618   -  Always display digest_is_default option
2619   -  Don't slam the TO list unless you're sending a digest.
2620   -  When making digest summaries, if missing sender name, use their email.
2621   -  Hacked in some protection against crappy dates in pipermail.py
2622   -  Made it so archive/digest volumes can go up monthly for large large lists.
2623   -  Number digest messages
2624   -  Add headers/footers to each message in digest for braindead mailers
2625   -  I removed some forgotten debug statements that caused server errors
2626          when a CGI script sent mail.
2627   -  Removed loose_matches flag, since everything used it.
2628   -  Fixed a problem in pipermail if there was no From line.
2629   -  In upvolume_ scripts, remove INDEX files as we leave a volume.
2630   -  Threw a couple of scripts in bin for generating archives from majordomo's
2631      digest-archives.  I wouldn't recommend them for the layman, though, they
2632      were meant to do a job quickly, not to be usable.
2633
2634 0.91 (23-Dec-1996)
2635   -  broke code into mixins for managability
2636   -  tag parsing instead of lots of gsubs
2637   -  tweaked pipermail (see comments on pipermail header)
2638   -  templates are now on a per-list basis as intended.
2639   -  request over web that your password be emailed to you.
2640   -  option so that web subscriptions require email confirmation.
2641   -  wrote a first pass at an admin interface to configurable variables.
2642   -  made digests mime-compliant.
2643   -  added a FakeFile class that simulates enough of a file object on a
2644         string of text to fool rfc822.Message in non-seek mode.
2645   -  changed OutgoingMessage not to require its args in constructor.
2646   -  added an admin request DB interface.
2647   -  clearly separated the internal name from the real name.
2648   -  replaced lots of ugly, redundant code w/ nice code.
2649         (added Get...Email() interfaces, GetScriptURL, etc...)
2650   -  Wrote a lot of pretty html formatting functions / classes.
2651   -  Fleshed out the newlist command a lot.  It now mails the new list
2652         admin, and auto-updates the aliases file.
2653   -  Made multiple owners acceptable.
2654   -  Non-advertised lists, closed lists, max header length, max msg length
2655   -  Allowed editing templates from list admin pages.
2656   -  You can get to your info page from the web even if the list is closed.
2657
2658 \f
2659 Local Variables:
2660 mode: indented-text
2661 indent-tabs-mode: nil
2662 End: