-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathChangeLog.20000625
6329 lines (4140 loc) · 208 KB
/
ChangeLog.20000625
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
2000-06-25 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Bf/Parser.pm (parse_smtp32): Remove undef warning when
there's no X-Mailer header.
2000-06-24 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Mj/List.pm (make_setting): Make sure that $flags is defined.
* lib/Majordomo.pm (_subscribe): Use proper calling sequence for
List::add.
* lib/Mj/List.pm (default_class): Take default class from already
existing default_class variable.
(add): Different argument ordering, call default_class and get
back all parts of the class.
* lib/Mj/MailOut.pm (handle_bounce_user): Indicate when a bounce
count is lower than it should be due to expiry.
* lib/Mj/List.pm (bounce_gen_stats): Add overload stats indicating
whether or not the count exceeded the maximum allowable,
indicating that the real value is higher.
* lib/Mj/MailOut.pm (handle_bounce): Call handle_bounce_token for
type T bounces.
* lib/Bf/Parser.pm (parse): Parse out token from type T envelopes.
* lib/Mj/MailOut.pm (handle_bounce_token): New function: deal with
bounces of confirmation messages.
2000-06-23 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Mj/MailOut.pm (handle_bounce_user): Don't do certain things
for the GLOBAL list.
(handle_bounce): If the list is GLOBAL, we expect 'whoami' to show
up in the To: header, not GLOBAL.
* lib/Mj/Token.pm (confirm): Pass additional data to mail_message
to get a cool envelope sender on outgoing tokens.
* lib/Mj/MailOut.pm (extend_sender): New function to generate an
extended sender. Intended to replace the only function we use
from Bf::Sender.pm.
(mail_message): If $sender is a hashref, call extend_sender to
make a cool sender.
2000-06-23 Jason L Tibbitts III <tibbs@math.uh.edu>
* lib/Mj/List.pm (expire_subscriber_data): Dumb logic error kept
bounce data from expiring.
2000-06-23 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Mj/List.pm (bounce_gen_stats): Use the configuration
variables instead of hardcoding things.
* lib/Bf/Parser.pm (parse_exim): Don't require an exact match on
the identification string, since some versions include extra text.
(parse_smtp32): New function to parse bounces from SMTP32.
(check_dsn_diags): Tighten up the search for the line that starts
the session transcript; AOL includes something that looks like it
in the chatty portion of the bounce as an explanation.
* lib/Mj/List.pm (expire_subscriber_data): Forgot to actually
expire any bounce data.
2000-06-22 Jason L Tibbitts III <tibbs@math.uh.edu>
* lib/Bf/Parser.pm (parse_postoffice): Parse bounces from
Post.Office.
(parse_qmail): Handle yet another qmail variant.
(check_dsn_diags): Recognize yet another sendmail diagnostic
format.
2000-06-21 Jason L Tibbitts III <tibbs@math.uh.edu>
* lib/Bf/Parser.pm (parse_lotus): Parse bounces from Lotus SMTP
MTA.
2000-06-20 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/mj_cf_data.pl: Add bounce_max_age (31) and bounce_max_count
(100) variables.
* lib/Majordomo.pm (_list_file_get_string): If the file doesn't
exist, just say so insteaf of trying to open and read nothing.
* lib/Mj/MailOut.pm (deliver): Pass bounce_probe_pattern to
delivery routine.
* lib/mj_cf_data.pl: Add bounce_probe_pattern variable.
* lib/Mj/Deliver.pm (deliver): If there is stored bounce data for
this address, always probe it. The bounce data will eventually
expire and the probes will stop if the address stops bouncing.
* lib/Majordomo.pm (who_chunk): Fix some bustedness in
who-enhanced GLOBAL that I introduced with who-export.
2000-06-20 Jason L Tibbitts III <tibbs@math.uh.edu>
* lib/Mj/Format.pm (show): Display bounce data as well.
2000-06-20 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Mj/MailOut.pm (handle_bounce): Send the bounce body to the
session file.
(handle_bounce_user): Clean up the bounce statistics display.
* lib/Majordomo.pm (_show): Rewrite to return a reasonable data
structure.
* lib/Mj/Format.pm (show): Rewrite.
2000-06-19 Michael Yount <csf@moscow.com>
* bin/mj_wwwadm: Clarify help page.
Allow multiple tokens to be processed at once.
Allow multiple addresses to be unsubscribed/unregistered at once.
2000-06-18 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Mj/MailOut.pm (handle_bounce_user): Now provide per-user
bounce statistics and recommend that users be removed.
* lib/Mj/List.pm (expire_subscriber_data): Also expire old bounce
entries.
(bounce_get): New function: retrieve parsed bounce data.
(bounce_add): New function: add an event to an address' bounce
data and return the parsed data.
(_bounce_parse_data): New private function: parse a set of bounce
data.
(bounce_gen_stats): Generate statistics from a set of bounce data.
* lib/Majordomo.pm (trigger): expire_vacation renamed to
expire_subscriber_data.
2000-06-18 Michael Yount <csf@moscow.com>
* lib/Mj/Access.pm, lib/Mj/Resend.pm, lib/Mj/Token.pm:
Prevent race condition when queue file is attached
to consult message, by spooling file before list_access_check()
is called in Mj::Resend::post(). Remove "unspooled_file"
variable.
2000-06-15 Jason L Tibbitts III <tibbs@math.uh.edu>
* lib/Bf/Parser.pm (parse_compuserve): New function to parse
Compuserve bounces.
* misc/parsebounce.pl: Collect better statistics about what bounce
formats were seen.
2000-06-15 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Mj/MailOut.pm (handle_bounce): Pull per-user bounce handling
out into handle_bounce_user.
(handle_bounce_user): New function.
2000-06-14 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Mj/SubscriberList.pm: Add 'bounce' as a field.
2000-06-14 Jason L Tibbitts III <tibbs@math.uh.edu>
* lib/Bf/Parser.pm (parse_postfix): Fix failure ID line.
* lib/Mj/MailOut.pm (handle_bounce): Fix busted setting of
$parser->output_dir.
* lib/Bf/Parser.pm (parse_qmail): Fold parse_yahoo in; the bounce
formats are very similar.
(parse_postfix): New function to parse bounces from Postfix.
2000-06-11 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Bf/Parser.pm (parse_exim): Handle multiline diagnostics.
(parse_qmail): New function: parse bounces from qmail.
(parse_dsn): Tightened up delivery-status block parsing; accept
random numbers before and between blocks. Why is Netscape
Messaging Server so screwed up?
(check_dsn_diags): Try even harder to get diagnostics. If we try
much harder, we'll have to start making them up.
(check_dsn_netscape): Added a few more formats. How many
special-purpose bounce formats does this software have?
(parse_softswitch): Parse bounces from Soft-Switch.
2000-06-10 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Bf/Parser.pm (check_dsn_diags): Add another possible
pattern.
2000-06-09 Jason L Tibbitts III <tibbs@math.uh.edu>
* lib/Majordomo.pm (who_chunk): If the user has an expiring nomail
class set, return information on the original class.
2000-06-08 Jason L Tibbitts III <tibbs@math.uh.edu>
* lib/Mj/List.pm (describe_class): Return nomail expiry times
properly in as-setting mode.
* lib/Mj/TextOutput.pm (set): Rewrite to handle multiple
comma-separated states, some with complex syntax.
* lib/Bf/Parser.pm (check_dsn_netscape): New function to check
DSNs from netscape messaging server which don't have per-user
info blocks.
(check_dsn_diags): New function to extract diagnostice from
the session transcipt in the human readable portion of the DSN if
useful diagnostics were not found.
(parse_dsn): Call check_dsn_netscape if no per-user info blocks
are found, and call check_dsn_diags if there were any addresses
for which we could not find useful diagnostics.
2000-06-07 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Mj/Format.pm (who): Don't run export mode unless the
extra data is there; instead, fall back to a normal who.
* lib/Majordomo.pm (who_chunk): In export mode, attach flag and
class descriptions to the address.
* lib/Mj/Format.pm (set): Rewrite; use new return values from the
core.
* lib/Majordomo.pm (_set): Change the return values a bit. Return
a hash for each address and generate class and flag descriptions.
* lib/Mj/List.pm (set): Allow comma-separated list of settings.
Clean up return value a bit.
2000-06-07 Jason L Tibbitts III <tibbs@math.uh.edu>
* lib/Mj/MailOut.pm (owner_done): Chomp out all bounce handling
stuff; the function was getting way too large.
(handle_bounce): New function. Call parsers and generate bounce
messages.
* lib/Bf/Parser.pm (parse_dsn): If we didn't get a per-user
information block, say we couldn't parse the bounce.
2000-06-05 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Mj/Format.pm (who): Restructure a bit and allow for 'export'
mode, which generates commands needed to regenerate a list.
2000-06-01 Michael Yount <csf@moscow.com>
* lib/Majordomo.pm: Add variable substitutions for
the faq, info, and intro commands.
2000-05-28 Michael Yount <csf@moscow.com>
* lib/Mj/CommandProps.pm: Allow faq, info, and intro
to be used with the GLOBAL and DEFAULT lists.
* lib/Majordomo.pm:
(_reg_add, _reg_remove) Sort the list names when storing
a subscriber's registry data.
(_password, _request_response) Do not append a domain name to
'whoami' and other addresses when substituting;
Mj::Config does this already.
(get_all_lists) Return a sorted list of lists.
(_password) Allow $VICTIM to be substituted in new_password.
(_rekey) Skip registration records for which an Mj::Addr could not
be created.
(_unregister) Allow regular expressions to be used with
the unregister command.
2000-05-25 Michael Yount <csf@moscow.com>
* bin/mj_wwwusr: New prototype of WWW interface for users.
It currently supports the functionality of lists, faq,
info, intro, show, set, subscribe, and unsubscribe.
2000-05-24 Michael Yount <csf@moscow.com>
* bin/mj_wwwadm, bin/mj_confirm: Add error checks for return
values from new() and connect(). Untaint domain name.
(Thanks to Olivier Prenant)
* bin/mj_wwwadm: Use PATH_INFO to allow a list name to be specified
in the URL, e.g., http://example.com/cgi-bin/mj_wwwadm/mytestlist.
Allow '=' to be used to separate command and mode.
Add the set command to the command menu.
Add "about this service" entry to the command menu, and supply
usage instructions if it is utilized.
* lib/Mj/Access.pm: add mime_header_length_exceeded to consult_vars.
* lib/Mj/CommandProps.pm: change the bytes variable to body_length.
Add the mime_header_length and mime_header_length_exceeded variables
to the 'legal' hash for the post command.
* lib/Mj/Resend.pm: set the mime_header_length, body_length,
and body_length_exceeded variables appropriately.
2000-05-23 Michael Yount <csf@moscow.com>
* lib/Mj/Resend.pm (_check_body): Make use of maxlength
variable to check message body size.
* lib/Mj/Access.pm, lib/Mj/CommandProps.pm: Add new
"body_length_exceeded" access variable.
2000-05-23 Jason L Tibbitts III <tibbs@math.uh.edu>
* lib/Mj/MailOut.pm (owner_done): Include bouncing users in
subject of bounce detection report.
2000-05-21 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Bf/Parser.pm (parse_exim): Parse exim bounces.
(parse): Call parse_exim.
(parse_yahoo): Tweak parsing a bit.
2000-05-20 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Bf/Parser.pm (parse): Call parse_yahoo.
(parse_yahoo): Parse bounces from yahoo.
2000-05-19 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Majordomo.pm: Bump version numver.
2000-05-18 Jason L Tibbitts III <tibbs@math.uh.edu>
* lib/Mj/Resend.pm (_describe_taboo): Trim down the length of
matched strings in bounce reasons.
2000-05-12 Michael Yount <csf@moscow.com>
* lib/Mj/Token.pm:
(confirm, consult, t_remind) Substitute for $REASONS. The reasons
are separated by newlines.
(consult) Use a reply file for all commands, and for posts append
the original message as a second (message/rfc822) body part.
* lib/Mj/Resend.pm:
(_check_approval, _trim_approved) Adjust regex to allow
an absence of white space between password and token.
Check for Approved: in first body part if no password
was found in the preamble.
* lib/Mj/Access.pm:
(_a_default) Specify reasons for many of the default actions.
* files/en/token_remind, files/en/confirm, files/en/confirm_noweb, files/en/consult, files/en/consult_noweb:
Add explanation of reasons in consult, confirm, token_remind
files.
* files/INDEX.pl:
Include the name of the request ($REQUEST) in the description for
English consult/confirm files.
2000-05-12 Jason L Tibbitts III <tibbs@math.uh.edu>
* lib/Mj/Parser.pm (parse_entity): New calling convention: take
just one hash, abolish $extra.
(parse_part): Rename $args variable to avoid confusion with %args.
* bin/mj_queuerun (parse_commands):
* bin/mj_email (parse_commands): Handle new Parser::Parse_entity
calling conventions.
2000-05-11 Michael Yount <csf@moscow.com>
* bin/mj_wwwadm: Use the remote IP address as the
local part of the fake requester address.
2000-05-10 Jason L Tibbitts III <tibbs@math.uh.edu>
* lib/Bf/Parser.pm (parse): Change order of parsing. Try to do
specialized parsing even if the envelope doesn't include any VERP
stuff.
2000-05-10 Michael Yount <csf@moscow.com>
* lib/Mj/SimpleDB/DB.pm: Do not use R_CURSOR when deleting.
* lib/Mj/Format.pm (tokeninfo): Indicate reasons if they exist.
2000-05-09 Michael Yount <csf@moscow.com>
* lib/Mj/Config.pm (whence): Determine the source of a
configuration setting: mj_cf_defs, DEFAULT, or list-specific.
This information is displayed in the results of the
configshow command, as a comment.
2000-05-09 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Mj/MailOut.pm (owner_done): If the MIME parser didn't like
the message, don't try to do anything with it.
2000-05-08 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Bf/Parser.pm (parse): Make sure $type is defined before
returning.
* lib/Mj/MailOut.pm (owner_done): Avoid undef warning when no
diagnostic is available.
2000-05-06 Michael Yount <csf@moscow.com>
* /lib/Mj/Access.pm:
(_a_confirm2) Allow the command if the requester and victim are
identical and the victim's password was supplied.
2000-05-06 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Mj/MailOut.pm (owner_done): Report diagnostic in message to
owner.
* lib/Bf/Parser.pm (parse_dsn): Return Diagnostic-Code: if
available. Loop over all per-user bounce status blocks and return
data on all users found there.
2000-05-05 Michael Yount <csf@moscow.com>
* /lib/Majordomo.pm:
(changeaddr) If an address is to be replaced by an address that
is already in the registry, combine the list data for the
two registry entries.
(set) Return an error immediately if the set command is called
for the DEFAULT or GLOBAL lists.
* /lib/Mj/Access.pm, /lib/Mj/CommandProps.pm:
Remove default access routines for the subscribe and unsubscribe
commands and incorporate their functionality into
Mj::Access::_a_default. Use a default access value
of 'policy' to invoke this code. The unsubscribe, subscribe,
and set commands now have default access 'policy', and
the archive command has default access 'access'.
* /lib/Mj/Format.pm:
(set) Remember to obtain the error message if an error occurs.
* /lib/Mj/List.pm:
(set) Indicate the name of the list if an error occurs
because the victim is not subscribed.
* /lib/mj_cf_data.pl, /lib/mj_cf_defs.pl, /MANIFEST, /files/INDEX.pl, /files/e
n/config/archive_access, /files/en/config/set_policy, /files/en/config/unsubscribe
_policy:
Add archive_access and set_policy variables.
Change unsubscribe_policy to allow "+confirm" values.
2000-05-04 Jason L Tibbitts III <tibbs@math.uh.edu>
* lib/Bf/Parser.pm (parse): Allow lower case types because some
sites will actually downcase them.
* lib/Mj/Config.pm (parse_access_rules): Remove spurious debugging
code.
* lib/Mj/Access.pm (_d_post): Add "non-member submission" reason
when restrict_post triggers.
* lib/Mj/Resend.pm (post): Fix warning when no subject is present.
* lib/Mj/List.pm (new): Don't try to create any databases if our
directory doesn't exist.
* lib/Mj/Config.pm (parse_restrict_post): Was completely broken.
2000-05-04 Michael Yount <csf@moscow.com>
* /lib/Mj/List.pm, /lib/Mj/Format.pm:
(set, make_setting) Deal better with partial failures.
Indicate which setting is being changed.
If no digests are configured, indicate the name of the list.
* /bin/mj_wwwadm:
Correctly set command name for non-hyphenated commands.
2000-05-03 Michael Yount <csf@moscow.com>
* /lib/Mj/Resend.pm:
(_describe_taboo) Remove any control-A characters (the token database
field separator) from the matching text.
* /files/en/config/bounce_recipients, /lib/Mj/MailOut.pm, /lib/mj_cf_data.pl,
/lib/mj_cf_defs.pl, /files/INDEX.pl:
Add bounce_recipients configuration variable. The addresses
specified in this variable will receive any bounce messages
identified by Bf::Parser.
* /bin/mj_wwwadm:
Include the unregister command in the command menu
2000-05-03 Jason L Tibbitts III <tibbs@math.uh.edu>
* lib/Mj/Access.pm (list_access_check): Reindent slightly.
* lib/Mj/Config.pm (parse_access_rules): Just use the stored class
info that parse_taboo_* create instead of parsing the variables
ourselves.
Extract data from global variables as well.
2000-05-02 Jason L Tibbitts III <tibbs@math.uh.edu>
* lib/Mj/Config.pm (parse_taboo_body): Store all of the classes
defined by any of the rules.
(parse_taboo_headers): Ditto.
* lib/Majordomo.pm (_make_list): Add a callback for
_global_config_get, so global variables can be extracted internal
to the list configuration.
* lib/Mj/Config.pm (parse_access_rules): Extract the classes
defined in taboo and admin rules and pass them into _compile_rule
so they can be listed as legal variables.
(_compile_rule): Don't blindly match against (admin|taboo)_ for
legal variables; use the hash of variables passed in to us
instead.
2000-05-02 Michael Yount <csf@moscow.com>
* README.EXIM:
Discuss the permissions required to read
alias files, and the use of Exim's temp_errors setting to queue
temporary failures in mj_enqueue.
* bin/mj_enqueue, Makefile.PL:
Remove Errno and sysexits dependencies entirely.
Use hard-coded return values instead.
* bin/mj_wwwadm
Display the command just executed in the command menu.
Use who-enhanced in the command menu.
* lib/Majordomo.pm (_set):
Add back-end for the "set" core function, and allow it to
work with GLOBAL or ALL, synonyms for changing the settings
on every list in which the subscriber participates. Make
the result of the "set" command slightly more descriptive.
* lib/Mj/Access.pm (list_access_check):
Add a rules_var check for the "unset" access rule action.
* lib/Mj/Config.pm (_str_to_clock):
Make tests for days, numbers (1st, 3rd, etc.), and other
directives containing letters in the digest "times" field
case-insensitive.
2000-05-01 SRE <eckert@climber.org>
* files/en/help/changeaddr, files/en/help/default:
take a stab at documenting the new "default user" command
* files/en/help/configset_access_rules:
another pass at access_rules actions, based on email from Yount...
specifically re-wording confirm2, confirm_consult, and consult
with respect to files and groups
* files/en/config/save_denial_checksums:
made config match help for save_denial_checksums
* files/en/help/configset_access_rules:
added mention of actions that were previously missing: reason, set, unset
* files/en/help/configset_save_denial_checksums, files/en/config/save_denial_checksums:
improved help for save_denial_checksums: noted integer vs. boolean
value, added paragraph about why this variable is useful
2000-04-30 Michael Yount <csf@moscow.com>
* bin/mj_queuerun:
(connect_and_parse) Ensure that a MIME entity exists before
processing it.
* Makefile.PL:
Add tests for Errno.pm and sysexits.ph.
2000-04-28 Michael Yount <csf@moscow.com>
* setup/setup_func.pl:
Do not test the result of rchown().
* lib/Mj/Resend.pm, bin/mj_queuerun:
Add preliminary code to prevent the queue becoming clogged if a message
with no From: or Apparently-from: header is processed.
2000-04-27 Michael Yount <csf@moscow.com>
* lib/Mj/Config.pm:
(_str_to_clock) Allow saturday and sunday to be used in the digest
"times" field.
2000-04-25 Michael Yount <csf@moscow.com>
* lib/Mj/Access.pm:
Use the second file specified for conf_cons or confirm2 only for
notices that a token exists, not for replies after the token
is accepted or rejected.
2000-04-25 SRE <eckert@climber.org>
* files/en/help/changeaddr:
documented new confirm2 option for access_rules
* files/en/help/configset_access_rules:
improved explanation of changeaddr
2000-04-25 Jason Tibbitts <tibbs@math.uh.edu>
* setup/postinstall.pl, MANIFEST:
Remove postinstall.pl, as it isn't used anywhere.
2000-04-25 SRE <eckert@climber.org>
* MANIFEST, files/INDEX.pl:
added help file for new changeaddr command
* files/en/help/subscribe, files/en/help/unregister, files/en/help/unsubscribe, files/en/help/changeaddr, files/en/help/commands:
added help file for new changeaddr command, added mention
of the new command in several other help files
* setup/setup_func.pl:
for safety, add error traps on chmod and chown calls
2000-04-24 Michael Yount <csf@moscow.com>
* lib/Majordomo.pm (changeaddr):
Move address change code from "unregister-replace" to the new
"changeaddr" core routine. The changeaddr command adjusts
aliases automatically, as does the unregister command, but
it does not yet deal with auxiliary lists.
2000-04-23 SRE <eckert@climber.org>
* files/en/help/configset_restrict_post, files/en/config/restrict_post, files/en/help/admin:
greatly improved description in "help configset restrict_post",
minor improvement to index and text of "help admin"
2000-04-23 Michael Yount <csf@moscow.com>
* files/en/confirm, files/en/confirm_noweb, files/en/consult, files/en/consult_noweb:
* Indicate in confirm and consult messages the address that was
responsible for the request.
* lib/Majordomo.pm (connect):
Add "sessionuser" variable to a Majordomo object, indicating the
address that was used to initiate a session.
* various:
$fh = new IO::File ">$file" || die "Eek!";
does not work as expected. Use "or" instead of ||.
* lib/Mj/CommandProps.pm, lib/Mj/Access.pm:
Add "posing" variable to access rules; it indicates if the
user for the current request is different from the original
"sessionuser." The "posing" variable has side-effects: if the rule
for a request is "mismatch" and "posing" is true, both
the user and victim may be consulted. "posing" is treated
the same as "mismatch" for (un)subscribe commands.
* lib/Mj/Parser.pm (parse_part):
Enhance "default user" command: send results of each
command to the posed address. The poser will still
see the result of the command (succeed, stall, fail)
but none of the output. The message to the posee
has the poser's address in the From: header and
majordomo-owner in Reply-To.
2000-04-21 Jason Tibbitts <tibbs@morpheus.math.uh.edu>
* lib/Mj/MailOut.pm (owner_done): Handle new return from
Bf::parse. Build an intelligible message from all of the data we
have available.
* lib/Bf/Parser.pm (parse): Redo data passing. Return information
gleaned from envelope as well as hashref to data pulled from
parsed bounces.
(parse_dsn): Clean up and return bad address instead of complete
content of final-/original-recipient line.
* lib/Mj/MailOut.pm (owner_start): Name temp files $tmp/owner.*
instead of $tmp/post.*.
2000-04-20 Michael Yount <csf@moscow.com>
* lib/Mj/CommandProps.pm, lib/Majordomo.pm:
Tighten access to the "set" and "show" commands. The new
"default user" feature makes it possible not only to assume
someone's identity, but also to see the result of commands
that are issued. Add list_access_check to the "set" core
function, and change the default access for the "show"
command from "mismatch" to "confirm."
* lib/Mj/Token.pm:
Add sanity checks for reminders: if token_remind is unset,
negative, or greater than token_lifetime, do not send a reminder.
2000-04-20 SRE <eckert@climber.org>
* README, README.QUICKSTART:
improved notes about which Perl modules are required to install,
and where/how to get them
2000-04-20 Michael Yount <csf@moscow.com>
* lib/Mj/Format.pm, lib/Mj/Parser.pm, lib/Majordomo.pm:
Implement sample "unregister-replace" command, which allows one
address to be replaced by another in the registry.
Add "user" to the supported actions for the default command.
This allows the address from the From: or Apparently-From: header
to be overridden.
2000-04-19 SRE <eckert@climber.org>
* files/en/help/faq, files/en/help/get, files/en/help/info, files/en/help/intro, files/en/help/put, files/en/help/rekey, files/en/help/admin, files/en/help/admin_commands, files/en/help/configset_tmpdir:
noted 'get-immediate' option, fixed obsolete references to 'filesync'
* setup/setup_func.pl:
if no mta config was requested, directory ALIASES wasn't created,
and "make install" failed trying to write ALIASES/mj-domains
at setup/setup_func.pl line 332
* files/en/help/put:
question on majordomo_users indicated people were confused about
pathname to put files relative to system root, so added a note and fixed a typo
2000-04-17 Michael Yount <csf@moscow.com>
* bin/mj_wwwadm:
Improve the appearance of output from the showtokens and
tokeninfo commands.
2000-04-16 Michael Yount <csf@moscow.com>
* bin/mj_enqueue:
Always read all data on stdin. Discard any data following an
error during print().
2000-04-16 Sudhakar Chandrasekharan <thaths@netscape.com>
* README.POSTFIX:
Indicate that the Postfix LDA should be configured to
run as the majordomo user.
2000-04-15 Michael Yount <csf@moscow.com>
* setup/mta_sendmail.pl:
Use "nobody@example.com" as an artificial address.
* lib/Mj/Inform.pm, lib/Mj/Resend.pm:
Log the address of the person who posts a message. This makes
the output of the post command and the "inform" messages
sent to the list owners less informative, but clarifies the
main log, which will be useful when statistics-reporting is
implemented.
2000-04-12 Michael Yount <csf@moscow.com>
* lib/Mj/Log.pm:
(add) Use the fully qualified Sys::Syslog::setlogsock() call.
In perl 5.00404, this subroutine will not be exported on
systems where &_PATH_LOG is undefined by the system headers.
Thanks to David L. Potter and Michael Smith for the idea.
* bin/mj_enqueue:
Improve error checking. Since stdio is buffered, print() may always
succeed if an incoming message is small, but an error may occur when
the output file handle is closed. In either case, return EX_IOERR.
If the queue file cannot be opened, return EX_CANTCREAT unless the
error is EEXIST.
* bin/mj_enqueue:
Cope with a lack of disk space. Perl's print subroutine (and fprintf
in C) will return a value indicating success if data are written to a file
on a full filesystem, so checking the result of print is not helpful.
However, when close() is called, it will return an error.
If that happens, unlink the queue file and exit with
a status of EX_IOERR. Sendmail and Zmailer, at least, will then
defer delivery of the incoming message.
* lib/Mj/Format.pm, lib/Mj/TextOutput.pm:
(set) Allow the set command to work properly when multiple
addresses are specified with a here document.
2000-04-11 Michael Yount <csf@moscow.com>
* lib/Mj/FileRepl.pm:
(commit) Test result of close() on the replacement file.
Do not replace the old file if it fails.
* lib/Mj/Access.pm:
(list_access_check) Append each "reason" to $arg2. This will cause
the reason to appear in the subject line of CONSULT messages.
* setup/install_util.pl:
Apply safe_mkdir patch from Darren Stalder.
* lib/Mj/Config.pm:
(unlock, _save_new) Check result of print() and do not commit if
it fails.
* lib/Mj/List.pm:
(rekey) Do not run subscriber_rekey on the DEFAULT list.
2000-04-10 Michael Yount <csf@moscow.com>
* lib/Mj/Resend.pm:
(post) Remove REASONS from the list of substitutions for
acknowledgement subjects.
* setup/ask_basic.pl:
Allow people with DB_File installed to choose flat file databases instead.
The database_backend variable was not being set in .mj_config.
2000-04-10 SRE <eckert@climber.org>
* lib/Majordomo.pm, files/en/help/configset_save_denial_checksums, MANIFEST, files/INDEX.pl:
updated help files for new configset option "save_denial_checksum"
2000-04-10 Darren Stalder <torin@daft.com>
* setup/install_util.pl:
(safe_mkdir) Have safe_mkdir be more safe by creating all the
directories leading up to supplied directory if necessary.
2000-04-09 Michael Yount <csf@moscow.com>
* lib/Mj/MailOut.pm:
(mail_message) Change error handling: call inform() instead of Log::abort()
to report an error if a message could not be addressed or delivered.
* lib/Mj/SimpleDB/DB.pm:
(mogrify) Add workaround for cursor incompatibilities between DB_File and
Berkeley DB on *BSD operating systems.
2000-04-08 Michael Yount <csf@moscow.com>
* lib/Mj/Deliver/Envelope.pm, lib/Mj/List.pm, lib/Mj/Resend.pm, lib/Bf/Parser.pm, lib/Mj/Access.pm, lib/Mj/CommandProps.pm, lib/mj_cf_data.pl, lib/mj_cf_defs.pl, files/en/config/save_denial_checksums, files/en/repl_consult, files/en/repl_deny, files/INDEX.pl:
Add "save_denial_checksums" configuration variable. This
determines whether or not message body checksums of messages
denied by the access rules will be saved in the duplicate
database. It is off by default.
Add "reason" action to access_rules. This allows additional
information to be added to reply files for denied and stalled
requests.
Cause "unset" access rule action to set a variable to zero
instead of deleting it. This is used by the denial checksum
code to determine if the checksum variables were reset
by the access rules or never defined in the first place.
Thus, no checksum-saving side effects are caused by changing
the checksum variables.
Include the checksums in the access "avars" data used by
Mj::Resend::post.
Cause a 450 return code from RCPT TO to defer delivery for
that recipient.
* bin/mj_shell:
Allow here documents to work with commands prefaced by "approve" .
2000-04-07 Michael Yount <csf@moscow.com>
* lib/Mj/FileSpace.pm:
(_find_legal_files) Return immediately if unable to create a DirHandle for
a directory. This will keep the index command from aborting if the
path specified in the request does not exist.
2000-04-07 SRE <eckert@climber.org>
* files/en/help/put, files/en/help/variables, files/en/help/configset_reply_to, files/en/help/configset_signature_separator, files/en/help/configset_subject_prefix, files/en/help/configset_welcome_files, files/en/help/configset_message_footer, files/en/help/configset_message_fronter, files/en/help/configset_message_headers, files/en/help/configset_digests, files/en/help/configset_inform, files/en/help/configset_access_rules, files/en/help/configset_confirm_url, files/en/help/configset_delivery_rules, files/en/config/welcome, files/en/config/welcome_files, files/en/config/signature_separator, files/en/config/subject_prefix, files/en/config/taboo_body, files/en/config/taboo_headers, files/en/config/message_fronter, files/en/config/message_headers, files/en/config/reply_to, files/en/config/restrict_post, files/en/config/sequence_number, files/en/config/delivery_rules, files/en/config/digest_issues, files/en/config/digests, files/en/config/message_footer, files/en/config/addr_allow_ending_dot, files/en/config/admin_headers, files/en/config/attachment_rules, files/en/config/confirm_url, files/en/config/default_flags, files/en/config/access_rules:
made sure contents of files/en/help/configset_* is a strict superset of files/en/config
and moved ALL substitution variable descriptions into "help variables"
* files/en/help/configset_welcome_files:
added missing backslashes (variable names are supposed to show, not be evaluated)
* files/en/help/admin:
removed obsolete reference to FILES,
inserted reference to new "help variables" file
* files/en/help/unknowntopic:
made it more clear why this file was sent
2000-04-06 SRE <eckert@climber.org>
* files/en/help/digest, files/en/help/put:
moved description of digest files (preindex, postindex, and footer)
from "help put" to "help digest"
* files/INDEX.pl:
added help/variables, sorted and cleaned up columns on other english entries
* files/en/help/variables:
new help file: a single place where all substituted/expanded variables are listed
(mostly variables expanded for "put" files)
* lib/Majordomo.pm:
bug fix: print to closed file handle in substitute_vars() because
$INCLUDE caused output file to close when nested read finished
2000-04-05 Michael Yount <csf@moscow.com>
* lib/Mj/Access.pm:
(list_access_check) Finish preliminary support for "set" and "unset"
access rule actions. At the moment, it is only possible to set
a variable to 1 (if previously unset) or to delete it. Support
for parenthesized expressions and setting variables to specific
values will be added later.
2000-04-04 Michael Yount <csf@moscow.com>
* bin/mj_queueserv:
Zmailer sets $ENV{'IFS'} when delivering mail via a pipe. Untaint
the value by deleting it from %ENV.
Aside from this problem, Mj2 and Zmailer work well together.
2000-04-01 SRE <eckert@climber.org>
* lib/Mj/Parser.pm:
enable "dash represents blank line" in command parser here documents
2000-03-30 SRE <eckert@climber.org>
* files/en/help/set:
added a note about using 'configshow listname digests' to get list
of available digests before sending 'set digest' to server
2000-03-30 Michael Yount <csf@moscow.com>
* lib/Mj/List.pm:
(make_setting) Return an error if an attempt is made to receive
digests on a mailing list for which no digests are distributed.
2000-03-29 SRE <eckert@climber.org>
* lib/Mj/CommandProps.pm:
bug fix for command_legal() - missing "exists" test caused hash keys to be added
added new command_list() to return all keys of %commands and %aliases
* lib/mj_cf_data.pl:
obsolete variable removed, some text put into help files
2000-03-28 Michael Yount <csf@moscow.com>
* lib/Mj/Deliver/SMTP.pm:
(getresp) Treat the 552 error code as a fatal error. If a 552 is received
for a RCPT TO because the message is too large, DATA will fail.
Exim will return a 552 for too many recipients in some cases, in
which case DATA will fail also.
2000-03-28 SRE <eckert@climber.org>
* lib/Mj/TextOutput.pm, DESIGN:
change comment reference from parser_data.pl to CommandProps.pm
* MANIFEST:
make manifest reflect files deleted yesterday
* lib/Mj/Config.pm:
removed file_header, never used and contained bad info
* files/en/help/configset_*
reworked heading of configset_variable help files...
now auto-extracted from release source instead of
re-parsing configshow output, more info and more consistent
* files/en/help/archive, files/en/help/configset_access_rules, files/en/help/configset_digests, files/en/help/digest, files/en/help/mkdigest, files/en/help/owner, files/en/help/post, files/en/help/request_response, files/en/help/sessioninfo, files/en/help/trigger, files/en/help/access:
Finally documented the last remaining commands, some of which
are not intended for end users, others of which had been overlooked.
All commands (parser and otherwise) plus aliases and configset
variables, now have help files available.
2000-03-27 Michael Yount <csf@moscow.com>
* lib/Mj/Deliver/Envelope.pm:
(address) Await and discard responses if a 452 or 552 error code is
received in response to a RCPT TO.
2000-03-27 SRE <eckert@climber.org>
* files/en/help/admin:
inserted text from README.QUICKSTART, for how to quickly set up a list
* README.QUICKSTART:
README.QUICKSTART now contains hints on setting up Mj2,
and refers to "help admin" for how to quickly set up a list
* files/en/help/put:
changed note: README.FILES is obsolete
* README.FILES:
this text is a subsection of 'help put', README.FILES is obsolete
* README:
changed reference to ACCESS_RULES file - info is now in 'help configset access_rules'