Import ezmlm-idx 0.40
[ezmlm] / idx.patch
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)