summaryrefslogtreecommitdiff
path: root/NEWS
blob: 883d49c69643d4d1502d4d47739667ad684612bd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
Mailman - The GNU Mailing List Management System
Copyright (C) 1998,1999,2000,2001,2002 by the Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA

Here is a history of user visible changes to Mailman.

2.1 beta 1 (???)

    - The action to take when a moderated member posts to a list is
      now configurable.  The list can either hold, reject (bounce), or
      discard the message.  If the message is rejected, a rejection
      notice string can be given.

    - ALLOW_SITE_ADMIN_COOKIES is a new configuration variable which
      says whether to allow AuthSiteAdmin cookies or not.  Normally,
      when a list administrator logs into a list with the site
      password, they are issued a cookie that only allows them to do
      administration for this one list.  By setting
      ALLOW_SITE_ADMIN_COOKIES to 1, the user only needs to
      authenticate to one list with the site password, and they can
      administer any mailing list.

      I'm not sure this feature is wise, so the default value for
      ALLOW_SITE_ADMIN_COOKIES is 0.

    - New feature: banned subscription addresses.  Privacy
      options/subscription rules now has an additional list box, which
      can contain addresses or regular expressions.  Subscription
      requests from any matching address is automatically rejected.

    - The configuration variable DEFAULT_DEFAULT_MEMBER_MODERATION is
      now set to 1 by default.  This means that by default, new
      members will have their moderation flag turned on.

    - admindb summary page gives the option of clearing the moderation
      flag of members who are on probation.


