Import ezmlm-idx 0.40
[ezmlm] / idx.patch
CommitLineData
f8beb284
MW
1--- ezmlm-warn.1 1998/02/17 00:32:45 1.1
2+++ ezmlm-warn.1 1998/12/21 04:35:16 1.5
3@@ -3,6 +3,15 @@
4 ezmlm-warn \- send out bounce warnings
5 .SH SYNOPSIS
6 .B ezmlm-warn
7+[
8+.B \-dD
9+][
10+.B \-t
11+.I timeout
12+][
13+.B \-l
14+.I lockout
15+]
16 .I dir
17 .SH DESCRIPTION
18 .B ezmlm-warn
19@@ -12,27 +21,91 @@
20
21 .B ezmlm-warn
22 scans
23-.I dir\fB/bounce
24-for bounce messages received by
25-.BR ezmlm-return .
26-If it sees a distribution bounce for
27+.I dir\fB/bounce/d/
28+for directories older than
29+.I timeout
30+days ago (see
31+.BR \-t ).
32+The directories are created by
33+B ezmlm-return
34+and contain bounces.
35+If
36+.B ezmlm-warn
37+sees a distribution bounce for
38 .I box\fB@\fIdomain
39-received more than ten days ago,
40+received more than
41+.I timeout
42+days ago,
43 it sends
44 .I box\fB@\fIdomain
45 a list of all the message numbers missed recently,
46 and deletes the bounce.
47 If it sees a warning bounce for
48 .I box\fB@\fIdomain
49-received more than ten days ago,
50+received more than
51+.I timeout
52+days ago,
53 it sends
54 .I box\fB@\fIdomain
55 a probe,
56 and deletes the bounce.
57
58 .B ezmlm-warn
59+uses
60+.I dir\fB/bounce/lastd
61+to keep track of when it was last run. If insufficient time has
62+passed (see
63+.BR \-l )
64+.B ezmlm-warn
65+exits without further action.
66+
67+.B ezmlm-warn
68+keeps files with the bounced message numbers in
69+.IR dir\fB/bounce/h .
70+Expired files are removed and
71+.I dir\fB/bounce/lasth
72+keeps track of the last subdirectory scanned.
73+
74+.B ezmlm-warn
75 will not send a warning or probe to an address that is
76 not currently a subscriber.
77+.SH OPTIONS
78+.TP
79+.B \-d
80+process bounces for the digest list, rather than for the main list.
81+Digest list bounces are stored in
82+.I dir\fB/digest/bounce/
83+rather than in
84+.IR dir\fB/bounce/ .
85+.TP
86+.B \-D
87+(Default.)
88+Process bounces for the main list.
89+.TP
90+.B \-l \fIlockout
91+.B ezmlm-warn
92+will abort execution if it was run less than
93+.I lockout
94+seconds ago. The default is
95+.I timeout /
96+50, which with the default
97+.I timeout
98+is 20,000 seconds (approx. 5.6 hours). There is no reason to use this
99+switch, except for testing and possibly in combination with
100+.BR \-t.
101+.TP
102+.B \-t \fItimeout
103+Bounces received more than
104+.I timeout
105+days ago are processed. This overrides the default of 1,000,000
106+seconds (approximately 10 days)
107+and may possibly be useful for very large busy lists. Also, a
108+.I timeout
109+of zero can be used to send a warning to all addresses for which
110+a bounce has been received and a probe for all addresses for which a
111+warning has bounces.
112+This is useful to rapidly clear
113+out bouncing addresses from a (low quality) address list.
114 .SH "SEE ALSO"
115 ezmlm-make(1),
116 ezmlm-return(1),
117--- ezmlm-return.1 1998/02/17 00:33:15 1.1
118+++ ezmlm-return.1 1999/08/19 03:57:54 1.6
119@@ -3,12 +3,16 @@
120 ezmlm-return \- handle mailing list bounces
121 .SH SYNOPSIS
122 .B ezmlm-return
123+[
124+.B \-dD
125+]
126 .I dir
127 .SH DESCRIPTION
128 .B ezmlm-return
129 handles bounces for the mailing list
130 stored in
131-.IR dir .
132+.I dir
133+and, if it exists, the associated digest list.
134
135 .B ezmlm-return
136 is normally invoked from a
137@@ -21,6 +25,30 @@
138 and
139 .BR HOST
140 environment variables.
141+
142+.B ezmlm-return
143+exits 99, not 0, upon success.
144+.SH OPTIONS
145+.TP
146+.B \-d
147+.B ezmlm-return
148+will assume the bounce is for a digest list.
149+Normally,
150+.B ezmlm-return
151+will autodetect this from the bounce address. Autodetection makes
152+.B ezmlm-return
153+less flexible and will be removed in future versions.
154+.TP
155+.B \-D
156+.B ezmlm-return
157+will assume that the bounce is for a normal (non-digest) list.
158+Normally,
159+.B ezmlm-return
160+will autodetect this from the bounce address. Autodetection makes
161+.B ezmlm-return
162+less flexible and will be removed in future versions.
163+.B \-D
164+will become the default.
165 .SH ADDRESSES
166 .B ezmlm-return
167 handles mail sent to any of the following addresses:
168@@ -59,6 +87,21 @@
169 will remove
170 .I box\fB@\fIdomain
171 from the mailing list.
172+.TP
173+.I local\fB\-return\-receipt\-\fIcookie\-fImsg\-
174+A receipt from the list. This is logged. For SQL supporting lists,
175+.I cookie
176+is verified and receipt logged only if the cookie is correct. The arrival
177+of the receipt shows that qmail at the sending host is running.
178+
179+For all the above addresses if,
180+.I local
181+is followed by
182+.IR \-digest ,
183+bounces are assumed to be from the digest list, and are stored in
184+.I dir\fB/digest/bounce
185+rather than in
186+.I dir \fB/bounce .
187 .SH "SEE ALSO"
188 ezmlm-manage(1),
189 ezmlm-make(1),
190--- ezmlm-send.1 1997/07/23 18:55:45 1.1
191+++ ezmlm-send.1 1999/08/19 03:13:36 1.27
192@@ -3,6 +3,11 @@
193 ezmlm-send \- distribute a message to a mailing list
194 .SH SYNOPSIS
195 .B ezmlm-send
196+[
197+.B \-cCrRvV
198+] [
199+.B \-h\fI header
200+]
201 .I dir
202 .SH DESCRIPTION
203 .B ezmlm-send
204@@ -14,9 +19,34 @@
205 exists,
206 .B ezmlm-send
207 records a copy of the message in the
208-.I dir\fB/archive
209+.I dir\fB/archive/
210 directory.
211
212+If
213+.I dir\fB/indexed
214+exists,
215+.B ezmlm-send
216+adds the subject, author and time stamp of the message to the index, kept with
217+the message in a subdirectory of
218+.IR dir\fB/archive/ .
219+The subject is processed to make reply-subject entries identical to
220+original
221+message subject entries.
222+The subject index is used for the archive retrieval functions of
223+.BR ezmlm-get(1) .
224+Use
225+.B ezmlm-idx(1)
226+to create a subject index from a preexisting archive.
227+
228+Subject and author lines are decoded if they are encoded per rfc2047. When
229+split lines are unfolded, the number of escape sequences for
230+iso-2022-* character sets is minimized. For instance, two
231+consequtive toascii sequences are reduced.
232+This processing is done for the character set specified in
233+.IR dir\fB/charset .
234+The result of this process is the same for a given subject, irrespective
235+of encoding.
236+
237 At the beginning of the message,
238 .B ezmlm-send
239 prints a new
240@@ -27,10 +57,24 @@
241 .B Mailing-List
242 field.
243
244+If
245+.I dir\fB/listid
246+exists,
247+.B ezmlm-send
248+will assume that the format is correct and
249+create a ``List-ID:'' header by placing the contents after the
250+text ``List-ID: ''.
251+
252+Next,
253+.B ezmlm-send
254+prints all the new fields listed in
255+.IR dir\fB/headeradd .
256+Any tags, ``<#h#>'', ``<#l#>'', or ``<#n#>'' found in these headers
257+are replaced by the list host name, list local name, and message number,
258+respectively.
259+
260 .B ezmlm-send
261-then prints all the new fields listed in
262-.IR dir\fB/headeradd ,
263-followed by an appropriate
264+then prints an appropriate
265 .B Delivered-To
266 line.
267
268@@ -39,6 +83,63 @@
269 .IR dir\fB/headerremove .
270
271 .B ezmlm-send
272+removes MIME parts specified in
273+.I dir\fB/mimeremove
274+before archiving and distribution of the message.
275+
276+If
277+.I dir\fB/text/trailer
278+exists,
279+.B ezmlm-send
280+adds the trailer to simple text/plain messages in the same encoding as used for
281+the the message. However, if the encoding is ``base64'' it is not safe
282+to do this and the header is suppressed.
283+For composite MIME messages, the trailer is added as a separate
284+part, with the character set and encoding specified in
285+.IR dir\fB/charset .
286+The trailer is not added to multipart/alternative messages.
287+Any tags, ``<#h#>'', ``<#l#>'', or ``<#n#>'' found in
288+.I dir\fB/text/trailer
289+are replaced by the list host name, list local name, and message number,
290+respectively.
291+
292+If
293+.I dir\fB/prefix
294+exists,
295+.B ezmlm-send
296+will prefix the subject line with the first line of this
297+file. A space will be added to separate
298+.B prefix
299+from the subject text.
300+.B prefix
301+is ignored for sublists. If
302+.I dir\fB/prefix
303+contains a ``#'', the last ``#'' will be replaced by the message number.
304+Any prefix starting with text of a
305+reply indicator (``Re:'', ``Re[n]:'', etc) will cause problems.
306+The prefix may be
307+rfc2047 encoded. Rfc2047 Iso-2022-* encoded prefixes
308+.I must
309+end in ascii.
310+
311+The prefix feature and especially the message number feature
312+modify the message in violation
313+with Internet mail standards. The features have been implemented by popular
314+demand. Use at your own peril.
315+
316+.I dir\fB/sequence
317+is ignored as of ezmlm-idx-0.32. Use
318+.I dir\fB/headeradd
319+with substitution to achieve the same goal.
320+
321+If
322+.I dir\fB/qmqpservers
323+exists,
324+.B ezmlm-send will use
325+.B qmail-qmqp(1)
326+to send messages.
327+
328+.B ezmlm-send
329 does not distribute bounce messages:
330 if the environment variable
331 .B SENDER
332@@ -46,6 +147,60 @@
333 .BR #@[] ,
334 .B ezmlm-send
335 rejects the message.
336+.SH OPTIONS
337+.TP
338+.B \-c
339+No longer supported. Ignored for backwards compatibility.
340+.TP
341+.B \-C
342+No longer supported. Ignored for backwards compatibility.
343+.B ezmlm-send
344+has to parse the subscriber database.
345+.TP
346+.B \-h\fI header
347+If the list is a sublist, i.e.
348+.I dir\fB/sublist
349+exists,
350+.I header
351+is required in all messages to the list. This option is used
352+when ezmlm is used to run a sublist of a lists run by a different
353+mailing list
354+manager that uses
355+.I header
356+rather than ``Mailing-List'' to identify messages from the list.
357+Anything after the first colon (if present) in
358+.I header
359+is ignored.
360+.TP
361+.B \-r
362+Copy incoming ``Received:'' headers to the outgoing message.
363+.TP
364+.B \-R
365+(Default.)
366+Do not copy incoming ``Received:'' headers, except the one added by
367+the (last) listhost, to the outgoing message.
368+In some
369+cases, especially for sublists,
370+the messages can have a large number of ``Received:''
371+headers. This may lead to bounces for some users due to
372+sendmail ``hopcounts'' set too low somewhere in the mail path. These users can
373+subscribe and receive warning and probe messages, but no list messages, unless
374+the number of ``Received:'' headers is reduced.
375+
376+Pre-list ``Received:'' headers are of little interest to normal list
377+subscribers. ``Received:'' headers are
378+still copied to the archive and available
379+to anyone from there for message tracking purposes.
380+.TP
381+.B \-v
382+Display
383+.B ezmlm-send
384+version information.
385+.TP
386+.B \-V
387+Display
388+.B ezmlm-send
389+version information.
390 .SH "SUBLISTS"
391 If
392 .I dir\fB/sublist
393@@ -77,10 +232,71 @@
394 does not add its own
395 .B Mailing-List
396 field.
397+
398+Fourth,
399+.B ezmlm-send
400+uses the incoming message number for the outgoing message, if the list
401+is not archived and the incoming SENDER has the correct format.
402+This allows you to refer bounce warning recipients to the main list for
403+archive retrieval of the missed messages. If the sublist archives
404+message, it is assumed that missed messages will be retrieved from the sublist
405+archive.
406+
407+The list
408+still increments
409+.I dir\fB/num
410+for each message. If the sublist is archived, use of incoming message number
411+for archive storage would be a security risk. In this case, the local sublist
412+message number is used.
413+.SH "OPTION USAGE"
414+In general, the use of a prefix is discouraged. It wastes subject line space,
415+creates trouble when MUAs add non-standard reply indicators. However, many
416+users expect it not because it is useful, but because they are used to it.
417+
418+The
419+.B \-C
420+switch prevents posts from being set to SENDER. Rather than just copying
421+out subscriber address files,
422+.B ezmlm-send
423+has to parse them to look for SENDER. This makes it less efficient. Also,
424+it is useful for the SENDER to see the post to know that it has made it
425+to the list, and it's context to other subscribers, i.e. where it came
426+within the traffic of messages on the list.
427+
428+Avoiding SENDER as a recipient is useful in small lists, such as small
429+teams with varying members, where ezmlm serves mainly as an efficient tool
430+to keep the team connected without administrator intervention. Here the
431+overhead of subscriber list parsing is negligible.
432+.SH "CHARACTER SETS"
433+If the list is indexed,
434+.B ezmlm-send
435+will keep a message index. rfc2047-encoded subject and from lines will be
436+decoded.
437+If
438+.I dir\fB/charset
439+exists,
440+.B ezmlm-send
441+will eliminate redundant escape sequences from the headers according to
442+the character set specified in this file.
443+Only character sets using escape sequences need this support. Currently,
444+supported are iso-2022-jp*, iso-2022-kr, and iso-2022-cn*. Only iso-2022-jp
445+has been tested extensively.
446+
447+The character set can be suffixed
448+by ``:'' followed by a code. Recognized codes are ``Q''
449+for ``Quoted-Printable'', and ``B'' for ``base64''.
450+
451+For
452+.BR ezmlm-send ,
453+this affects the format of the trailer, if a trailer is specified and if the
454+message is a multipart mime message
455 .SH "SEE ALSO"
456+ezmlm-get(1),
457+ezmlm-idx(1),
458 ezmlm-manage(1),
459 ezmlm-make(1),
460 ezmlm-sub(1),
461 ezmlm-unsub(1),
462 ezmlm-reject(1),
463-ezmlm(5)
464+ezmlm(5),
465+qmail-qmqp(1)
466--- ezmlm-sub.1 1998/12/06 16:48:14 1.1
467+++ ezmlm-sub.1 1999/08/19 03:22:14 1.5
468@@ -3,9 +3,20 @@
469 ezmlm-sub \- manually add addresses to a mailing list
470 .SH SYNOPSIS
471 .B ezmlm-sub
472+[
473+.B \-HmMnNsSvV
474+][
475+.B \-h
476+.I hash
477+]
478+.B
479 .I dir
480 [
481-.I box\fB@\fIdomain ...
482+.I box\fB@\fIdomain
483+[
484+.I name
485+]
486+.I ...
487 ]
488 .SH DESCRIPTION
489 .B ezmlm-sub
490@@ -13,12 +24,20 @@
491 .I box\fB@\fIdomain
492 to the mailing list stored in
493 .IR dir .
494+.I name
495+is added as a comment to the subscription log, if the
496+.B \-n
497+switch is used.
498+
499+If no argument is given on the command line,
500+.B ezmlm-sub
501+processes stdin.
502
503 If
504 .I box\fB@\fIdomain
505 is already on the mailing list,
506 .B ezmlm-sub
507-leaves it there.
508+leaves it there and does not modify the subscription log.
509
510 .B ezmlm-sub
511 converts
512@@ -28,11 +47,61 @@
513 to the mailing list.
514
515 .I box\fB@\fIdomain
516-cannot be longer than 400 characters.
517+cannot be longer than 400 characters (255 characters with mysql support).
518+.SH "GENERAL OPTIONS"
519+.TP
520+.B \-n
521+Assume arguments are pairs of
522+.I box\fB@\fIdomain
523+and
524+.IR name
525+(or other subscriber info)
526+rather than addresses alone.
527+.B ezmlm-sub(1)
528+will add the first argument in each pair to the subscriber list. If it is
529+a new address,
530+.I name
531+will be added to the subscription log.
532+.TP
533+.B \-N
534+(Default.)
535+Arguments are all addresses of the type
536+.IR box\fB@\fIdomain .
537+.TP
538+.B \-v
539+Display
540+.B ezmlm-sub(1)
541+version information.
542+.TP
543+.B \-V
544+Display
545+.B ezmlm-sub(1)
546+version information.
547+.SH "MYSQL OPTIONS"
548+These option is silently ignored in the absence of mysql support.
549+.TP
550+.B \-h \fIhash
551+With mysql support the argument is used as the hash. The argument should
552+be between 1 and 99. The hash is used in
553+in the distribution of addresses between sublists. As the hash is normally
554+between 0 and 52, controlling the hash makes it possible to add addresses
555+that cannot be manipulated remotely.
556+.TP
557+.B \-m
558+(Default.)
559+Use SQL support if available.
560+.TP
561+.B \-M
562+Do not use SQL support even if available. This option can be used to build
563+a normal local subscriber database even for lists with SQL support. Use
564+in combination with
565+.B ezmlm-list(1)
566+to convert an SQL address db to a ezmlm standard address database.
567 .SH "SEE ALSO"
568 ezmlm-list(1),
569 ezmlm-manage(1),
570 ezmlm-make(1),
571+ezmlm-receipt(1),
572 ezmlm-send(1),
573 ezmlm-unsub(1),
574 ezmlm(5)
575--- ezmlm-unsub.1 1998/12/06 16:48:14 1.1
576+++ ezmlm-unsub.1 1999/08/19 03:22:14 1.5
577@@ -3,6 +3,11 @@
578 ezmlm-unsub \- manually remove addresses from a mailing list
579 .SH SYNOPSIS
580 .B ezmlm-unsub
581+[
582+.B \-mMHvV
583+] [
584+.B \-h\fBhash
585+]
586 .I dir
587 [
588 .I box\fB@\fIdomain ...
589@@ -14,6 +19,10 @@
590 from the mailing list stored in
591 .IR dir .
592
593+If no command line argument is given,
594+.B ezmlm-unsub
595+will process stdin instead.
596+
597 If
598 .I box\fB@\fIdomain
599 is not on the mailing list,
600@@ -26,10 +35,46 @@
601 to lowercase before removing
602 .I box\fB@\fIdomain
603 from the mailing list.
604+.SH "GENERAL OPTIONS"
605+.TP
606+.B \-v
607+Display
608+.B ezmlm-unsub(1)
609+version information.
610+.TP
611+.B \-V
612+Display
613+.B ezmlm-unsub(1)
614+version information.
615+.SH "MYSQL OPTIONS"
616+These option is silently ignored in the absence of mysql support.
617+.TP
618+.B \-h \fIhash
619+With mysql support the argument is used as the hash. The argument should
620+be between 1 and 99. The hash is used in
621+in the distribution of addresses between sublists. As the hash is normally
622+between 0 and 52, controlling the hash makes it possible to remove addresses
623+that cannot be manipulated remotely. A hash of 99 is reserved for sublists,
624+and a hash of 98 is reserved for ``receipt'' addresses serviced by
625+.B ezmlm-receipt(1).
626+.TP
627+.B \-H
628+(Default.)
629+The address can be removed if it has a hash in the normal range (0..52).
630+.TP
631+.B \-m
632+(Default.)
633+Use SQL support if available.
634+.TP
635+.B \-M
636+Do not use SQL support even if available.
637+This option can be used to manipulate
638+a normal local subscriber database even for lists with SQL support.
639 .SH "SEE ALSO"
640 ezmlm-list(1),
641 ezmlm-manage(1),
642 ezmlm-make(1),
643+ezmlm-receipt(1),
644 ezmlm-send(1),
645 ezmlm-sub(1),
646 ezmlm(5)
647--- ezmlm-list.1 1998/12/06 16:48:14 1.1
648+++ ezmlm-list.1 1999/08/19 03:40:27 1.5
649@@ -3,6 +3,11 @@
650 ezmlm-list \- show the addresses on a mailing list
651 .SH SYNOPSIS
652 .B ezmlm-list
653+[
654+.B \-n\fI msgnum
655+] [
656+.B \-aAmMnNvV
657+]
658 .I dir
659 .SH DESCRIPTION
660 .B ezmlm-list
661@@ -16,6 +21,40 @@
662 of a possibly malicious remote user.
663 .B ezmlm-list
664 does not strip control characters.
665+.SH "GENERAL OPTIONS"
666+.TP
667+.B \-m
668+(Default.)
669+Use SQL support if available.
670+.TP
671+.B \-M
672+Do not use SQL support even if available.
673+This option can be used to manipulate
674+a normal local subscriber database even for lists with SQL support.
675+.TP
676+.B \-n
677+Print only the number of subscribers.
678+.TP
679+.B \-N
680+(Default.)
681+List subscriber addresses, one per line.
682+.TP
683+.B \-v
684+Display
685+.B ezmlm-list(1)
686+version information.
687+.TP
688+.B \-V
689+Display
690+.B ezmlm-list(1)
691+version information.
692+.SH "SEE ALSO"
693+ezmlm-list(1),
694+ezmlm-manage(1),
695+ezmlm-make(1),
696+ezmlm-send(1),
697+ezmlm-sub(1),
698+ezmlm(5)
699 .SH "SEE ALSO"
700 ezmlm-sub(1),
701 ezmlm-unsub(1),
702--- ezmlm.5 1997/07/13 22:01:50 1.1
703+++ ezmlm.5 1999/05/12 22:41:46 1.24
704@@ -21,7 +21,60 @@
705 handles administrative requests automatically;
706 .B ezmlm-send
707 sends a message to all subscribers listed in
708-.IR dir .
709+.I dir
710+and also maintains a message archive and message subject index if the list
711+is configured to do so.
712+.B ezmlm-reject
713+rejects messages that have an empty subject, or a subject consisting of
714+only a command word;
715+.B ezmlm-return
716+handles bounces;
717+.B ezmlm-warn
718+warns users for which messages bounce and eventually removes them from
719+the subscriber list.
720+.B ezmlm-idx
721+can create a subject index from an existing list archive.
722+.B ezmlm-get
723+manages message, index, and thread retrieval from the archive, as well
724+as the generation of message digests;
725+.B ezmlm-cron
726+provides a restricted interface to cron for the generation of
727+digest generation trigger messages;
728+.B ezmlm-store
729+queues messages of moderated lists and sends a moderation request to
730+the moderator(s);
731+.B ezmlm-moderate
732+processes moderation requests to accept the queued message to the list
733+via
734+.B ezmlm-send,
735+or to return the message to the sender;
736+.B ezmlm-clean
737+cleans up the moderation queue and returns to the sender
738+any messages that have timed-out;
739+.B ezmlm-gate
740+posts messages that come from a SENDER in an address database, and sends
741+remaining messages out for moderation;
742+.B ezmlm-check
743+is used to diagnose problems with ezmlm mailing list configuration;
744+.B ezmlm-issub
745+and
746+.B ezmlm-issubn
747+determine if a SENDER is a subscriber or a member of a
748+collection of addresses;
749+.B ezmlm-tstdig
750+determines if it is time to create a new digest based on the number and
751+volume of messages and the amount of time that has passed since the last
752+digest was issued;
753+.B ezmlm-request
754+can be used to answer
755+.B ezmlm
756+commands in the subject line easing migration from other mailing list
757+managers. It can also function as a global interface mimicking
758+the interface of other mailing list manager.
759+.B ezmlm-glmake
760+can set up the global interface, and
761+.B ezmlm-glconf
762+can create a configuration file for the global interface from your lists.
763 .SH SUBSCRIBERS
764 .I dir\fB/subscribers
765 is a directory containing the subscriber list.
766@@ -69,12 +122,19 @@
767 .B ezmlm-send
768 archives all new messages if
769 .I dir\fB/archived
770-exists.
771+exists. If
772+.I dir\fB/indexed
773+exists,
774+.B ezmlm-send
775+also maintains a message subject and author index.
776
777 Messages sent to the mailing list are numbered from 1 upwards,
778 whether or not they are archived.
779 .I dir\fB/num
780-is the number of messages sent so far.
781+is the number of messages sent so far followed by ':', followed by the
782+cumulative amount of message body that has passed
783+.B ezmlm-send
784+stored as kbytes * 4 (4 corresponds to 1kb).
785
786 .I dir\fB/archive
787 has subdirectories,
788@@ -83,11 +143,43 @@
789 .IR dir\fB/archive/\fIm\fB/\fIn .
790 For example, message number 15307 is stored in
791 .IR dir\fB/archive/153/07 .
792+The message index is stored in the file
793+.B index
794+in the same subdirectory of
795+.I dir\fB/archive
796+holding the corresponding messages.
797+Thus, the subject index contains up to 100 entries.
798+
799+The subject index contains message subjects that are normalized so that
800+the original message and all replies have the same entry. The subject index
801+is used for advanced message retrieval functions. For safety, the subject
802+index is created under a temporary name
803+inside
804+.I dir\fB/archive
805+and then moved into place.
806
807 .B ezmlm-manage
808 will ignore message files without the owner-execute bit set.
809 .B ezmlm-send
810 turns on the owner-execute bit after safely writing the message to disk.
811+
812+.B ezmlm-make
813+by default adds
814+.B ezmlm-get
815+to
816+.I dir\fB/manager
817+to handle
818+.I \-get, \-index,
819+and
820+.I \-thread
821+requests. If
822+.B ezmlm-make
823+is invoked with a
824+.I digcode
825+command line argument, digest creation
826+is enabled by putting this argument on the
827+.B ezmlm-get
828+command line.
829 .SH BOUNCES
830 .I dir\fB/bounce
831 is a directory containing bounce messages.
832@@ -127,9 +219,10 @@
833 sets up
834 .I dir\fB/bouncer
835 to invoke
836-.B ezmlm-return
837-and then
838-.BR ezmlm-warn .
839+.BR ezmlm-return .
840+.B ezmlm-warn
841+is no longer invoked here due to the load it places on systems with many
842+large lists with many bounces.
843
844 .I dir\fB/manager
845 handles incoming administrative requests.
846@@ -137,9 +230,266 @@
847 sets up
848 .I dir\fB/manager
849 to invoke
850-.B ezmlm-manage
851+.BR ezmlm-get ,
852+.BR ezmlm-manage ,
853 and then
854 .BR ezmlm-warn .
855+
856+.I dir\fB/moderator
857+handles incoming message
858+.I accept
859+and
860+.I reject
861+requests for moderated lists.
862+.B ezmlm-make
863+sets up
864+.I dir\fB/moderator
865+to invoke
866+.BR ezmlm-moderate ,
867+and .BR ezmlm-clean .
868+.SH DIGESTS
869+.B ezmlm-get
870+can create digests if it is invoked from the command line, from
871+.IR dir\fB/editor ,
872+or from
873+.IR dir\fB/manager .
874+The program functions in slightly different ways in these 3 settings (see
875+.BR ezmlm-get(1) ).
876+
877+To enable automatic digests for a mailing list, use the
878+.B ezmlm-make \-d
879+switch. To also enable the generation of digests at specific times dictated
880+by mailed trigger messages, a
881+.I digcode
882+should be specified on the
883+.B ezmlm-get
884+command line.
885+This can be done by specifying
886+.I digcode
887+as a fifth argument to
888+.B ezmlm-make
889+when setting up the list.
890+.I digcode
891+must be alphanumeric and is case-insensitive.
892+
893+To generate trigger messages, use
894+.B ezmlm-cron(1)
895+as an interface to
896+.B crond(8)
897+or use
898+.B crond
899+directly.
900+
901+.I dir\fB/num
902+contains the number of the last message processed, followed by ':' and a
903+number that is increased by 1 for each 256 bytes of message body text
904+processed. The latter number is used by
905+.B ezmlm-tstdig
906+to determine if a new digest is due.
907+
908+.I dir\fB/dignum
909+contains the contents of
910+.I dir\fB/num
911+at the time of the last regular digest creation, followed by a ':',
912+followed by a timestamp.
913+It is updated after each regular digest is sent.
914+
915+.I dir\fB/digissue
916+contains the issue number of the last regular digest. It is incremented
917+for each regular digest sent.
918+
919+The following user crontab entry (all on one line)
920+generates a digest of the list
921+.I list@host.domain
922+at 1600 every day:
923+
924+.EX
925+ 00 16 * * * /var/qmail/bin/qmail-inject list-dig.digcode
926+.EE
927+
928+Alternatively,
929+.B ezmlm-cron
930+can be used:
931+
932+.EX
933+ % ezmlm-cron -t 16:00 list@host digcode
934+.EE
935+
936+.B ezmlm-get
937+can also be run from the shell: To generate a digest to
938+.I list-digest@host
939+from the list housed in
940+.IR ~joe/list :
941+
942+.EX
943+ % ezmlm-get ~joe/list
944+.EE
945+
946+Like other
947+.B ezmlm-get
948+replies, digest can be sent in several formats. See
949+.B ezmlm-get(1)
950+for more info.
951+.SH MODERATION
952+There are three aspects of moderation: moderation of posts, moderation
953+of subscriptions, and "remote administration", i.e. giving the
954+moderator the right to (un)subscribe any user.
955+.B ezmlm
956+handles these three aspects separately. The two first aspects enhance
957+security, while the third decreases security, but makes list administration
958+considerably easier. By default, the moderator database is the same for all
959+three functions. While "remote administration" and subscription moderation
960+always use the same database, the moderators for message moderation can
961+be different.
962+
963+Even with subscription moderation, the user has to verify the request. This
964+is to ensure that the user initiating the request really controls the address.
965+.B ezmlm-manage
966+options exist to disable the user handshake, which may be useful in some
967+circumstances.
968+
969+For moderation options, the moderators are by stored in a subscriber
970+list in
971+.IR moddir\fB/subscribers .
972+By default
973+.I moddir
974+is
975+.IR dir\fB/mod .
976+
977+Moderators can be added and removed with:
978+
979+.EX
980+.B ezmlm-sub
981+.I moddir
982+.I moderator@host
983+.EE
984+
985+.EX
986+.B ezmlm-unsub
987+.I moddir
988+.I moderator@host
989+.EE
990+
991+For subscription moderation, touch
992+.IR dir\fB/modsub
993+after adding moderator(s).
994+For remote administration, touch
995+.IR dir\fB/remote .
996+If the contents of these files start with a leading forward slash, it is
997+assumed to be the name of
998+.B moddir
999+subscription
1000+moderation. If both files exist and start with a forward slash, the
1001+.I dir\fB/remote
1002+contents are ignored. Moderators are stored in a subscriber list in the
1003+.B subscribers
1004+subdirectory of
1005+.BR moddir .
1006+If no directory names are specified,
1007+the default,
1008+.IR dir\fB/mod ,
1009+is used.
1010+In all cases, the
1011+.I subscribers
1012+subdirectory of the base directory must exists/be created.
1013+
1014+Moderation of messages is achieved by
1015+creating
1016+.I dir\fB/modpost
1017+and modifying
1018+.IR dir\fB/editor
1019+to invoke
1020+.B ezmlm-store.
1021+.B ezmlm-store
1022+stores the message in
1023+.IR dir\fB/mod/pending
1024+and sends a moderation request to all moderators stored in
1025+.IR moddir .
1026+
1027+If
1028+.I dir\fB/modpost
1029+does not exist,
1030+.B ezmlm-store
1031+posts messages directly, and
1032+.B ezmlm-clean
1033+does nothing.
1034+
1035+If
1036+.I dir\fB/modpost
1037+contains a directory name starting with a forward slash,
1038+this directory is used as
1039+.I moddir
1040+for message moderation.
1041+Moderators are stored in a subscriber list in the
1042+.I subscribers
1043+subdirectory of
1044+.IR moddir .
1045+If no directory names are specified,
1046+the default,
1047+.IR dir\fB/mod ,
1048+is used.
1049+
1050+.IR dir\fB/moderator
1051+is linked to
1052+.IR dot\fB\-accept-default
1053+and
1054+.IR dot\fB\-reject-default .
1055+It handles replies from the moderators.
1056+
1057+In addition to a moderator list, the directories
1058+.IR dir\fB/mod/pending ,
1059+.IR dir\fB/mod/accepted ,
1060+and
1061+.IR dir\fB/mod/rejected
1062+must exist. These directories contain the message moderation queue.
1063+
1064+If
1065+.IR dir\fB/mod/modtime
1066+it determines the minimal time in hours that messages wait in the moderation
1067+queue, before they are returned to sender with the message in
1068+.IR dir\fB/text/mod-timeout .
1069+
1070+If a
1071+.I \-help
1072+command is send for a moderator and
1073+.IR dir\fB/modsub
1074+or
1075+.IR dir\fB/remote
1076+exist, a more detailed help message stored in
1077+.I dir\fB/text/mod-help
1078+will be sent together with the regular help. This text should not contain
1079+secrets.
1080+If
1081+.I dir\fB/text/mod-help
1082+does not exist,
1083+.I dir\fB/text/help
1084+will be sent.
1085+
1086+If a
1087+.I \-list
1088+command is sent for a moderator and
1089+.IR dir\fB/modsub
1090+or
1091+.IR dir\fB/remote
1092+exist, and the
1093+.B ezmlm-manage \-l
1094+command line switch is specified, a subscriber list will be returned.
1095+
1096+If an
1097+.I \-edit.file
1098+command is sent for a moderator and
1099+.IR dir\fB/remote
1100+exist, and the
1101+.B ezmlm-manage \-d
1102+command line switch is specified,
1103+.B text\fB/file
1104+is returned together with an
1105+.B ezmlm
1106+cookie. The remote administrator may return an edited version of the
1107+file, which will be stored, provided that the cookie is valid.
1108+See
1109+.B ezmlm-manage(1)
1110+for more info.
1111 .SH TEXT
1112 .I dir\fB/text
1113 is a directory
1114@@ -187,6 +537,27 @@
1115 .B get-bad
1116 Rejecting a bad archive retrieval request.
1117 .TP
1118+.B digest
1119+Text copied into the
1120+.I Administrativia
1121+section of the digest. Usually, this will contain subscription info
1122+for the digest, as well as information on how to post to the list.
1123+.TP
1124+.B trailer
1125+If this files exists, it is copied to the end of all messages to the list.
1126+.TP
1127+.B faq
1128+Sent in response to the
1129+.I faq
1130+command. Usually contains frequently asked questions and answers specific
1131+for the mailing list.
1132+.TP
1133+.B info
1134+Sent in response to the
1135+.I info
1136+command. Usually contains a descripition, policy, etc, for the list. The
1137+first line should in itself be a very brief description of the list.
1138+.TP
1139 .B bounce-warn
1140 Pointing out that messages have bounced.
1141 .TP
1142@@ -198,9 +569,96 @@
1143 .B ezmlm-return
1144 has kept a list of bounced message numbers.
1145 .TP
1146+.B dig-bounce-num
1147+Explaining that digest messages have bounced. All other text files are used
1148+for both the main list and the digest list.
1149+.TP
1150 .B bounce-bottom
1151 Separating the bounce message.
1152+.TP
1153+.B mod-help
1154+is set to list moderators issuing a
1155+.I \-help
1156+command. It contains instructions for moderators, but it is relatively
1157+trivial for a non-moderator to read it. Don't put secrets here.
1158+.TP
1159+.B mod-reject
1160+is the returned to the sender of a rejected post.
1161+.TP
1162+.B mod-timeout
1163+is returned if the message timed-out without moderator action.
1164+.TP
1165+.B mod-sub
1166+is added to the text confirming subscription and unsubscription
1167+instead of
1168+.B bottom
1169+and the requesting message, for actions that were approved
1170+by a moderator. Not copying the requesting message
1171+hides the moderator identity
1172+from the subscriber.
1173+.TP
1174+.B mod-request
1175+is the text sent to the moderators to request moderator action on
1176+a posted message.
1177+.TP
1178+.B mod-unsub-confirm
1179+Requesting that the moderator confirm a request to subscribe.
1180+If this file does not exist,
1181+.B sub-confirm
1182+will be used.
1183+.TP
1184+.B mod-unsub-confirm
1185+Requesting that the moderator confirm a request to unsubscribe.
1186+If this file does not exist,
1187+.B unsub-confirm
1188+will be used.
1189+.TP
1190+.B edit-do
1191+Instructions sent to the remote administrator together with a copy
1192+of a
1193+.I dir\fB/text
1194+file and editing instructions.
1195+.TP
1196+.B edit-list
1197+A list of editable files in
1198+.I dir\fB/text
1199+with a one-line description send to a remote administrator in response to a
1200+.I -edit
1201+command.
1202+.TP
1203+.B edit-done
1204+Sent to the remote administrator after an edited
1205+.I dir\fB/text
1206+file has been successfully saved.
1207+.PP
1208+Several tags in the text files are replaced by ezmlm programs.
1209+All programs replace the tag
1210+.B <#l#>
1211+with the name of the list or the list-digest, as appropriate for the request,
1212+and
1213+.B <#h#>
1214+with the hostname for the list.
1215+.B ezmlm-send
1216+and
1217+.B ezmlm-get
1218+replace
1219+.B <#n#>
1220+with the current message number in added headers from
1221+.I dir\fB/headeradd
1222+and text files.
1223+.B ezmlm-get
1224+does this for digest messages, where the current message is the number of
1225+the first message in the digest.
1226+.B ezmlm-manage
1227+replaces the tag
1228+.B <#A#>
1229+anywhere on a line with the subscription address, and
1230+.B <#R#>
1231+anywhere on a line
1232+with the address the subscriber must reply to. Only the first tag on any
1233+line is processed.
1234 .PP
1235+For backwards compatibility,
1236 .B ezmlm-manage
1237 replaces the line
1238 .B !A
1239@@ -213,6 +671,23 @@
1240 and
1241 .B unsub-confirm
1242 with the address that the subscriber must reply to.
1243+.PP
1244+.B ezmlm-store
1245+replaces the tag
1246+.B <#A#>
1247+anywhere on a line with the address for accepting the message, and
1248+.B <#R#>
1249+anywhere on a line
1250+with the address for rejecting the message.
1251+Only the first tag on any line is processed.
1252+.PP
1253+For backwards compatibility,
1254+.B ezmlm-store
1255+also replaces the line
1256+.B !A
1257+with the address for accepting the message and the line
1258+.B !R
1259+with the address for rejecting the message.
1260 .SH "OUTGOING MESSAGE EDITING"
1261 .I dir\fB/headerremove
1262 is a list of bad header field names,
1263@@ -233,10 +708,61 @@
1264 is a list of new header fields.
1265 .B ezmlm-send
1266 adds these fields to every outgoing message.
1267-.B ezmlm-make
1268+.B ezmlm-send
1269 sets up
1270 .I dir\fB/headeradd
1271-with no new fields.
1272+to add
1273+.B X-No-Archive: yes
1274+and
1275+.BR Precedence: bulk .
1276+
1277+If
1278+.I dir\fB/mimeremove
1279+exists,
1280+.B ezmlm-send
1281+removed parts with the corresponding content-types from composite MIME
1282+messages. If the
1283+.B ezmlm-reject
1284+.I dir
1285+argument is specified,
1286+simple MIME messages of these content-types are rejected.
1287+
1288+If
1289+.I dir\fB/mimereject
1290+exists, and the
1291+.B ezmlm-reject
1292+.I dir
1293+argument is specified,
1294+simple MIME messages of these content-types, or
1295+composite MIME messages with any body part of these content-types are rejected.
1296+
1297+If
1298+.I dir\fB/sequence
1299+exists, the first line is added as a header to all outgoing messages, followed
1300+by a space and the message number. The message number is useful for archive
1301+retrievals, since some mail systems do not reveal the return-path to the user.
1302+.B NOTE:
1303+Sublists have their own message counter. Adding a sequence header from a
1304+sublists will give you the sublist message number which is different from
1305+the main list message number.
1306+
1307+.I dir\fB/prefix
1308+is a subject prefix. If this file exists, its contents are prefixed to the
1309+subject of the post in the outgoing message. The archived message is not
1310+processed. Attempts are made to not duplicate an existing prefix in replies.
1311+Think twice before using this option.
1312+A prefix takes unnecessary space on the subject line and most mail clients
1313+can easily filter on other headers, such as 'Mailing-List:'. If
1314+.I dir\fB/prefix contains a single '#', this will be replaced by the message
1315+number. The use of this feature is inadvisable and violates internet mail
1316+standards. However, it is very popular in e.g. Japan. If you must use this
1317+feature, make sure you are aware that you may be causing problems to users,
1318+sublists, etc.
1319+
1320+.I dir\fB/text/trailer
1321+is a message trailer. If this file exists, it's contents are copied to the
1322+end of outgoing messages. Only lines terminated with new-line are copied.
1323+No trailer is copied to the archived version of the message.
1324 .SH MISCELLANY
1325 The first line of
1326 .I dir\fB/mailinglist
1327@@ -248,6 +774,27 @@
1328 .IR dir\fB/mailinglist ,
1329 in every outgoing message.
1330
1331+If
1332+.I dir\fB/listid
1333+exists,
1334+ezmlm programs create a new
1335+.B List-ID
1336+field, showing the contents of the first line of
1337+.IR dir\fB/listid ,
1338+in every outgoing message. The list-id should be unique and within name
1339+space controlled by the owner. It should remain constant even if lists
1340+move and be of the format
1341+
1342+.EX
1343+List-ID: optional_text <unique_id.domain>
1344+.EE
1345+
1346+This header would result from a
1347+.I dir\fB/listid
1348+file containing ``optional_text <unique_id.domain>''. See
1349+.I http://www.within.com/~chandhok/ietf/listid.shtml
1350+for more info.
1351+
1352 The first lines of
1353 .I dir\fB/outlocal
1354 and
1355@@ -292,6 +839,44 @@
1356 This affects the behavior of
1357 .BR ezmlm-send .
1358
1359+If
1360+.I dir\fB/qmqpservers
1361+exists,
1362+.B ezmlm-send
1363+and
1364+.B ezmlm-get
1365+will use
1366+.B qmail-qmqpc(1)
1367+to send posts and digests. Other mail will use the normal qmail mechanism.
1368+If
1369+.B qmail-qmqpc
1370+is modified correctly, server IP addresses listed one per line in
1371+.I dir\fB/qmqpsevers
1372+will be tried in order, rather than the default servers specified in
1373+.IR /var/qmail/control .
1374+
1375+If
1376+.I dir\fB/msgsize
1377+exists, it is assumed to contain ``max:min'', where ``max'' is the maximum
1378+size in bytes of an acceptable message body, and ``min'' the corresponding
1379+minimal size. Either will be ignored if zero or omitted. If the
1380+.B ezmlm-reject
1381+command line specifies the list directory, messages not meeting the size
1382+criteria are rejected.
1383+
1384+If
1385+.I dir\fB/charset
1386+exists, the first line is assumed to represent a valid MIME character set,
1387+which is used for all outgoing MIME messages sent by
1388+.B ezmlm-get
1389+and the message moderation programs. The character set string may be suffixed
1390+with ':' and 'Q' or 'B' to send all outgoing
1391+text (ezmlm messages, digest table-of-contents, moderation requests, etc)
1392+encoded in ``Quoted-Printable'' or ``base64'' encoding. By default, no encoding
1393+is done, which may result in the transmission of characters with the high
1394+bit set. When encoding is specified, trigger messages and other parts of the
1395+reply that should not be encoded are sent as separate MIME parts.
1396+
1397 .I dir\fB/lock
1398 is an empty file.
1399 Any program that reads or writes the subscriber list,
1400@@ -304,14 +889,54 @@
1401 .B WARNING:
1402 .B Log
1403 is not protected against system crashes.
1404-Log entries may be missing or corrupted if the system goes down.
1405+Log entries may be missing or corrupted if the system goes down. There is
1406+Log for each of the accessory address databases as well. Thus, the log
1407+for digest subscribers is
1408+.IR dir\fB/digest/Log .
1409+If enabled, these logs can be retrieved by remote administrators (see
1410+.BR ezmlm-manage(1) ).
1411+
1412+.I dir\fB/digest
1413+contains items specific for the digest list.
1414+
1415+.I dir\fB/digest/subscribers
1416+contains hash files of digest subscriber addresses.
1417+
1418+.IR dir\fB/digest/Log ,
1419+.IR dir\fB/digest/bounce ,
1420+.IR dir\fB/digest/lockbounce ,
1421+and
1422+.I dir\fB/digest/lock
1423+have functions for the digest list that mirror that of the corresponding
1424+files in
1425+.IR dir .
1426+
1427+.I dir\fB/sql
1428+contains SQL server access information for list that are configured to
1429+use an SQL database for storage.
1430+
1431+.I dir\fB/tstdig
1432+is a timestamp used temporarily by
1433+.B ezmlm-tstdig(1)
1434+to coordinate digesting.
1435 .SH "SEE ALSO"
1436+ezmlm-check(1),
1437+ezmlm-clean(1),
1438+ezmlm-gate(1),
1439+ezmlm-get(1),
1440+ezmlm-idx(1),
1441+ezmlm-issub(1),
1442+ezmlm-issubn(1),
1443 ezmlm-list(1),
1444 ezmlm-make(1),
1445 ezmlm-manage(1),
1446+ezmlm-moderate(1),
1447+ezmlm-request(1),
1448 ezmlm-return(1),
1449 ezmlm-send(1),
1450+ezmlm-store(1),
1451 ezmlm-sub(1),
1452+ezmlm-tstdig(1),
1453 ezmlm-unsub(1),
1454 ezmlm-warn(1),
1455 dot-qmail(5)
1456--- log.c 1998/02/16 04:49:24 1.1
1457+++ log.c 1998/11/22 22:24:22 1.3
1458@@ -6,14 +6,21 @@
1459 #include "fmt.h"
1460 #include "open.h"
1461
1462+/* appends (not crash-proof) a line to "Log". The format is: */
1463+/* "timestamp event address[ comment]\n". address is free of ' ' */
1464+/* Unprintable chars are changed to '?'. Comment may have spaces */
1465+
1466 static substdio ss;
1467 static char buf[1];
1468 static char num[FMT_ULONG];
1469 static stralloc line = {0};
1470+static stralloc fn = {0};
1471
1472-void log(event,addr)
1473+void log(dir,event,addr,comment)
1474+char *dir;
1475 char *event;
1476 char *addr;
1477+char *comment;
1478 {
1479 char ch;
1480 int fd;
1481@@ -26,9 +33,22 @@
1482 if ((ch < 33) || (ch > 126)) ch = '?';
1483 if (!stralloc_append(&line,&ch)) return;
1484 }
1485+ if (comment && *comment) {
1486+ if (!stralloc_cats(&line," ")) return;
1487+ while (ch = *comment++) {
1488+ if (ch == '\t')
1489+ ch = ' ';
1490+ else
1491+ if ((ch < 32) || (ch > 126)) ch = '?';
1492+ if (!stralloc_append(&line,&ch)) return;
1493+ }
1494+ }
1495 if (!stralloc_cats(&line,"\n")) return;
1496
1497- fd = open_append("Log");
1498+ if (!stralloc_copys(&fn,dir)) return;
1499+ if (!stralloc_cats(&fn,"/Log")) return;
1500+ if (!stralloc_0(&fn)) return;
1501+ fd = open_append(fn.s);
1502 if (fd == -1) return;
1503 substdio_fdbuf(&ss,write,fd,buf,sizeof(buf));
1504 substdio_putflush(&ss,line.s,line.len);
1505--- MAN 1997/07/02 23:11:57 1.1
1506+++ MAN 1999/10/10 03:41:20 1.26
1507@@ -1,27 +1,67 @@
1508 d:::755:::
1509 d:::755:/man1::
1510 d:::755:/man5::
1511+c:::644:/man1/:ezmlm-accept.1:
1512+c:::644:/man1/:ezmlm-archive.1:
1513+c:::644:/man1/:ezmlm-issubn.1:
1514 c:::644:/man5/:ezmlm.5:
1515+c:::644:/man5/:ezmlmrc.5:
1516+c:::644:/man5/:ezmlmglrc.5:
1517+c:::644:/man5/:ezmlmsubrc.5:
1518 c:::644:/man1/:ezmlm-list.1:
1519+c:::644:/man1/:ezmlm-glconf.1:
1520 c:::644:/man1/:ezmlm-make.1:
1521+c:::644:/man1/:ezmlm-mktab.1:
1522 c:::644:/man1/:ezmlm-manage.1:
1523+c:::644:/man1/:ezmlm-moderate.1:
1524 c:::644:/man1/:ezmlm-reject.1:
1525+c:::644:/man1/:ezmlm-request.1:
1526 c:::644:/man1/:ezmlm-return.1:
1527 c:::644:/man1/:ezmlm-send.1:
1528+c:::644:/man1/:ezmlm-split.1:
1529+c:::644:/man1/:ezmlm-store.1:
1530 c:::644:/man1/:ezmlm-sub.1:
1531 c:::644:/man1/:ezmlm-unsub.1:
1532 c:::644:/man1/:ezmlm-warn.1:
1533 c:::644:/man1/:ezmlm-weed.1:
1534+c:::644:/man1/:ezmlm-idx.1:
1535+c:::644:/man1/:ezmlm-gate.1:
1536+c:::644:/man1/:ezmlm-tstdig.1:
1537+c:::644:/man1/:ezmlm-get.1:
1538+c:::644:/man1/:ezmlm-check.1:
1539+c:::644:/man1/:ezmlm-clean.1:
1540+c:::644:/man1/:ezmlm-limit.1:
1541+c:::644:/man1/:ezmlm-cron.1:
1542 d:::755:/cat1::
1543 d:::755:/cat5::
1544 c:::644:/cat5/:ezmlm.0:
1545+c:::644:/cat5/:ezmlmrc.0:
1546+c:::644:/cat5/:ezmlmglrc.0:
1547+c:::644:/cat5/:ezmlmsubrc.0:
1548 c:::644:/cat1/:ezmlm-list.0:
1549+c:::644:/cat1/:ezmlm-glconf.0:
1550 c:::644:/cat1/:ezmlm-make.0:
1551+c:::644:/cat1/:ezmlm-mktab.0:
1552 c:::644:/cat1/:ezmlm-manage.0:
1553+c:::644:/cat1/:ezmlm-moderate.0:
1554+c:::644:/cat1/:ezmlm-request.0:
1555 c:::644:/cat1/:ezmlm-reject.0:
1556 c:::644:/cat1/:ezmlm-return.0:
1557 c:::644:/cat1/:ezmlm-send.0:
1558+c:::644:/cat1/:ezmlm-store.0:
1559+c:::644:/cat1/:ezmlm-split.0:
1560 c:::644:/cat1/:ezmlm-sub.0:
1561 c:::644:/cat1/:ezmlm-unsub.0:
1562 c:::644:/cat1/:ezmlm-warn.0:
1563 c:::644:/cat1/:ezmlm-weed.0:
1564+c:::644:/cat1/:ezmlm-idx.0:
1565+c:::644:/cat1/:ezmlm-gate.0:
1566+c:::644:/cat1/:ezmlm-tstdig.0:
1567+c:::644:/cat1/:ezmlm-get.0:
1568+c:::644:/cat1/:ezmlm-check.0:
1569+c:::644:/cat1/:ezmlm-clean.0:
1570+c:::644:/cat1/:ezmlm-limit.0:
1571+c:::644:/cat1/:ezmlm-cron.0:
1572+c:::644:/cat1/:ezmlm-accept.0:
1573+c:::644:/cat1/:ezmlm-archive.0:
1574+c:::644:/cat1/:ezmlm-issubn.0:
1575--- BIN 1997/07/02 23:10:49 1.1
1576+++ BIN 1999/10/10 03:41:20 1.23
1577@@ -1,11 +1,31 @@
1578 d:::755:::
1579+c:::755:/:ezmlm-accept:
1580+c:::755:/:ezmlm-archive:
1581+c:::755:/:ezmlm-issubn:
1582+c:::755:/:ezmlm-glconf:
1583 c:::755:/:ezmlm-make:
1584+c:::755:/:ezmlm-mktab:
1585 c:::755:/:ezmlm-manage:
1586 c:::755:/:ezmlm-send:
1587+c:::755:/:ezmlm-request:
1588 c:::755:/:ezmlm-reject:
1589 c:::755:/:ezmlm-return:
1590 c:::755:/:ezmlm-warn:
1591 c:::755:/:ezmlm-weed:
1592 c:::755:/:ezmlm-list:
1593+c:::755:/:ezmlm-clean:
1594+c:::755:/:ezmlm-cron:
1595+c:::755:/:ezmlm-limit:
1596+c:::755:/:ezmlm-store:
1597+c:::755:/:ezmlm-split:
1598+c:::755:/:ezmlm-moderate:
1599 c:::755:/:ezmlm-sub:
1600 c:::755:/:ezmlm-unsub:
1601+c:::644:/:ezmlmrc:
1602+c:::644:/:ezmlmglrc:
1603+c:::644:/:ezmlmsubrc:
1604+c:::755:/:ezmlm-idx:
1605+c:::755:/:ezmlm-check:
1606+c:::755:/:ezmlm-gate:
1607+c:::755:/:ezmlm-tstdig:
1608+c:::755:/:ezmlm-get:
1609--- VERSION 1997/10/12 19:29:59 1.1
1610+++ VERSION 1997/11/08 04:19:44 1.3
1611@@ -1 +1,2 @@
1612 ezmlm 0.53
1613+$Name: ezmlm-idx-040 $
1614--- Makefile 1997/07/02 22:17:50 1.1
1615+++ Makefile 1999/12/23 02:42:12 1.117
1616@@ -1,7 +1,14 @@
1617+#$Id: Makefile,v 1.117 1999/12/23 02:42:12 lindberg Exp $
1618+#$Name: ezmlm-idx-040 $
1619 SHELL=/bin/sh
1620-
1621+SQLCC=`head -1 conf-sqlcc`
1622+SQLLD=`head -1 conf-sqlld`
1623 default: it
1624
1625+clean: \
1626+TARGETS
1627+ rm -f `cat TARGETS`
1628+
1629 alloc.0: \
1630 alloc.3
1631 nroff -man alloc.3 > alloc.0
1632@@ -18,6 +25,10 @@
1633 compile alloc_re.c alloc.h alloc_re.c byte.h alloc_re.c
1634 ./compile alloc_re.c
1635
1636+author.o: \
1637+compile author.c mime.h
1638+ ./compile author.c
1639+
1640 auto-ccld.sh: \
1641 conf-cc conf-ld warn-auto.sh
1642 ( cat warn-auto.sh; \
1643@@ -34,6 +45,14 @@
1644 exit.h auto-str.c
1645 ./compile auto-str.c
1646
1647+auto_cron.c: \
1648+auto-str conf-cron
1649+ ./auto-str auto_cron `head -1 conf-cron` > auto_cron.c
1650+
1651+auto_cron.o: \
1652+compile auto_cron.c
1653+ ./compile auto_cron.c
1654+
1655 auto_bin.c: \
1656 auto-str conf-bin
1657 ./auto-str auto_bin `head -1 conf-bin` > auto_bin.c
1658@@ -79,13 +98,18 @@
1659 nroff -man case.3 > case.0
1660
1661 case.a: \
1662-makelib case_diffb.o case_lowerb.o case_startb.o
1663- ./makelib case.a case_diffb.o case_lowerb.o case_startb.o
1664+makelib case_diffb.o case_diffs.o case_starts.o case_lowerb.o case_startb.o
1665+ ./makelib case.a case_diffb.o case_lowerb.o case_startb.o \
1666+ case_diffs.o case_starts.o
1667
1668 case_diffb.o: \
1669 compile case_diffb.c case.h case_diffb.c
1670 ./compile case_diffb.c
1671
1672+case_diffs.o: \
1673+compile case_diffs.c case.h
1674+ ./compile case_diffs.c
1675+
1676 case_lowerb.o: \
1677 compile case_lowerb.c case.h case_lowerb.c
1678 ./compile case_lowerb.c
1679@@ -94,6 +118,15 @@
1680 compile case_startb.c case.h case_startb.c
1681 ./compile case_startb.c
1682
1683+checktag.o: \
1684+compile checktag.c stralloc.h scan.h fmt.h strerr.h cookie.h \
1685+ errtxt.h subscribe.h conf-sqlcc
1686+ ./compile checktag.c ${SQLCC}
1687+
1688+case_starts.o: \
1689+compile case_starts.c case.h
1690+ ./compile case_starts.c
1691+
1692 compile: \
1693 make-compile warn-auto.sh systype
1694 ( cat warn-auto.sh; ./make-compile "`cat systype`" ) > \
1695@@ -110,6 +143,19 @@
1696 surfpcs.h uint32.h surfpcs.h cookie.c
1697 ./compile cookie.c
1698
1699+copy.o: \
1700+compile copy.c copy.h stralloc.h substdio.h str.h readwrite.h open.h qmail.h \
1701+strerr.h getln.h case.h errtxt.h mime.h error.h quote.h
1702+ ./compile copy.c
1703+
1704+date2yyyymm.o:\
1705+compile date2yyyymm.c yyyymm.h
1706+ ./compile date2yyyymm.c
1707+
1708+dateline.o:\
1709+compile dateline.c yyyymm.h stralloc.h fmt.h
1710+ ./compile dateline.c
1711+
1712 date822fmt.o: \
1713 compile date822fmt.c datetime.h date822fmt.c fmt.h date822fmt.c \
1714 date822fmt.h date822fmt.c
1715@@ -133,13 +179,46 @@
1716 && cat direntry.h2 || cat direntry.h1 ) > direntry.h
1717 rm -f trydrent.o
1718
1719+concatHDR.o: \
1720+compile concatHDR.c mime.h stralloc.h strerr.h byte.h errtxt.h
1721+ ./compile concatHDR.c
1722+
1723+decodeB.o: \
1724+compile decodeB.c mime.h uint32.h stralloc.h strerr.h errtxt.h
1725+ ./compile decodeB.c
1726+
1727+decodeHDR.o: \
1728+compile decodeHDR.c mime.h stralloc.h strerr.h error.h case.h byte.h \
1729+uint32.h errtxt.h
1730+ ./compile decodeHDR.c
1731+
1732+decodeQ.o: \
1733+compile decodeQ.c mime.h stralloc.h strerr.h errtxt.h
1734+ ./compile decodeQ.c
1735+
1736+encodeB.o: \
1737+compile encodeB.c mime.h uint32.h stralloc.h strerr.h errtxt.h
1738+ ./compile encodeB.c
1739+
1740+encodeQ.o: \
1741+compile encodeQ.c mime.h stralloc.h strerr.h errtxt.h
1742+ ./compile encodeQ.c
1743+
1744+unfoldHDR.o: \
1745+compile unfoldHDR.c mime.h stralloc.h strerr.h errtxt.h
1746+ ./compile unfoldHDR.c
1747+
1748 env.0: \
1749 env.3
1750 nroff -man env.3 > env.0
1751
1752 env.a: \
1753-makelib envread.o
1754- ./makelib env.a envread.o
1755+makelib env.o envread.o
1756+ ./makelib env.a env.o envread.o
1757+
1758+env.o: \
1759+compile env.c env.h str.h
1760+ ./compile env.c
1761
1762 envread.o: \
1763 compile envread.c env.h envread.c str.h envread.c
1764@@ -169,28 +248,281 @@
1765 error_temp.3
1766 nroff -man error_temp.3 > error_temp.0
1767
1768+ezmlm-accept: \
1769+ezmlm-accept.sh warn-auto.sh conf-bin
1770+ (cat warn-auto.sh; \
1771+ echo EZPATH=\'`head -1 conf-bin`\'; \
1772+ cat ezmlm-accept.sh ) > ezmlm-accept
1773+
1774+ezmlm-accept.0: \
1775+ezmlm-accept.1
1776+ nroff -man ezmlm-accept.1 > ezmlm-accept.0
1777+
1778+ezmlm-archive: \
1779+load ezmlm-archive.o getconf.o slurpclose.o slurp.o getln.a sig.a \
1780+strerr.a substdio.a stralloc.a alloc.a error.a str.a fs.a open.a \
1781+lock.a fd.a getopt.a idxthread.o yyyymm.a
1782+ ./load ezmlm-archive getconf.o slurpclose.o slurp.o getln.a sig.a \
1783+ idxthread.o yyyymm.a strerr.a substdio.a stralloc.a alloc.a \
1784+ error.a str.a fs.a open.a lock.a fd.a getopt.a
1785+
1786+ezmlm-archive.0: \
1787+ezmlm-archive.1
1788+ nroff -man ezmlm-archive.1 > ezmlm-archive.0
1789+
1790+ezmlm-archive.o: \
1791+compile ezmlm-archive.c alloc.h error.h stralloc.h gen_alloc.h str.h \
1792+sig.h slurp.h getconf.h strerr.h getln.h substdio.h readwrite.h \
1793+makehash.h fmt.h strerr.h errtxt.h idx.h idxthread.h sgetopt.h subgetopt.h
1794+ ./compile ezmlm-archive.c
1795+
1796+ezmlm-cgi: \
1797+load ezmlm-cgi.o getconf.o slurpclose.o slurp.o constmap.o getln.a sig.a \
1798+mime.a strerr.a substdio.a stralloc.a alloc.a error.a str.a fs.a open.a \
1799+lock.a fd.a getopt.a env.a case.a datetime.o now.o mime.a wait.a yyyymm.a
1800+ ./load ezmlm-cgi getconf.o slurpclose.o slurp.o constmap.o getln.a \
1801+ mime.a sig.a env.a case.a datetime.o now.o mime.a wait.a yyyymm.a \
1802+ strerr.a substdio.a stralloc.a alloc.a error.a str.a fs.a open.a \
1803+ lock.a fd.a getopt.a
1804+
1805+ezmlm-cgi.0: \
1806+ezmlm-cgi.1
1807+ nroff -man ezmlm-cgi.1 > ezmlm-cgi.0
1808+
1809+ezmlm-cgi.o: \
1810+compile ezmlm-cgi.c alloc.h error.h stralloc.h gen_alloc.h str.h \
1811+sig.h slurp.h getconf.h strerr.h getln.h substdio.h readwrite.h env.h \
1812+makehash.h fmt.h strerr.h errtxt.h idx.h idxthread.h mime.h \
1813+constmap.h sgetopt.h subgetopt.h datetime.h now.h fork.h wait.h
1814+ ./compile ezmlm-cgi.c
1815+
1816+ezmlm-check: \
1817+ezmlm-check.sh warn-auto.sh conf-bin
1818+ (cat warn-auto.sh; \
1819+ echo EZPATH=\'`head -1 conf-bin`\'; \
1820+ echo QMPATH=\'`head -1 conf-qmail`\'; \
1821+ cat ezmlm-check.sh ) > ezmlm-check
1822+
1823+ezmlm-check.0: \
1824+ezmlm-check.1
1825+ nroff -man ezmlm-check.1 > ezmlm-check.0
1826+
1827+ezmlm-clean: \
1828+load ezmlm-clean.o auto_qmail.o getconf.o copy.o mime.a \
1829+now.o datetime.o date822fmt.o slurpclose.o slurp.o qmail.o quote.o \
1830+getln.a env.a sig.a strerr.a substdio.a stralloc.a alloc.a surf.a \
1831+error.a str.a fs.a case.a open.a seek.a wait.a lock.a fd.a cookie.o getopt.a
1832+ ./load ezmlm-clean auto_qmail.o getconf.o copy.o mime.a \
1833+ now.o datetime.o date822fmt.o slurpclose.o \
1834+ slurp.o qmail.o quote.o getln.a env.a sig.a strerr.a \
1835+ substdio.a stralloc.a alloc.a error.a str.a fs.a case.a \
1836+ open.a seek.a wait.a lock.a fd.a cookie.o getopt.a surf.a
1837+
1838+ezmlm-clean.0: \
1839+ezmlm-clean.1
1840+ nroff -man ezmlm-clean.1 > ezmlm-clean.0
1841+
1842+ezmlm-clean.o: \
1843+compile ezmlm-clean.c error.h stralloc.h gen_alloc.h str.h \
1844+env.h sig.h slurp.h getconf.h strerr.h byte.h getln.h case.h copy.h mime.h \
1845+qmail.h substdio.h readwrite.h seek.h quote.h datetime.h now.h cookie.h \
1846+date822fmt.h direntry.h fmt.h strerr.h errtxt.h idx.h sgetopt.h subgetopt.h
1847+ ./compile ezmlm-clean.c
1848+
1849+ezmlm-cron: \
1850+load ezmlm-cron.o strerr.a stralloc.a alloc.a error.a open.a auto_qmail.o \
1851+getopt.a getln.a str.a substdio.a sig.a fs.a open.a fd.a lock.a wait.a \
1852+case.a auto_cron.o
1853+ ./load ezmlm-cron getopt.a getln.a strerr.a substdio.a \
1854+ stralloc.a alloc.a sig.a fs.a open.a fd.a lock.a error.a \
1855+ wait.a case.a str.a auto_qmail.o auto_cron.o
1856+
1857+ezmlm-cron.0: \
1858+ezmlm-cron.1
1859+ nroff -man ezmlm-cron.1 > ezmlm-cron.0
1860+
1861+ezmlm-cron.o: \
1862+compile ezmlm-cron.c strerr.h substdio.h stralloc.h error.h str.h \
1863+fork.h readwrite.h wait.h errtxt.h idx.h sgetopt.h auto_qmail.h \
1864+fmt.h auto_cron.h
1865+ ./compile ezmlm-cron.c
1866+
1867+ezmlm-gate: \
1868+load ezmlm-gate.o subdb.a auto_bin.o getopt.a getln.a env.a sig.a strerr.a \
1869+stralloc.a alloc.a error.a str.a case.a wait.a substdio.a open.a lock.a \
1870+fs.a getconf.o slurpclose.o slurp.o seek.a conf-sqlld
1871+ ./load ezmlm-gate subdb.a getconf.o slurpclose.o slurp.o \
1872+ getopt.a getln.a auto_bin.o env.a sig.a fs.a \
1873+ strerr.a substdio.a stralloc.a alloc.a error.a str.a case.a wait.a \
1874+ open.a lock.a seek.a ${SQLLD}
1875+
1876+ezmlm-gate.0: \
1877+ezmlm-gate.1
1878+ nroff -man ezmlm-gate.1 > ezmlm-gate.0
1879+
1880+ezmlm-gate.o: \
1881+compile ezmlm-gate.c idx.h errtxt.h subscribe.h auto_bin.h \
1882+sgetopt.h subgetopt.h substdio.h getconf.h \
1883+env.h sig.h strerr.h stralloc.h alloc.h error.h str.h case.h \
1884+fork.h wait.h exit.h getln.h open.h
1885+ ./compile ezmlm-gate.c
1886+
1887+ezmlm-get: \
1888+load ezmlm-get.o idxthread.o subdb.a auto_qmail.o getopt.a now.o getconf.o \
1889+datetime.o date822fmt.o slurpclose.o slurp.o qmail.o quote.o makehash.o \
1890+cookie.o surf.a yyyymm.a \
1891+constmap.o getln.a env.a sig.a strerr.a substdio.a mime.a stralloc.a alloc.a \
1892+error.a str.a fs.a case.a open.a seek.a wait.a lock.a fd.a copy.o conf-sqlld
1893+ ./load ezmlm-get idxthread.o subdb.a auto_qmail.o getopt.a getconf.o \
1894+ now.o datetime.o date822fmt.o cookie.o makehash.o slurpclose.o slurp.o \
1895+ yyyymm.a \
1896+ constmap.o substdio.a copy.o mime.a strerr.a stralloc.a alloc.a \
1897+ qmail.o quote.o surf.a getln.a env.a sig.a \
1898+ error.a str.a fs.a case.a \
1899+ open.a seek.a wait.a lock.a fd.a ${SQLLD}
1900+
1901+ezmlm-get.o: \
1902+compile ezmlm-get.c idx.h errtxt.h error.h getconf.h stralloc.h gen_alloc.h \
1903+str.h cookie.h env.h sig.h slurp.h strerr.h byte.h getln.h case.h qmail.h \
1904+substdio.h readwrite.h seek.h quote.h sgetopt.h subgetopt.h datetime.h now.h \
1905+date822fmt.h fmt.h strerr.h copy.h errtxt.h idx.h idxthread.h mime.h \
1906+constmap.h makehash.h
1907+ ./compile ezmlm-get.c
1908+
1909+ezmlm-get.0: \
1910+ezmlm-get.1
1911+ nroff -man ezmlm-get.1 > ezmlm-get.0
1912+
1913+ezmlm-greturn: \
1914+load ezmlm-greturn.o quote.o getconf.o subdb.a log.o \
1915+slurpclose.o slurp.o now.o cookie.o surf.a lock.a env.a sig.a \
1916+strerr.a getln.a substdio.a stralloc.a alloc.a error.a str.a fs.a \
1917+case.a open.a conf-sqlld
1918+ ./load ezmlm-greturn quote.o getconf.o subdb.a \
1919+ log.o slurpclose.o slurp.o now.o cookie.o surf.a lock.a \
1920+ env.a sig.a strerr.a getln.a substdio.a stralloc.a alloc.a \
1921+ error.a str.a fs.a case.a open.a ${SQLLD}
1922+
1923+ezmlm-greturn.0: \
1924+ezmlm-greturn.1
1925+ nroff -man ezmlm-greturn.1 > ezmlm-greturn.0
1926+
1927+ezmlm-greturn.o: \
1928+compile ezmlm-greturn.c stralloc.h gen_alloc.h stralloc.h str.h env.h sig.h \
1929+slurp.h getconf.h strerr.h byte.h case.h getln.h substdio.h error.h \
1930+quote.h readwrite.h fmt.h datetime.h now.h cookie.h \
1931+strerr.h subscribe.h
1932+ ./compile ezmlm-greturn.c
1933+
1934+ezmlm-gwarn: \
1935+load ezmlm-gwarn.o auto_qmail.o getconf.o mime.a cookie.o subdb.a now.o \
1936+slurpclose.o slurp.o quote.o datetime.o date822fmt.o qmail.o surf.a \
1937+case.a strerr.a sig.a getln.a substdio.a stralloc.a alloc.a error.a \
1938+open.a lock.a str.a fs.a fd.a wait.a copy.o getopt.a conf-sqlld
1939+ ./load ezmlm-gwarn auto_qmail.o getconf.o mime.a \
1940+ cookie.o subdb.a getopt.a \
1941+ now.o slurpclose.o slurp.o quote.o datetime.o date822fmt.o \
1942+ qmail.o surf.a case.a strerr.a sig.a getln.a substdio.a \
1943+ stralloc.a alloc.a error.a open.a lock.a str.a fs.a fd.a \
1944+ wait.a copy.o ${SQLLD}
1945+
1946+ezmlm-gwarn.0: \
1947+ezmlm-gwarn.1
1948+ nroff -man ezmlm-gwarn.1 > ezmlm-gwarn.0
1949+
1950+ezmlm-gwarn.o: \
1951+compile ezmlm-gwarn.c direntry.h readwrite.h getln.h \
1952+substdio.h stralloc.h gen_alloc.h slurp.h getconf.h byte.h error.h str.h \
1953+sig.h now.h datetime.h date822fmt.h fmt.h cookie.h qmail.h substdio.h \
1954+qmail.h copy.h mime.h idx.h errtxt.h sgetopt.h subgetopt.h
1955+ ./compile ezmlm-gwarn.c
1956+
1957+ezmlm-idx: \
1958+load ezmlm-idx.o slurp.o slurpclose.o mime.a wait.a getopt.a \
1959+getln.a strerr.a sig.h sig.a open.a lock.a substdio.a stralloc.a \
1960+alloc.a error.a str.a fd.a case.a fs.a getconf.o makehash.o surf.o mime.a
1961+ ./load ezmlm-idx \
1962+ mime.a slurp.o slurpclose.o wait.a getln.a strerr.a sig.a open.a \
1963+ lock.a mime.a substdio.a stralloc.a alloc.a error.a str.a fd.a \
1964+ getopt.a case.a fs.a getconf.o makehash.o surf.o
1965+
1966+ezmlm-idx.o: \
1967+compile ezmlm-idx.c stralloc.h getconf.h \
1968+substdio.h subfd.h strerr.h error.h sgetopt.h \
1969+lock.h sig.h slurp.h open.h getln.h case.h \
1970+str.h fmt.h readwrite.h exit.h idx.h mime.h errtxt.h uint32.h
1971+ ./compile ezmlm-idx.c
1972+
1973+ezmlm-idx.0: \
1974+ezmlm-idx.1
1975+ nroff -man ezmlm-idx.1 > ezmlm-idx.0
1976+
1977+ezmlm-glconf: \
1978+ezmlm-glconf.sh warn-auto.sh conf-bin
1979+ (cat warn-auto.sh; \
1980+ echo EZPATH=\'`head -1 conf-bin`\'; \
1981+ cat ezmlm-glconf.sh ) > ezmlm-glconf
1982+
1983+ezmlm-glconf.0: \
1984+ezmlm-glconf.1
1985+ nroff -man ezmlm-glconf.1 > ezmlm-glconf.0
1986+
1987+ezmlm-issubn: \
1988+load ezmlm-issubn.o subdb.a getconf.o slurpclose.o slurp.o \
1989+env.a fs.a strerr.a getln.a getopt.a conf-sqlld \
1990+substdio.a stralloc.a alloc.a error.a str.a case.a open.a lock.a
1991+ ./load ezmlm-issubn subdb.a getconf.o slurpclose.o slurp.o \
1992+ getopt.a env.a fs.a strerr.a \
1993+ getln.a substdio.a stralloc.a alloc.a error.a str.a case.a \
1994+ open.a lock.a ${SQLLD}
1995+
1996+ezmlm-issubn.0: \
1997+ezmlm-issubn.1
1998+ nroff -man ezmlm-issubn.1 > ezmlm-issubn.0
1999+
2000+ezmlm-issubn.o: \
2001+compile ezmlm-issubn.c strerr.h subscribe.h env.h errtxt.h sgetopt.h idx.h
2002+ ./compile ezmlm-issubn.c
2003+
2004+ezmlm-limit: \
2005+load ezmlm-limit.o getconf.o slurpclose.o slurp.o substdio.a stralloc.a \
2006+alloc.a error.a str.a case.a open.a lock.a getopt.a fs.a sig.a now.o
2007+ ./load ezmlm-limit getconf.o slurpclose.o slurp.o getopt.a \
2008+ strerr.a substdio.a stralloc.a alloc.a error.a str.a case.a \
2009+ open.a lock.a fs.a sig.a now.o
2010+
2011+ezmlm-limit.0: \
2012+ezmlm-limit.1
2013+ nroff -man ezmlm-limit.1 > ezmlm-limit.0
2014+
2015+ezmlm-limit.o: \
2016+compile ezmlm-limit.c stralloc.h strerr.h substdio.h readwrite.h sig.h lock.h \
2017+getconf.h fmt.h now.h sgetopt.h error.h errtxt.h idx.h datetime.h
2018+ ./compile ezmlm-limit.c
2019+
2020 ezmlm-list: \
2021-load ezmlm-list.o strerr.a getln.a substdio.a stralloc.a alloc.a \
2022-error.a open.a str.a
2023- ./load ezmlm-list strerr.a getln.a substdio.a stralloc.a \
2024- alloc.a error.a open.a str.a
2025+load ezmlm-list.o subdb.a fs.a getconf.o slurpclose.o slurp.o \
2026+strerr.a getln.a substdio.a stralloc.a alloc.a \
2027+error.a open.a str.a case.a getopt.a conf-sqlld
2028+ ./load ezmlm-list subdb.a fs.a getconf.o slurpclose.o slurp.o \
2029+ strerr.a getln.a getopt.a substdio.a stralloc.a \
2030+ alloc.a error.a open.a str.a case.a ${SQLLD}
2031
2032 ezmlm-list.0: \
2033 ezmlm-list.1
2034 nroff -man ezmlm-list.1 > ezmlm-list.0
2035
2036 ezmlm-list.o: \
2037-compile ezmlm-list.c stralloc.h gen_alloc.h stralloc.h ezmlm-list.c \
2038-substdio.h ezmlm-list.c getln.h ezmlm-list.c strerr.h ezmlm-list.c \
2039-error.h ezmlm-list.c readwrite.h ezmlm-list.c exit.h ezmlm-list.c \
2040-open.h ezmlm-list.c
2041+compile ezmlm-list.c stralloc.h gen_alloc.h substdio.h getln.h strerr.h \
2042+error.h readwrite.h exit.h open.h errtxt.h subscribe.h exit.h sgetopt.h \
2043+idx.h fmt.h
2044 ./compile ezmlm-list.c
2045
2046 ezmlm-make: \
2047-load ezmlm-make.o auto_bin.o open.a getopt.a substdio.a strerr.a \
2048-stralloc.a alloc.a error.a str.a
2049- ./load ezmlm-make auto_bin.o open.a getopt.a substdio.a \
2050- strerr.a stralloc.a alloc.a error.a str.a
2051+load ezmlm-make.o auto_bin.o open.a getln.a getopt.a substdio.a strerr.a \
2052+stralloc.a alloc.a error.a lock.a str.a
2053+ ./load ezmlm-make auto_bin.o open.a getln.a getopt.a substdio.a \
2054+ strerr.a stralloc.a alloc.a error.a lock.a str.a
2055
2056 ezmlm-make.0: \
2057 ezmlm-make.1
2058@@ -202,19 +534,20 @@
2059 strerr.h ezmlm-make.c exit.h ezmlm-make.c readwrite.h ezmlm-make.c \
2060 open.h ezmlm-make.c substdio.h ezmlm-make.c str.h ezmlm-make.c \
2061 auto_bin.h ezmlm-make.c ezmlm-make.c ezmlm-make.c ezmlm-make.c \
2062-ezmlm-make.c
2063+errtxt.h idx.h getln.h lock.h
2064 ./compile ezmlm-make.c
2065
2066 ezmlm-manage: \
2067-load ezmlm-manage.o auto_qmail.o getconf.o subscribe.o log.o cookie.o \
2068+load ezmlm-manage.o auto_qmail.o getconf.o subdb.a log.o cookie.o \
2069 now.o datetime.o date822fmt.o slurpclose.o slurp.o qmail.o quote.o \
2070 surf.a getln.a env.a sig.a strerr.a substdio.a stralloc.a alloc.a \
2071-error.a str.a fs.a case.a open.a seek.a wait.a lock.a fd.a
2072- ./load ezmlm-manage auto_qmail.o getconf.o subscribe.o \
2073- log.o cookie.o now.o datetime.o date822fmt.o slurpclose.o \
2074+error.a str.a fs.a case.a open.a seek.a wait.a lock.a fd.a getopt.a \
2075+mime.a copy.o conf-sqlld
2076+ ./load ezmlm-manage subdb.a auto_qmail.o getconf.o copy.o \
2077+ mime.a log.o cookie.o now.o datetime.o date822fmt.o slurpclose.o \
2078 slurp.o qmail.o quote.o surf.a getln.a env.a sig.a strerr.a \
2079 substdio.a stralloc.a alloc.a error.a str.a fs.a case.a \
2080- open.a seek.a wait.a lock.a fd.a
2081+ open.a seek.a wait.a lock.a fd.a getopt.a ${SQLLD}
2082
2083 ezmlm-manage.0: \
2084 ezmlm-manage.1
2085@@ -231,35 +564,84 @@
2086 quote.h ezmlm-manage.c datetime.h ezmlm-manage.c now.h datetime.h \
2087 datetime.h now.h ezmlm-manage.c date822fmt.h ezmlm-manage.c fmt.h \
2088 ezmlm-manage.c subscribe.h strerr.h strerr.h subscribe.h \
2089-ezmlm-manage.c cookie.h ezmlm-manage.c
2090+sgetopt.h subgetopt.h cookie.h idx.h errtxt.h copy.h
2091 ./compile ezmlm-manage.c
2092
2093+ezmlm-mktab.0: \
2094+ezmlm-mktab.1
2095+ nroff -man ezmlm-mktab.1 > ezmlm-mktab.0
2096+
2097+ezmlm-moderate: \
2098+load ezmlm-moderate.o auto_qmail.o getconf.o auto_bin.o copy.o mime.a \
2099+cookie.o now.o datetime.o date822fmt.o slurpclose.o slurp.o qmail.o quote.o \
2100+surf.a getln.a env.a sig.a strerr.a substdio.a stralloc.a alloc.a \
2101+error.a str.a fs.a case.a open.a seek.a wait.a lock.a fd.a getopt.a
2102+ ./load ezmlm-moderate auto_qmail.o getconf.o copy.o mime.a \
2103+ cookie.o now.o datetime.o date822fmt.o slurpclose.o \
2104+ slurp.o qmail.o quote.o surf.a getln.a env.a sig.a strerr.a \
2105+ substdio.a stralloc.a alloc.a error.a str.a fs.a case.a \
2106+ auto_bin.o open.a seek.a wait.a lock.a fd.a getopt.a
2107+
2108+ezmlm-moderate.0: \
2109+ezmlm-moderate.1
2110+ nroff -man ezmlm-moderate.1 > ezmlm-moderate.0
2111+
2112+ezmlm-moderate.o: \
2113+compile ezmlm-moderate.c error.h stralloc.h gen_alloc.h str.h \
2114+env.h sig.h slurp.h getconf.h strerr.h byte.h getln.h case.h \
2115+qmail.h substdio.h readwrite.h seek.h quote.h datetime.h now.h \
2116+date822fmt.h fmt.h strerr.h cookie.h errtxt.h idx.h copy.h mime.h \
2117+subgetopt.h sgetopt.h auto_bin.h fork.h wait.h
2118+ ./compile ezmlm-moderate.c
2119+
2120+ezmlm-request: \
2121+load ezmlm-request.o subdb.a getconf.o constmap.o getln.a auto_qmail.o qmail.o \
2122+strerr.a slurpclose.o slurp.o getopt.a env.a open.a fd.a sig.a case.a \
2123+substdio.a error.a stralloc.a alloc.a str.a case.a fs.a wait.a seek.a \
2124+date822fmt.o now.o datetime.o quote.o copy.o mime.a conf-sqlld
2125+ ./load ezmlm-request subdb.a getconf.o constmap.o getln.a auto_qmail.o \
2126+ qmail.o date822fmt.o datetime.o now.o quote.o \
2127+ slurpclose.o slurp.o env.a open.a sig.a wait.a getopt.a \
2128+ strerr.a substdio.a error.a copy.o stralloc.a alloc.a substdio.a \
2129+ str.a case.a fs.a fd.a sig.a wait.a seek.a mime.a ${SQLLD}
2130+
2131+ezmlm-request.0:
2132+ nroff -man ezmlm-request.1 > ezmlm-request.0
2133+
2134+ezmlm-request.o: \
2135+compile ezmlm-request.c stralloc.h subfd.h strerr.h error.h qmail.h env.h \
2136+sig.h open.h getln.h case.h str.h readwrite.h exit.h substdio.h quote.h \
2137+getconf.h constmap.h fmt.h byte.h errtxt.h idx.h datetime.h date822fmt.h \
2138+subscribe.h now.h copy.h
2139+ ./compile ezmlm-request.c
2140+
2141 ezmlm-reject: \
2142-load ezmlm-reject.o getln.a strerr.a substdio.a error.a stralloc.a \
2143-alloc.a str.a getopt.a case.a
2144- ./load ezmlm-reject getln.a strerr.a substdio.a error.a \
2145- stralloc.a alloc.a str.a getopt.a case.a
2146+load ezmlm-reject.o getln.a strerr.a substdio.a error.a stralloc.a open.a \
2147+qmail.o env.a seek.a fd.a wait.a auto_qmail.o \
2148+alloc.a getconf.o slurp.o slurpclose.o str.a getopt.a case.a constmap.o fs.a
2149+ ./load ezmlm-reject qmail.o getln.a strerr.a substdio.a error.a fs.a \
2150+ env.a constmap.o getconf.o slurp.o slurpclose.o stralloc.a alloc.a \
2151+ seek.a str.a getopt.a case.a open.a fd.a wait.a auto_qmail.o
2152
2153 ezmlm-reject.0: \
2154 ezmlm-reject.1
2155 nroff -man ezmlm-reject.1 > ezmlm-reject.0
2156
2157 ezmlm-reject.o: \
2158-compile ezmlm-reject.c strerr.h ezmlm-reject.c substdio.h \
2159-ezmlm-reject.c readwrite.h ezmlm-reject.c stralloc.h gen_alloc.h \
2160-stralloc.h ezmlm-reject.c getln.h ezmlm-reject.c sgetopt.h \
2161-subgetopt.h sgetopt.h ezmlm-reject.c
2162+compile ezmlm-reject.c strerr.h substdio.h readwrite.h stralloc.h gen_alloc.h \
2163+stralloc.h getln.h sgetopt.h subgetopt.h constmap.h getconf.h errtxt.h \
2164+scan.h fmt.h idx.h qmail.h env.h seek.h
2165 ./compile ezmlm-reject.c
2166
2167 ezmlm-return: \
2168-load ezmlm-return.o quote.o getconf.o issub.o subscribe.o log.o \
2169+load ezmlm-return.o quote.o getconf.o subdb.a log.o \
2170 slurpclose.o slurp.o now.o cookie.o surf.a lock.a env.a sig.a \
2171 strerr.a getln.a substdio.a stralloc.a alloc.a error.a str.a fs.a \
2172-case.a open.a
2173- ./load ezmlm-return quote.o getconf.o issub.o subscribe.o \
2174+case.a open.a conf-sqlld
2175+ ./load ezmlm-return quote.o getconf.o subdb.a \
2176 log.o slurpclose.o slurp.o now.o cookie.o surf.a lock.a \
2177 env.a sig.a strerr.a getln.a substdio.a stralloc.a alloc.a \
2178- error.a str.a fs.a case.a open.a
2179+ error.a str.a fs.a case.a open.a ${SQLLD}
2180
2181 ezmlm-return.0: \
2182 ezmlm-return.1
2183@@ -270,43 +652,134 @@
2184 ezmlm-return.c str.h ezmlm-return.c env.h ezmlm-return.c sig.h \
2185 ezmlm-return.c slurp.h ezmlm-return.c getconf.h ezmlm-return.c \
2186 strerr.h ezmlm-return.c byte.h ezmlm-return.c case.h ezmlm-return.c \
2187-getln.h ezmlm-return.c substdio.h ezmlm-return.c error.h \
2188+getln.h ezmlm-return.c substdio.h ezmlm-return.c error.h direntry.h \
2189 ezmlm-return.c quote.h ezmlm-return.c readwrite.h ezmlm-return.c \
2190 fmt.h ezmlm-return.c now.h datetime.h now.h ezmlm-return.c cookie.h \
2191 ezmlm-return.c subscribe.h strerr.h strerr.h subscribe.h \
2192-ezmlm-return.c issub.h strerr.h strerr.h issub.h ezmlm-return.c
2193+strerr.h strerr.h
2194 ./compile ezmlm-return.c
2195
2196 ezmlm-send: \
2197 load ezmlm-send.o auto_qmail.o getconf.o qmail.o constmap.o slurp.o \
2198-slurpclose.o wait.a getln.a strerr.a sig.a env.a open.a lock.a \
2199-substdio.a stralloc.a alloc.a error.a str.a fd.a case.a fs.a
2200- ./load ezmlm-send auto_qmail.o getconf.o qmail.o \
2201- constmap.o slurp.o slurpclose.o wait.a getln.a strerr.a \
2202- sig.a env.a open.a lock.a substdio.a stralloc.a alloc.a \
2203- error.a str.a fd.a case.a fs.a
2204+slurpclose.o wait.a getln.a strerr.a sig.a env.a open.a lock.a conf-sqlld \
2205+substdio.a cookie.o stralloc.a alloc.a error.a str.a fd.a case.a fs.a surf.a \
2206+getopt.a copy.o mime.a subdb.a makehash.o surf.o makehash.o str.a quote.o
2207+ ./load ezmlm-send subdb.a cookie.o surf.a auto_qmail.o getconf.o \
2208+ getopt.a qmail.o quote.o constmap.o slurp.o slurpclose.o \
2209+ wait.a getln.a strerr.a \
2210+ sig.a env.a open.a lock.a substdio.a stralloc.a alloc.a error.a \
2211+ fd.a case.a fs.a getopt.a copy.o mime.a makehash.o str.a ${SQLLD}
2212
2213 ezmlm-send.0: \
2214 ezmlm-send.1
2215 nroff -man ezmlm-send.1 > ezmlm-send.0
2216
2217 ezmlm-send.o: \
2218-compile ezmlm-send.c stralloc.h gen_alloc.h stralloc.h ezmlm-send.c \
2219-subfd.h substdio.h subfd.h ezmlm-send.c strerr.h ezmlm-send.c error.h \
2220-ezmlm-send.c qmail.h substdio.h substdio.h qmail.h ezmlm-send.c env.h \
2221-ezmlm-send.c lock.h ezmlm-send.c sig.h ezmlm-send.c open.h \
2222-ezmlm-send.c getln.h ezmlm-send.c case.h ezmlm-send.c scan.h \
2223-ezmlm-send.c str.h ezmlm-send.c fmt.h ezmlm-send.c readwrite.h \
2224-ezmlm-send.c exit.h ezmlm-send.c substdio.h substdio.h ezmlm-send.c \
2225-getconf.h ezmlm-send.c constmap.h ezmlm-send.c
2226+compile ezmlm-send.c stralloc.h gen_alloc.h copy.h \
2227+subfd.h substdio.h strerr.h error.h qmail.h env.h makehash.h sgetopt.h \
2228+lock.h sig.h open.h getln.h case.h scan.h str.h fmt.h readwrite.h quote.h \
2229+exit.h getconf.h constmap.h byte.h errtxt.h idx.h mime.h subscribe.h \
2230+uint32.h
2231 ./compile ezmlm-send.c
2232
2233+ezmlm-master: \
2234+load ezmlm-master.o auto_qmail.o getconf.o qmail.o constmap.o slurp.o \
2235+slurpclose.o wait.a getln.a strerr.a sig.a env.a open.a lock.a conf-sqlld \
2236+substdio.a cookie.o stralloc.a alloc.a error.a str.a fd.a case.a fs.a surf.a\
2237+getopt.a copy.o mime.a subdb.a makehash.o surf.o makehash.o str.a quote.o
2238+ ./load ezmlm-master subdb.a cookie.o surf.a auto_qmail.o getconf.o \
2239+ getopt.a qmail.o quote.o constmap.o slurp.o slurpclose.o \
2240+ wait.a getln.a strerr.a \
2241+ sig.a env.a open.a lock.a substdio.a stralloc.a alloc.a error.a \
2242+ fd.a case.a fs.a getopt.a copy.o mime.a makehash.o str.a ${SQLLD}
2243+
2244+ezmlm-master.0: \
2245+ezmlm-master.1
2246+ nroff -man ezmlm-master.1 > ezmlm-master.0
2247+
2248+ezmlm-master.o: \
2249+compile ezmlm-master.c stralloc.h gen_alloc.h copy.h \
2250+subfd.h substdio.h strerr.h error.h qmail.h env.h makehash.h sgetopt.h \
2251+lock.h sig.h open.h getln.h case.h scan.h str.h fmt.h readwrite.h quote.h \
2252+exit.h getconf.h constmap.h byte.h errtxt.h idx.h mime.h subscribe.h \
2253+uint32.h
2254+ ./compile ezmlm-master.c
2255+
2256+ezmlm-slave: \
2257+load ezmlm-slave.o auto_qmail.o getconf.o qmail.o constmap.o slurp.o \
2258+slurpclose.o wait.a getln.a strerr.a sig.a env.a open.a lock.a conf-sqlld \
2259+substdio.a cookie.o stralloc.a alloc.a error.a str.a fd.a case.a fs.a surf.a \
2260+getopt.a copy.o mime.a subdb.a makehash.o surf.o makehash.o str.a quote.o
2261+ ./load ezmlm-slave subdb.a cookie.o surf.a auto_qmail.o getconf.o \
2262+ getopt.a qmail.o quote.o constmap.o slurp.o slurpclose.o \
2263+ wait.a getln.a strerr.a \
2264+ sig.a env.a open.a lock.a substdio.a stralloc.a alloc.a error.a \
2265+ fd.a case.a fs.a getopt.a copy.o mime.a makehash.o str.a ${SQLLD}
2266+
2267+ezmlm-slave.0: \
2268+ezmlm-slave.1
2269+ nroff -man ezmlm-slave.1 > ezmlm-slave.0
2270+
2271+ezmlm-slave.o: \
2272+compile ezmlm-slave.c stralloc.h gen_alloc.h copy.h \
2273+subfd.h substdio.h strerr.h error.h qmail.h env.h makehash.h sgetopt.h \
2274+lock.h sig.h open.h getln.h case.h scan.h str.h fmt.h readwrite.h quote.h \
2275+exit.h getconf.h constmap.h byte.h errtxt.h idx.h mime.h subscribe.h \
2276+uint32.h
2277+ ./compile ezmlm-slave.c
2278+
2279+ezmlm-split: \
2280+load ezmlm-split.o auto_qmail.o getconf.o \
2281+slurpclose.o slurp.o qmail.o quote.o wait.a \
2282+getln.a env.a sig.a strerr.a substdio.a stralloc.a alloc.a \
2283+error.a str.a fs.a case.a open.a fd.a
2284+ ./load ezmlm-split auto_qmail.o getconf.o slurpclose.o \
2285+ slurp.o qmail.o quote.o getln.a env.a sig.a strerr.a \
2286+ substdio.a stralloc.a alloc.a error.a str.a fs.a case.a \
2287+ open.a fd.a wait.a
2288+
2289+ezmlm-split.0: \
2290+ezmlm-split.1
2291+ nroff -man ezmlm-split.1 > ezmlm-split.0
2292+
2293+ezmlm-split.o: \
2294+compile ezmlm-split.c error.h stralloc.h gen_alloc.h str.h \
2295+env.h sig.h getconf.h strerr.h byte.h getln.h case.h \
2296+qmail.h substdio.h readwrite.h quote.h \
2297+fmt.h errtxt.h idx.h uint32.h
2298+ ./compile ezmlm-split.c
2299+
2300+ezmlm-store: \
2301+load ezmlm-store.o auto_qmail.o getconf.o subdb.a log.o auto_bin.o mime.a \
2302+cookie.o now.o datetime.o date822fmt.o slurpclose.o slurp.o qmail.o quote.o \
2303+surf.a getln.a env.a sig.a strerr.a substdio.a stralloc.a alloc.a conf-sqlld \
2304+error.a str.a fs.a case.a open.a seek.a wait.a lock.a fd.a getopt.a copy.o
2305+ ./load ezmlm-store auto_qmail.o getconf.o subdb.a copy.o mime.a \
2306+ log.o cookie.o now.o datetime.o date822fmt.o slurpclose.o \
2307+ slurp.o qmail.o quote.o surf.a getln.a env.a sig.a strerr.a \
2308+ substdio.a stralloc.a alloc.a error.a str.a fs.a case.a \
2309+ open.a seek.a wait.a lock.a fd.a getopt.a auto_bin.o ${SQLLD}
2310+
2311+ezmlm-store.0: \
2312+ezmlm-store.1
2313+ nroff -man ezmlm-store.1 > ezmlm-store.0
2314+
2315+ezmlm-store.o: \
2316+compile ezmlm-store.c error.h stralloc.h gen_alloc.h str.h \
2317+sgetopt.h subgetopt.h fork.h wait.h auto_bin.h lock.h mime.h \
2318+env.h sig.h slurp.h getconf.h strerr.h byte.h getln.h case.h \
2319+qmail.h substdio.h readwrite.h seek.h quote.h datetime.h now.h \
2320+date822fmt.h fmt.h subscribe.h strerr.h cookie.h errtxt.h idx.h copy.h
2321+ ./compile ezmlm-store.c
2322+
2323 ezmlm-sub: \
2324-load ezmlm-sub.o subscribe.o log.o now.o fs.a strerr.a getln.a \
2325+load ezmlm-sub.o subdb.a getconf.o slurpclose.o slurp.o \
2326+log.o now.o fs.a strerr.a getln.a getopt.a fs.a conf-sqlld \
2327 substdio.a stralloc.a alloc.a error.a str.a case.a open.a lock.a
2328- ./load ezmlm-sub subscribe.o log.o now.o fs.a strerr.a \
2329+ ./load ezmlm-sub subdb.a getconf.o slurpclose.o slurp.o \
2330+ log.o now.o fs.a strerr.a getopt.a fs.a \
2331 getln.a substdio.a stralloc.a alloc.a error.a str.a case.a \
2332- open.a lock.a
2333+ open.a lock.a ${SQLLD}
2334
2335 ezmlm-sub.0: \
2336 ezmlm-sub.1
2337@@ -314,57 +787,86 @@
2338
2339 ezmlm-sub.o: \
2340 compile ezmlm-sub.c strerr.h ezmlm-sub.c subscribe.h strerr.h \
2341-strerr.h subscribe.h ezmlm-sub.c log.h ezmlm-sub.c
2342+getln.h substdio.h stralloc.h readwrite.h \
2343+strerr.h subscribe.h log.h errtxt.h sgetopt.h scan.h idx.h
2344 ./compile ezmlm-sub.c
2345
2346+ezmlm-test: \
2347+ezmlm-test.sh warn-auto.sh conf-bin
2348+ (cat warn-auto.sh; \
2349+ echo QMPATH=\'`head -1 conf-qmail`\'; \
2350+ cat ezmlm-test.sh ) > ezmlm-test; \
2351+ chmod 755 ezmlm-test
2352+
2353+ezmlm-test.0: \
2354+ezmlm-test.1
2355+ nroff -man ezmlm-test.1 > ezmlm-test.0
2356+
2357+ezmlm-tstdig: \
2358+load ezmlm-tstdig.o getopt.a getconf.o now.o fs.a strerr.a getln.a \
2359+lock.a \
2360+substdio.a stralloc.a alloc.a error.a str.a case.a sig.a \
2361+open.a slurpclose.o slurp.o env.a
2362+ ./load ezmlm-tstdig getopt.a getconf.o env.a now.o fs.a strerr.a \
2363+ lock.a getln.a substdio.a stralloc.a alloc.a error.a str.a case.a \
2364+ sig.a slurpclose.o slurp.o open.a
2365+
2366+ezmlm-tstdig.0: \
2367+ezmlm-tstdig.1
2368+ nroff -man ezmlm-tstdig.1 > ezmlm-tstdig.0
2369+
2370+ezmlm-tstdig.o: \
2371+compile ezmlm-tstdig.c strerr.h sgetopt.h getconf.h \
2372+sig.h now.h errtxt.h stralloc.h sig.h env.h fmt.h substdio.h readwrite.h \
2373+now.h idx.h
2374+ ./compile ezmlm-tstdig.c
2375+
2376 ezmlm-unsub: \
2377-load ezmlm-unsub.o subscribe.o log.o now.o fs.a strerr.a getln.a \
2378+load ezmlm-unsub.o subdb.a getconf.o slurpclose.o slurp.o \
2379+log.o now.o fs.a strerr.a getln.a getopt.a fs.a conf-sqlld \
2380 substdio.a stralloc.a alloc.a error.a str.a case.a open.a lock.a
2381- ./load ezmlm-unsub subscribe.o log.o now.o fs.a strerr.a \
2382+ ./load ezmlm-unsub subdb.a getopt.a getconf.o slurpclose.o slurp.o \
2383+ log.o now.o fs.a strerr.a fs.a \
2384 getln.a substdio.a stralloc.a alloc.a error.a str.a case.a \
2385- open.a lock.a
2386+ open.a lock.a ${SQLLD}
2387
2388 ezmlm-unsub.0: \
2389 ezmlm-unsub.1
2390 nroff -man ezmlm-unsub.1 > ezmlm-unsub.0
2391
2392 ezmlm-unsub.o: \
2393-compile ezmlm-unsub.c strerr.h ezmlm-unsub.c subscribe.h strerr.h \
2394-strerr.h subscribe.h ezmlm-unsub.c log.h ezmlm-unsub.c
2395+compile ezmlm-unsub.c strerr.h subscribe.h \
2396+log.h errtxt.h sgetopt.h scan.h idx.h readwrite.h stralloc.h substdio.h
2397 ./compile ezmlm-unsub.c
2398
2399 ezmlm-warn: \
2400-load ezmlm-warn.o auto_qmail.o getconf.o cookie.o issub.o now.o \
2401+load ezmlm-warn.o auto_qmail.o getconf.o mime.a cookie.o subdb.a now.o \
2402 slurpclose.o slurp.o quote.o datetime.o date822fmt.o qmail.o surf.a \
2403 case.a strerr.a sig.a getln.a substdio.a stralloc.a alloc.a error.a \
2404-open.a lock.a str.a fs.a fd.a wait.a
2405- ./load ezmlm-warn auto_qmail.o getconf.o cookie.o issub.o \
2406+open.a lock.a str.a fs.a fd.a wait.a copy.o getopt.a conf-sqlld
2407+ ./load ezmlm-warn auto_qmail.o getconf.o mime.a \
2408+ cookie.o subdb.a getopt.a \
2409 now.o slurpclose.o slurp.o quote.o datetime.o date822fmt.o \
2410 qmail.o surf.a case.a strerr.a sig.a getln.a substdio.a \
2411 stralloc.a alloc.a error.a open.a lock.a str.a fs.a fd.a \
2412- wait.a
2413+ wait.a copy.o ${SQLLD}
2414
2415 ezmlm-warn.0: \
2416 ezmlm-warn.1
2417 nroff -man ezmlm-warn.1 > ezmlm-warn.0
2418
2419 ezmlm-warn.o: \
2420-compile ezmlm-warn.c ezmlm-warn.c ezmlm-warn.c direntry.h direntry.h \
2421-direntry.h ezmlm-warn.c readwrite.h ezmlm-warn.c getln.h ezmlm-warn.c \
2422-substdio.h ezmlm-warn.c stralloc.h gen_alloc.h stralloc.h \
2423-ezmlm-warn.c slurp.h ezmlm-warn.c getconf.h ezmlm-warn.c byte.h \
2424-ezmlm-warn.c error.h ezmlm-warn.c str.h ezmlm-warn.c strerr.h \
2425-ezmlm-warn.c sig.h ezmlm-warn.c now.h datetime.h now.h ezmlm-warn.c \
2426-datetime.h datetime.h ezmlm-warn.c date822fmt.h ezmlm-warn.c fmt.h \
2427-ezmlm-warn.c cookie.h ezmlm-warn.c qmail.h substdio.h substdio.h \
2428-qmail.h ezmlm-warn.c
2429+compile ezmlm-warn.c direntry.h readwrite.h getln.h \
2430+substdio.h stralloc.h gen_alloc.h slurp.h getconf.h byte.h error.h str.h \
2431+sig.h now.h datetime.h date822fmt.h fmt.h cookie.h qmail.h substdio.h \
2432+qmail.h copy.h mime.h idx.h errtxt.h sgetopt.h subgetopt.h
2433 ./compile ezmlm-warn.c
2434
2435 ezmlm-weed: \
2436-load ezmlm-weed.o getln.a strerr.a substdio.a error.a stralloc.a \
2437+load ezmlm-weed.o getln.a strerr.a substdio.a error.a case.a stralloc.a \
2438 alloc.a str.a
2439 ./load ezmlm-weed getln.a strerr.a substdio.a error.a \
2440- stralloc.a alloc.a str.a
2441+ case.a stralloc.a alloc.a str.a
2442
2443 ezmlm-weed.0: \
2444 ezmlm-weed.1
2445@@ -380,6 +882,18 @@
2446 ezmlm.5
2447 nroff -man ezmlm.5 > ezmlm.0
2448
2449+ezmlmglrc.0: \
2450+ezmlmglrc.5
2451+ nroff -man ezmlmglrc.5 > ezmlmglrc.0
2452+
2453+ezmlmrc.0: \
2454+ezmlmrc.5
2455+ nroff -man ezmlmrc.5 > ezmlmrc.0
2456+
2457+ezmlmsubrc.0: \
2458+ezmlmsubrc.5
2459+ nroff -man ezmlmsubrc.5 > ezmlmsubrc.0
2460+
2461 fd.a: \
2462 makelib fd_copy.o fd_move.o
2463 ./makelib fd.a fd_copy.o fd_move.o
2464@@ -496,16 +1010,23 @@
2465 byte.h install.c
2466 ./compile install.c
2467
2468+idxthread.o: \
2469+compile idxthread.c idxthread.h alloc.h error.h stralloc.h str.h lock.h idx.h \
2470+substdio.h fmt.h readwrite.h idx.h errtxt.h substdio.h byte.h yyyymm.h
2471+ ./compile idxthread.c
2472+
2473 issub.o: \
2474-compile issub.c stralloc.h gen_alloc.h stralloc.h issub.c getln.h \
2475-issub.c readwrite.h issub.c substdio.h issub.c open.h issub.c byte.h \
2476-issub.c case.h issub.c lock.h issub.c error.h issub.c issub.h \
2477-strerr.h issub.h issub.c uint32.h issub.c
2478- ./compile issub.c
2479+compile issub.c stralloc.h gen_alloc.h getln.h readwrite.h substdio.h \
2480+open.h byte.h case.h lock.h error.h subscribe.h strerr.h uint32.h fmt.h \
2481+conf-sqlcc
2482+ ./compile issub.c ${SQLCC}
2483
2484 it: \
2485+ezmlm-idx ezmlm-accept ezmlm-archive ezmlm-check ezmlm-gate ezmlm-get \
2486+ezmlm-clean ezmlm-glconf ezmlm-moderate ezmlm-store ezmlm-tstdig \
2487 ezmlm-make ezmlm-manage ezmlm-send ezmlm-reject ezmlm-return \
2488-ezmlm-warn ezmlm-weed ezmlm-list ezmlm-sub ezmlm-unsub
2489+ezmlm-warn ezmlm-weed ezmlm-list ezmlm-sub ezmlm-unsub ezmlm-cgi ezmlm-limit \
2490+ezmlm-issubn ezmlm-cron ezmlm-request ezmlm-test ezmlm-split ezmlmrc
2491
2492 load: \
2493 make-load warn-auto.sh systype
2494@@ -527,6 +1048,10 @@
2495 fmt.h log.c open.h log.c
2496 ./compile log.c
2497
2498+logmsg.o: \
2499+compile logmsg.c stralloc.h fmt.h conf-sqlcc
2500+ ./compile logmsg.c ${SQLCC}
2501+
2502 make-compile: \
2503 make-compile.sh auto-ccld.sh
2504 cat auto-ccld.sh make-compile.sh > make-compile
2505@@ -542,6 +1067,10 @@
2506 cat auto-ccld.sh make-makelib.sh > make-makelib
2507 chmod 755 make-makelib
2508
2509+makehash.o: \
2510+makehash.c makehash.h surf.h uint32.h stralloc.h
2511+ ./compile makehash.c
2512+
2513 makelib: \
2514 make-makelib warn-auto.sh systype
2515 ( cat warn-auto.sh; ./make-makelib "`cat systype`" ) > \
2516@@ -549,12 +1078,23 @@
2517 chmod 755 makelib
2518
2519 man: \
2520-ezmlm.0 ezmlm-make.0 ezmlm-manage.0 ezmlm-send.0 ezmlm-reject.0 \
2521+ezmlm.0 ezmlm-gate.0 ezmlm-idx.0 ezmlm-get.0 ezmlm-check.0 ezmlm-tstdig.0 \
2522+ezmlm-make.0 ezmlm-manage.0 ezmlm-send.0 ezmlm-reject.0 ezmlm-accept.0 \
2523 ezmlm-return.0 ezmlm-warn.0 ezmlm-weed.0 ezmlm-list.0 ezmlm-sub.0 \
2524 ezmlm-unsub.0 alloc.0 case.0 datetime.0 direntry.0 env.0 error.0 \
2525 error_str.0 error_temp.0 ezmlm.0 fd_copy.0 fd_move.0 getln.0 getln2.0 \
2526+ezmlm-issubn.0 ezmlm-cron.0 ezmlm-glconf.0 ezmlmglrc.0 ezmlm-test.0 \
2527+ezmlmsubrc.0 ezmlm-mktab.0 ezmlm-split.0 ezmlm-archive.0 ezmlm-cgi.0 \
2528 getopt.0 now.0 sgetopt.0 stralloc.0 subfd.0 subgetopt.0 substdio.0 \
2529-substdio_copy.0 substdio_in.0 substdio_out.0 surf.0 surfpcs.0 wait.0
2530+substdio_copy.0 substdio_in.0 substdio_out.0 surf.0 surfpcs.0 wait.0 \
2531+ezmlm-clean.0 ezmlm-moderate.0 ezmlm-store.0 ezmlm-request.0 ezmlmrc.0 \
2532+ezmlm-limit.0
2533+
2534+mime.a: \
2535+makelib concatHDR.o decodeHDR.o unfoldHDR.o \
2536+decodeQ.o encodeQ.o decodeB.o encodeB.o author.o
2537+ ./makelib mime.a concatHDR.o decodeHDR.o decodeQ.o encodeQ.o \
2538+ decodeB.o encodeB.o unfoldHDR.o author.o
2539
2540 now.0: \
2541 now.3
2542@@ -582,6 +1122,16 @@
2543 compile open_trunc.c open_trunc.c open_trunc.c open.h open_trunc.c
2544 ./compile open_trunc.c
2545
2546+opensql.o: \
2547+compile opensql.c error.h strerr.h errtxt.h \
2548+ str.h case.h stralloc.h subscribe.h conf-sqlcc
2549+ ./compile opensql.c ${SQLCC}
2550+
2551+putsubs.o: \
2552+compile putsubs.c error.h substdio.h strerr.h readwrite.h \
2553+str.h open.h case.h errtxt.h stralloc.h subscribe.h qmail.h fmt.h conf-sqlcc
2554+ ./compile putsubs.c ${SQLCC}
2555+
2556 qmail.o: \
2557 compile qmail.c substdio.h qmail.c readwrite.h qmail.c wait.h qmail.c \
2558 exit.h qmail.c fork.h qmail.c fd.h qmail.c qmail.h substdio.h \
2559@@ -601,6 +1151,12 @@
2560 compile scan_ulong.c scan.h scan_ulong.c
2561 ./compile scan_ulong.c
2562
2563+searchlog.o: \
2564+compile searchlog.c case.h stralloc.h scan.h open.h datetime.h errtxt.h str.h \
2565+ datetime.h date822fmt.h substdio.h readwrite.h strerr.h error.h \
2566+ subscribe.h conf-sqlcc
2567+ ./compile searchlog.c ${SQLCC}
2568+
2569 seek.a: \
2570 makelib seek_set.o
2571 ./makelib seek.a seek_set.o
2572@@ -800,6 +1356,12 @@
2573 compile strerr_sys.c error.h strerr_sys.c strerr.h strerr_sys.c
2574 ./compile strerr_sys.c
2575
2576+subdb.a: \
2577+makelib checktag.o issub.o logmsg.o subscribe.o opensql.o putsubs.o \
2578+ tagmsg.o searchlog.o
2579+ ./makelib subdb.a checktag.o issub.o logmsg.o subscribe.o \
2580+ opensql.o putsubs.o tagmsg.o searchlog.o
2581+
2582 subfd.0: \
2583 subfd.3
2584 nroff -man subfd.3 > subfd.0
2585@@ -818,12 +1380,10 @@
2586 ./compile subgetopt.c
2587
2588 subscribe.o: \
2589-compile subscribe.c stralloc.h gen_alloc.h stralloc.h subscribe.c \
2590-getln.h subscribe.c readwrite.h subscribe.c substdio.h subscribe.c \
2591-strerr.h subscribe.c open.h subscribe.c byte.h subscribe.c case.h \
2592-subscribe.c lock.h subscribe.c error.h subscribe.c uint32.h \
2593-subscribe.c subscribe.h strerr.h strerr.h subscribe.h subscribe.c
2594- ./compile subscribe.c
2595+compile subscribe.c stralloc.h gen_alloc.h stralloc.h \
2596+getln.h readwrite.h substdio.h strerr.h open.h byte.h case.h \
2597+lock.h error.h uint32.h subscribe.h idx.h fmt.h conf-sqlcc
2598+ ./compile subscribe.c ${SQLCC}
2599
2600 substdi.o: \
2601 compile substdi.c substdio.h substdi.c byte.h substdi.c error.h \
2602@@ -889,6 +1449,10 @@
2603 find-systype trycpp.c
2604 ./find-systype > systype
2605
2606+tagmsg.o: \
2607+compile tagmsg.c stralloc.h slurp.h scan.h fmt.h strerr.h cookie.h conf-sqlcc
2608+ ./compile tagmsg.c ${SQLCC}
2609+
2610 uint32.h: \
2611 tryulong32.c compile load uint32.h1 uint32.h2
2612 ( ( ./compile tryulong32.c && ./load tryulong32 && \
2613@@ -907,3 +1471,124 @@
2614 wait_pid.o: \
2615 compile wait_pid.c wait_pid.c wait_pid.c error.h wait_pid.c
2616 ./compile wait_pid.c
2617+
2618+yyyymm.a: \
2619+makelib date2yyyymm.o dateline.o
2620+ ./makelib yyyymm.a date2yyyymm.o dateline.o
2621+
2622+ch: \
2623+ezmlmrc.ch
2624+ cp -f ezmlmrc.ch_GB ezmlmrc
2625+
2626+ch_GB: \
2627+ezmlmrc.ch_GB
2628+ cp -f ezmlmrc.ch_GB ezmlmrc
2629+
2630+cs: \
2631+ezmlmrc.cs
2632+ cp -f ezmlmrc.cs ezmlmrc
2633+
2634+da: \
2635+ezmlmrc.da
2636+ cp -f ezmlmrc.da ezmlmrc
2637+
2638+de: \
2639+ezmlmrc.de
2640+ cp -f ezmlmrc.de ezmlmrc
2641+
2642+en_US: \
2643+ezmlmrc.en_US
2644+ cp -f ezmlmrc.en_US ezmlmrc
2645+
2646+en: \
2647+ezmlmrc.en_US
2648+ cp -f ezmlmrc.en_US ezmlmrc
2649+
2650+es: \
2651+ezmlmrc.es
2652+ cp -f ezmlmrc.es ezmlmrc
2653+
2654+us: \
2655+ezmlmrc.en_US
2656+ cp -f ezmlmrc.en_US ezmlmrc
2657+
2658+ezmlmrc: \
2659+ezmlmrc.en_US
2660+ cp -f ezmlmrc.en_US ezmlmrc
2661+
2662+fr: \
2663+ezmlmrc.fr
2664+ cp -f ezmlmrc.fr ezmlmrc
2665+
2666+id: \
2667+ezmlmrc.id
2668+ cp -f ezmlmrc.id ezmlmrc
2669+
2670+ita: \
2671+ezmlmrc.it
2672+ cp -f ezmlmrc.it ezmlmrc
2673+
2674+jp: \
2675+ezmlmrc.jp
2676+ cp -f ezmlmrc.jp ezmlmrc
2677+
2678+pl: \
2679+ezmlmrc.pl
2680+ cp -f ezmlmrc.pl ezmlmrc
2681+
2682+pt: \
2683+ezmlmrc.pt
2684+ cp -f ezmlmrc.pt ezmlmrc
2685+
2686+pt_BR: \
2687+ezmlmrc.pt_BR
2688+ cp -f ezmlmrc.pt_BR ezmlmrc
2689+
2690+ru: \
2691+ezmlmrc.ru
2692+ cp -f ezmlmrc.ru ezmlmrc
2693+
2694+sv: \
2695+ezmlmrc.sv
2696+ cp -f ezmlmrc.sv ezmlmrc
2697+
2698+mysql:
2699+ ln -sf sub_mysql/ezmlm-mktab ezmlm-mktab
2700+ ln -sf sub_mysql/checktag.c checktag.c; rm -f checktag.o
2701+ ln -sf sub_mysql/issub.c issub.c; rm -f issub.o
2702+ ln -sf sub_mysql/logmsg.c logmsg.c; rm -f logmsg.o
2703+ ln -sf sub_mysql/subscribe.c subscribe.c; rm -f subscribe.o
2704+ ln -sf sub_mysql/opensql.c opensql.c; rm -f opensql.o
2705+ ln -sf sub_mysql/putsubs.c putsubs.c; rm -f putsubs.o
2706+ ln -sf sub_mysql/tagmsg.c tagmsg.c; rm -f tagmsg.o
2707+ ln -sf sub_mysql/searchlog.c searchlog.c; rm -f searchlog.o
2708+ ln -sf sub_mysql/conf-sqlld conf-sqlld; touch conf-sqlld
2709+ ln -sf sub_mysql/conf-sqlcc conf-sqlcc; touch conf-sqlcc
2710+
2711+pgsql:
2712+ ln -sf sub_pgsql/ezmlm-mktab ezmlm-mktab
2713+ ln -sf sub_pgsql/checktag.c checktag.c; rm -f checktag.o
2714+ ln -sf sub_pgsql/issub.c issub.c; rm -f issub.o
2715+ ln -sf sub_pgsql/logmsg.c logmsg.c; rm -f logmsg.o
2716+ ln -sf sub_pgsql/subscribe.c subscribe.c; rm -f subscribe.o
2717+ ln -sf sub_pgsql/opensql.c opensql.c; rm -f opensql.o
2718+ ln -sf sub_pgsql/putsubs.c putsubs.c; rm -f putsubs.o
2719+ ln -sf sub_pgsql/tagmsg.c tagmsg.c; rm -f tagmsg.o
2720+ ln -sf sub_pgsql/searchlog.c searchlog.c; rm -f searchlog.o
2721+ ln -sf sub_pgsql/conf-sqlld conf-sqlld; touch conf-sqlld
2722+ ln -sf sub_pgsql/conf-sqlcc conf-sqlcc; touch conf-sqlcc
2723+
2724+std:
2725+ ln -sf sub_std/ezmlm-mktab ezmlm-mktab
2726+ ln -sf sub_std/checktag.c checktag.c; rm -f checktag.o
2727+ ln -sf sub_std/issub.c issub.c; rm -f issub.o
2728+ ln -sf sub_std/logmsg.c logmsg.c; rm -f logmsg.o
2729+ ln -sf sub_std/subscribe.c subscribe.c; rm -f subscribe.o
2730+ ln -sf sub_std/opensql.c opensql.c; rm -f opensql.o
2731+ ln -sf sub_std/putsubs.c putsubs.c; rm -f putsubs.o
2732+ ln -sf sub_std/tagmsg.c tagmsg.c; rm -f tagmsg.o
2733+ ln -sf sub_std/searchlog.c searchlog.c; rm -f searchlog.o
2734+ ln -sf sub_std/conf-sqlld conf-sqlld; touch conf-sqlld
2735+ ln -sf sub_std/conf-sqlcc conf-sqlcc; touch conf-sqlcc
2736+
2737+
2738--- constmap.c 1998/05/20 22:37:38 1.1
2739+++ constmap.c 1998/12/12 18:57:23 1.3
2740@@ -18,6 +18,39 @@
2741 return h;
2742 }
2743
2744+/* Returns index of string in constmap. 1 = first string, 2 = second ... */
2745+/* 0 not found. Use for commands */
2746+int constmap_index(cm,s,len)
2747+struct constmap *cm;
2748+char *s;
2749+int len;
2750+{
2751+ constmap_hash h;
2752+ int pos;
2753+ h = hash(s,len);
2754+ pos = cm->first[h & cm->mask];
2755+ while (pos != -1) {
2756+ if (h == cm->hash[pos])
2757+ if (len == cm->inputlen[pos])
2758+ if (!case_diffb(cm->input[pos],len,s))
2759+ return pos + 1;
2760+ pos = cm->next[pos];
2761+ }
2762+ return 0;
2763+}
2764+
2765+/* returns pointer to sz of string with index "idx". 1 = first, 2 = second...*/
2766+char *constmap_get(cm,idx)
2767+struct constmap *cm;
2768+int idx;
2769+
2770+{
2771+ if (idx <= 0 || idx > cm->num)
2772+ return 0;
2773+ else
2774+ return cm->input[idx-1];
2775+}
2776+
2777 char *constmap(cm,s,len)
2778 struct constmap *cm;
2779 char *s;
2780@@ -38,6 +71,9 @@
2781 }
2782
2783 int constmap_init(cm,s,len,flagcolon)
2784+/* if flagcolon is true, we process only the stuff before the colon on */
2785+/* each line. Otherwise, it's the entire line. Still, the entire line */
2786+/* is stored! */
2787 struct constmap *cm;
2788 char *s;
2789 int len;
2790--- constmap.h 1998/05/20 22:37:38 1.1
2791+++ constmap.h 1999/09/29 03:16:11 1.3
2792@@ -16,5 +16,6 @@
2793 extern int constmap_init();
2794 extern void constmap_free();
2795 extern char *constmap();
2796-
2797+extern char *constmap_get();
2798+extern int constmap_index();
2799 #endif
2800--- error.h 1999/01/09 01:36:11 1.1
2801+++ error.h 1999/01/09 01:59:56 1.2
2802@@ -16,6 +16,7 @@
2803 extern int error_pipe;
2804 extern int error_perm;
2805 extern int error_acces;
2806+extern int error_notdir;
2807
2808 extern char *error_str();
2809 extern int error_temp();
2810--- error.c 1999/01/09 01:36:42 1.1
2811+++ error.c 1999/01/09 01:59:56 1.2
2812@@ -17,7 +17,7 @@
2813 -2;
2814 #endif
2815
2816-int error_noent =
2817+int error_noent =
2818 #ifdef ENOENT
2819 ENOENT;
2820 #else
2821@@ -92,4 +92,11 @@
2822 EACCES;
2823 #else
2824 -13;
2825+#endif
2826+
2827+int error_notdir =
2828+#ifdef ENOTDIR
2829+ENOTDIR;
2830+#else
2831+-14;
2832 #endif
2833--- ezmlm-weed.c 1999/04/11 19:09:55 1.1
2834+++ ezmlm-weed.c 1999/12/19 16:49:32 1.4
2835@@ -5,18 +5,24 @@
2836 #include "substdio.h"
2837 #include "getln.h"
2838 #include "strerr.h"
2839+#include "errtxt.h"
2840
2841 char buf0[256];
2842 substdio ss0 = SUBSTDIO_FDBUF(read,0,buf0,sizeof(buf0));
2843
2844 #define FATAL "ezmlm-weed: fatal: "
2845
2846+void die_nomem()
2847+{
2848+ strerr_die2x(111,FATAL,ERR_NOMEM);
2849+}
2850+
2851 void get(sa)
2852 stralloc *sa;
2853 {
2854 int match;
2855 if (getln(&ss0,sa,&match,'\n') == -1)
2856- strerr_die2sys(111,FATAL,"unable to read input: ");
2857+ strerr_die2sys(111,FATAL,ERR_READ_INPUT);
2858 if (!match) _exit(0);
2859 }
2860
2861@@ -30,6 +36,9 @@
2862 stralloc line7 = {0};
2863 stralloc line8 = {0};
2864
2865+stralloc boundary = {0};
2866+stralloc dsnline = {0};
2867+
2868 char warn1[] = " **********************************************";
2869 char warn2[] = " ** THIS IS A WARNING MESSAGE ONLY **";
2870 char warn3[] = " ** YOU DO NOT NEED TO RESEND YOUR MESSAGE **";
2871@@ -40,19 +49,46 @@
2872 int flagsr = 0;
2873 int flagas = 0;
2874 int flagbw = 0;
2875+int flagdsn = 0;
2876+
2877+int isboundary()
2878+/* returns 1 if line.len contains the mime bondary, 0 otherwise */
2879+{
2880+ if (line.s[0] == '-' && line.s[1] == '-' && line.len >= boundary.len + 3)
2881+ if (!byte_diff(line.s + 2,boundary.len,boundary.s)) /* boundary */
2882+ return 1;
2883+ return 0;
2884+}
2885
2886 void main()
2887 {
2888- int match;
2889+ unsigned int i,j;
2890
2891 for (;;) {
2892 get(&line);
2893 if (line.len == 1) break;
2894-
2895+ if (line.s[0] == ' ' || line.s[0] == '\t') { /* continuation */
2896+ if (flagdsn) {
2897+ if (!stralloc_catb(&dsnline,line.s,line.len - 1)) die_nomem();
2898+ continue;
2899+ }
2900+ }
2901+ flagdsn = 0;
2902 if (stralloc_starts(&line,"Subject: success notice"))
2903 _exit(99);
2904 if (stralloc_starts(&line,"Subject: deferral notice"))
2905 _exit(99);
2906+ if (stralloc_starts(&line,"Precedence: bulk"))
2907+ _exit(99);
2908+ if (stralloc_starts(&line,"Precedence: junk"))
2909+ _exit(99);
2910+/* for Novell Groupwise */
2911+ if (stralloc_starts(&line,"Subject: Message status - delivered"))
2912+ _exit(99);
2913+ if (stralloc_starts(&line,"Subject: Message status - opened"))
2914+ _exit(99);
2915+ if (stralloc_starts(&line,"Subject: Out of Office AutoReply:"))
2916+ _exit(99);
2917
2918 if (stralloc_starts(&line,"From: Mail Delivery Subsystem <MAILER-DAEMON@"))
2919 flagmds = 1;
2920@@ -62,6 +98,71 @@
2921 flagsr = 1;
2922 if (stralloc_starts(&line,"Auto-Submitted: auto-generated (warning"))
2923 flagas = 1;
2924+ if (case_startb(line.s,line.len,"Content-type: multipart/report"))
2925+ if (!stralloc_copyb(&dsnline,line.s,line.len - 1)) die_nomem();
2926+ flagdsn = 1;
2927+ } /* end of header */
2928+
2929+ if (flagdsn) { /* always only one recipient/action */
2930+ flagdsn = 0; /* will be set for correct report type */
2931+ for (i=0; i < dsnline.len; i += 1+byte_chr(dsnline.s+i,dsnline.len-i,';')) {
2932+ while (dsnline.s[i] == ' ' || dsnline.s[i] == '\t')
2933+ if (++i >= dsnline.len) break;
2934+ if (case_startb(dsnline.s + i,dsnline.len - i,"report-type=")) {
2935+ i += 12;
2936+ while (dsnline.s[i] ==' ' || dsnline.s[i] =='\t' || dsnline.s[i] =='"')
2937+ if (++i >= dsnline.len) break;
2938+ if (case_startb(dsnline.s + i,dsnline.len - i,"delivery-status"))
2939+ flagdsn = 1;
2940+ } else if (case_startb(dsnline.s + i,dsnline.len - i,"boundary=")) {
2941+ i += 9;
2942+ while (dsnline.s[i] ==' ' || dsnline.s[i] =='\t')
2943+ if (++i >= dsnline.len) break;
2944+ if (dsnline.s[i] == '"') {
2945+ if (++i >= dsnline.len) break;
2946+ j = i + byte_chr(dsnline.s + i,dsnline.len - i,'"');
2947+ if (j >= dsnline.len) break;
2948+ } else {
2949+ j = i;
2950+ while (dsnline.s[j] !=' ' && dsnline.s[j] !='\t' &&
2951+ dsnline.s[j] !=';')
2952+ if (++j >= dsnline.len) break;
2953+ } /* got boundary */
2954+ if (!stralloc_copyb(&boundary,dsnline.s+i,j-i)) die_nomem();
2955+ }
2956+ }
2957+ }
2958+ if (flagdsn && boundary.len) { /* parse DSN message */
2959+ get(&line); /* if bad format we exit(0) via get() */
2960+ for (;;) {
2961+ if (isboundary()) {
2962+ if (line.len == boundary.len + 5 && line.s[line.len - 1] == '-'
2963+ && line.s[line.len - 2] == '-')
2964+ _exit(99); /* end: not failure report */
2965+ get(&line); /* Content-type */
2966+ if (case_startb(line.s,line.len,"content-type:")) {
2967+ i = 13;
2968+ while (line.s[i] == ' ' || line.s[i] == '\t')
2969+ if (++i >= line.len) break;
2970+ if (case_startb(line.s+i,line.len-i,"message/delivery-status")) {
2971+ for (;;) {
2972+ get(&line);
2973+ if (isboundary()) break;
2974+ if (case_startb(line.s,line.len,"action:")) {
2975+ i = 8;
2976+ while (line.s[i] == ' ' || line.s[i] == '\t')
2977+ if (++i >= line.len) break;
2978+ if (case_startb(line.s + i, line.len - i,"failed"))
2979+ _exit(0); /* failure notice */
2980+ else
2981+ _exit(99); /* there shouldn't be more than 1 action */
2982+ }
2983+ }
2984+ }
2985+ }
2986+ } else
2987+ get(&line);
2988+ }
2989 }
2990
2991 get(&line1);
2992--- ezmlm-weed.1 1999/08/01 16:45:46 1.1
2993+++ ezmlm-weed.1 1999/12/19 16:53:18 1.3
2994@@ -7,6 +7,8 @@
2995 .B ezmlm-weed
2996 reads a mail message from its standard input.
2997 If it recognizes the message as an MTA warning message or success message,
2998+or as a message with precedence ``bulk'' or ``junk'' as generated by
2999+vacation autoresponders,
3000 it exits 99;
3001 this will cause
3002 .B qmail-alias
3003@@ -33,6 +35,13 @@
3004 Subject: deferral notice
3005 .EE
3006
3007+Delivery-status notification (DSN, rfc1891). All DSN messages with ``Action''
3008+other than ``failed'':
3009+
3010+.EX
3011+ Content-type: multipart/report
3012+.EE
3013+
3014 Warning message from sendmail, MIME form:
3015
3016 .EX
3017@@ -104,6 +113,21 @@
3018 .EX
3019 THIS IS A WARNING MESSAGE ONLY
3020 .EE
3021+
3022+Notification messages from Novell Groupwise:
3023+
3024+.EX
3025+ Subject: Message status - delivered
3026+.EE
3027+.br
3028+.EX
3029+ Subject: Message status - opened
3030+.EE
3031+.br
3032+.EX
3033+ Subject: Out of Office AutoReply:
3034+.EE
3035+
3036 .SH "SEE ALSO"
3037 ezmlm-return(1),
3038 qmail-command(8)