2.1 alpha 4 (31-Dec-2001)

    - The administrative requests database page (admindb) has been
      redesigned for better usability when there are lots of held
      postings.  Changes include:
        o A summary page which groups held messages by sender email
          address.  On this page you can dispose of all the sender's
          messages in one action.  You can also view the details of
          all the sender's messages, or the details of a single
          message.  You can also add the sender to one of the list's
          sender filters.

        o A details page where you can view all messages, just those
          for a particular sender, or just a single held message.
          This details page is laid out the same as the old admindb
          page.

        o The instructions have been shorted on the summary and
          details page, with links to more detailed explanations.

    - Bounce processing
        o Mailman now keeps track of the reason a member's delivery
          has been disabled: explicitly by the administrator,
          explicitly by the user, by the system due to excessive
          bounces, or for (legacy) unknown reasons.

        o A new bounce processing algorithm has been implemented (we
          might actually understand this one ;).  When an address
          starts bouncing, the member gets a "bounce score".  Hard
          (fatal) bounces score 1.0, while soft (transient) bounces
          score 0.5.

          List administrators can specify a bounce threshold above
          which a member gets disabled.  They can also specify a time
          interval after which, if no bounces are received from the
          member, the member's bounce score is considered stale and is
          thrown away.

        o A new cron script, cron/disabled, periodically sends
          notifications to members who are bounce disabled.  After a
          certain number of warnings the member is deleted from the
          list.  List administrators can control both the number of
          notifications and the amount of time between notifications.

          Notifications include a confirmation cookie that the member
          can use to re-enable their subscription, via email or web.

        o New configuration variables to support the bounce processing
          are DEFAULT_BOUNCE_SCORE_THRESHOLD,
          DEFAULT_BOUNCE_INFO_STALE_AFTER,
          DEFAULT_BOUNCE_YOU_ARE_DISABLED_WARNINGS,
          DEFAULT_BOUNCE_YOU_ARE_DISABLED_WARNINGS_INTERVAL.

    - Privacy and security
        o Sender filters can now be regular expressions.  If a line
          starts with ^ it is taken as a (raw string) regular
          expression, otherwise it is a literal email address.

        o Fixes in 2.0.8 ported forward: prevent cross-site scripting
          exploits.

    - Mail delivery
        o Aliases have all been changed so that there's more
          consistency between the alias a message gets delivered to,
          and the script & queue runner that handles the message.

          I've also renamed the mail wrapper script to `mailman' from
          `wrapper' to avoid collisions with other MLM's.  You /will/
          need to regenerate your alias files with bin/genaliases, and
          you may need to update your smrsh (Sendmail) configs.a

          Bounces always go to listname-bounces now, since
          administration has been separated from bounce processing.
          listname-admin is obsolete.

        o VERP support!  This greatly improves the accuracy of bounce
          detection.  Configuration variables which control this feature
          include VERP_DELIVERY_INTERVAL, VERP_PERSONALIZED_DELIVERIES,
          VERP_PASSWORD_REMINDERS, VERP_REGEXP, and VERP_FORMAT.  The
          latter two must be tuned to your MTA.

        o A new alias mailman-loop@dom.ain is added which directs all
          output to the file $prefix/data/owner-bounces.mbox.  This is
          used when sending messages to the site list owners, as the
          final fallback for bouncing messages.

        o New configuration variable POSTFIX_STYLE_VIRTUAL_DOMAINS
          which should be set if you are using the Postfix MTA and
          want Mailman to play nice with Postfix-style virtual
          domains.

    - Miscellaneous
        o Better interoperability with Python 2.2.

        o MailList objects now record the date (in seconds since
          epoch) that they were created.  This is in a hidden
          attribute `created_at'.

        o bin/qrunner grows a -s/--subproc switch which is usually
          used only when it's started from mailmanctl.

        o bin/newlist grows a -l/--language option so that the list's
          preferred language can be set from the command line.

        o cron changes: admin reminders go out at 8am local time instead
          of 10pm local time.

    - Pipermail archiver
        o MIME attachments are scrubbed out into separate files which
          can be viewed by following a link in the original article.
          Article contains an indication of the size of the
          attachment, its type, and other useful information.

        o New script bin/cleanarch which can be used to `clean' an
          .mbox archive file by fixing unescaped embedded Unix From_
          lines.

        o New configuration variable ARCHIVE_SCRUBBER in
          Defaults.py.in which names the module that Pipermail should
          use to scrub articles of MIME attachments.

        o New configuration variable ARCHIVE_HTML_SANITIZER which
          describes how the scrubber should handle text/html
          attachments.

        o PUBLIC_ARCHIVE_URL has change its semantics.  It is now an
          absolute url, with the hostname and listname parts
          interpolated into it on a per-list basis.

        o Pipermail should now provide the proper character set in the
          Content-Type: header for archived articles.

    - Internationalization
        o Czech translations by Dan Ohnesorg.

        o The Hungarian charset has be fixed to be iso-8859-2.

        o The member options login page now has a language selection
          widget.

    - Building, configuration
        o email-0.96 package is required (see the misc directory).

        o New recipes for integrating Mailman and Sendmail,
          contributed by David Champion.


2.1 alpha 3 (22-Oct-2001)

    - Realname support
        o Mailman now tracks a member's Real Name in addition to their
          email address.

        o List members can now supply their Real Names when
          subscribing via the web.  Their Real Names are parsed from
          any thru-email subscriptions.

        o Members can change their Real Names on their options page,
          and admins can change members' Real Names on the membership
          pages.  Mass subscribing accepts "email@dom.ain (Real Name)"
          and "Real Name <email@dom.ain>" entries, for both
          in-text-box and file-upload mass subscriptions.

    - Filtering and Privacy
        o Reply-To: munging has been enhanced to allow a wider range
          of list policies.  You can now pre-strip any Reply-To:
          headers before adding list-specific ones (i.e. you can
          override or extend existing Reply-To: headers).  If
          stripping, the old headers are no longer saved on
          X-Reply-To:

        o New sender moderation rules.  The old `posters',
          `member_only_posting', `moderated' and `forbidden_posters'
          options have been removed in favor of a new moderation
          scheme.  Each member has a personal moderation bit, and
          non-member postings can be automatically accepted, held for
          approval, rejected (bounced) or discarded.

        o When membership rosters are private, responses to
          subscription (and other) requests are made more generic so
          that these processes can't be covertly mined for hidden
          addresses.  If a subscription request comes in for a user
          who is already subscribed, the user is notified of potential
          membership mining.

        o When a held message is approved via the admindb page, an
          X-Moderated: header is added to the message.

        o List admins can now set an unsubscribe policy which requires
          them to approve of member unsubscriptions.

    - Web U/I
        o All web confirmations now require a two-click procedure,
          where the first click gives them a page that allows them to
          confirm or cancel their subscription.  It is bad form for an
          email click (HTTP GET) to have side effects.

        o Lots of improvements for clarity.

        o The Privacy category has grown three subcategories.

        o The General options page as a number of subsection headers.

        o The Passwords and Languages categories are now on separate
          admin pages.

        o The admin subcategories are now formated as two columns in
          the top and bottom legends.

        o When creating a list through the web, you can now specify
          the initial list of supported languages.

        o The U/I for unsubscribing a member on the admin's membership
          page should be more intuitive now.

        o There is now a separate configuration option for whether the
          goodbye_msg is sent when a member is unsubscribed.

    - Performance
        o misc/mailman is a Unix init script, appropriate for
          /etc/init.d, and containing chkconfig hooks for systems that
          support it.

        o bin/mailmanctl has been rewritten; the `restart' command
          actually works now.  It now also accepts -s, -q, and -u
          options.

        o bin/qrunner has been rewritten too; it can serve the role of
          the old cron/qrunner script for those who want classic
          cron-invoked mail delivery.

        o Internally, messages are now stored in the qfiles directory
          primarily as pickles.  List configuration databases are now
          stored as pickles too (i.e. config.pck).  bin/dumpdb knows
          how to display both pickles and marshals.

    - Mail delivery
        o If a user's message is held for approval, they are sent a
          notification message containing a confirmation cookie.  They
          can use this confirmation cookie to cancel their own
          postings (if they haven't already been approved).

        o When held messages are forwarded to an explicit address
          using the admindb page, it is done so  in a message/rfc822
          encapsulation.

        o When a message is first held for approval, the notification
          sent to the list admin is a 3-part multipart/mixed.  The
          first part holds the notification message, the second part
          hold the original message, and the third part hold a cookie
          confirmation message, to which the admin can respond to
          approve or discard the message via email.

        o In the mail->news gateway, you can define mail headers that
          must be modified or deleted before the message can be posted
          to the nntp server.

        o The list admin can send an immediate urgent message to the
          entire list membership, bypassing digest delivery.  This is
          done by adding an Urgent: header with the list password.
          Urgent messages with an invalid password are rejected.

        o Lists can now optionally personalize email messages, if the
          site admin allows it.  Personalized messages mean that the
          To: header includes the recipient's address instead of the
          list's address, and header and footer messages can contain
          user-specific information.  Note that only regular
          deliveries can currently be personalized.

        o Message that come from Usenet but that have broken MIME
          boundaries are ignored.

        o If the site administrator agrees, list owners have the
          ability to disable RFC 2369 List-* headers.

        o There is now an API for an external process to post a
          message to a list.  This posting process can also specify an
          explicit list of recipients, in effect turning the mailing
          list into a "virtual list" with a fluid membership.  See
          Mailman/Post.py for details.

    - Building/testing/configuration
        o mimelib is no longer required, but you must install the
          email package (see the tarball in the misc directory).

        o An (as yet) incomplete test suite has been added.  Don't try
          running it in a production environment!

        o Better virtual host support by adding a mapping from the
          host name given in cgi's HTTP_HOST/SERVER_NAME variable to
          the email host used in list addresses.  (E.g. www.python.org
          maps to @python.org).

        o Specifying urls to external public archivers is more
          flexible.

        o The filters/ subdirectory has been removed.

        o There is now a `site list' which is a mailing list that must
          be created first, and from which all password reminders
          appear to come from.  It is recommended that this list be
          called "mailman@your.site".

        o bin/move_list is no longer necessary (see the FAQ for
          detailed instructions on renaming a list).

        o A new script bin/fix_url.py can be used with bin/withlist to
          change a list's web_page_url configuration variable (since
          it is no longer modifiable through the web).

    - Internationalization
        o Support for German, Hungarian, Italian, Japanese, and
          Norwegian have been added.

    - Miscellaneous
        o Lots of new bounce detectors.  Bounce detectors can now
          discard temporary bounce messages by returning a special
          Stop value.

        o bin/withlist now sports a -q/--quiet flag.

        o bin/add_members has a new -a/--admin-notify flag which can
          be used to inhibit list owner notification for each
          subscription.

    - Membership Adaptors
        o Internally, mailing list memberships are accessed through a
          MemberAdaptor interface.  This would allow for integrating
          membership databases with external sources (e.g. Zope or
          LDAP), although the only MemberAdaptor currently implemented
          is a "classic" adaptor which stores the membership
          information on the MailList object.

        o There's a new pipeline handler module called FileRecips.py
          which could be used to get all regular delivery mailing list
          recipients from a Sendmail-style :include: file (see List
          Extensibility bullet below).

          This work was sponsored by Control.com

    - List Extensibility
        o A framework has been added which can be used to specialize
          and extend specific mailing lists.  If there is a file
          called lists/<yourlist>/extend.py, it is execfile()'d after
          the MailList object is instantiated.  The file should
          contain a function extend() which will be called with the
          MailList instance.  This function can do all sorts of deep
          things, like modify the handler pipeline just for this list,
          or even strip out particular admin GUI elements (see below).

        o All the admin page GUI elements are now separate
          components.  This provides greater flexibility for list
          customization.  Also, each GUI element will be given an
          opportunity to handle admin CGI form data.

          This work was sponsored by Control.com

    - Topic Filters
        o A new feature has been added called "Topic Filters".  A list
          administrator can create topics, which are essentially
          regular expression matches against Subject: and Keyword:
          headers (including such pseudo-headers if they appear in the
          first few lines of the body of a message).

          List members can then `subscribe' to various topics, which
          allows them to filter out any messages that don't match a
          topic, or to filter out any message that does match a
          topic.  This can be useful for high volume lists where not
          everyone will be interested in every message.

          This work was sponsored by Control.com

2.1 alpha 2 (11-Jul-2001)

    - Building
        o mimelib 0.4 is now required.  Get it from
          http://mimelib.sf.net.  If you've installed an earlier
          version of mimelib, you must upgrade.

        o /usr/local/mailman is now the default installation
          directory.  Use configure's --prefix switch to change it
          back to the default (/home/mailman) or any other
          installation directory of your choice.

    - Security
        o Better definition of authentication domains.  The following
          roles have been defined: user, list-admin, list-moderator,
          creator, site-admin.

        o There is now a separate role of "list moderator", which has
          access to the pending requests (admindb) page, but not the
          list configuration pages.

        o Subscription confirmations can now be performed via email or
          via URL.  When a subscription is received, a unique (sha)
          confirm URL is generated in the confirmation message.
          Simply visiting this URL completes the subscription process.

        o In a similar manner, removal requests (via web or email
          command) no longer require the password.  If the correct
          password is given, the removal is performed immediately.  If
          no password is given, then a confirmation message is
          generated.
    
    - Internationalization
        o More I18N patches.  The basic infrastructure should now be
          working correctly.  Spanish templates and catalogs are
          included, and English, French, Hungarian, and Big5 templates
          are included.

        o Cascading specializations and internationalization of
          templates.  Templates are now search for in the following
          order: list-specific location, domain-specific location,
          site-wide location, global defaults.  Each search location
          is further qualified by the language being displayed.  This
          means that you only need to change the templates that are
          different from the global defaults.

          Templates renamed: admlogin.txt => admlogin.html
          Templates added: private.html

    - Web UI
        o Redesigned the user options page.  It now sits behind an
          authentication so user options cannot be viewed without the
          proper password.  The other advantage is that the user's
          password need not be entered on the options page to
          unsubscribe or change option values.  The login screen also
          provides for password mail-back, and unsubscription w/
          confirmation.

          Other new features accessible from the user options page
          include: ability to change email address (with confirmation)
          both per-list and globally for all list on virtual domain;
          global membership password changing; global mail delivery
          disable/enable; ability to suppress password reminders both
          per-list and globally; logout button.

          [Note: the handle_opts cgi has gone away]

        o Color schemes for non-template based web pages can be defined
          via mm_cfg.

        o Redesign of the membership management page.  The page is now
          split into three subcategories (Membership List, Mass
          Subscription, and Mass Removal).  The Membership List
          subcategory now supports searching for member addresses by
          regular expression, and if necessary, it groups member
          addresses first alphabetically, and then by chunks.

          Mass Subscription and Mass Removal now support file upload,
          with one address per line.

        o Hyperlinks from the logos in the footers have been removed.
          The sponsors got too much "unsubscribe me!" spam from
          desperate user of Mailman at other sites.

        o New buttons on the digest admin page to send a digest
          immediately (if it's non-empty), to start a new digest
          volume with the next digest, and to select the interval with
          which to automatically start a new digest volume (yearly,
          monthly, quarterly, weekly, daily).

          DEFAULT_DIGEST_VOLUME_FREQUENCY is a new configuration
          variable, initially set to give a new digest volume monthly.

        o Through-the-web list creation and removal, using a separate
          site-wide authentication role called the "list creator and
          destroyer" or simply "list creator".  If the configuration
          variable OWNERS_CAN_DELETE_THEIR_OWN_LISTS is set to 1 (by
          default, it's 0), then list admins can delete their own
          lists.

          This feature requires an adaptor for the particular MTA
          you're using.  An adaptor for Postfix is included, as is a
          dumb adaptor that just emails mailman@yoursite with the
          necessary Sendmail style /etc/alias file changes.  Some MTAs
          like Exim can be configured to automatically recognize new
          lists.  The adaptor is selected via the MTA option in
          mm_cfg.py

    - Email UI
        o In email commands, "join" is a synonym for
          "subscribe". "remove" and "leave" are synonyms for
          "unsubscribe".  New robot addresses are support to make
          subscribing and unsubscribing much easier:

          mylist-join@mysite
          mylist-leave@mysite

        o Confirmation messages have a shortened Subject: header,
          containing just the word "confirm" and the confirmation
          cookie.  This should help for MUAs that like to wrap long
          Subject: lines, messing up confirmation.

        o Mailman now recognizes an Urgent: header, which, if it
          contains the list moderator or list administrator password,
          forces the message to be delivered immediately to all
          members (i.e. both regular and digest members).  The message
          is also placed in the digest.  If the password is incorrect,
          the message will be bounced back to the sender.

    - Performance
        o Refinements to the new qrunner subsystem which preserves
          FIFO order of messages.

        o The qrunner is no longer started from cron.  It is started
          by a Un*x init-style script called bin/mailmanctl (see
          below).  cron/qrunner has been removed.

    - Command line scripts
        o bin/mailmanctl script added, which is used to start, stop,
          and restart the qrunner daemon.

        o bin/qrunner script added which allows a single sub-qrunner
          to run once through its processing loop.

        o bin/change_pw script added (eases mass changing of list
          passwords).

        o bin/update grows a -f switch to force an update.

        o bin/newlang renamed to bin/addlang; bin/rmlang removed.

        o bin/mmsitepass has grown a -c option to set the list
          creator's password.  The site-wide `create' web page is
          linked to from the admin overview page.

        o bin/newlist's -o option is removed.  This script also grows
          a way of spelling the creation of a list in a specific
          virtual domain.

        o The `auto' script has been removed.

        o bin/dumpdb has grown -m/--marshal and -p/--pickle options.

        o bin/list_admins can be used to print the owners of a mailing list.

        o bin/genaliases regenerates from scratch the aliases and
          aliases.db file for the Postfix MTA.

    - Archiver
        o New archiver date clobbering option, which allows dates to
          only be clobber if they are outrageously out-of-date
          (default setting is 15 days on either side of received
          timestamp).  New configuration variables:

          ARCHIVER_CLOBBER_DATE_POLICY
          ARCHIVER_ALLOWABLE_SANE_DATE_SKEW

          The archived copy of messages grows an X-List-Received-Date:
          header indicating the time the message was received by
          Mailman.

        o PRIVATE_ARCHIVE_URL configuration variable is removed (this
          can be calculated on the fly, and removing it actually makes
          site configuration easier).

    - Miscellaneous
        o Several new README's have been added.

        o Most syslog entries for the qrunner have been redirected to
          logs/error.

        o On SIGHUP, qrunner will re-open all its log files and
          restart all child processes.  See "bin/mailmanctl restart".

    - Patches and bug fixes
        o SF patches and bug fixes applied: 420396, 424389, 227694,
          426002, 401372 (partial), 401452.

        o Fixes in 2.0.5 ported forward:
            Fix a lock stagnation problem that can result when the
            user hits the `stop' button on their browser during a
            write operation that can take a long time (e.g. hitting
            the membership management admin page).

        o Fixes in 2.0.4 ported forward:
            Python 2.1 compatibility release.  There were a few
            questionable constructs and uses of deprecated modules
            that caused annoying warnings when used with Python 2.1.
            This release quiets those warnings.

        o Fixes in 2.0.3 ported forward:
            Bug fix release.  There was a small typo in 2.0.2 in
            ListAdmin.py for approving an already subscribed member
            (thanks Thomas!).  Also, an update to the OpenWall
            security workaround (contrib/securelinux_fix.py) was
            included.  Thanks to Marc Merlin.

2.1 alpha 1 (04-Mar-2001)

    - Python 2.0 or newer required.  Also required is `mimelib' a new
      library for handling MIME documents.  This will be bundled in
      future releases, but for now, you must download and install it
      (using Python's distutils) from

      http://barry.wooz.org/software/Code/mimelib-0.2.tar.gz

      You need mimelib 0.2 or better.

    - Redesigned qrunner subsystem.  Now there are multiple message
      queues, and considerable flexibility in file formats for
      integration with external systems.  The current crop of queues
      include:

      archive -- for posting messages to an archiver
      commands -- for incoming email commands and bounces
      in -- for list-destined incoming email
      news -- for messages outgoing to a nntp server
      out -- for messages outgoing to a smtp server
      shunt -- for messages that trigger unexpected exceptions in Mailman
      virgin -- for messages that are generated by Mailman

      cron/qrunner is now a long running script that forks off
      sub-runners for each of the above queues.  qrunner still plays
      nice with cron, but it is expected to be started by init at some
      point in the future.  Some support exists for parallel
      processing of messages in the queues.

    - Support for internationalization support merged in.  Original
      work done by Juan Carlos Rey Anaya and Victoriano Giralt.  I've
      tested about 90% of the web side, 50% of the email, and 50% of
      the command line / cron scripts.

      New scripts: bin/newlang, bin/rmlang

    - New delivery script `auto' for automatic integration with the
      Postfix MTA.

    - A bunch of new bounce detectors.

    Changes ported from Mailman 2.0.2 and 2.0.1:

    - A fix for a potential privacy exploit where a clever list
      administrator could gain access to user passwords.  This doesn't
      allow them to do much more harm to the user then they normally
      could, but they still shouldn't have access to the passwords.

    - In the admindb page, don't complain when approving a
      subscription of someone who's already on the list (SF bug
      #222409 - Thomas Wouters).

      Also, quote for HTML the Subject: text printed for held
      messages, otherwise messages with e.g. "Subject: </table>" could
      royally screw page formatting.

    - Docstring fix bin/newlist to remove mention of "immediate"
      argument (Thomas Wouters).

    - Fix for bin/update when PREFIX != VAR_PREFIX (SF bug #229794 --
      Thomas Wouters).

    - Bug fix release, namely fixes a buglet in bin/withlist affecting
      the -l and -r flags; also a problem that can cause qrunner to
      stop processing mail after disk-full events (SourceForge bug
      127199).

2.0 final (21-Nov-2000)

    No changes from rc3.

2.0 release candidate 3 (16-Nov-2000)

    - By popular demand, Reply-To: munging policy is now to always
      override any Reply-To: header in the original message, if
      reply_goes_to_list is set to "This list" or "Explicit Address"

    - bin/newlist given -q/--quiet flag instead of the <immediate>
      positional argument

    - Hopefully last fix to DEFAULT_URL not ending in a slash
      sensitivity

    - 2.0rc2 buglets fixed:
        o newlist argument parsing
        o updating with unlocked lists
        o HyperArch.py traceback when there's no
          Content-Transfer-Encoding: header

    - SourceForge bugs fixed:
        122358 (qmail-to-mailman.py listname case folding)

    - SourceForge patches applied:
        102373 (qmail-to-mailman.py listname case folding)

2.0 release candidate 2 (10-Nov-2000)

    - Documentation updates: start at admin/www/index.html

    - bin/withlist accepts additional command line arguments when used
      with the --run flag; bin/mmsitepass and bin/newlist accept
      -h/--help flags

    - bin/newlist has a -o/--output flag to append /etc/aliases
      suggestions to a specified file

    - SourceForge bugs fixed:
        116615 (README.BSD update), 117015 (duplicate messages on
        moderated posts), 117548 (exception in HyperArch.py), 117682
        (typos), 121185 (vsnprintf signature), 121591 and 122017
        (bogus link after web unsubscribe), 121811 (`subscribe' in
        Subject: doesn't get archived)

    - SourceForge patches applied:
        101812 (securelinux_fix.py contrib), 102097 (fix for bug
        117548), 102211 (additional args for withlist), 102268 (case
        insensitive Content-Transfer-Encoding:)

2.0 release candidate 1 (23-Oct-2000)

    - Bug fixes and security patches.

    - Better html rendition of articles in non us-ascii charsets
      (Jeremy Hylton).  See VERBATIM_ENCODING variable in
      Defaults.py.in for customization.

2.0 beta 6 (22-Sep-2000)

    - Building
        o Tested with Python 1.5.2, Python 1.6, and Python 2.0 beta 1.
          Conducted on RH Linux 6.1 only, but should work
          cross-platform.

        o Configure now accepts --with-username, --with-groupname,
          --with-var-prefix flags.  See `configure --help' or the
          INSTALL file for details.

        o Setting the CFLAGS environment variable before invoking
          configure now works.

        o The icons are now copied into $prefix/icons at install time.
          Patch by David Champion.

    - Standards
        o Compliance with RFC 2369 (List-*: headers).  Patch by
          Darrell Fuhriman.  List-ID: header is kept for historical
          reasons.

        o Fixes by Jeremy Hylton to Pipermail in support of non-ASCII
          charsets, based on the Content-Type: and encoded-words in
          the original message.  Mail headers are now decoded as per
          RFC 2047.

        o Many more bounce formats are detected: Microsoft's SMTPSVC,
          Compuserve, GroupWise, SMTP32, and the more generic
          SimpleMatch (which catches lots of similar but slightly
          different formats).

    - Defaults
        o Email addresses can now be obscured in Pipermail archives by
          setting mm_cfg.ARCHIVER_OBSCURES_EMAILADDRS to 1 (obscuring
          is turned off by default).  Patch provided by Chris Snell.

        o The default NNTP host can now be set by editing
          mm_cfg.DEFAULT_NNTP_HOST.  Patch by David Champion.

        o The default archiving mode (public/private) can now be set
          by editing mm_cfg.DEFAULT_ARCHIVE.  Patch by Ted Cabeen.

    - Web UI
        o The variable details pages in the administrators interface
          is now `live', i.e. there's a submit button on the details
          page.

        o A link to the administrative interface is placed in the
          footer of the general user pages (authentication still
          required, of course!)

        o The user options change results page has a link back to the
          user's main page.

        o In the admindb page (for dealing with held postings), the
          default forward address is now listname-owner instead of
          listname-admin.  This avoids bounce detection on the
          forwarded message.

    - Miscellaneous
        o Fixed config.db corruption problem when disk-full errors are
          encountered.

        o Command line scripts accept list names case-insensitively.

        o bin/remove_members takes a -a flag to remove all members of
          a list in one fell swoop.

        o List admin passwords must be non-empty.

        o Mailman generated passwords are slightly more mnemonic, and
          shouldn't have confusing character selections (i.e. `i'
          only, but no `1' or `l').

        o Crossposting to two gated mailing lists should be fixed.

        o Many other bug fixes and minor web UI improvements.

2.0 beta 5 (01-Aug-2000)

    - Bug fix release.  This includes a fix for a small security hole
      which could be exploited to gain mailman group access by a local
      user (not a mail or web user).

    - As part of the fix for the "cookie reauthorization" bug, only
      session cookies are used now.  This means that administrative
      and private archive cookies expire only when the browser session
      is quit, however an explicit "Logout" button has been added.

2.0 beta 4 (06-Jul-2000)

    - Bug fix release.

2.0 beta 3 (29-Jun-2000)

    - Delivery mechanism (qrunner) refined to support immediate
      queuing, queuing directly from MTA, and queuing on any error
      along the delivery pipeline.  This means 1) that huge lists
      can't time out the MTA's program delivery channel; 2) it is much
      harder to completely lose messages; 3) eventually, qrunner will
      be elaborated to meter delivery to the MTA so as not to swamp
      it.  The tradeoff is in more disk I/O since every message coming
      into the system (and most that are generated by the system) live
      on disk for some part of their journey through Mailman.

      For now, see the Default.py variables QRUNNER_PROCESS_LIFETIME
      and QRUNNER_MAX_MESSAGES for primitive resource management.

      The API to the pipeline handler modules has changed.  See
      Mailman/Handlers/HandlerAPI.py for details.

    - Revamped admindb web page: held messages are split into headers
      and bodies so they are easier to vette; admins can now also
      preserve a held message (for spam evidence gathering) or forward
      the message to a specified email address; disposition of held
      messages can be deferred; held messages have a more context
      meaningful default rejection message.

    - Change to the semantics for `acceptable_aliases' list
      configuration variable, based on suggestions by Harald Meland.

    - New mm_cfg.py variables NNTP_USERNAME and NNTP_PASSWORD can be
      set on a site-wide basis if connection to your nntpd requires
      authentication.

    - The list attribute `num_spawns' has been removed.  The mm_cfg.py
      variables MAX_SPAWNS, and DEFAULT_NUM_SPAWNS removed too.

    - LIST_LOCK_LIFETIME cranked to 5 hours and LIST_LOCK_TIMEOUT
      shortened to 10 seconds.  QRUNNER_LOCK_LIFETIME cranked up to 10
      hours.  This should decrease the changes for bogus and harmful
      lock breaking.

    - Resent-to: is now one of the headers checked for explicit
      destinations.

    - Tons more bounce formats are recognized.  The API to the bounce
      modules has changed.

    - A rewritten LockFile module which should fix most (hopefully all)
      bugs in the locking machinery.  Many improvements suggested by
      Thomas Wouters and Harald Meland.

    - Experimental support (disabled by default) for delivering SMTP
      chunks to the MTA via multiple threads.  Your Python executable
      must have been compiled with thread support enabled, and you
      must set MAX_DELIVERY_THREADS in mm_cfg.py.  Note that this may
      not improve your overall system performance.

    - Some changes and additions to scripts: bin/find_member now
      supports a -w/--owner flag to match regexps against mailing list
      owners; bin/find_member now supports multiple regexps;
      cron/gate_news command line option changes; new script
      bin/dumbdb for debugging purposes; bin/clone_member can now also
      remove the old address and change change the list owner
      addresses.

    - The News/Mail gateway admin page has a button that lets you do
      an explicit catchup of the newsgroup.

    - The CVS repository has been moved out to SourceForge.  For more
      information, see the project summary at

      http://sourceforge.net/project/?group_id=103

    - Lots 'o bug fixes and some performance improvements.

2.0 beta 2 (07-Apr-2000)

    - Rewritten gate_news cron script which should be more efficient
      and avoid race and locking problems.  Each list now maintains
      its own watermark, and when you use the admin CGI script to turn
      on gating from Usenet->mail, an automatic mass catch up is done
      to avoid flooding the mailing list.  cron/gate_news's command
      line interface has also changed.  See its docstring for
      details.

    - A new cron script called qrunner has been added to retry message
      deliveries that fail because of temporary smtpd problems.

    - New command line script called bin/list_lists which does exactly
      that: lists all the mailing lists on the system (much like the
      listinfo CGI does).

    - bin/withlist is now directly executable, however if you want to
      use python -i, you must still explicitly invoke it.
      bin/withlist also now cleans up after itself by unlocking any
      locked lists.  It does NOT save any dirty lists though - you
      must do this explicitly.

    - $prefix permissions (and all subdirs) must now be 02775.
      bin/check_perms has been updated to fix all the subdir
      permissions.

    - "make update" (a.k.a. bin/update) is run automatically when you
      do a "make install"

    - The CGI driver script now puts information about the Python
      environment into the logs/error file (but not the diagnostic web
      page).

    - Bug fixes and some performance improvements

2.0 beta 1 (19-Mar-2000)

    - Python 1.5.2 (or newer) is now required.

    - A new bundled auto-responder has been added.  You can now
      configure an autoresponse text for each list's primary
      addresses:

        listname@yourhost.com -- the general posting address
        listname-request@...  -- the automated "request bot" address
        listname-admin@...    -- the human administrator address

    - The standard UI now includes three logos at the bottom of the
      page: Dragon's Mailman logo, the Python Powered logo, and the
      GNU logo.  All point to their respective home pages.

    - It is now possible to set the Reply-To: field on lists to an
      arbitrary address.  NOTE: Reply-To: munging is generally
      considered harmful!  However for some read-only lists, it is
      useful to direct replies to a parallel discussion list.

    - There is a new message delivery architecture which uses a
      pipeline processor for incoming and internally generated
      messages.  Mailman no longer contains a bundled bulk-mailer;
      instead message delivery is handled completely by the MTA.  Most
      MTAs give a high enough priority to connections from the
      localhost that mail will not be lost because of system load, but
      this is not guaranteed (or handled) by Mailman currently.  Be
      careful also if your smtpd is on a different host than the
      Mailman host.  In practice, mail lossage has not be observed.

      For this reason cron/run_queue is no longer needed (see the
      UPGRADING file for details).

      Also, you can choose whether you want direct smtp delivery, or
      delivery via the command line to a sendmail-compatible daemon.
      You can also easily add your own delivery module.  See
      Mailman/Defaults.py for details.

    - A similar pipeline architecture for the parsing of bounce
      messages has been added.  Most common bounce formats are now
      handled, including Qmail, Postfix, and DSN.  It is now much
      easier to add new bounce detectors.

    - The approval pending architecture has also been revamped.
      Subscription requests and message posts waiting for admin
      approval are no longer kept in the config.db file, but in a
      separate requests.db file instead.

    - Finally made consistent the use of Sender:/From:/From_ in the
      matching of headers for such things as member-post-only.  Now,
      if USE_ENVELOPE_SENDER is true, Sender: will always be chosen
      over From:, however the default has been changed to
      USE_ENVELOPE_SENDER false so that From: is always chosen over
      Sender:.  In both cases, if no header is found, From_ (i.e. the
      envelope sender is used).  Note that the variable is now
      misnamed!  Most people want From: matching anyway and any are
      easily spoofable.

    - New scripts bin/move_list, bin/config_list

    - cron/upvolumes_yearly, cron/upvolumes_monthly, cron/archive,
      cron/run_queue all removed.  Edit your crontab if you used these
      scripts.  Other scripts removed: contact_transport, deliver,
      dumb_deliver.

    - Several web UI improvements, especially in the admin page.

    - Remove X-pmrqc: headers to prevent return reciepts for Pegasus
      mail users.

    - Security patch when using external archivers.

    - Honor "X-Archive: No" header by not putting this message in the
      archive.

    - Changes to the log file format.

    - The usual bug fixes.

1.1 (05-Nov-1999)

    - All GIFs removed.  See http://www.gnu.org/philosophy/gif.html
      for the reason why.

    - Improvements to the Pipermail archiver which make things faster.
      Primary change is that the .txt files are not gzipped on every
      posted message.  Instead, use the new cron script `nightly_gzip'
      to gzip the .txt file in batches (this means that the .txt file
      will lag behind the on-line archives a little).

    - From the C drivers programs, Python is invoked with the -S
      option.  This tells Python to avoid importing the site module,
      which can improve start up time of the Python process
      considerably.  Note that the command line script invocation has
      not been changed.

    - New configuration variables PUBLIC_EXTERNAL_ARCHIVER and
      PRIVATE_EXTERNAL_ARCHIVER which can contain a shell command
      string for os.popen().  This can be used to invoke an external
      archiver instead of the bundled Pipermail archiver.  See
      Defaults.py for details.

    - new script `bin/find_member' which can be used to search for a
      member by regular expression.

    - More child processes are reaped, which should eliminate most
      occurrences of zombie processes.

    - A few small miscellaneous bug fixes (including PR#99, PR#107)
      and improvements to the file locking algorithms.

1.0 (30-Jul-1999)

    - Configure script now allows $PREFIX (by default /home/mailman)
      to be permissions 02755.  Also, configure now tests for
      vsnprintf()

    - Workaround, taken from GNU screen, for systems missing
      vsnprintf()

    - Return-Receipt-To: and Disposition-Notification-To: headers are
      always removed from posted messages (they can be used to troll
      for list membership).

    - Workaround for MSIE4.01 (and possibly other versions) bug in the
      handling of cookies.

    - A small collection of other bug fixes.

1.0rc3 (10-Jul-1999)

    - new script bin/check_perms which checks (and optionally fixes)
      the permissions and group ownerships of the files in your
      Mailman installation.

    - Removed a bottleneck in the archiving code that was causing
      performance problems on highly loaded servers.

    - The code that saves a list's state and configuration database
      has been made more robust.

    - Additional exception handlers have been added in several places
      to alleviate problems with Mailman bombing out when it really
      would be better to print/log a helpful message.

    - The "password" mail command will now mail back the sender's
      subscription password when given with no arguments.

    - The embarrassing subject-prefixing bug present in rc2 has been
      fixed.

    - A small (but nice :) collection of other squashed bugs.

1.0rc2 (14-Jun-1999)

    - A security flaw in the CGI cookie mechanisms was discovered --
      the Mailman-issued cookies were easily spoofable, implying that
      e.g. admin access to all Mailman lists via the web interface
      could be compromised.  This flaw has now been fixed.

    - Handling of SMTP errors has been improved.

    - Both "Mass Subscription" via web admin interface and
      bin/add_members have been greatly sped up.

    - autoconf check for syslog has been revamped, and is now verified
      to work on SCO OpenServer 5.  If syslog can't be found, the C
      wrappers will compile, but without any syslog calls.

    - Various other bug fixes.

1.0rc1 (04-May-1999)

    - There is a new Mailman logo, contributed by The Dragon De
      Monsyne.  Please read the INSTALL file for information about
      installing the logo in a place your Web server can find it.

    - USE_ENVELOPE_SENDER is now set to 0 by default.  Turning this on
      caused problems for too many users; lists restricted to
      member-only posts were not matching the addresses correctly.

    - A revamped bin/withlist to be a little more useful.

    - A revamped cron/mailpasswds which groups users by virtual hosts.

    - The usual assortment of bug fixes.

1.0b11 (03-Apr-1999)

    - Bug fixes and improvements for case preservation of subscribed
      addresses.  The DATA_FILE_VERSION has been bumped to 14.

    - New script bin/withlist, useful for interactive debugging.

1.0b10 (26-Mar-1999)

    - New script bin/sync_members which can be used to synchronize a
      list's membership against a flat (e.g. sendmail :include: style)
      file.

    - bin/add_members and bin/remove_members now accept addresses on
      the command line with `-' as the value for the -d and -n
      options.

    - Added variable USE_ENVELOPE_SENDER to Defaults.py for site-wide
      configuration of address matching scheme.  With this variable
      set to true, the envelope sender (e.g. Unix "From_" header) is
      used to match addresses, otherwise the From: header is used.
      Envelope sender matching seems not to work on many systems.
      This variable is currently defaulted to 1, but may change to 0
      for the final release.

    - Reorganization of the membership management admin page.  Also
      member addresses are linked to their options page.  Only the
      `General' category has the admin password change form.

    - Major reorganization of email command handling and responses.
      `notmetoo' is the preferred email command instead of `norcv',
      although the latter is still accepted as an argument.  If more
      than 5 errors are found in the message, command processing is
      halted.

    - User options page now shows the user their case-preserved
      subscribed address as well.

    - The usual assortment of bug fixes.

1.0b9 (01-Mar-1999)

    - New bin scripts: clone_member, list_members, add_members (a
      consolidation of convertlist and populate_new_list which have
      been removed).

    - Two new readmes have been added: README.LINUX and README.QMAIL

    - New configure option --with-cgi-ext which can be used if your
      Web server requires extensions on CGI scripts.  The extension
      must include a dot (e.g. --with-cgi-ext=".cgi").

    - Many bug fixes, including the setgid problem that was causing
      mail to be lost on some versions of Linux.

1.0b8 (14-Jan-1999)

     - Bug fixes and workarounds for certain Linuxes.

     - Illegal addresses are no longer allowed to be subscribed, from
       any interface.

1.0b7 (31-Dec-1998)

     - Many, many bug fixes.  Some performance improvements for large
       lists.  Some improvements in the Web interfaces.  Some security
       improvements.  Improved compatibility with Python 1.5.

     - bin/convert_list and bin/populate_new_list have been replaced
       by bin/add_members.

     - Admins can now get notification on subscriptions and
       unsubscriptions.  Posts are now logged.

     - The username portion of email addresses are now case-preserved
       for delivery purposes.  All other address comparisions are
       case-insensitive.

     - New default SMTP_MAX_RCPTS that limits the number of "RCPT TO"
       SMTP commands that can be given for a single message.  Most
       MTAs have some hard limit.

     - "Precedence: bulk" header and "List-id:" header are now added
       to all outgoing messages.  The latter is not added if the
       message already has a "List-id:" header.  See RFC 2046 and
       draft-chandhok-listid-02 for details.

     - The standard (as of Python 1.5.2) smtplib.py is now used.

     - The install process now compiles all the .py files in the
       installation.

     - Versions of the Mailman papers given at IPC7 and LISA-98 are
       now included.

1.0b6 (07-Nov-1998)

     - Archiving is (finally) back in.

     - Administrivia filter added.

     - Mail queue mechanism revamped with better concurrency control.

     - For recipients that have estmp MTAs, set delivery notification
       status so that only delivery failure notices are sent out,
       inhibiting 4 hour and N day warning notices.

     - Now expire old unconfirmed subscription requests, rather than
       keeping them forever.

     - Added proposed standard List-Id: header, and our own
       X-MailmanVersion header.

     - Prevent havoc from attempts to subscribe a list to itself.  (!)

     - Refine mail command processing to prevent loops.

     - Pending subscription DB redone with better locking and cleaner 
       interface. 

     - posters functionality expanded.

     - Subscription policy more flexible, sensible, and
       site-configurable.

     - Various and sundry bug fixes.

1.0b5 (27-Jul-1998)

    - New file locking that should be portable and work w/ NFS.

    - Better use of packages.

    - Better error logging and reporting.

    - Less startup overhead.

    - Various and sundry bug fixes.


1.0b4 (03-Jun-1998)
 
    - A configure script for easy installation (Barry Warsaw)

    - The ability to install Mailman to locations other than
      /home/mailman (Barry Warsaw)

    - Use cookies on the admin pages (also hides admin pages from
      others) (Scott Cotton)

    - Subscription requests send a request for confirmation, which may
      be done by simply replying to the message (Scott Cotton)

    - Facilities for gating mail to a newsgroup, and for gating a
      newsgroup to a mailing list (John Viega)

    - Contact the SMTP port instead of calling sendmail (primarily for
      portability) (John Viega)

    - Changed all links on web pages to relative links where appropriate.
      (John Viega)

    - Use MD5 if crypt is not available (John Viega)

    - Lots of fixing up of bounce handling (Ken Manheimer)

    - General UI polishing (Ken Manheimer)

    - mm_html: Make it prominent when the user's delivery is disabled
      on his option page. (Ken Manheimer)

    - mallist:DeleteMember() Delete the option setings if any. (Ken
      Manheimer)

1.0b3 (03-May-1998)

    - mm_message:Deliverer.DeliverToList() added missing newline
      between the headers and message body.  Without it, any sequence
      of initial body lines that _looked_ like headers ("Sir: Please
      excuse my impertinence, but") got treated like headers.

    - Fixed typo which broke subscription acknowledgement message
      (thanks to janne sinkonen for pointing this out promptly after
      release).  (Anyone who applied my intermediate patch will
      probably see this one trigger patch'es reversed-patch
      detector...)

    - Fixed cgi-wrapper.c so it doesn't segfault when invoked with
      improper uid or gid, and generally wrappers are cleaned up a
      bit.

    - Prevented delivery-failure notices for misdirected subscribe-
      confirmation requests from bouncing back to the -request addr,
      and then being treated as failing requests.

      Implemented two measures.  Set the reply-to for the
      confirmation- request to the -request addr, and the sender to be
      the list admin.  This way, bounces go to list admin instead of
      to -request addr.  (Using the errors-to header wasn't
      sufficient.  Thanks, barry, for pointing out the use of sender
      here.)  Second, ignore any mailcommands coming from postmaster
      or non-login system type accounts (mailer-daemon, daemon,
      postoffice, etc.)

    - Reenabled admin setting of web_page_url - crucial for having
      lists use alternate names of a host that occupies multiple
      addresses.

    - Fixed and refined admin-options help mechanism.  Top-level visit
      to general-category (where the "general" isn't in the URL) was
      broken.  New help presentation shows the same row that shows on
      the actual options page.

    - cron/crontab.in crontab template had wrong name for senddigests.

    - Default digest format setting, as distributed, is now non-MIME,
      on urging of reasoned voices asserting that there are still
      enough bad MIME implementations in the world to be a nuisance to
      too many users if MIME is the default.  Sigh.

    - MIME digests now preserve the structure of MIME postings,
      keeping attachments as attachments, etc.  They also are more
      structured in general.

    - Added README instructions explaining how to determine the right
      UID and GID settings for the wrapper executables, and improved
      some of the explanations about exploratory interaction
      w/mailman.

    - Removed the constraint that subscribers have their domain
      included in a static list in the code.  We might want to
      eventually reincorporate the check for the sake of a warning
      message, to give a heads up to the subscriber, but try delivery
      anyway...

    - Added missing titles to error docs.

    - Improved several help details, including particularly explaining
      better how real_name setting is used.

    - Strengthened admonition against setting reply_goes_to_list.

    - Added X-BeenThere header to postings for the sake of prevention
      of external mail loops.

    - Improved handling of bounced messages to better recognize
      members address, and prevent duplicate attempts to react (which
      could cause superfluous notices to administrator).

    - Added __delitem__ method to mm_message.OutgoingMessage, to fix
      the intermediate patch posted just before this one.

    - Using keyword substitution format for more message text (ie,
      "substituting %(such)s into text" % {'such': "something"}) to
      make the substitutions less fragile and, presumably, easier to
      debug.

    - Removed hardwired (and failure-prone) /tmp file logging from
      answer.majordomo_mail, and generally spiffed up following janne
      sinkkonen's lead.
   
1.0b2 (13-Apr-1998)
1.0b1 (09-Apr-1998)

  Web pages much more polished 
   - Better organized, text more finely crafted
   - Easier, more refined layout
   - List info and admin interface overviews, enumerate all public lists
     (via, e.g., http://www.python.org/mailman/listinfo - sans the
     specific list)
   - Admin interface broken into sections, with help elaboration for
     complicated configuration options

  Mailing List Archives
   - Integrated with a newer, *much* improved, external pipermail - to be
     found at http://starship.skyport.net/crew/amk/maintained/pipermail.html
   - Private archives protected with mailing list members passwords,
     cookie-fied.

  Spam prevention
   - New spam prevention measures catch most if not all spam without
     operator intervention or general constraints on who can post to
     list:
       require_explicit_destination option imposes hold of any postings
       that do not have the list name in any of the to or cc header
       destination addresses.  This catches the vast majority of random
       spam.
     Other options (forbidden_posters, bounce_matching_headers) provide
     for filtering of known transgressors.
   - Option obscure_addresses (default on) causes mailing list subscriber
     lists on the web to be slightly mangled so they're not directly
     recognizable as email address by web spiders, which might be
     seeking targets for spammers.

  Site configuration arrangement organized - in mailman/mailman/modules:
   - When installing, create a mailman/modules/mm_cfg.py (if there's not 
     one already there), using mm_cfg.py.dist as a template.
     mm_default.py contains the distributed defaults, including
     descriptions of the values.  mm_cfg.py does a 'from mm_defaults.py
     import *' to get the distributed defaults.  Include settings in
     mm_cfg.py for any values in mm_defaults.py that need to be
     customized for your site, after the 'from .. import *'.
   See mm_cfg.py.dist for more details.

  Logging
   - Major operations (subscription, admin approval, bounce,
     digestification, cgi script failure tracebacks) logged in files
     using a reliable mechanism
   - Wrapper executables log authentication complaints via syslog

  Wrappers
   - All cgi-script wrapper executables combined in a single source,
     easier to configure.  (Mail and aliases wrappers separate.)

  List structure version migration
   - Provision for automatic update of list structures when moving to a
     new version of the system.  See modules/versions.py.

  Code cleaning
   - Many more module docstrings, __version__ settings, more function
     docstrings.
   - Most unqualified exception catches have been replaced with more
     finely targeted catches, to avoid concealing bugs.
   - Lotsa long lines wrapped (pet peeve:).

  Random details (not complete, sorry):
   - make archival frequency a list option
   - Option for daily digest dispatch, in addition to size threshhold
   - make sure users only get one periodic password notifcation message for
     all the lists they're on (repaired 1.0b1.1 varying-case mistake)
   - Fix rmlist sans-argument bug causing deletion of all lists!
   - doubled generated random passwords to four letters
   - Cleaned lots and lots of notices
   - Lots and lots of html page cleanup, including table-of-contents, etc
   - Admin options sections - don't do the "if so" if the ensuing list
     is empty
   - Prevent list subject-prefix cascade
   - Sources under CVS
   - Various spam filters - implicit-destination, header-field
   - Adjusted permissions for group access
   - Prevent redundant subscription from redundant vetted requests
   - Instituted centralize, robustish logging
   - Wrapper sources use syslog for logging (john viega)
   - Sorting of users done on presentation, not in list.
   - Edit options - give an error for non-existent users, not an options page.
   - Bounce handling - offer 'disable' option, instead of remove, and
     never remove without notifying admin
   - Moved subscribers off of listinfo (and made private lists visible
     modulo authentication) 
   - Parameterize default digest headers and footers and create some
   - Put titles on cgi result pages that do not get titles (all?)
   - Option for immediate admin notifcation via email of pending
     requests, as well as periodic 
   - Admin options web-page help
   - Enabled grouped and cascading lists despite implicit-name constraint
   - Changed subscribers list so it has its own script (roster)
   - Welcome pages: http://www.python.org/mailman/{admin,listinfo}/

0.95 (25-Jan-1997)
  - Fixed a bug in sending out digests added when adding disable mime option.
  - Added an option to not notify about bounced posts.
  - Added hook for pre-posting filters.  These could be used to
    auto-strip signatures.  I'm using the feature to auto-strip footers
    that are auto-generated by mail received from another mailing list.

0.94 (22-Jan-1997)
  - Made admin password work ubiquitously in place of a user password.
  - Added an interface for getting / setting user options.
  - Added user option to disable mime digests (digested people only)
  - Added user option to not receive your own posts (nondigested people only)
  - Added user option to ack posts
  - Added user option to disable list delivery to their box.
  - Added web interface to user options
  - Config number of sendmail spawns on a per-list basis
  - Fixed extra space at beginning of each message in digests...
  - Handled comma separated emails in bounce messages...
  - Added a FindUser() function to MailList.  Used it where appropriate.
  - Added mail interface to setting list options.
  - Added name links to the templates options page
  - Added an option so people can hide their names from the subscription list.
  - Added an answer_majordomo_mail script for people switching...

0.93 (18/20-Jan-1997)
  -  When delivering to list, don't call sendmail directly.  Write to a file,
     and then run the new deliver script, which forks and exits in the parent
     immediately to avoid hanging when delivering mail for large lists, so that
     large lists don't spend a lot of time locked.
  -  GetSender() no longer assumes that you don't have an owner-xxx address.
  -  Fixed unsubscribing via mail.
  -  Made subscribe via mail generate a password if you don't supply one.  
  -  Added an option to clobber the date in the archives to the date the list
     resent the post, so that the archive doesn't get mail from people sending
      bad dates clumped up at the beginning or end.
  -  Added automatic error message processing as an option.  Currently
     logging to /tmp/bounce.log 
  -  Changed archive to take a list as an argument, (the old way was broken)
  -  Remove (ignore) spaces in email addresses
  -  Allow user passwords to be case insensitive.
  -  Removed the cleanup script since it was now redundant.
  -  Fixed archives if there were no archives.
  -  Added a Lock() call to Load() and Create().  This fixes the
     problem of loading then locking. 
  -  Removed all occurances of Lock() except for the ones in mailing
     list since creating a list 
     now implicitly locks it. 
  -  Quote single periods in message text.
  - Made bounce system handle digest users fairly.

0.92 (13/16-Jan-1997)
  -  Added Lock and Unlock methods to list to ensure each operation is atomic
  -  Added a cmd that rms all files of a mailing list (but not the aliases)
  -  Fixed subscribing an unknown user@localhost (confirm this)
  -  Changed the sender to list-admin@... to ensure we avoid mail loops.
  -  check to make sure there are msgs to archive before calling pipermail.
  -  started using this w/ real mailing lists.
  -  Added a cron script that scours the maillog for User/Host unknown errs
  -  Sort membership lists
  -  Always display digest_is_default option
  -  Don't slam the TO list unless you're sending a digest.
  -  When making digest summaries, if missing sender name, use their email.
  -  Hacked in some protection against crappy dates in pipermail.py
  -  Made it so archive/digest volumes can go up monthly for large large lists.
  -  Number digest messages
  -  Add headers/footers to each message in digest for braindead mailers
  -  I removed some forgotten debug statements that caused server errors
         when a CGI script sent mail.
  -  Removed loose_matches flag, since everything used it.
  -  Fixed a problem in pipermail if there was no From line.
  -  In upvolume_ scripts, remove INDEX files as we leave a volume.
  -  Threw a couple of scripts in bin for generating archives from majordomo's
     digest-archives.  I wouldn't recommend them for the layman, though, they
     were meant to do a job quickly, not to be usable.

0.91 (23-Dec-1996)
  -  broke code into mixins for managability
  -  tag parsing instead of lots of gsubs
  -  tweaked pipermail (see comments on pipermail header)
  -  templates are now on a per-list basis as intended.
  -  request over web that your password be emailed to you.
  -  option so that web subscriptions require email confirmation. 
  -  wrote a first pass at an admin interface to configurable variables.
  -  made digests mime-compliant.
  -  added a FakeFile class that simulates enough of a file object on a
	string of text to fool rfc822.Message in non-seek mode.
  -  changed OutgoingMessage not to require its args in constructor.
  -  added an admin request DB interface.
  -  clearly separated the internal name from the real name.
  -  replaced lots of ugly, redundant code w/ nice code.  
	(added Get...Email() interfaces, GetScriptURL, etc...)
  -  Wrote a lot of pretty html formatting functions / classes. 
  -  Fleshed out the newlist command a lot.  It now mails the new list 
	admin, and auto-updates the aliases file.  
  -  Made multiple owners acceptable.
  -  Non-advertised lists, closed lists, max header length, max msg length
  -  Allowed editing templates from list admin pages.
  -  You can get to your info page from the web even if the list is closed.


Local Variables:
mode: indented-text
indent-tabs-mode: nil
End: