chiark / gitweb /
Debianization and various other fixes.
[ezmlm] / FAQ.idx
1   EZFAQ 0.40 - ezmlm-idx and ezmlm FAQ
2   Fred Lindberg, lindberg@id.wustl.edu & Fred B. Ringel,
3   fredr@rivertown.net
4   22-NOV-1999
5
6   This document is a collection of frequently asked questions about
7   ezmlm-idx. Where applicable, ezmlm itself is also covered. This FAQ
8   presumes familiarity with Unix, and with the basic concepts of E-mail
9   and mailing lists.  This FAQ is updated for ezmlm-0.53 and ezmlm-
10   idx-0.40.
11   ______________________________________________________________________
12
13   Table of Contents
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67   1. General Information
68
69      1.1 Acknowledgements
70      1.2 What is this document?
71      1.3 Terminology
72      1.4 What is the difference between ezmlm and ezmlm-idx?
73      1.5 Where can I get all of the ezmlm-related programs?
74      1.6 Where can I find documentation for ezmlm and patches?
75      1.7 Where do I send comments on this document?
76      1.8 How to experiment with new versions of ezmlm-idx.
77
78   2. Quick start
79
80   3. Overview of mailing list management and mailing list managers
81
82   4. Overview of ezmlm function
83
84      4.1 The basic setup.
85      4.2 Inventions in ezmlm.
86      4.3 The qmail delivery mechanism.
87      4.4 What the different programs do.
88      4.5 What the different files in the list directory do.
89      4.6 The paper path for posts.
90      4.7 The ezmlm path for moderation messages.
91      4.8 The ezmlm path for administrative messages.
92      4.9 The ezmlm path for bounces.
93      4.10 Messages to list-owner and list-digest-owner.
94      4.11 Structure of subscriber databases.
95      4.12 Local case in E-mail addresses.
96      4.13 Testing SENDER to allow posts only from list subscribers.
97      4.14 How cookies work.
98      4.15 How moderator E-mail addresses are stored.
99      4.16 How subscription moderation works.
100      4.17 How remote administration works.
101      4.18 How message moderation works.
102      4.19 How QMQP support works
103      4.20 How messages are stored in the archive.
104      4.21 How the message index works.
105      4.22 How threading works.
106      4.23 How digests work.
107      4.24 How WWW archive access works.
108      4.25 How ezmlm-tstdig works.
109      4.26 How sublists work.
110      4.27 How sublisting can be made transparent to the user.
111      4.28 How to service commands in the subject line.
112      4.29 How to support alternative command names.
113      4.30 How to add your own commands.
114      4.31 How remote administrators can retrieve a subscriber list
115      4.32 How remote administrators can determine the number of subscribers
116      4.33 How remote admins can see if an address is a subscriber or not
117      4.34 How remote administrators can search the subscription log
118      4.35 How text file editing works.
119      4.36 How subject line prefixes work.
120      4.37 How bounces are handled.
121      4.38 How the info and faq commands work.
122      4.39 How the global ezmlm list address works.
123      4.40 How ezmlm-cron works.
124      4.41 How ezmlm-make works.
125      4.42 What names can I use for my lists?
126      4.43 Lists in virtual domains
127      4.44 How do I make customization simple for me/my users?
128
129   5. ezmlm support for SQL databases.
130
131      5.1 Why use an SQL database with ezmlm?
132      5.2 Why not to use an SQL database with ezmlm.
133      5.3 Tables used for (My)SQL support.
134         5.3.1 Address tables.
135         5.3.2 Subscriber log tables.
136         5.3.3 Message logging tables.
137      5.4 How to set up a simple list with SQL support.
138         5.4.1 Helper programs for SQL-enabled lists.
139      5.5 Manually manipulating the subscribers of a SQL-enabled list.
140      5.6 Converting to and from and SQL database.
141      5.7 Optimizing MySQL for ezmlm.
142         5.7.1 Address SELECTs, additions, removals.
143      5.8 Maintenance of the MySQL database.
144
145   6. Possible error conditions in ezmlm lists.
146
147      6.1 What do I do if ezmlm doesn't work?
148      6.2 How do I report ezmlm bugs?
149      6.3 Where do I send suggestions for ezmlm-idx improvements?
150      6.4 Using ezmlm-test to check the ezmlm(-idx) programs.
151      6.5 Using ezmlm-check to find setup errors.
152      6.6 Posts are rejected: Sorry, no mailbox here by that name (#5.1.1).
153      6.7 Post are not sent to subscribers.
154      6.8 ezmlm-make fails: usage: ezmlm-make ...
155      6.9 ezmlm-make fails: Unable to create ...
156      6.10 ezmlm-make fails: ... ezmlmrc does not exist
157      6.11 Index/get/thread requests fail quietly or with errors from ezmlm-manage.
158      6.12 Digest triggering requests fail.
159      6.13 Remote administration (un)subscribe confirm requests go to the user, not the moderator.
160      6.14 (Un)subscribers does not receive a (un)subscribe acknowledgement
161      6.15 Messages posted to a moderated list are sent out without moderation.
162      6.16 Messages posted to a moderated list do not result in moderation requests.
163      6.17 Moderation request replies do not result in the appropriate action.
164      6.18 Moderator comments with moderation request replies are not added to the post/sent to the poster.
165      6.19 Some headers are missing from messages in the digest.
166      6.20 Some Received: headers are missing from messages.
167      6.21 My Mutt users cannot thread their digest messages.
168      6.22 Posts fail: Message already has Mailing-List (#5.7.2).
169      6.23 The last line of a
170      6.24 No CONFIRM requests are sent to moderators.
171      6.25 Deliveries fail ``temporary qmail-queue error''
172      6.26 How to deal with corrupted subscriber lists
173      6.27 Vacation program replies are treated as bounces by ezmlm.
174      6.28 Digests do not come at regular hours.
175      6.29 Preventing loops from misconfigured subscriber addresses.
176      6.30 A user can subscribe and receives warning and probe messages, but no messages from the list.
177
178   7. Customizing ezmlm-make operation via ezmlmrc
179
180      7.1 Using ezmlm-make to edit existing lists.
181      7.2 What is ezmlmrc?
182      7.3 Changing defaults for
183      7.4 Changing default moderator directories.
184      7.5 Adapting ezmlm-make for virtual domains.
185      7.6 Setting up ezmlm-make for special situations.
186
187   8. Restricting message posting to the list.
188
189      8.1 Requiring the list address in To:/Cc: headers.
190      8.2 Rejecting messages sent from other mailing lists.
191      8.3 Restricting posts based on the Subject line.
192      8.4 Restricting the size of posts.
193      8.5 Restricting posts based on MIME content-type.
194      8.6 Restricting posts to list subscribers.
195      8.7 Restricting posts to an arbitrary set of E-mail addresses (higher security option).
196      8.8 Completely restricting posts.
197      8.9 A general solution to restricting posts based on SENDER.
198
199   9. Customizing outgoing messages.
200
201      9.1 Adding a trailer to outgoing messages.
202      9.2 Adding a subject prefix to outgoing messages.
203      9.3 Adding a header to outgoing messages.
204      9.4 Adding a message number header.
205      9.5 Removing headers from outgoing messages.
206      9.6 Removing MIME parts from messages.
207      9.7 Limiting ``Received:'' headers in outgoing messages.
208      9.8 Setting ``Reply-To: list@host''.
209      9.9 Configuring the list so posts are not copied to the original sender.
210      9.10 Customizing ezmlm notification messages.
211      9.11 Specifying character set and content-transfer-encoding for outgoing ezmlm messages.
212
213   10. Customizing archive retrieval.
214
215      10.1 Specifying the format for retrieved messages.
216      10.2 Specifying the default format for digests and archive retrieval.
217      10.3 Limiting the number of messages per -get/-index request.
218
219   11. Restricting archive retrieval.
220
221      11.1 Restricting archive access to subscribers.
222      11.2 Restricting available archive retrieval commands.
223      11.3 Restricting archive retrieval to moderators.
224      11.4 Allowing archive retrieval from a non-public list.
225
226   12. Customizing digests.
227
228      12.1 Setting up a digest list.
229      12.2 Generating daily digests.
230      12.3 Generating the first digest.
231      12.4 Adding standard administrative information to digests.
232      12.5 Controlling the digest format.
233      12.6 Customizing bounce handling.
234
235   13. Remote administration.
236
237      13.1 How can I remotely add moderators, subscriber aliases, etc?
238      13.2 Moderating posts from a secondary account.
239      13.3 Moderating subscription from a secondary account.
240      13.4 Automatically approving posts or subscriptions.
241      13.5 Allowing remote administrators to get a subscriber list.
242      13.6 Allowing remote administrators to retrieve or search a subscription log.
243      13.7 Allowing users to get a subscriber list.
244      13.8 Changing the timeout for messages in the moderation queue.
245      13.9 Finding out how many messages are waiting for moderation.
246      13.10 Using the same moderators for multiple lists.
247      13.11 Using different moderators for message and subscription moderation.
248      13.12 Setting up moderated lists with the list owner as the ``super moderator'' able to add/remove moderators remotely.
249      13.13 Customizing ezmlm administrative messages.
250      13.14 Manually approving a message awaiting moderation.
251      13.15 Manually rejecting a message awaiting moderation.
252
253   14. Sublists.
254
255      14.1 Sublists of ezmlm lists.
256      14.2 Sublists of non-ezmlm lists.
257      14.3 How to set up a cluster of list and sublists with standard databases.
258
259   15. Migration to Ezmlm from other Mailing List Managers.
260
261      15.1 Basic Concepts.
262      15.2 Setting up ezmlm to respond to host-centric commands.
263      15.3 Commands of other mailinglist managers recognized by ezmlm.
264         15.3.1 Listproc/Listserv.
265         15.3.2 Majordomo.
266         15.3.3 Smartlist.
267
268   16. Optimizing list performance.
269
270      16.1 Crond-generated digests for better performance.
271      16.2 Optimizing execution of ezmlm-warn(1).
272      16.3 Decreasing ezmlm-warn time out to increase performance.
273      16.4 Use ezmlm without ezmlm-idx for maximum performance.
274      16.5 Not archiving to maximize performance.
275      16.6 Sublists to maximize performance.
276
277   17. Miscellaneous.
278
279      17.1 How do I quickly change the properties of my list?
280      17.2 Open archived list with daily digests.
281      17.3 Variations in moderation
282      17.4 Lists that allow remote admin, but not user initiated subscription or archive retrieval.
283      17.5 Lists that allow remote admin, user archive retrieval, but not user-initiated subscription.
284      17.6 Lists that restrict archive retrieval to subscribers.
285      17.7 Lists that do not allow archive retrieval at all.
286      17.8 Lists that do not allow archive retrieval and do not allow digest triggering per mail.
287      17.9 Lists that allow archive retrieval only to moderators, but allow user-initiated subscription.
288      17.10 Lists that do not require user confirmation for (un)subscription.
289      17.11 Announcement lists for a small set of trusted posters
290      17.12 Announcement lists allowing moderated posts from anyone.
291      17.13 Announcement lists with less security and more convenience.
292
293   18. Ezmlm-idx compile time options.
294
295      18.1 Location of binaries.
296      18.2 Location of man pages.
297      18.3 Base directory of qmail-installation.
298      18.4 Short header texts, etc.
299      18.5 Arbitrary limits.
300      18.6 Command names.
301      18.7 Error messages.
302      18.8 Paths and other odd configuration items.
303
304   19. Multiple language support.
305
306      19.1 Command names.
307      19.2 Text files.
308      19.3 Multi-byte character code support.
309
310   20. Subscriber notification of moderation events.
311
312      20.1 General opinions.
313      20.2 Users should know that the list is subscription moderated.
314      20.3 Subscribers should know that posts are moderated.
315      20.4 Senders of posts should be notified of rejections.
316
317   21. Ezmlm-idx security.
318
319      21.1 General assumptions.
320      21.2 SENDER manipulation.
321      21.3 ezmlm cookies.
322      21.4 Lists without remote admin/subscription moderation.
323      21.5 Message moderation.
324      21.6 Subscription moderation.
325      21.7 Remote administration.
326      21.8 Remote editing of ezmlm text files.
327      21.9 Digest generation and archive retrieval.
328      21.10 Convenience for security: the ezmlm-manage ``-S'' and ``-U'' switches.
329      21.11 Denial of service.
330      21.12 Moderator anonymity.
331      21.13 Confidentiality of subscriber E-mail addresses.
332      21.14 Help message for moderators.
333      21.15 Sublists.
334      21.16 SQL databases.
335      21.17 Reporting security problems.
336
337
338   ______________________________________________________________________
339
340   1\b1.\b.  G\bGe\ben\bne\ber\bra\bal\bl I\bIn\bnf\bfo\bor\brm\bma\bat\bti\bio\bon\bn
341
342
343   1\b1.\b.1\b1.\b.  A\bAc\bck\bkn\bno\bow\bwl\ble\bed\bdg\bge\bem\bme\ben\bnt\bts\bs
344
345   Many ezmlm users have contributed to improvements in ezmlm-idx. These
346   are listed in the R\bRE\bEA\bAD\bDM\bME\bE.\b.i\bid\bdx\bx file in the ezmlm-idx distribution.
347   Others have through questions and suggestions inspired parts in this
348   FAQ, or pointed out errors or omissions. Thanks! Direct contributions
349   are attributed to the respective authors in the text. Thanks again!
350
351
352   1\b1.\b.2\b2.\b.  W\bWh\bha\bat\bt i\bis\bs t\bth\bhi\bis\bs d\bdo\boc\bcu\bum\bme\ben\bnt\bt?\b?
353
354   This FAQ contains answers to many questions that arise while
355   installing ezmlm, ezmlm-idx, and while setting up and managing ezmlm
356   mailing lists. See ``'' for a brief summary of what is ezmlm and what
357   is ezmlm-idx.
358
359   Many aspects of ezmlm are covered in several places in this FAQ. The
360   early sections explain how ezmlm works. Later sections discuss how to
361   deal with possible errors/problems. Subsequent sections discuss
362   details of customization and list setup in a _\bH_\bO_\bW_\bT_\bO form. Finally,
363   there are sections on information philosophy for moderated lists and
364   on security aspects on ezmlm lists.
365
366   This is an evolving document.  If you find any errors, or wish to
367   comment, please do so to the authors.  This FAQ is currently aimed at
368   system administrators and knowledgeable users, and heavily weighted
369   towards questions specific to the ezmlm-idx add-on.
370
371   If you have problems with the ezmlm-idx package, please start by
372   reading the ``man'' pages which come with each program, then this
373   document and other ezmlm documentation which is identified here. If
374   you have exhausted these resources, try the ezmlm and qmail mailing
375   lists and their respective mailing list archives. If you have solved a
376   problem not in the documentation, write it up as a proposed section of
377   a FAQ and send it to the authors. This way, it can be added to the
378   next version of this FAQ.
379
380
381   1\b1.\b.3\b3.\b.  T\bTe\ber\brm\bmi\bin\bno\bol\blo\bog\bgy\by
382
383   This document uses a number of terms. Here are the meanings ascribed
384   to them by the authors.
385
386      D\bDI\bIR\bR
387         The base directory of the list.
388
389
390      S\bSE\bEN\bND\bDE\bER\bR
391         The envelope sender of the message, as passed to ezmlm by qmail
392         via the $SENDER environment variable.
393
394
395      L\bLO\bOC\bCA\bAL\bL
396         The local part of the envelope recipient. For list-get-1@host,
397         it is usually _\bl_\bi_\bs_\bt_\b-_\bg_\be_\bt_\b-_\b1. If host is a virtual domain,
398         controlled by _\bu_\bs_\be_\br_\b-_\bs_\bu_\bb, then local would be _\bu_\bs_\be_\br_\b-_\bs_\bu_\bb_\b-_\bl_\bi_\bs_\bt_\b-_\bg_\be_\bt_\b-_\b1.
399
400
401      m\bmo\bod\bdd\bdi\bir\br
402         Base directory for moderators.  Moderator E-mail addresses are
403         stored in a hashed database in m\bmo\bod\bdd\bdi\bir\br/\b/s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs/\b/. By default,
404         ``moddir'' is D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/.
405
406         To add or remove moderators:
407
408
409           % ezmlm-sub DIR/moddir moderator@host.domain
410           % ezmlm-unsub DIR/moddir moderator@host.domain
411
412
413
414
415
416      d\bdo\bot\btd\bdi\bir\br
417
418         The second argument of ezmlm-make is the main .qmail file for
419         the list. dotdir is the directory in which this ``dot file''
420         resides, i.e. the directory part of the ``dot'' argument. This
421         is usually the home directory of the user controlling the list
422         (but NOT necessarily of the one creating the list). Thus, _\bd_\bo_\bt_\bd_\bi_\br
423         is ~\b~a\bal\bli\bia\bas\bs/\b/ if ``root'' creates a list:
424
425
426            # ezmlm-make ~alias/list ~alias/.qmail-list ...
427
428
429
430
431      _\bd_\bo_\bt_\bd_\bi_\br is where the .\b.e\bez\bzm\bml\blm\bmr\brc\bc file is expected when the ezmlm-
432      make(1) ``-c'' switch is used (see ``Customizing ezmlm-make opera-
433      tion'').
434
435
436      e\bez\bzm\bml\blm\bm b\bbi\bin\bna\bar\bry\by d\bdi\bir\bre\bec\bct\bto\bor\bry\by
437         The directory where the ezmlm-binaries are normally stored, as
438         defined at compile time in c\bco\bon\bnf\bf-\b-b\bbi\bin\bn.  This is compiled into the
439         programs and does not change just because you have moved the
440         program.
441
442
443      e\bez\bzm\bml\blm\bm-\b-g\bge\bet\bt(\b(1\b1)\b)
444         This is a reference to the ezmlm-get.1 man page.  Access it with
445         one of the following:
446
447
448           % man ezmlm-get
449           % man 1 ezmlm-get
450
451
452
453
454      or if you have not yet installed ezmlm-idx (replace ``xxx'' with
455      the version number):
456
457
458           % cd ezmlm-idx-0.xxx
459           % man ./ezmlm-get.1
460
461
462
463      b\bba\bas\bse\bed\bdi\bir\br
464         The list directory when referencing the list subscriber address
465         database.  For E-mail addresses stored in a set of files within
466         D\bDI\bIR\bR/\b/s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs/\b/, the ``basedir'' is ``DIR''.
467
468
469      a\bad\bdd\bdr\bre\bes\bss\bs d\bda\bat\bta\bab\bba\bas\bse\be
470         A collection of E-mail addresses stored in a set of files within
471         the ``subscribers'' subdirectory of the basedir,
472         D\bDI\bIR\bR/\b/s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs/\b/.
473
474
475      m\bme\bes\bss\bsa\bag\bge\be m\bmo\bod\bde\ber\bra\bat\bto\bor\br
476         An address to which moderation requests for posts to the list
477         are sent. The moderation requests are formatted with
478         ``From:''-``reject'' and a ``To:''-``accept'' default headers
479         for moderator replies. A reply to the ``reject'' address leads
480         to the rejection of the post. A reply to the ``accept'' address
481         leads to the acceptance of the post. Any E-mail address can be a
482         moderator E-mail address. Any number of moderator E-mail
483         addresses can be used. If a post is sent from a moderator E-mail
484         address, the moderation request is sent to that E-mail address
485         only. If a post is sent from an E-mail address that is not a
486         moderator, a moderation request is sent to all moderators.
487
488         The first reply to the moderation request determines the fate of
489         the message. Further requests for the action already taken are
490         silently ignored, while a request for the contrary action
491         results in an error message stating the actual fate of the
492         message. Thus, if you want to ``accept'' the message and it has
493         already been accepted, you receive no reply, but if you attempt
494         to ``reject'' it, you will receive an error message stating that
495         the message already has been accepted.
496
497         Most lists are not message moderated. If they are, the owner is
498         usually a ``message moderator'', sometimes together with a few
499         other trusted users.
500
501         For an announcement list, it is common to make all the
502         ``official announcers'' ``message moderators''. This way, they
503         can post securely and ``accept'' their own posts, while posts
504         from other users will be sent to this set of ``official
505         announcers'' for approval.
506
507
508      s\bsu\bub\bbs\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn m\bmo\bod\bde\ber\bra\bat\bto\bor\br
509         An E-mail address where subscription moderation requests are
510         sent. A subscription moderation request is sent after a user has
511         confirmed her intention to subscribe. The subscription
512         moderation request is sent to all moderators. As soon as a reply
513         to this message is received, the user is subscribed and
514         notified. Any E-mail address can be a subscription moderator and
515         any number of subscription moderators can be used.
516
517         Unsubscribe requests are never moderated (except when the ezmlm-
518         manage(1) ``-U'' flag is used and the sender attempts to remove
519         an address other than the one s/he is sending from). It is hard
520         to imagine a legitimate mailing list that would want to prevent
521         unsubscriptions.
522
523
524      r\bre\bem\bmo\bot\bte\be a\bad\bdm\bmi\bin\bni\bis\bst\btr\bra\bat\bto\bor\br
525         When a remote administrator subscribes or unsubscribes a list
526         member, the ``confirm'' request is sent back to the remote
527         administrator, rather than to the subscriber's E-mail address.
528         This allows the remote administrator to (un)subscribe any list
529         member without the cooperation of the subscriber at that
530         address. Any E-mail address can be a remote administrator and
531         any number of E-mail addresses can be remote administrators.
532
533         The set of E-mail addresses that are ``remote administrators''
534         and ``subscription moderators'' are always the same. This set of
535         E-mail addresses can be ``remote administrators'',
536         ``subscription moderators'' or both.
537
538         For most lists, the owner would be the ``remote administrator'',
539         if s/he wishes to moderate messages, the owner would be the
540         ``message moderator'' and if s/he wishes to moderate
541         subscriptions the owner would also be the ``subscription
542         moderator''.
543
544         The list's ``message moderator(s)'' can be the same, but can
545         also be set up to be completely different.
546
547
548      C\bCh\bha\ban\bng\bgi\bin\bng\bg l\bli\bis\bst\bt `\b``\b`o\bow\bwn\bne\ber\brs\bsh\bhi\bip\bp'\b''\b'
549         Within this FAQ there are references to the need to check or
550         change the list ``ownership.'' This is not a reference to the
551         individual user who is the ``list-owner'', but a reference to
552         the ownership of the files by your operating system which make
553         up the list and reside in D\bDI\bIR\bR/\b/.
554
555         To change the ownership of D\bDI\bIR\bR/\b/ and everything within:
556
557
558           % chown -R user DIR
559           % chgrp -R group DIR
560
561
562
563
564      Depending on your system/shell, it may be possible to combine these
565      commands into either:
566
567
568           % chown -R user.group DIR
569           % chown -R user:group DIR
570
571
572
573
574
575   1\b1.\b.4\b4.\b.  W\bWh\bha\bat\bt i\bis\bs t\bth\bhe\be d\bdi\bif\bff\bfe\ber\bre\ben\bnc\bce\be b\bbe\bet\btw\bwe\bee\ben\bn e\bez\bzm\bml\blm\bm a\ban\bnd\bd e\bez\bzm\bml\blm\bm-\b-i\bid\bdx\bx?\b?
576
577   ezmlm-0.53 is a qmail-based mailing list manager written by Dan J.
578   Bernstein.  It has all the basic functionality of a mailing list
579   manager, such as subscriber address management including automated
580   bounce handling as well as message distribution and archiving.
581
582   ezmlm-idx is an add-on to ezmlm. It adds multi-message threaded
583   message retrieval from the archive, digests, message and subscription
584   moderation, and a number of remote administration function. It
585   modifies the configuration program ezmlm-make(1) so that it uses a
586   text file template rather than compiled-in texts in list creation. In
587   this manner, ezmlm-idx allows easy setup of lists in different
588   languages and customization of default list setup. ezmlm-idx also adds
589   MIME handling, and other support to streamline use with languages
590   other than English. As an ezmlm add-on, ezmlm-idx does not work
591   without ezmlm and tries to be compatible with ezmlm as much as
592   possible.  ezmlm-idx also modifies the ezmlm subscriber database to be
593   case insensitive to avoid many unsubscribe problems.
594
595   New in ezmlm-idx-0.40 are better support for announcement lists,
596   support for QMQP to offload message distribution onto external hosts,
597   simplified optional SQL database use (MySQL or PostgreSQL), more
598   flexibility in determining which messages should be moderated, a WWW
599   interface to the list archives, and many small improvements.
600
601   ezmlm-idx-0.32 adds improved handling of very large lists with
602   optimized bounce handling, ezmlm-split(1) for forwarding (un)subscribe
603   requests to sublists to allow sublisting transparent to the
604   subscriber, and SQL support to allow sublisting with improved message
605   authentication and monitoring of list function, as well as dynamic
606   addition/removal/reconfiguration of sublists. Also, subscriber
607   ``From:'' lines are logged with support for finding a subscription
608   address from a name. The qmail DEFAULT variable is used, if present.
609   Together, these additions eliminate the most common problems making
610   ezmlm use and administration even easier.
611
612   This document is a FAQ for ezmlm-idx. However, many of the basic items
613   that are discussed also apply to ezmlm per se. Referring to the two
614   paragraphs above, it should be relatively easy to figure out which
615   features require ezmlm-idx.
616
617
618   1\b1.\b.5\b5.\b.  W\bWh\bhe\ber\bre\be c\bca\ban\bn I\bI g\bge\bet\bt a\bal\bll\bl o\bof\bf t\bth\bhe\be e\bez\bzm\bml\blm\bm-\b-r\bre\bel\bla\bat\bte\bed\bd p\bpr\bro\bog\bgr\bra\bam\bms\bs?\b?
619
620   We have now registered ezmlm.org to make access to ezmlm-idx and
621   related programs/documentation easier. www.ezmlm.org is currently an
622   alias for Fred B. Ringel's www.rivertown.net/~ezmlm/ and ftp.ezmlm.org
623   an alias for Fred Lindberg's ftp.id.wustl.edu.
624
625
626      D\bDa\ban\bn J\bJ.\b. B\bBe\ber\brn\bns\bst\bte\bei\bin\bn'\b's\bs e\bez\bzm\bml\blm\bm-\b-0\b0.\b.5\b53\b3
627
628      +\bo  <ftp://cr.yp.to/pub/software/ezmlm-0.53.tar.gz>
629
630      +\bo  <ftp://ftp.ezmlm.org/pub/qmail/ezmlm-0.53.tar.gz>
631
632      +\bo  <ftp://ftp.ntnu.no/pub/unix/mail/qmail/ezmlm-0.53.tar.gz>
633
634      +\bo  <ftp://ftp.pipex.net/mirrors/qmail/ezmlm-0.53.tar.gz>
635
636      +\bo  <ftp://ftp.jp.qmail.org/qmail/ezmlm-0.53.tar.gz>
637
638      +\bo  <ftp://ftp.rifkin.technion.ac.il/pub/qmail/ezmlm-0.53.tar.gz>
639
640      +\bo  <ftp://ftp.mira.net.au/unix/mail/qmail/ezmlm-0.53.tar.gz>
641
642      +\bo  <http://www.qmail.org/>
643
644      T\bTh\bhe\be l\bla\bat\bte\bes\bst\bt v\bve\ber\brs\bsi\bio\bon\bn o\bof\bf e\bez\bzm\bml\blm\bm-\b-i\bid\bdx\bx
645         ezmlm-idx releases are numbered ``ezmlm-idx-0.xy[z]''.  Versions
646         with the same ``x'' are backwards compatible. A change in ``x''
647         signifies major changes, some of which _\bm_\ba_\by require list changes
648         (see UPGRADE.idx). However, backwards compatibility with
649         ezmlm-0.53 list will be maintained. Thus, this is an issue only
650         if you are already using an older version of ezmlm-idx.
651
652         Addition of ``z'' are bug fixes only. Thus, ezmlm-idx-0.301 is
653         ezmlm-idx-0.30 with known bugs fixed (but no other significant
654         changes).  When available, patches are named
655         ``filename-0.xy[z].diff'', where ``0.xy[z]'' corresponds to the
656         release to which they apply.  When a number of bugs (or a
657         significant bug) are found a bug-fix release is made
658         incorporating all the patches for the previous version.
659
660         To get the latest features, look for the highest number (``e.g.
661         ezmlm-idx-0.40''). Any bugs in versions with new features are
662         expected to be limited to the new features.
663
664         To get the most solid version, get the highest 3-digit number,
665         i.e. a bug fix. If you already run a version in that series and
666         a new bug fix is released, see CHANGES.idx to determine if it is
667         worthwhile to upgrade. Most bugs so far have been relevant only
668         when using lists in very unusual ways or with rarely used
669         options.
670
671
672      +\bo  <ftp://ftp.ezmlm.org/pub/patches/>
673
674      +\bo  <ftp://gd.tuwien.ac.at/infosys/mail/qmail/ezmlm-patches/> ftp
675         mirror in Austria.
676
677      +\bo  <http://gd.tuwien.ac.at/infosys/mail/qmail/ezmlm-patches/> http
678         access to the same mirror.
679
680      +\bo  <ftp://ftp.win.or.jp/pub/network/mail/qmail/ezmlm-idx/> ftp
681         mirror in Japan.
682
683      e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) f\bfi\bil\ble\bes\bs f\bfo\bor\br d\bdi\bif\bff\bfe\ber\bre\ben\bnt\bt l\bla\ban\bng\bgu\bua\bag\bge\bes\bs
684         The latest versions at the time of release of a package are
685         included in that package. Thus, this directory will have a file
686         labeled with the current ezmlm-idx version number only if it has
687         been updated later than the package.  ezmlmrc(5) files are
688         updated and new ones are added all the time, also with bug fix
689         releases. Therefore, always look at the latest package. Please
690         note that ezmlmrc may change significantly between versions.
691         Thus, do not expect the ezmlm-idx-0.324 ezmlmrc.es to work with
692         ezmlm-idx-0.40.
693
694         ezmlmrc(5) files contain some release-specific configurations.
695         Do not use a later file (other than from bug fix releases) with
696         an earlier version of the programs. It is usually OK to use a
697         version from an earlier package (see UPGRADE.idx), but some new
698         functionality may nor be available.
699
700         To contribute an ezmlmrc(5) file in a new language, start with
701         the en_US version from the latest package, and send the gzipped
702         file to lindberg@id.wustl.edu. Please leave comments intact and
703         in English and do not change the order of items in the file.
704         This will facilitate maintenance.
705
706
707      +\bo  <ftp://ftp.ezmlm.org/pub/patches/ezmlmrc/>
708
709      +\bo  <ftp://gd.tuwien.ac.at/infosys/mail/qmail/ezmlm-
710         patches/ezmlmrc/>
711
712      +\bo  <http://gd.tuwien.ac.at/infosys/mail/qmail/ezmlm-
713         patches/ezmlmrc/>
714
715      +\bo  <ftp://ftp.win.or.jp/pub/network/mail/qmail/ezmlm-idx/ezmlmrc/>
716
717      e\bez\bzm\bml\blm\bm-\b-i\bis\bss\bsu\bub\bb-\b-0\b0.\b.0\b05\b5
718
719      +\bo  <ftp://ftp.ezmlm.org/pub/patches/ezmlm-issub-0.05.tar.gz>.  Use
720         ezmlm-issub only if you do not use ezmlm-idx. The same
721         functionality is available in ezmlm-idx and the packages are not
722         compatible.
723
724      +\bo  Also via mirrors mentioned above.
725
726
727      R\bRP\bPM\bMs\bs a\ban\bnd\bd S\bSR\bRP\bPM\bMS\bS o\bof\bf q\bqm\bma\bai\bil\bl,\b, e\bez\bzm\bml\blm\bm a\ban\bnd\bd e\bez\bzm\bml\blm\bm-\b-i\bid\bdx\bx
728
729      +\bo  <ftp://ftp.ezmlm.org/pub/patches/>
730
731      +\bo  <ftp://summersoft.fay.ar.us/pub/qmail/>
732
733
734   1\b1.\b.6\b6.\b.  W\bWh\bhe\ber\bre\be c\bca\ban\bn I\bI f\bfi\bin\bnd\bd d\bdo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn f\bfo\bor\br e\bez\bzm\bml\blm\bm a\ban\bnd\bd p\bpa\bat\btc\bch\bhe\bes\bs?\b?
735
736
737      m\bma\ban\bn p\bpa\bag\bge\bes\bs
738         All ezmlm component programs come with their own man pages.
739         Thus, for info on _\be_\bz_\bm_\bl_\bm_\b-_\bs_\be_\bn_\bd, type:
740
741
742
743           % man ezmlm-send
744
745
746
747
748      or if you have unpacked ezmlm, but not made it or installed it:
749
750
751
752           % cd ezmlm-0.53
753           % man ./ezmlm-send.1
754
755
756
757
758
759      e\bez\bzm\bml\blm\bm(\b(5\b5)\b)
760         General info on ezmlm and list directories is in e\bez\bzm\bml\blm\bm.\b.5\b5:
761
762
763
764           % man ezmlm
765
766
767
768
769      or
770
771
772
773           % cd ezmlm-0.53
774           % man ./ezmlm.5
775
776
777
778
779      _\bN_\bO_\bT_\bE_\b: Installation of the ezmlm-idx package updates some existing
780      man pages to reflect changes made by the patch (e.g.  ezmlm-
781      send(1), ezmlm(5)).
782
783
784      T\bTe\bex\bxt\bt f\bfi\bil\ble\bes\bs i\bin\bn t\bth\bhe\be d\bdi\bis\bst\btr\bri\bib\bbu\but\bti\bio\bon\bn
785         ezmlm comes with a R\bRE\bEA\bAD\bDM\bME\bE file with general instructions, an
786         I\bIN\bNS\bST\bTA\bAL\bLL\bL file with installation instructions, an U\bUP\bPG\bGR\bRA\bAD\bDE\bE file for
787         upgrading from a previous version and a C\bCH\bHA\bAN\bNG\bGE\bES\bS file with
788         information on changes from previous versions. ezmlm-idx comes
789         with similar files suffixed with ``.\b.i\bid\bdx\bx''. Most other patches or
790         add-ons contain similar files and man pages and should contain
791         identifying suffixes (.iss for ezmlm-issub, for example).  For a
792         discussion of the authors' understanding of ezmlm security, see
793         ``Ezmlm-idx security''.
794
795
796      `\b``\b`E\bEz\bzm\bma\ban\bn'\b''\b',\b, a\ban\bn e\bez\bzm\bml\blm\bm/\b/i\bid\bdx\bx m\bma\ban\bnu\bua\bal\bl
797         The ezmlm manual is a brief manual that is meant for list
798         subscribers, list moderators and remote administrators, and as
799         an introduction for list owners. It is useful even if you do not
800         use ezmlm-idx. Features requiring ezmlm-idx are marked as such.
801         The manual is available as a set of html files, as a text file,
802         and in a ``letter'' and ``A4'' postscript version:
803
804      +\bo  ezman for download <ftp://ftp.ezmlm.org/pub/patches/ezman/>
805
806      +\bo  An on-line html version <http://www.ezmlm.org/ezman>
807
808
809      T\bTh\bhi\bis\bs F\bFA\bAQ\bQ
810         This FAQ is built from a sgml source. It is available in the
811         following formats:
812
813      +\bo  A text file <ftp://ftp.ezmlm.org/pub/patches/ezfaq.txt.gz>
814
815      +\bo  An on-line html version <http://www.ezmlm.org/>
816
817      +\bo  Html for download
818         <ftp://ftp.ezmlm.org/pub/patches/ezfaq.html.tar.gz>
819
820      +\bo  A postscript (letter) version
821         <ftp://ftp.ezmlm.org/pub/patches/ezfaq.ps.gz>
822
823      +\bo  A postscript (A4) version
824         <ftp://ftp.ezmlm.org/pub/patches/ezfaq.ps4.gz>
825
826      +\bo  Via mirrors mentioned for the ezmlm-idx package.
827
828      +\bo  An up-to-date text version,F\bFA\bAQ\bQ.\b.i\bid\bdx\bx, included with the ezmlm-idx
829         package.
830
831
832      W\bWW\bWW\bW r\bre\bes\bso\bou\bur\brc\bce\bes\bs
833
834         A\bAn\bn o\bon\bn-\b-l\bli\bin\bne\be v\bve\ber\brs\bsi\bio\bon\bn o\bof\bf t\bth\bhi\bis\bs F\bFA\bAQ\bQ
835            <http://www.ezmlm.org/>The main site with an up-to-date
836            mirror list.  <http://www.de.ezmlm.org/>German mirror.
837            <http://www.pl.ezmlm.org/www.ezmlm.org/>Polish mirror.
838            <http://www.jp.ezmlm.org/>Japanese mirror.
839            <http://www.pt.ezmlm.org/>Portuguese mirror.
840            <http://www.at.ezmlm.org/>Austrian mirror.
841            <http://www.ca.ezmlm.org/ezmlm/>Canadian mirror.
842
843         G\bGe\ben\bne\ber\bra\bal\bl q\bqm\bma\bai\bil\bl a\ban\bnd\bd e\bez\bzm\bml\blm\bm i\bin\bnf\bfo\bo
844
845         +\bo  Dan J. Bernstein's qmail page
846            <http://www.pobox.com/~djb/qmail.html>
847
848         +\bo  Dan J. Bernstein's ezmlm page
849            <http://www.pobox.com/~djb/ezmlm.html>
850
851         +\bo  Russell Nelson's qmail page <http://www.qmail.org>
852
853         +\bo  Mirrors of www.qmail.org <http://www.ISO.qmail.org>.
854            Substitute your two-letter country abbreviation for ``ISO''.
855
856         T\bTh\bhe\be q\bqm\bma\bai\bil\bl m\bma\bai\bil\bli\bin\bng\bg l\bli\bis\bst\bt a\bar\brc\bch\bhi\biv\bve\be
857
858
859         +\bo  <http://www.ornl.gov/cts/archives/mailing-lists/qmail/>
860
861         T\bTh\bhe\be e\bez\bzm\bml\blm\bm m\bma\bai\bil\bli\bin\bng\bg l\bli\bis\bst\bt a\bar\brc\bch\bhi\biv\bve\be
862
863         +\bo  <http://sunsite.auc.dk/mhonarc-archives/ezmlm/>
864            <http://www.ezmlm.org/archive/> This archive of the ezmlm
865            list is searchable from 11/97-present. ezmlm-cgi(1) is used
866            to allow direct access to the sublist archive.
867
868      M\bMa\bai\bil\bli\bin\bng\bg l\bli\bis\bst\bts\bs
869         Please read other documentation and mailing list archives before
870         posting questions to the lists. It's also useful to ``lurk'' on
871         the list for a few days, (i.e. to subscribe and read without
872         posting) before asking your questions on the list.
873
874         To subscribe, send mail to the E-mail addresses listed:
875
876      +\bo  Dan Bernstein's ezmlm list: ezmlm-subscribe@list.cr.yp.to
877
878      +\bo  A digest version of the ezmlm list fredr-ezmlm-digest-
879         subscribe@rivertown.net
880
881      +\bo  Dan Bernstein's qmail list: qmail-subscribe@list.cr.yp.to
882
883      +\bo  The Japanese ezmlm list: ezmlm-subscribe@jp.qmail.org
884
885      +\bo  The Japanese qmail list: qmail-subscribe@jp.qmail.org
886
887      +\bo  A ezmlm/idx digest list of djb-qmail: qmail-digest-
888         subscribe@id.wustl.edu
889
890      +\bo  A ezmlm/idx sublist of djb-qmail (you can test ezmlm-idx
891         commands): qmail-index@id.wustl.edu
892
893
894   1\b1.\b.7\b7.\b.  W\bWh\bhe\ber\bre\be d\bdo\bo I\bI s\bse\ben\bnd\bd c\bco\bom\bmm\bme\ben\bnt\bts\bs o\bon\bn t\bth\bhi\bis\bs d\bdo\boc\bcu\bum\bme\ben\bnt\bt?\b?
895
896   To the authors via E-mail:
897
898   +\bo  Fred Lindberg, lindberg@id.wustl.edu
899
900   +\bo  Fred B. Ringel, fredr@rivertown.net
901
902
903   1\b1.\b.8\b8.\b.  H\bHo\bow\bw t\bto\bo e\bex\bxp\bpe\ber\bri\bim\bme\ben\bnt\bt w\bwi\bit\bth\bh n\bne\bew\bw v\bve\ber\brs\bsi\bio\bon\bns\bs o\bof\bf e\bez\bzm\bml\blm\bm-\b-i\bid\bdx\bx.\b.
904
905   ezmlm-idx>=0.23 writes D\bDI\bIR\bR/\b/c\bco\bon\bnf\bfi\big\bg in a standard format.  If ezmlm-
906   make(1) is invoked with the ``-e'' or ``-+'' switch and the ``DIR''
907   argument only, ezmlm-make(1) will read other arguments from this file.
908   The difference between the switches is that with ``-e'' the options
909   used are the ones specified on the command line, whereas with ``-+''
910   they are the ones currently active for the list, as overridden by any
911   command line options.  Thus, with just:
912
913
914                % ezmlm-make -+ DIR
915
916
917
918
919   you can rebuild the list, without affecting any archives, list state
920   variables, etc. You will _\bl_\bo_\bs_\be _\bm_\ba_\bn_\bu_\ba_\bl _\bc_\bu_\bs_\bt_\bo_\bm_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\bs _\bt_\bo _\bs_\bo_\bm_\be _\bo_\bf _\by_\bo_\bu_\br
921   _\bf_\bi_\bl_\be_\bs. However, text files and D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\bra\bad\bdd\bd are protected against
922   being overwritten, so that your manual customizations of these files
923   are retained. To override this protection, simply specify the used
924   edit switch twice, e.g. ``-ee'' and ``-++'', respectively. This is a
925   feature introduced in ezmlm-idx-0.40.
926
927   To test a new version of ezmlm-idx or to run several version, make the
928   new version as per I\bIN\bNS\bST\bTA\bAL\bLL\bL.\b.i\bid\bdx\bx (if you haven't used ezmlm-idx before)
929   or U\bUP\bPG\bGR\bRA\bAD\bDE\bE.\b.i\bid\bdx\bx (if you've got a previous version of ezmlm-idx
930   installed), setting c\bco\bon\bnf\bf-\b-b\bbi\bin\bn to a new directory. You can use either
931   the current directory or any other directory. If not using the current
932   dir, you also have to:
933
934
935                % make setup
936
937
938
939
940   If you now edit the list using the new ezmlm-make program, the list
941   will automatically be configured to use the new binaries. To change
942   back to the ``default'' installation, just edit the list again, this
943   time with the old ezmlm-make(1).
944
945   If your system has an /\b/e\bet\btc\bc/\b/e\bez\bzm\bml\blm\bmr\brc\bc file, you may need to temporarily
946   place the e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) file for the ezmlm version you want to test in
947   d\bdo\bot\btd\bdi\bir\br of the list and use the ezmlm-make(1) ``-c'' switch (see
948   ``Terminology: dotdir'').
949
950   ezmlm-idx>=0.314 comes with ezmlm-test(1), a program that tests most
951   functions of ezmlm+idx and can  be used before installation.
952
953
954   2\b2.\b.  Q\bQu\bui\bic\bck\bk s\bst\bta\bar\brt\bt
955
956
957   1. Create a use ``eztest'' for testing. If you use another name, add
958      the switch ``-u another_name'' to the ezmlm-test(1) line below.
959      (The space between the switch and the argument is required.)
960
961   2. Unpack the ezmlm-0.53 distribution.
962
963   3. Unpack the ezmlm-idx distribution.
964
965   4. Move the ezmlm-idx files to the ezmlm-0.53 directory.
966
967   5. Edit c\bco\bon\bnf\bf-\b-b\bbi\bin\bn and c\bco\bon\bnf\bf-\b-m\bma\ban\bn to reflect the target directories.
968
969   6. build and install:
970
971
972                % cd ezmlm-0.53
973                % patch < idx.patch
974                % make; make man
975                % su
976                # su eztest
977                % ./ezmlm-test
978                % exit
979                # make setup
980                # exit
981
982
983
984
985   7. Make a list and digest list
986
987
988
989
990
991           % ezmlm-make -rdugm -5 me@host ~/list ~/.qmail-list me-list host
992           % ezmlm-sub ~/list me@host
993           % ezmlm-sub ~/list/digest me@host
994           % ezmlm-sub ~/list/mod me@host
995
996
997
998
999   where ``me'' is your user name and ``host'' the host your list is on.
1000
1001   Now, you are the owner, remote administrator, and subscriber of both
1002   list@host and the accompanying digest list list-digest@host. Only
1003   subscribers are allowed to access the archive and to post. To post to
1004   the list, mail to list@host. For a user to subscribe, s/he should mail
1005   to list-subscribe@host and for help to list-help@host.
1006
1007   When a non-subscriber posts, you will be asked to approve, reject, or
1008   ignore the request. If you want to subscriber joe@joehost.dom, mail
1009   list-subscribe-joe=joehost.dom@host.
1010
1011   Digests are generated about every two days, when 30 messages have
1012   arrived since the last digest, or when more than 64 kbytes of message
1013   body has arrived. To manage the digest list, use the same commands as
1014   the main list, but replace ``list'' with ``list-digest''.
1015
1016   The sender restriction on posting used in this setup works, but is not
1017   secure. For more info, read the man pages (start with ezmlm(5) and
1018   ezmlm-make(1)), this FAQ (F\bFA\bAQ\bQ.\b.i\bid\bdx\bx in the distribution),
1019   R\bRE\bEA\bAD\bDM\bME\bE/\b/R\bRE\bEA\bAD\bDM\bME\bE.\b.i\bid\bdx\bx, I\bIN\bNS\bST\bTA\bAL\bLL\bL/\b/I\bIN\bNS\bST\bTA\bAL\bLL\bL.\b.i\bid\bdx\bx, and U\bUP\bPG\bGR\bRA\bAD\bDE\bE.\b.i\bid\bdx\bx.
1020
1021
1022   3\b3.\b.  O\bOv\bve\ber\brv\bvi\bie\bew\bw o\bof\bf m\bma\bai\bil\bli\bin\bng\bg l\bli\bis\bst\bt m\bma\ban\bna\bag\bge\bem\bme\ben\bnt\bt a\ban\bnd\bd m\bma\bai\bil\bli\bin\bng\bg l\bli\bis\bst\bt m\bma\ban\bna\bag\bge\ber\brs\bs
1023
1024   (To be written. Until then, please consult the
1025   <http://www.ezmlm.org/ezman/> manual for ezmlm and ezmlm-idx related
1026   material.)
1027
1028
1029   4\b4.\b.  O\bOv\bve\ber\brv\bvi\bie\bew\bw o\bof\bf e\bez\bzm\bml\blm\bm f\bfu\bun\bnc\bct\bti\bio\bon\bn
1030
1031
1032   4\b4.\b.1\b1.\b.  T\bTh\bhe\be b\bba\bas\bsi\bic\bc s\bse\bet\btu\bup\bp.\b.
1033
1034   In designing ezmlm, _\bD_\ba_\bn _\bJ_\b. _\bB_\be_\br_\bn_\bs_\bt_\be_\bi_\bn has used the unix philosophy of
1035   small component programs with limited and well defined functions.
1036   Requests for specific functions can then be met by the addition of new
1037   programs.
1038
1039   Thanks to the program execution mechanism Dan built into qmail, it is
1040   easy to execute several small programs per delivery in a defined
1041   sequence. It is also very easy to add shell scripts for further
1042   customization.
1043
1044
1045   4\b4.\b.2\b2.\b.  I\bIn\bnv\bve\ben\bnt\bti\bio\bon\bns\bs i\bin\bn e\bez\bzm\bml\blm\bm.\b.
1046
1047   Dan J. Bernstein has written ezmlm in C. It is written for speed and
1048   reliability even in the face of power loss and NFS.  These features
1049   are augmented to a large extent by the ruggedness of the qmail (also
1050   by Dan) delivery mechanism (see qmail-command(8)).
1051
1052   ezmlm uses some routines and techniques that still are not frequently
1053   seen in many mailing list managers. For example, subscriber E-mail
1054   addresses are stored in a hash so that searches require reading only,
1055   at most, 2% of the E-mail addresses.  ezmlm has a optional message
1056   archive, where messages are stored 100 per directory, again to allow
1057   more efficient storage and retrieval. Important files are written
1058   under a new name and, only when safely written, moved in place, to
1059   assure that crashes do not leave the list in an undefined state.
1060
1061   In addition, ezmlm has a number of new inventions. One of these is
1062   bounce detection, which generates an automatic warning containing
1063   information identifying the messages which have bounced, followed by a
1064   probe message to the E-mail addresses for which mail has bounced.  If
1065   the probe bounces, the address is unsubscribed. Thus, the system won't
1066   remove E-mail addresses due to temporary bounces: it takes 12 days
1067   after the first bounce before a warning is sent, and another 12 days
1068   of bounces after the warning bounce before the probe message is set.
1069
1070   Another Dan J. Bernstein invention is the use of cryptographic cookies
1071   based on a timestamp, address, and action. These are used to assure
1072   that the user sending a request to subscribe or unsubscribe really
1073   controls the target address.  It is also used to prevent forgery of
1074   warning or probe messages to make it exceedingly difficult to subvert
1075   the bounce detection mechanism to unsubscribe another user.
1076
1077
1078   4\b4.\b.3\b3.\b.  T\bTh\bhe\be q\bqm\bma\bai\bil\bl d\bde\bel\bli\biv\bve\ber\bry\by m\bme\bec\bch\bha\ban\bni\bis\bsm\bm.\b.
1079
1080   See qmail(7), qmail-local(8), qmail-command(8), envelopes(5), and dot-
1081   qmail(5).  Briefly, qmail having resolved the delivery address
1082   delivers it via the .\b.q\bqm\bma\bai\bil\bl file that most completely matches the
1083   address. This file may be a link to another file, as is the case in
1084   ezmlm lists. qmail then delivers the message according to successive
1085   lines in this file forwarding it to an address, storing it, or piping
1086   it to a program. In the latter case, the program is expected to exit 0
1087   leading delivery to proceed to the next line in the .\b.q\bqm\bma\bai\bil\bl file, or 99
1088   leading to success without delivery to succeeding lines. An exit code
1089   of 100 is a permanent error leading to an error message to the SENDER.
1090   An exit code of 111 is used for temporary errors, leading to re-
1091   delivery until successful or until the queue lifetime of the message
1092   has been exceeded.
1093
1094   Delivery granularity is the .\b.q\bqm\bma\bai\bil\bl file and re-deliveries start at the
1095   top. Thus, if the message fails temporarily at a later line, the
1096   delivery according to an earlier line will be repeated. Similarly,
1097   qmail may have made deliveries successfully according to most of the
1098   .\b.q\bqm\bma\bai\bil\bl file and then fail permanently. The SENDER is informed that the
1099   delivery failed, but not about at which point.
1100
1101   ezmlm takes advantage of these basic mechanisms to build a fast,
1102   efficient, and very configurable mailing list manager from a set of
1103   small independent programs.
1104
1105
1106   4\b4.\b.4\b4.\b.  W\bWh\bha\bat\bt t\bth\bhe\be d\bdi\bif\bff\bfe\ber\bre\ben\bnt\bt p\bpr\bro\bog\bgr\bra\bam\bms\bs d\bdo\bo.\b.
1107
1108   See ezmlm(5) and the man pages for the different programs (listed in
1109   ezmlm(5)).
1110
1111
1112   4\b4.\b.5\b5.\b.  W\bWh\bha\bat\bt t\bth\bhe\be d\bdi\bif\bff\bfe\ber\bre\ben\bnt\bt f\bfi\bil\ble\bes\bs i\bin\bn t\bth\bhe\be l\bli\bis\bst\bt d\bdi\bir\bre\bec\bct\bto\bor\bry\by d\bdo\bo.\b.
1113
1114   See ezmlm(5).
1115
1116
1117   4\b4.\b.6\b6.\b.  T\bTh\bhe\be p\bpa\bap\bpe\ber\br p\bpa\bat\bth\bh f\bfo\bor\br p\bpo\bos\bst\bts\bs.\b.
1118
1119   Messages to the list are delivered to a .\b.q\bqm\bma\bai\bil\bl file, usually ~\b~/\b/.\b.q\bqm\bma\bai\bil\bl-\b-
1120   l\bli\bis\bst\btn\bna\bam\bme\be which is linked to D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br.  Here, the message is first
1121   delivered to ezmlm-reject(1) which can reject messages based on
1122   subject line contents, MIME content-type, and message body length. It
1123   also by default rejects all messages that do not have the list address
1124   in the ``To:'' or ``Cc:'' header. This eliminates most bulk spam. If
1125   the list is set up for restrictions based on envelope SENDER, the next
1126   delivery is to one or more instances of ezmlm-issubn(1).  If the
1127   messages passed this check, it is usually delivered to ezmlm-send(1)
1128   for distribution.  If the list is message moderated, it is instead
1129   delivered to ezmlm-store(1) which queues the message and sends out a
1130   moderation request.  ezmlm-gate(1) is used by some other setups. It
1131   will for message moderated lists invoke ezmlm-send(1) directly if the
1132   message is from a specific set of SENDERs, and in other cases ezmlm-
1133   store(1) to send the message out for moderation.
1134
1135   You can specify a separate .\b.q\bqm\bma\bai\bil\bl-like file for ezmlm-gate(1).  The
1136   lines will be executed and the return codes determine if the message
1137   is rejected, sent to the list, or sent to the moderator. See man page
1138   for details.
1139
1140   If the list is configured for digests, D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br also contains an
1141   ezmlm-tstdig(1) line followed by an ezmlm-get(1) line. If ezmlm-
1142   tstdig(1) determines that the criteria are met for digest generation,
1143   it exits with an exit code of 0, causing the ezmlm-get(1) line to be
1144   executed leading to a digest mailing. Otherwise, ezmlm-tstdig(1) exits
1145   99, resulting in the remainder of the D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br file to be ignored
1146   too long. The digest is not related to the message being delivered,
1147   but the delivery is used to trigger execution of the relevant
1148   programs.
1149
1150
1151   In addition, D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br contains a number of house-keeping functions.
1152   These are invocations of ezmlm-warn(1) to send out bounce warnings and
1153   and (if the list is moderated) ezmlm-clean(1) to clean the moderation
1154   queue of messages that have been ignored. Again, these functions are
1155   not related to the specific message delivered, but the delivery itself
1156   is used as a convenient ``trigger'' for processing.
1157
1158
1159   4\b4.\b.7\b7.\b.  T\bTh\bhe\be e\bez\bzm\bml\blm\bm p\bpa\bat\bth\bh f\bfo\bor\br m\bmo\bod\bde\ber\bra\bat\bti\bio\bon\bn m\bme\bes\bss\bsa\bag\bge\bes\bs.\b.
1160
1161   Replies to moderation requests are channeled to D\bDI\bIR\bR/\b/m\bmo\bod\bde\ber\bra\bat\bto\bor\br. This
1162   file contains an invocation of ezmlm-moderate(1) which invokes ezmlm-
1163   send(1) for accepted messages and sends out a rejection notice for
1164   rejected messages.  It also sends error messages if the message is not
1165   found or already accepted/rejected _\bc_\bo_\bn_\bt_\br_\ba_\br_\by to the moderation message.
1166   Thus, if you accept a message already accepted, no error message is
1167   sent. ezmlm-clean(1) is also invoked from D\bDI\bIR\bR/\b/m\bmo\bod\bde\ber\bra\bat\bto\bor\br for house
1168   keeping.
1169
1170
1171   4\b4.\b.8\b8.\b.  T\bTh\bhe\be e\bez\bzm\bml\blm\bm p\bpa\bat\bth\bh f\bfo\bor\br a\bad\bdm\bmi\bin\bni\bis\bst\btr\bra\bat\bti\biv\bve\be m\bme\bes\bss\bsa\bag\bge\bes\bs.\b.
1172
1173   Administrative requests for both list and digest lists are captured by
1174   ~\b~/\b/.\b.q\bqm\bma\bai\bil\bl-\b-l\bli\bis\bst\btn\bna\bam\bme\be-\b-d\bde\bef\bfa\bau\bul\blt\bt linked to D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br.  Here they are
1175   delivered first to ezmlm-get(1) which processed archive retrieval
1176   requests, exiting 99 after successful completion which causes the rest
1177   of the delivery lines to be ignored. If the request is not for ezmlm-
1178   get(1) it rapidly exits 0. This leads to invocation of ezmlm-manage(1)
1179   which handles subscriber database functions, help messages, and (if
1180   configured) editing of D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/ files. Again, ezmlm-warn(1) lines are
1181   included for bounce directory processing.
1182
1183   If configured, an ezmlm-request(1) line is present. This program
1184   constructs valid ezmlm requests from command in the subject lines of
1185   messages sent to listname-request@host and exits 99. These requests
1186   are mailed and will then return to be processed by one of the other
1187   programs.
1188
1189   4\b4.\b.9\b9.\b.  T\bTh\bhe\be e\bez\bzm\bml\blm\bm p\bpa\bat\bth\bh f\bfo\bor\br b\bbo\bou\bun\bnc\bce\bes\bs.\b.
1190
1191   Bounces to the list are handled by D\bDI\bIR\bR/\b/b\bbo\bou\bun\bnc\bce\ber\br. For the digest list
1192   this is D\bDI\bIR\bR/\b/d\bdi\big\bge\bes\bst\bt/\b/b\bbo\bou\bun\bnc\bce\ber\br. The two were combined in previous
1193   versions, which is still supported. As this leads to problems with
1194   list names ending in ``digest'', the functions are separate with lists
1195   set up or edited with ezmlm-idx>=0.32. The bounce is first delivery is
1196   to ezmlm-weed(1) which removes delivery delay notification and other
1197   junk. The second to ezmlm-return(1) which analyzes valid bounces
1198   storing the information in D\bDI\bIR\bR/\b/b\bbo\bou\bun\bnc\bce\be/\b/ for the list and
1199   D\bDI\bIR\bR/\b/d\bdi\big\bge\bes\bst\bt/\b/b\bbo\bou\bun\bnc\bce\be/\b/ for the digest.  This is the information that
1200   ezmlm-warn(1) (invoked from D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br and D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br) uses and
1201   processes for automatic bounce handling.  ezmlm-return(1) will also
1202   unsubscribe a subscriber from whom a probe message has bounced.
1203
1204
1205   4\b4.\b.1\b10\b0.\b.  M\bMe\bes\bss\bsa\bag\bge\bes\bs t\bto\bo l\bli\bis\bst\bt-\b-o\bow\bwn\bne\ber\br a\ban\bnd\bd l\bli\bis\bst\bt-\b-d\bdi\big\bge\bes\bst\bt-\b-o\bow\bwn\bne\ber\br.\b.
1206
1207   These are processed by D\bDI\bIR\bR/\b/o\bow\bwn\bne\ber\br and delivered to D\bDI\bIR\bR/\b/m\bma\bai\bil\blb\bbo\box\bx by
1208   default. It is better to put the real owner address in this location.
1209   This can be done manually, via editing of e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b), or via the
1210   ezmlm-make(1) -5 switch. Again, some house-keeping functions are also
1211   executed.
1212
1213
1214   4\b4.\b.1\b11\b1.\b.  S\bSt\btr\bru\buc\bct\btu\bur\bre\be o\bof\bf s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\br d\bda\bat\bta\bab\bba\bas\bse\bes\bs.\b.
1215
1216   ezmlm subscriber E-mail addresses are stored within D\bDI\bIR\bR/\b/s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs/\b/
1217   as a hashed set of 53 files. The hash calculated from the address
1218   determines which of the 53 files and address is stored in. Thus, to
1219   find out if an address is a subscriber, ezmlm has to read at most
1220   about 2% of the E-mail addresses.  The hash function insures that E-
1221   mail addresses are reasonably evenly distributed among the 53 files.
1222
1223   Addresses in the files in D\bDI\bIR\bR/\b/s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs/\b/ are stored as strings
1224   starting with ``T'', followed by the address, followed by a zero byte.
1225   This is the same format as taken by qmail-queue(8) on file descriptor
1226   1.  Thus, subscriber lists can be directly copied to qmail without any
1227   further processing.
1228
1229   With ezmlm-idx>=0.32 you can use an SQL server for the subscriber
1230   databases.  Please see the SQL section (``ezmlm support for SQL
1231   datbases'').
1232
1233
1234   4\b4.\b.1\b12\b2.\b.  L\bLo\boc\bca\bal\bl c\bca\bas\bse\be i\bin\bn E\bE-\b-m\bma\bai\bil\bl a\bad\bdd\bdr\bre\bes\bss\bse\bes\bs.\b.
1235
1236   rfc822 states that the host part of an address is case insensitive,
1237   but that case of the local part should be respected and the
1238   interpretation of it is the prerogative of the machine where the
1239   mailbox exists.  Thus, ezmlm preserves the case of the local part, but
1240   converts the host part to lower case. ezmlm proper also bases the hash
1241   on the case of the local part, so that USER@host and user@host are not
1242   (usually) stored in the same file.
1243
1244   Locally, deliveries are most often case insensitive, i.e. mail to
1245   USER@host and user@host are delivered to the same mail box. A
1246   consequence of this is that many users use E-mail addresses with
1247   different case interchangeably.  The problem is that when USER@host is
1248   subscribed, ezmlm will not find that address in response to an
1249   unsubscribe request from user@host. This is even more problematic when
1250   E-mail addresses have been added by hand to e.g. moderator lists.
1251
1252   ezmlm-idx>=0.22 changes address storage to make comparisons case
1253   insensitive and store E-mail addresses based on the hash of the all
1254   lower case address. Case is maintained for the local part. Thus, if
1255   USER@host is subscribed, mail is set to USER@host, but user@host is
1256   recognized as a subscriber and an unsubscribe request from user@host
1257   will remove USER@host from the subscriber list.
1258
1259   To maintain backwards compatibility with old subscriber lists, a
1260   second lookup is made for partially upper case E-mail addresses in
1261   some cases. This will find USER@host subscribed with a case sensitive
1262   hash as well.
1263
1264   If may be useful to move all old mixed case E-mail addresses to the
1265   ``new'' positions.  Without this, USER@host subscribed with the old
1266   system will be able to unsubscribe as USER@host, but not as user@host.
1267   After the repositioning, s/he will be successfully able to use any
1268   case in an unsubscribe request, e.g. UsEr@host. To do this:
1269
1270
1271
1272        % ezmlm-list DIR | grep -G '[A-Z]' > tmp.tmp
1273        % xargs ezmlm-sub DIR < tmp.tmp
1274
1275
1276
1277
1278   This works, because subscribing an address, even if it already exists,
1279   will assure that it is stored with a case insensitive hash. On some
1280   systems, the grep ``-G'' switch need/should not be used.
1281
1282
1283   4\b4.\b.1\b13\b3.\b.  T\bTe\bes\bst\bti\bin\bng\bg S\bSE\bEN\bND\bDE\bER\bR t\bto\bo a\bal\bll\blo\bow\bw p\bpo\bos\bst\bts\bs o\bon\bnl\bly\by f\bfr\bro\bom\bm l\bli\bis\bst\bt s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs.\b.
1284
1285   This mode of operation is automatically set up if you specify the
1286   ezmlm-make(1) ``-u'' switch. Since there may be some addresses that
1287   should be allowed to post, but are not subscribers of list or list-
1288   digest, ezmlm-make(1) sets up an additional address database in
1289   D\bDI\bIR\bR/\b/a\bal\bll\blo\bow\bw/\b/.  Use ezmlm-sub(1), ezmlm-unsub(1), and ezmlm-list(1) to
1290   manipulate these addresses. If the list is configured for remote
1291   administration (see ``How remote administration works''), you can
1292   add/remove addresses from the D\bDI\bIR\bR/\b/a\bal\bll\blo\bow\bw/\b/ database by mailing list-
1293   allow-subscribe@listhost and list-allow-unsubscribe@listhost,
1294   respectively. Other commands that access subscriber databases work in
1295   the same manner.
1296
1297   To similarly restrict archive access, use the ezmlm-make(1) ``-g''
1298   switch.
1299
1300   Since SENDER is under the control of a potential attacker, it is not
1301   secure to use tests of SENDER for anything important. However, when
1302   replies are always sent to SENDER (such as for archive access), a
1303   check of SENDER can prevent the sending of information to E-mail
1304   addresses not in the database.
1305
1306   To test sender, use the program ezmlm-issubn(1). It will return 0
1307   (true for the shell, success for qmail deliveries) if SENDER is in at
1308   least one of a set of subscriber databases. If not, it will return 99
1309   (false for the shell: success, but skip remainder of .\b.q\bqm\bma\bai\bil\bl file for
1310   qmail deliveries). The basedirs of the subscriber lists (i.e. the
1311   directories in which the ``subscriber'' dirs are located) are given as
1312   arguments.  ezmlm-issubn(1) can take any number of arguments.
1313
1314   Thus, to permit an action if SENDER is a subscriber to the list in any
1315   of D\bDI\bIR\bR/\b/, D\bDI\bIR\bR/\b/d\bdi\big\bge\bes\bst\bt/\b/, or D\bDI\bIR\bR/\b/a\bal\bll\blo\bow\bw/\b/ and exit silently, put the
1316   following into the relevant .\b.q\bqm\bma\bai\bil\bl file:
1317
1318
1319
1320
1321   |/usr/local/bin/ezmlm/ezmlm-issubn DIR DIR/digest DIR/allow [...]
1322   |/path/action_program
1323
1324
1325
1326
1327   Restricting your list to posts from your subscribers is as easy as
1328   that. If your ezmlm binaries are in a different directory, you may
1329   have to modify the ezmlm-issubn(1) path.
1330
1331   ezmlm-issubn(1) has a ``-n'' switch which ``negates/reverses'' the
1332   exit code.  To do an action if SENDER is _\bN_\bO_\bT a subscriber of any of
1333   the lists:
1334
1335
1336
1337        |/usr/local/bin/ezmlm/ezmlm-issubn -n DIR/deny [dir2 ...]
1338        |/path/other_program
1339
1340
1341
1342
1343   To automatically configure the list with a blacklist address database
1344   in D\bDI\bIR\bR/\b/d\bde\ben\bny\by, use the ezmlm-make(1) ``-k'' switch. If the list is
1345   configured for remote administration (see ``How remote administration
1346   works'') and if you are a remote administrator, you can manipulate the
1347   ``deny'' database remotely by sending mail to list-deny-subscribe-
1348   user=userhost@listhost, etc.
1349
1350
1351   4\b4.\b.1\b14\b4.\b.  H\bHo\bow\bw c\bco\boo\bok\bki\bie\bes\bs w\bwo\bor\brk\bk.\b.
1352
1353   Each ezmlm list has it's own ``key'' created by ezmlm-make at setup
1354   time.  This key is stored in D\bDI\bIR\bR/\b/k\bke\bey\by, and you can improve it by adding
1355   garbage of your own to it. However, changing the key will make all
1356   outstanding cookies invalid, so this should be done when the list is
1357   established.
1358
1359   When ezmlm receives an action request, such as ``subscribe'', it
1360   constructs a cookie as a function of:
1361
1362   +\bo  the request,
1363
1364   +\bo  the time,
1365
1366   +\bo  and the target address.
1367
1368      The cookie and these items are then assembled into a address that
1369      is sent out as the ``Reply-To:'' address in the confirmation
1370      request sent to the subscriber. When the subscriber replies, ezmlm
1371      first checks if the timestamp is more than 1,000,000 seconds old
1372      (approx 11.6 days) and rejects the request if it is. Next, ezmlm
1373      recalculates the cookie from the items.  If the cookies match, the
1374      request is valid and will be completed. Depending on the
1375      circumstances, ezmlm generates an error message or a new cookie
1376      based on the current time and sends the target a new confirmation
1377      request.
1378
1379   Dan has based these cookies on cryptographic functions that make it
1380   very unlikely that a change in any part of the cookie or the items
1381   will result in a valid combination. Thus, it is virtually impossible
1382   to forge a request even for someone who has a number of valid requests
1383   to analyze. Since the algorithm ezmlm uses is available, the security
1384   rests on the key (and the correctness of the algorithm). Anyone who
1385   knows the key for your lists can easily construct valid requests.
1386
1387   As ezmlm-make(1) doesn't use a truly random process to generate the
1388   key, it is theoretically possible that someone with sufficient
1389   knowledge about your system can guess your key. In practice, this is
1390   very unlikely, and the safety of the system is orders of magnitude
1391   higher than that of other mechanisms that you may rely on in your list
1392   management and mail transport (exclusive of strong encryption, such as
1393   _\bP_\bG_\bP).
1394
1395
1396   4\b4.\b.1\b15\b5.\b.  H\bHo\bow\bw m\bmo\bod\bde\ber\bra\bat\bto\bor\br E\bE-\b-m\bma\bai\bil\bl a\bad\bdd\bdr\bre\bes\bss\bse\bes\bs a\bar\bre\be s\bst\bto\bor\bre\bed\bd.\b.
1397
1398   Moderator E-mail addresses are stored just like ezmlm subscriber
1399   addresses, in a set of up to 53 files within the s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs
1400   subdirectory of the list's b\bba\bas\bse\bed\bdi\bir\br/\b/.  For subscribers, the b\bba\bas\bse\bed\bdi\bir\br/\b/ is
1401   the list directory itself, i.e. D\bDI\bIR\bR/\b/.  For moderators, the default is
1402   D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/, which can be overridden by placing a b\bba\bas\bse\bed\bdi\bir\br name (starting
1403   with a ``/'') in D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb, D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be, or D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt for
1404   subscription moderation, remote administration, and message
1405   moderation, respectively. This permits the use of one moderator
1406   database for multiple lists. _\bN_\bo_\bt_\be_\b: _\bS_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt_\bi_\bo_\bn _\bm_\bo_\bd_\be_\br_\ba_\bt_\bo_\br_\bs _\ba_\bn_\bd _\br_\be_\bm_\bo_\bt_\be
1407   _\ba_\bd_\bm_\bi_\bn_\bi_\bs_\bt_\br_\ba_\bt_\bo_\br_\bs _\ba_\br_\be _\ba_\bl_\bw_\ba_\by_\bs _\bt_\bh_\be _\bs_\ba_\bm_\be _\ba_\bd_\bd_\br_\be_\bs_\bs_\be_\bs_\b. _\bI_\bf _\bb_\bo_\bt_\bh D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb and
1408   D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be contain paths, only the D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb path is used.
1409
1410
1411   4\b4.\b.1\b16\b6.\b.  H\bHo\bow\bw s\bsu\bub\bbs\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn m\bmo\bod\bde\ber\bra\bat\bti\bio\bon\bn w\bwo\bor\brk\bks\bs.\b.
1412
1413   Subscription moderation is a simple extension of the ezmlm subscribe
1414   mechanism. Once the user has confirmed the subscribe request, a new
1415   request is constructed with a _\bd_\bi_\bf_\bf_\be_\br_\be_\bn_\bt _\ba_\bc_\bt_\bi_\bo_\bn _\bc_\bo_\bd_\be. This is sent out
1416   to the moderator(s). When a moderator replies with a valid request and
1417   cookie combination, the user is subscribed. The user is then also
1418   welcomed to the list. Other moderators won't know that the request has
1419   already been approved. If other moderators reply to the request, no
1420   notification of the duplicate action is sent to the subscriber of the
1421   duplicate action. Ezmlm knows that this is a repeat request since the
1422   target address is already a subscriber.
1423
1424   The moderators are not informed about the result, unless there was an
1425   error (subscribing a target that is already a subscriber is not
1426   considered an error). This cuts down the number of messages a
1427   moderator receives. Any list moderator knows (or _\bs_\bh_\bo_\bu_\bl_\bd know) the
1428   qmail/ezmlm/unix paradigm: _\bi_\bf _\by_\bo_\bu_\b'_\br_\be _\bn_\bo_\bt _\bt_\bo_\bl_\bd _\bo_\bt_\bh_\be_\br_\bw_\bi_\bs_\be_\b, _\by_\bo_\bu_\br _\bc_\bo_\bm_\bm_\ba_\bn_\bd
1429   _\bw_\ba_\bs _\bc_\ba_\br_\br_\bi_\be_\bd _\bo_\bu_\bt _\bs_\bu_\bc_\bc_\be_\bs_\bs_\bf_\bu_\bl_\bl_\by.  This may be counterintuitive to those
1430   used to some other operating systems, but in our experience it doesn't
1431   take long to get used to the reliability and efficiency of
1432   U*ix/qmail/ezmlm.
1433
1434   Subscription moderation is enabled by creating D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb and adding
1435   the subscription moderator to D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/:
1436
1437
1438        % ezmlm-sub DIR/mod moderator@host
1439
1440
1441
1442
1443   To use an alternative basedir for subscription moderators, place that
1444   directory name with a leading ``/'' in D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb.
1445
1446
1447   4\b4.\b.1\b17\b7.\b.  H\bHo\bow\bw r\bre\bem\bmo\bot\bte\be a\bad\bdm\bmi\bin\bni\bis\bst\btr\bra\bat\bti\bio\bon\bn w\bwo\bor\brk\bks\bs.\b.
1448
1449   The term ``remote administration'' is used to denote the ability of a
1450   list administrator by E-mail to add or remove any E-mail address from
1451   the subscriber list without the cooperation of the user. Normally,
1452   when user@userhost sends a message to list-subscribe-
1453   other=otherhost@listhost to subscribe other@otherhost, the
1454   confirmation request goes to other@otherhost. However, if remote
1455   administration is enabled and user@userhost is a moderator, a
1456   confirmation request (with a different action code) is sent back to
1457   user@userhost instead. The reply from the administrator is suppressed
1458   in the welcome message sent to the new subscriber (other@otherhost).
1459   This protects the identity of the remote administrator.
1460
1461   Remote administration is enabled by creating D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be and adding the
1462   remote administrator E-mail address(es) to D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/:
1463
1464
1465        % ezmlm-sub DIR/mod remoteadm@host
1466
1467
1468
1469
1470   To use an alternative basedir for remote administrators, place that
1471   directory name with a leading ``/'' in D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb.  Remote administra-
1472   tors and subscription moderators databases always consist of the same
1473   E-mail addresses.  If both are enabled and one of D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb and
1474   D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be contains an alternative basedir name, this basedir is used
1475   for both functions.  If both D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb and D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be contain direc-
1476   tory names, the one in D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb is used for both functions.
1477
1478   Remote administrators can add and remove addresses to the digest list,
1479   the ``allow'' list (user aliases for lists using SENDER restrictions
1480   on posting and archive access), and if used the ``deny'' list
1481   containing addresses that are denied posting rights to the list. The
1482   latter is easy to circumvent and intended to block errant mail robots,
1483   rather than human users.
1484
1485
1486   4\b4.\b.1\b18\b8.\b.  H\bHo\bow\bw m\bme\bes\bss\bsa\bag\bge\be m\bmo\bod\bde\ber\bra\bat\bti\bio\bon\bn w\bwo\bor\brk\bks\bs.\b.
1487
1488   ezmlm-store(1), invoked in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br, receives messages for message
1489   moderated lists. If D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt does not exist, ezmlm-store(1) just
1490   calls ezmlm-send(1) and the message is posted to the list as if it
1491   were not moderated.  If D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt exists, ezmlm-store(1) places the
1492   message in D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/p\bpe\ben\bnd\bdi\bin\bng\bg/\b/.  It also sends a moderation request to
1493   all the moderators. Included with this request is a copy of the
1494   message.  The ``From:'' and ``Reply-To:'' E-mail addresses contain
1495   codes for ``reject'' and ``accept'', together with a unique message
1496   name (derived from the message timestamp and process id) and a cookie
1497   based on these items.  When a moderator replies, ezmlm-moderate(1) is
1498   invoked via D\bDI\bIR\bR/\b/m\bmo\bod\bde\ber\bra\bat\bto\bor\br.  ezmlm-moderate(1) validates the request,
1499   and if the request is valid and the message is found in
1500   D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/p\bpe\ben\bnd\bdi\bin\bng\bg/\b/, it carries out the requested action.
1501
1502   If the request is ``reject'' the post is returned to SENDER with an
1503   explanation and an optional moderator comment. If the request is
1504   ``accept'' the message is posted to the list via ezmlm-send(1). As the
1505   request is processed, a stub for the message is created in
1506   D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/r\bre\bej\bje\bec\bct\bte\bed\bd/\b/ or D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/a\bac\bcc\bce\bep\bpt\bte\bed\bd/\b/ for ``reject'' and ``accept''
1507   requests, respectively.
1508
1509   If a valid reply is received but the message is no longer in
1510   D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/p\bpe\ben\bnd\bdi\bin\bng\bg/\b/, ezmlm-moderate(1) looks for the corresponding stub
1511   in D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/r\bre\bej\bje\bec\bct\bte\bed\bd/\b/ and D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/a\bac\bcc\bce\bep\bpt\bte\bed\bd/\b/.  If the stub is found and
1512   the fate of the message was the one dictated by the new request, no
1513   further action is taken. If, however, no stub is found or the request
1514   and the actual message fate do not match, a notification is sent to
1515   the moderator. This scheme was chosen to impart a maximum of
1516   information with a minimum of messages. Also, it is the least
1517   demoralizing setup for multiple moderator lists, where it is important
1518   not to notify subsequent moderators that their work was in vain since
1519   the action of the first responding moderator has already resulted in
1520   processing of the message.
1521
1522   If a message is not ``rejected'' or ``accepted'' it remains in
1523   D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/p\bpe\ben\bnd\bdi\bin\bng\bg/\b/ until it times out. Cleanup of both messages and
1524   stubs is accomplished by ezmlm-clean(1) which is invoked through both
1525   D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br and D\bDI\bIR\bR/\b/m\bmo\bod\bde\ber\bra\bat\bto\bor\br for message moderated lists. ezmlm-
1526   clean(1) looks at the timestamp used to generate the message/stub
1527   name. If it is older than 120 hours (configurable in a range of 24-240
1528   hours, by placing the value in D\bDI\bIR\bR/\b/m\bmo\bod\bdt\bti\bim\bme\be) it is removed.  Unless
1529   suppressed with the ezmlm-clean(1) ``-R'' switch, the SENDER of the
1530   message is notified.
1531
1532   By default, the E-mail addresses of message moderators are stored as a
1533   subscriber list with a basedir of D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/.  This can be changed to
1534   any other b\bba\bas\bse\bed\bdi\bir\br by placing the name of that directory with a leading
1535   ``/'' in D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt.  Although the default basedirs for message
1536   moderation and subscription moderation/remote administration are the
1537   same, both the functions and actors are entirely independent.
1538
1539
1540   4\b4.\b.1\b19\b9.\b.  H\bHo\bow\bw Q\bQM\bMQ\bQP\bP s\bsu\bup\bpp\bpo\bor\brt\bt w\bwo\bor\brk\bks\bs
1541
1542   qmail processes messages on a first-come-first-served basis. This
1543   means that when it receives a post to 100,000 subscribers, it will try
1544   all the recipients before processing the next message. Often, it is
1545   desirable to offload this work to an external host so that the main
1546   list host remains responsive to e.g. ``subscribe'' and archive access
1547   commands, as well as to other mail is it is not a dedicated mail host.
1548
1549   ezmlm-idx allows the main distribution work to be offloaded to an
1550   external server via the QMQP protocol. Configure qmail-qmqpc(1) on the
1551   list host, and qmail-qmqpd(1) on the mail host (see qmail docs for
1552   details), then create the file D\bDI\bIR\bR/\b/q\bqm\bmq\bqp\bps\bse\ber\brv\bve\ber\brs\bs/\b/0\b0. The list housed in
1553   D\bDI\bIR\bR will now use the QMQP server for posts, by the local qmail for
1554   other messages. If you apply the qmail-qmqpc.tar.gz patch (included in
1555   the ezmlm-idx distribution), you can specify the QMQP server IP
1556   addresses, one per line, in D\bDI\bIR\bR/\b/q\bqm\bmq\bqp\bps\bse\ber\brv\bve\ber\brs\bs/\b/0\b0, just as you normally
1557   would in /\b/v\bva\bar\br/\b/q\bqm\bma\bai\bil\bl/\b/c\bco\bon\bnt\btr\bro\bol\bl/\b/q\bqm\bmq\bqp\bps\bse\ber\brv\bve\ber\brs\bs.  If the first server cannot
1558   be contacted, the installation will try the second, and so on. The
1559   advantage of controlling the servers locally is that you can specify
1560   different servers for different lists. A good idea is to set up also
1561   the list host as a QMQP server and use that as the last IP address.
1562   This way, the list host will be used if the main QMQP server cannot be
1563   contacted. Of course, ezmlm does not loose messages, but rather lets
1564   qmail redeliver the post if no QMQP server is available.
1565
1566
1567   4\b4.\b.2\b20\b0.\b.  H\bHo\bow\bw m\bme\bes\bss\bsa\bag\bge\bes\bs a\bar\bre\be s\bst\bto\bor\bre\bed\bd i\bin\bn t\bth\bhe\be a\bar\brc\bch\bhi\biv\bve\be.\b.
1568
1569   The structure of the ezmlm list archive is described in the ezmlm(5)
1570   manual page.  Basically, the message is stored in D\bDI\bIR\bR/\b/a\bar\brc\bch\bhi\biv\bve\be/\b/n\bn/\b/m\bm,
1571   where ``n'' is the message number divided by 100 and ``m'' the
1572   remainder (2 digits). The first message is stored in D\bDI\bIR\bR/\b/a\bar\brc\bch\bhi\biv\bve\be/\b/0\b0/\b/0\b01\b1.
1573
1574
1575   4\b4.\b.2\b21\b1.\b.  H\bHo\bow\bw t\bth\bhe\be m\bme\bes\bss\bsa\bag\bge\be i\bin\bnd\bde\bex\bx w\bwo\bor\brk\bks\bs.\b.
1576
1577   The ezmlm-idx(1) adds the option (default) of a message index to
1578   ezmlm.  The ``From:'' line, the subject, the author's E-mail address
1579   and name and the time of receipt are logged for each message as it is
1580   received. The subject is ``normalized'' by concatenating split lines
1581   and removing reply-indicators such as ``Re:''. A hash of the
1582   normalized subject with all white space removed is also stored.  The
1583   hash for any message within a thread is almost always the same and is
1584   used together with the order of receipt to connect a set of messages
1585   into a ``thread''. A hash is needed due to the inconsistent handling
1586   by MUAs of white space in rfc2047-encoded subject headers.
1587
1588   The message index is stored as D\bDI\bIR\bR/\b/a\bar\brc\bch\bhi\biv\bve\be/\b/n\bn/\b/i\bin\bnd\bde\bex\bx, where ``n'' is the
1589   message number mod 100.  Thus, the directory D\bDI\bIR\bR/\b/a\bar\brc\bch\bhi\biv\bve\be/\b/5\b52\b2/\b/ stores
1590   messages 5200 through 5299 and the file ``index'' which contains the
1591   index for those messages.
1592
1593   The message index can be retrieved with the -index command (see ezmlm-
1594   get(1)). You can also retrieve a range of messages, a specific thread,
1595   or generate a message digest (see ezmlm-get(1)). Each of these
1596   commands can be disabled or restricted as desired by the list owner.
1597
1598   The ezmlm-idx(1) can be used at any time to either reconstruct an
1599   existing index or create one an index for an existing message archive.
1600   without one.
1601
1602
1603   4\b4.\b.2\b22\b2.\b.  H\bHo\bow\bw t\bth\bhr\bre\bea\bad\bdi\bin\bng\bg w\bwo\bor\brk\bks\bs.\b.
1604
1605   A ezmlm thread is just a message number-ordered set of messages with
1606   identical ``normalized'' subject entries. This is a very reliable
1607   method for threading messages. It does not rely on any variably
1608   present ``In-Reply-To:'' or ``References:'' headers. If the subject
1609   changes, the continuation becomes a separate thread very close to the
1610   original thread in a digest. ezmlm uses this mechanism to return
1611   message sets threaded and with a thread and author index, unless
1612   specifically told not to do so with the ``n'' format specifier.
1613   Naturally, lists set up without a message index (using the ezmlm-make
1614   ``-I'' switch) do not maintain thread information.
1615
1616
1617   4\b4.\b.2\b23\b3.\b.  H\bHo\bow\bw d\bdi\big\bge\bes\bst\bts\bs w\bwo\bor\brk\bk.\b.
1618
1619   A ``digest'' is just an ordered collection of messages from a list,
1620   usually sent out regularly depending on the time and traffic volume
1621   since the last digest. Digest subscribers thus can read messages as
1622   ``threads'' once daily, rather than receiving a constant trickle of
1623   messages.
1624
1625   As a major change in ezmlm-idx-0.30, the digest is no longer a totally
1626   separate ezmlm-list, but a part of the main list. This has security
1627   advantages, makes setup and administration easier, saves space, and
1628   allows a consistent way for subscribers of both ``list'' and ``list-
1629   digest'' to retrieve missed messages from a single archive.
1630
1631   The digest of the list ``list'' is always called ``list-digest''. To
1632   set up a list with a digest, simply use the ezmlm-make(1) ``-d''
1633   switch. You subscribe to and unsubscribe from a digest the same way as
1634   for the main list, except that the request is sent to e.g. list-
1635   digest-subscribe@host rather than to list-subscribe@host.
1636
1637   Any option such as remote admin or subscription moderation that is
1638   active for the list applies also to the digest list. Any restrictions
1639   in posts or archive retrieval set up for the list, automatically
1640   accept both subscribers of the main list and of the digest list.
1641
1642   The changes in ezmlm-idx>=0.30 allow all programs to service both list
1643   and list-digest functions.  All digest-specific files are stored in
1644   D\bDI\bIR\bR/\b/d\bdi\big\bge\bes\bst\bt/\b/.  Digest list subscriber addresses in
1645   D\bDI\bIR\bR/\b/d\bdi\big\bge\bes\bst\bt/\b/s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs/\b/ and digest list bounce information in
1646   D\bDI\bIR\bR/\b/d\bdi\big\bge\bes\bst\bt/\b/b\bbo\bou\bun\bnc\bce\be/\b/. Text files are shared between list and digest. To
1647   get the local part of the list or list-digest name in a context
1648   sensitive manner, use ``<#l#>'' (lower case ``L'') in the text file.
1649
1650
1651   In order to generate digest, the list needs to be archived and indexed
1652   (both default).  You can retrieve sets of messages from the message
1653   archive. Such sets are always returned to the SENDER of the request.
1654   ``Digests'' are a special form of such a set/request. First, there are
1655   no restrictions on the number of messages that can be in a digest
1656   (which is balanced by the requirement for a ``digest code'' that needs
1657   to be specified in order to create a digest based on a mailed
1658   request).  Second, special files (D\bDI\bIR\bR/\b/d\bdi\big\bgi\bis\bss\bsu\bue\be and D\bDI\bIR\bR/\b/d\bdi\big\bgn\bnu\bum\bm) keep
1659   track of the digest issue and the message number, amount, and time
1660   when the last digest was created.  Thus, the system is adapted to make
1661   it easy to create the regular collections of messages commonly
1662   referred to as ``digests''.
1663
1664   Digest can be generated in several different ways:
1665
1666      C\bCo\bom\bmm\bma\ban\bnd\bd l\bli\bin\bne\be
1667         ezmlm-get can be invoked on the command line, or via a script
1668         from e.g.  crond(8):
1669
1670
1671                   % ezmlm-get DIR
1672
1673
1674
1675
1676      If for some reason the digest should be disseminated via a separate
1677      list, the digest can be redirected to a ``target address'' with the
1678      ezmlm-get(1) ``-t'' switch. This may be useful if a non-standard
1679      digest list name is required. In this case, the list disseminating
1680      the digest must be set up as a sublist of the main list (see ``How
1681      sublists work'').
1682
1683
1684      f\bfr\bro\bom\bm D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br
1685         This is the default and does not require and additional setup.
1686         It works well with most lists. The only possible advantage is
1687         for very low traffic lists and for lists where it is important
1688         that a digest be sent out at a specific time (as D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br
1689         digests are triggered only when messages are received).
1690
1691         In D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br, ezmlm-get(1) needs to be combined with ezmlm-
1692         tstdig(1) so that digests are generated only if certain criteria
1693         are met (in this case, more than 30 messages, 64 kbytes of
1694         message body or 48 hours since the latest digest). Add these
1695         lines after the ezmlm-send line in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br:
1696
1697
1698                   |/usr/local/bin/ezmlm/ezmlm-tstdig -t48 -m30 -k64 DIR || exit 99
1699                   |/usr/local/bin/ezmlm/ezmlm-get diglist@host DIR || exit 0
1700
1701
1702
1703
1704      To set this up automatically when you create the list:
1705
1706
1707                   % ezmlm-make -d DIR dot local host [code]
1708
1709
1710
1711
1712      Again, the ezmlm-get(1) ``-t'' switch can be used for non-standard
1713      arrangements to redirect the digest.  The ezmlm-make(1) ``-4''
1714      switch can be used to specify alternative ezmlm-tstdig(1) parame-
1715      ters.
1716
1717      f\bfr\bro\bom\bm D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br
1718         This is useful only if you want digests at specific times, and
1719         you do not have access to crond(8) on the list host.  ezmlm-
1720         get(1) is in it's normal place in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br before ezmlm-
1721         manage(1), but a digest code is specified in the ezmlm-get(1)
1722         command line. To trigger digests requires a regular trigger
1723         messages generated from e.g. crond(8) (see below), but this can
1724         be done from _any_ host, not only the list host.  ezmlm-make(1)
1725         sets up ezmlm-get(1) this way if a digest ``code'' is given as
1726         the 5th ezmlm-make(1) command line argument. However, you need
1727         to set up the trigger messages separately (see below):
1728
1729
1730                   % ezmlm-make DIR dot local host code
1731
1732
1733
1734
1735      To also test for message volume with this setup, generate trigger
1736      messages with the granularity you'd like, and add a ezmlm-tstdig(1)
1737      line to D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. E.g., use a trigger message every 3 hours and
1738      the following ezmlm-tstdig(1) line before ezmlm-get(1):
1739
1740
1741                   |/usr/local/bin/ezmlm/ezmlm-tstdig -t24 -m30 -k64 DIR || exit 99
1742
1743
1744
1745
1746      In general, a cron-triggered digest is preferred for very large
1747      lists and for lists with very low traffic.  Again, the ezmlm-get(1)
1748      ``-t'' switch can be used for non-standard arrangements to redirect
1749      the digest.  For most lists, the digesting from D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br works
1750      very well, and does not require any extra setup work.
1751
1752      C\bCo\bom\bmb\bbi\bin\bna\bat\bti\bio\bon\bn s\bse\bet\btu\bup\bps\bs
1753         The default setup in the ezmlmrc(5) file included in the
1754         distribution is the D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br triggered setup described above.
1755         If you in addition use ezmlm-cron(1) or crond(8) directly to
1756         generate trigger messages to list-dig.code@host, you can get
1757         regular digests (via the trigger messages and D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br), with
1758         extra digest sent when traffic is unusually high (via the ezmlm-
1759         tstdig/ezmlm-get limits set in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br).  This works best
1760         when the time argument on the ezmlm-tstdig(1) command line is
1761         the same as the trigger message interval, and the other ezmlm-
1762         tstdig(1) parameters are set so that they are only rarely
1763         exceeded within the normal digest interval.
1764
1765
1766   4\b4.\b.2\b24\b4.\b.  H\bHo\bow\bw W\bWW\bWW\bW a\bar\brc\bch\bhi\biv\bve\be a\bac\bcc\bce\bes\bss\bs w\bwo\bor\brk\bks\bs.\b.
1767
1768   If the list is set up with ezmlm-make -i, ezmlm-archive(1) will be
1769   invoked from D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br. This program creates indices for threads,
1770   subjects, and authors under D\bDI\bIR\bR/\b/a\bar\brc\bch\bhi\biv\bve\be from the i\bin\bnd\bde\bex\bx files.  ezmlm-
1771   cgi(1) is set up per user or globally (see man page) and told about
1772   different lists via the /\b/e\bet\btc\bc/\b/e\bez\bzm\bml\blm\bm/\b/e\bez\bzc\bcg\bgi\bir\brc\bc file. ezmlm-cgi(1) presents
1773   and used the index created by ezmlm-archive(1) and converts these and
1774   the messages to html on-the-fly. To be as efficient as possible,
1775   ezmlm-cgi(1) outputs only basic html. However, style sheets are
1776   supported and can be used to customize formatting without modification
1777   of ezmlm-cgi(1).  Extra buttons can be added via the config file. See
1778   man page for details.
1779
1780
1781
1782
1783   4\b4.\b.2\b25\b5.\b.  H\bHo\bow\bw e\bez\bzm\bml\blm\bm-\b-t\bts\bst\btd\bdi\big\bg w\bwo\bor\brk\bks\bs.\b.
1784
1785   ezmlm-tstdig(1) looks at D\bDI\bIR\bR/\b/n\bnu\bum\bm and D\bDI\bIR\bR/\b/d\bdi\big\bgn\bnu\bum\bm to determine how many
1786   messages and how much traffic (in terms of bytes of message body) has
1787   arrived to the list since the latest digest. It also determines how
1788   much time has passed since the last digest was generated. If any of
1789   the criteria specified by command line switches exists, ezmlm-
1790   tstdig(1) exits 0, causing the invocation of the next line in the
1791   .qmail file. If not, ezmlm-tstdig(1) exits 99 causing qmail to skip
1792   the rest of the .qmail file. ezmlm-tstdig(1) looks at LOCAL to
1793   determine if it is invoked in the command line, in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br, or in
1794   D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. In the latter two cases, ezmlm-tstdig(1) verifies that
1795   the list local address is correct. If invoked in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br, ezmlm-
1796   tstdig(1) exits 0 for all action requests except list-dig, so that is
1797   does not interfere with the normal functions of ezmlm-get(1) and
1798   ezmlm-manage(1). ezmlm-tstdig(1) uses D\bDI\bIR\bR/\b/t\bts\bst\btd\bdi\big\bg as a flag to avoid
1799   problems caused by starting the program when another copy is already
1800   running.
1801
1802   ezmlm-make(1) automatically configures ezmlm-tstdig(1) with the
1803   parameters ``-t48 -m30 -k64'', which can be overridden with the ``-3''
1804   switch.
1805
1806
1807   4\b4.\b.2\b26\b6.\b.  H\bHo\bow\bw s\bsu\bub\bbl\bli\bis\bst\bts\bs w\bwo\bor\brk\bk.\b.
1808
1809   ezmlm uses the concept of sublists.  Sublists are regular ezmlm lists,
1810   except that they only accept messages from their parent list, which is
1811   placed in the file D\bDI\bIR\bR/\b/s\bsu\bub\bbl\bli\bis\bst\bt.
1812
1813   sublists are used to split the load of a large mailing list among
1814   several hosts. All you need to do to set up a local sublist of e.g.
1815   the qmail@list.cr.yp.to list is to create a ezmlm list, and put
1816   ``qmail@list.cr.yp.to'' into D\bDI\bIR\bR/\b/s\bsu\bub\bbl\bli\bis\bst\bt of you list, and subscribe
1817   the sublist to the main qmail list. Now anyone can subscribe to your
1818   local list which handles its own bounces, subscribe requests, etc.
1819   The load on the main list is only the single message to your local
1820   list.
1821
1822   Sublists will not add their own mailing list header and they will not
1823   add a subject prefix. Normally, sublists will use their own message
1824   number, rather than that used by the main list.  With ezmlm-idx>=0.23,
1825   sublists that are not archived and not indexed, will instead use the
1826   main list message number. This way, bounce messages from the sublist
1827   can refer the subscriber to the main list archive. This is not done
1828   for indexed/archived sublists for security reasons (an attacker could
1829   overwrite messages in the sublist archive).
1830
1831   With ezmlm-idx>=0.31, there is support for using ezmlm as a sublist of
1832   a mailing list run by another mailing list manager. To set this up,
1833   set up a normal ezmlm sublist, then edit D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br so that the _\be_\bz_\bm_\bl_\bm_\b-
1834   _\bs_\be_\bn_\bd line contains the command line option ``-\b-h\bh _\bX_\b-_\bL_\bi_\bs_\bt_\bp_\br_\bo_\bc_\be_\bs_\bs_\bo_\br_\b-
1835   _\bV_\be_\br_\bs_\bi_\bo_\bn_\b:'' (before D\bDI\bIR\bR). As the header text, you need to use a header
1836   that the main list manager adds to messages. Now your sublist will
1837   accept only messages from the main list requiring that they come from
1838   that list _\ba_\bn_\bd contain the header specified.
1839
1840   ezmlm-idx>=0.313 also has added protection against the malicious
1841   subscription of the ezmlm list to mailing lists run by other list
1842   managers. If the ezmlm-reject(1) line in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br has ``-h'' and
1843   ``D\bDI\bIR\bR'' on it, ezmlm-reject(1) will read D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\brr\bre\bej\bje\bec\bct\bt and reject
1844   messages that have any header specified in that file. See the ezmlm-
1845   reject(1) man page for suitable headers.
1846
1847
1848
1849   4\b4.\b.2\b27\b7.\b.  H\bHo\bow\bw s\bsu\bub\bbl\bli\bis\bst\bti\bin\bng\bg c\bca\ban\bn b\bbe\be m\bma\bad\bde\be t\btr\bra\ban\bns\bsp\bpa\bar\bre\ben\bnt\bt t\bto\bo t\bth\bhe\be u\bus\bse\ber\br.\b.
1850
1851   Often you create a local sublist of a list that you do not control.
1852   Local users know to subscribe to your local list. However,
1853   occasionally, you want to run your own list as a main list and a
1854   series of sublists per geographic site, or split onto several hosts if
1855   the list is too large to be handled by a single computer. You may also
1856   want to split the load of a ``well known'' list host that is getting
1857   overwhelmed with traffic. ezmlm supports sublists, but here the fact
1858   that the user has to interact with the correct sublist is a problem.
1859   What if the user doesn't remember which sublist s/he is subscribed to?
1860   What if you change the name of a sublist host or move a sublist to a
1861   different host?
1862
1863   ezmlm-idx&-0.32 adds ezmlm-split(1), which allows sublisting
1864   transparent to the user. This program is invoked before ezmlm-
1865   manage(1) in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. If it detects a subscribe or unsubscribe
1866   command, it will forward the command to the appropriate sublist based
1867   on a ``split file'' D\bDI\bIR\bR/\b/s\bsp\bpl\bli\bit\bt. This file contains entries, one per
1868   line, of the format:
1869
1870
1871                domain:lo:hi:sublistname@sublisthost
1872                edu:::othersub@otherhost
1873                :1:26:third@thirdhost
1874
1875
1876
1877
1878   For each address, a hash in the range 0-52 is calculated. The
1879   ``domain'' is the last two parts of the host name, reversed. Thus, for
1880   id.wustl.edu it would be ``edu.wustl''. The domain is considered to
1881   match if the characters in the split file match. It is advisable to
1882   use only the last part of the domain for compatibility with the SQL
1883   version version  (see section ``ezmlm support for SQL datbases'').
1884
1885   Thus, any address *@*.domain with a hash between ``lo'' and ``hi''
1886   inclusive would match the first line and be forwarded to
1887   sublistname@sublisthost.  *@*.edu (independent of hash) would match
1888   the second line and be forwarded to othersub@otherhost. Of remaining
1889   requests, a request for any target address with a hash between 1 and
1890   26 would be forwarded to the sublist third@thirdhost. Remaining
1891   requests would be passed on to the local list.
1892
1893   The domain is useful for ``geographic'' splitting, and the hash for
1894   load splitting (within a domain). The user interacts only with the
1895   main list, and does not need to know from which sublist s/he is
1896   serviced.
1897
1898   ezmlm-idx sublists use the message number of the main list message if
1899   they are not indexed. This allows sublists to in bounce messages refer
1900   the subscriber to the main list archive. Use ezmlm-make(1) in
1901   conjunction with ezmlmsubrc(5) to set up the sublists. See man pages
1902   for further details.
1903
1904   Since the addresses are stored locally, the system is very fast and
1905   robust, but it is difficult to add new sublists. ezmlm-split(1) -D
1906   supports parsing addresses on stdin and splitting them to stdout (see
1907   man page). Thus, if you divide the domain of some sublist(s) onto a
1908   net set of sublists, you can use ezmlm-list(1) to collect the
1909   addresses, ezmlm-split -D with the new split file to split them, then
1910   after clearing the local subscriber databases use ezmlm-sub(1) to add
1911   the correct addresses to each new sublist.  The section on SQL support
1912   describes an alternative way of managing sublists (see section ``ezmlm
1913   support for SQL datbases'').
1914
1915   4\b4.\b.2\b28\b8.\b.  H\bHo\bow\bw t\bto\bo s\bse\ber\brv\bvi\bic\bce\be c\bco\bom\bmm\bma\ban\bnd\bds\bs i\bin\bn t\bth\bhe\be s\bsu\bub\bbj\bje\bec\bct\bt l\bli\bin\bne\be.\b.
1916
1917   Rfc2142 (standards track) says that for each mailing list list@host,
1918   there MUST be an administrative address list-request@host. This is not
1919   the default for ezmlm, but can be added with ezmlm-make(1) ``-q'',
1920   which adds a ezmlm-request(1) line before the ezmlm-manage(1) line in
1921   D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. This address is used to manage commands in the
1922   ``Subject:'' line, by translating them into appropriate ezmlm command
1923   messages.
1924
1925   When migrating from other mailing list managers which use this method
1926   to issue list commands, configuring ezmlm to respond to such commands
1927   may be useful. In addition, some software manufacturers sell MUAs and
1928   mail gateways that are unable to correctly transport rfc822-compliant
1929   Internet mail with certain characters in the local part of the
1930   address.
1931
1932   ezmlm-request(1) services the list-request@host address per rfc2142
1933   (standards track). It is usually invoked in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br before ezmlm-
1934   get(1) and ezmlm-manage(1). It ignores all requests that are not for
1935   the list-request address. For requests to the list-request@host
1936   address, ezmlm-request(1) parses the ``Subject:'' line. If a ezmlm
1937   command address starting with the contents of D\bDI\bIR\bR/\b/o\bou\but\btl\blo\boc\bca\bal\bl (e.g. list-
1938   get45) is on the command line, ezmlm-request(1) generates the
1939   corresponding full ezmlm request message. If the subject does not
1940   start with the contents of D\bDI\bIR\bR/\b/o\bou\but\btl\blo\boc\bca\bal\bl, ezmlm-request(1) prefixes the
1941   line with the contents of D\bDI\bIR\bR/\b/o\bou\but\btl\blo\boc\bca\bal\bl, thereby building a complete
1942   ezmlm command. If a host name is specified, it must match the contents
1943   of D\bDI\bIR\bR/\b/o\bou\but\bth\bho\bos\bst\bt, i.e. ezmlm-request(1) in this function will only
1944   generate command messages for the local list.
1945
1946   Thus, a subject of ``subscribe'' to list-request@host will be auto-
1947   magically rewritten as a message to list-subscribe-
1948   userlocal=userhost@host.  Similarly, any ezmlm command or ``Reply-
1949   To:'' address can be pasted into the subject field and sent to list-
1950   request@host.  ezmlm-request(1) does not validate the command name,
1951   but invalid commands result in a ``help'' message in reply via ezmlm-
1952   manage(1). This allows ezmlm-request(1) to also service custom
1953   commands, like list-faq@host that you may have created for your list.
1954
1955   If the ``Subject:'' is empty or does not start with a letter, ezmlm-
1956   request(1) will attempt to interpret the first message body line that
1957   starts with a letter in the first position.
1958
1959   When ezmlm-request(1) has successfully processed a ''request''
1960   command, it exits 99 to skip the rest of D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br.
1961
1962   To set up a list to include ezmlm-request processing, use the ezmlm-
1963   make(1) ``-q'' switch. The default is to not do this.
1964
1965
1966   4\b4.\b.2\b29\b9.\b.  H\bHo\bow\bw t\bto\bo s\bsu\bup\bpp\bpo\bor\brt\bt a\bal\blt\bte\ber\brn\bna\bat\bti\biv\bve\be c\bco\bom\bmm\bma\ban\bnd\bd n\bna\bam\bme\bes\bs.\b.
1967
1968   ezmlm-idx>=0.23 allows alternate names for all user commands. This can
1969   be used to e.g. make a message to list-remove@host to result in an
1970   ``unsubscribe'' action. This may help migration from other mailing
1971   list managers and in non-English environments. The use of aliases
1972   allows ezmlm to respond to new command names, while always responding
1973   correctly to the standard commands. If ezmlm-request(1) is used it
1974   will automatically be able to deal with any commands you set up for
1975   the list, within ezmlm or as separate programs.  See ``Multiple
1976   language support'' on how to set up command aliases.
1977
1978
1979
1980
1981   4\b4.\b.3\b30\b0.\b.  H\bHo\bow\bw t\bto\bo a\bad\bdd\bd y\byo\bou\bur\br o\bow\bwn\bn c\bco\bom\bmm\bma\ban\bnd\bds\bs.\b.
1982
1983   The qmail/ezmlm mechanism makes it very easy to add your own commands.
1984   You can add them to D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br, but this requires great care in terms
1985   of ordering and exit codes. Easier is to set them up separately with a
1986   .\b.q\bqm\bma\bai\bil\bl-\b-l\bli\bis\bst\bt-\b-c\bco\bom\bmm\bma\ban\bnd\bd file.
1987
1988   Let's assume you want to allow anyone to determine how many
1989   subscribers are subscribed to your list with the command list-
1990   count@host.  Just create a program to do the work:
1991
1992
1993                #!/bin/sh
1994                DTLINE='Delivered-To: list-count@host processor'
1995                grep "$DTLINE" > /dev/null &&
1996                        { echo "This message is looping"; exit 100; }
1997                {
1998                  echo "$DTLINE"
1999                  cat <<EOF
2000                  From: list-help@host
2001                  To: $SENDER
2002                  Subject: list@host subscriber count
2003
2004                  Current number of subscribers:
2005                  EOF
2006                  ezmlm-list ~/DIR | wc -l
2007                } | /var/qmail/qmail-inject -f list-return- "$SENDER"
2008                exit 0
2009
2010
2011
2012
2013   Then, create D\bDI\bIR\bR/\b/c\bco\bou\bun\bnt\bt containing ``|/path/program'' and then do ``ln
2014   -sf DIR/count ~/.qmail-list-count''. Now, the command will pass the
2015   message to ``program''. The first thing ``program'' looks for is its
2016   delivered-to line to detect looping. If not found, it goes on to print
2017   this header, followed by some minimal text and the subscriber number.
2018   This can of course be made prettier with ezmlm-list error checking,
2019   and maybe in perl, but shows how easy it is to extend ezmlm. All
2020   thanks to the DJB/qmail delivery mechanism.
2021
2022
2023   4\b4.\b.3\b31\b1.\b.  H\bHo\bow\bw r\bre\bem\bmo\bot\bte\be a\bad\bdm\bmi\bin\bni\bis\bst\btr\bra\bat\bto\bor\brs\bs c\bca\ban\bn r\bre\bet\btr\bri\bie\bev\bve\be a\ba s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\br l\bli\bis\bst\bt
2024
2025   A user with shell access can always manipulate subscriber lists with
2026   ezmlm-sub(1), ezmlm-unsub(1), and ezmlm-list(1) for the lists s/he
2027   owns.
2028
2029   Sometimes a remote administrator requires a list of subscriber E-mail
2030   addresses. At the same time, the list should be kept out of the hands
2031   of spammers and all unauthorized entities. By default, ezmlm does not
2032   allow remote subscriber list retrieval.  You can enable the ``-list''
2033   command for remote retrieval of a subscriber list by using the ezmlm-
2034   make(1) ``-l'' switch or by adding the ``-l'' switch to the ezmlm-
2035   manage(1) line in DIR/manager. With this switch, ezmlm will permit
2036   retrieval of a subscriber list, but only to remote administrators.
2037   Subscribers cannot get the list membership, and any outsider would
2038   have to be able to read a remote administrator's mail to get the list.
2039   _\bN_\bo_\bt_\be_\b: _\bT_\bh_\bi_\bs _\bo_\bp_\bt_\bi_\bo_\bn _\bi_\bs _\bn_\bo_\bt _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\ba_\bl _\bu_\bn_\bl_\be_\bs_\bs _\bt_\bh_\be _\bl_\bi_\bs_\bt _\bi_\bs _\bc_\bo_\bn_\bf_\bi_\bg_\bu_\br_\be_\bd _\bf_\bo_\br
2040   _\br_\be_\bm_\bo_\bt_\be _\ba_\bd_\bm_\bi_\bn_\bi_\bs_\bt_\br_\ba_\bt_\bi_\bo_\bn_\b, _\bi_\b._\be_\b. _\bt_\bh_\be _\be_\bz_\bm_\bl_\bm_\b-_\bm_\ba_\bk_\be_\b(_\b1_\b) _\b`_\b`_\b-_\br_\bl_\b'_\b' _\bs_\bw_\bi_\bt_\bc_\bh_\be_\bs _\bn_\be_\be_\bd _\bt_\bo
2041   _\bb_\bo_\bt_\bh _\bb_\be _\bu_\bs_\be_\bd_\b.
2042
2043   The list returned is unsorted for efficiency reasons. You can easily
2044   sort it or use your mail reader to find a specific entry. The number
2045   of subscribers is shown at the bottom of the list. To get the number
2046   of subscribers from the command line, use:
2047                % ezmlm-list DIR | wc -l
2048
2049
2050
2051
2052
2053   4\b4.\b.3\b32\b2.\b.  H\bHo\bow\bw r\bre\bem\bmo\bot\bte\be a\bad\bdm\bmi\bin\bni\bis\bst\btr\bra\bat\bto\bor\brs\bs c\bca\ban\bn d\bde\bet\bte\ber\brm\bmi\bin\bne\be t\bth\bhe\be n\bnu\bum\bmb\bbe\ber\br o\bof\bf s\bsu\bub\bb-\b-
2054   s\bsc\bcr\bri\bib\bbe\ber\brs\bs
2055
2056   For the list aaa@example.com, send a message to aaa-listn@example.com.
2057   This is preferable to the ``-list'' command for very large lists.
2058
2059
2060   4\b4.\b.3\b33\b3.\b.  H\bHo\bow\bw r\bre\bem\bmo\bot\bte\be a\bad\bdm\bmi\bin\bns\bs c\bca\ban\bn s\bse\bee\be i\bif\bf a\ban\bn a\bad\bdd\bdr\bre\bes\bss\bs i\bis\bs a\ba s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\br o\bor\br n\bno\bot\bt
2061
2062   For the list aaa@example.com, and subscriber user@host.cn send a
2063   message to aaa-query=host.cn@example.com. Users can do this as well,
2064   but in that case the reply is sent to the target address
2065   (user@host.cn) and not to the SENDER to protect the subscriber
2066   addresses.
2067
2068
2069   4\b4.\b.3\b34\b4.\b.  H\bHo\bow\bw r\bre\bem\bmo\bot\bte\be a\bad\bdm\bmi\bin\bni\bis\bst\btr\bra\bat\bto\bor\brs\bs c\bca\ban\bn s\bse\bea\bar\brc\bch\bh t\bth\bhe\be s\bsu\bub\bbs\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn l\blo\bog\bg
2070
2071   The same conditions that enable remote administrators to retrieve a
2072   subscriber list (see ``'') also enable the remote admin to retrieve
2073   the subscription log, i.e. the log of changes made to the subscriber
2074   list. The command is list-log@host. The entries are of the form ``date
2075   timestamp dir event address comment''. ``dir'' is ``+'' for addition
2076   of an address, ``-'' for removal, ``event'' is empty for normal
2077   (un)subscribe ``manual'' for changes made with ezmlm-(un)sub, and
2078   ``probe'' for removals via bounce handling. ``address'' is the
2079   subscription address, and ``comment'' is empty or the subscribers
2080   ``From:'' line. The log can be used to look at recent
2081   additions/removals and to try to track down a subscriber address from
2082   e.g. the name on the ``From:'' line. The log is written on a best-
2083   effort basis. In contrast to the subscriber database, entries in the
2084   log may be lost at a system crash.
2085
2086   The remote administrator can do a case-insensitive search through the
2087   log with the command list-log.xxx@host, where ``xxx'' is any sequence
2088   of letters/numbers that must occur on a line in order for that line to
2089   be included in the reply. A ``_'' is a wild card and should be used
2090   for special characters as well. Thus, to search for any entry with a
2091   host name of host* mail list-log._host and to find entries for ``Keith
2092   John...'' etc, use list-log.keith_john.
2093
2094   For SQL-enabled lists, this command searches the ``list_slog'' table.
2095
2096
2097   4\b4.\b.3\b35\b5.\b.  H\bHo\bow\bw t\bte\bex\bxt\bt f\bfi\bil\ble\be e\bed\bdi\bit\bti\bin\bng\bg w\bwo\bor\brk\bks\bs.\b.
2098
2099   If a list is set up with the ezmlm-make(1) ``-n'' switch, or if the
2100   ``-e'' switch is added to the ezmlm-manage(1) line in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br,
2101   ezmlm allows remote administrators to edit the text files that make up
2102   most of the ezmlm responses.  Of course, this will work only if remote
2103   administration is enabled for the list. Replies are sent only if the
2104   target address is a remote administrator.  Thus, ezmlm does not rely
2105   on SENDER (easily forged) but on the notion that only the recipient
2106   receives the message.  This is a reasonable assumption for remote
2107   administrators that receive mail on the local system.
2108
2109   With this switch, ezmlm replies to the -edit command with a list of
2110   the files in D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/.  Only files where editing seems reasonable are
2111   included in the list. The remote administrator can edit any file in
2112   D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/ by sending e-mail containing the new text to -edit.file
2113   where ``file'' is the name of the file replaced (edited). The file
2114   must exist and the name consist of only lower case letters and '-'.
2115   Any '-' (hyphen) must be substituted by a '_' (underscore). For remote
2116   administrator convenience, the substitution has been made in the list
2117   of files sent in reply to the -edit command.
2118
2119   In reply to this command, ezmlm sends a message with the file and
2120   editing instructions. A ``cookie'' based on the date, file name, and
2121   contents of the file is added to the ``Reply-To:'' address. The cookie
2122   becomes invalid as soon as the file has been changed, or after 27
2123   hours, whichever is shorter.  Also, the cookie cannot be used to edit
2124   any other file, even if the other file has exactly the same contents.
2125   If you sent an edit request, and decide not to edit the file, you can
2126   simply delete the message.
2127
2128   To apply standard changes to all your text files it is easier to edit
2129   ~\b~/\b/.\b.e\bez\bzm\bml\blm\bmr\brc\bc. To reset the list's text files back to their default
2130   contents (as specified by e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b)), use the ezmlm-make(1) ``-ee''
2131   switch together with any other switches used to set up the list, or
2132   the ``-++'' switch and any switches that you whish to change from the
2133   current configuration.
2134
2135
2136   4\b4.\b.3\b36\b6.\b.  H\bHo\bow\bw s\bsu\bub\bbj\bje\bec\bct\bt l\bli\bin\bne\be p\bpr\bre\bef\bfi\bix\bxe\bes\bs w\bwo\bor\brk\bk.\b.
2137
2138   First of all, it is against a number of RFCs to modify the
2139   ``Subject:'' header of messages. However, it is frequently requested
2140   by users who have seen it on other list managers. Second, it is many
2141   times worse to have a prefix that changes from message to message,
2142   such as a prefix with the message number.  However, a number of lists,
2143   especially in Japan, use this feature and in its absence these lists
2144   might be unable to take advantage of ezmlm. Thus, while we recommend
2145   against using a prefix, ezmlm-idx supports it.
2146
2147   To add a subject prefix, just put the text into D\bDI\bIR\bR/\b/p\bpr\bre\bef\bfi\bix\bx. The only
2148   format that makes any sense is ``list:'' or ``(list)'' or such.
2149
2150   The message number prefix is activated by putting e.g. ``(list-#)''
2151   into D\bDI\bIR\bR/\b/p\bpr\bre\bef\bfi\bix\bx. ``#'' is replaced by the message number. ezmlm
2152   refuses to make more drastic changes in the subject of a message. As a
2153   consequence, the message number prefix is added only when the subject
2154   does not already contain a prefix. Thus, replies will have the message
2155   number of the original message. Doing anything else and still
2156   supporting rfc2047-encoded subjects in the archive threading (much
2157   more important) would require decoding the subject, removing/editing
2158   the prefix, and re-encoding the subject. This is far too invasive.
2159
2160   The entire thread can always be retrieved by sending a message to
2161   list-thread-x where ``x'' is the message number in the prefix of any
2162   message in the thread.
2163
2164
2165   4\b4.\b.3\b37\b7.\b.  H\bHo\bow\bw b\bbo\bou\bun\bnc\bce\bes\bs a\bar\bre\be h\bha\ban\bnd\bdl\ble\bed\bd.\b.
2166
2167   Ezmlm messages are sent with an envelope sender (``Return-Path'') that
2168   directs bounces to D\bDI\bIR\bR/\b/b\bbo\bou\bun\bnc\bce\ber\br and also via ``VERP'' contain
2169   information about the intended recipient. Thus, programs run from
2170   D\bDI\bIR\bR/\b/b\bbo\bou\bun\bnc\bce\ber\br know the subscriber for whom the message bounced. ezmlm-
2171   weed(1) is used to weed out delivery delay notification and other
2172   junk.  For others ezmlm-return(1) decides if the address is a
2173   subscriber.  If so, it saves the first bounce message and a list of
2174   bounced-message numbers. ezmlm-warn(1) executed from e.g. D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br
2175   goes through these bounce files. If it finds any that are older than
2176   1,000,000 seconds (about 11.6 days) it sends a warning message to the
2177   subscriber. If this warning message bounces, ezmlm-return(1) sets up a
2178   "warning flag" for the subscriber. If ezmlm-warn(1) finds a warning
2179   flag older than 11.6 days, it sends a "probe" to the subscriber.  If
2180   ezmlm-return(1) receives a bounced probe, the subscriber is
2181   automatically unsubscribed.
2182
2183   The ezmlm-warn(1) ``-t'' switch can be used to change the time-out (in
2184   days).  The ezmlm-warn(1) ``-d'' switch causes processing of ``list-
2185   digest'' bounces rather than ``list'' bounces. ezmlm-weed(1) and
2186   ezmlm-return(1) can handle bounces for either list.
2187
2188   ezmlm-warn(1) also removes any files in the bounce directory that are
2189   older than 3 times the bounce time-out.
2190
2191   ezmlm-warn(1) is normally run from D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br. This can take quite a
2192   lot of resources, if there are a large number of bouncing addresses
2193   (>>1000) on a busy list, since by default all bounces are stored in a
2194   single directory and ezmlm-warn(1) examines all of them with each
2195   invocation.  ezmlm-idx->=0.32 changes bounce handling to improve
2196   performance for large lists. Bounces are stored in subdirectories of
2197   D\bDI\bIR\bR/\b/b\bbo\bou\bun\bnc\bce\be/\b/d\bd/\b/, one per 10,000 seconds. The corresponding address
2198   hashes are stored in 16 subdirectories of D\bDI\bIR\bR/\b/b\bbo\bou\bun\bnc\bce\be/\b/h\bh/\b/. Instead of
2199   looking at all bounces, ezmlm-warn(1) processes only the bounces in
2200   D\bDI\bIR\bR/\b/b\bbo\bou\bun\bnc\bce\be/\b/d\bd/\b/ subdirectories that are ``due''. In addition, ezmlm-
2201   warn(1) uses D\bDI\bIR\bR/\b/b\bbo\bou\bun\bnc\bce\be/\b/l\bla\bas\bst\btd\bd as a simple lockout, to assure that it
2202   will do work only at most once every 5.5 hours. (Times are scaled to
2203   the ezmlm-warn(1) ``-t'' argument if used.)  Together, these changes
2204   assure that bounce handling will scale well in the default
2205   configuration, even for very large lists.
2206
2207
2208   4\b4.\b.3\b38\b8.\b.  H\bHo\bow\bw t\bth\bhe\be i\bin\bnf\bfo\bo a\ban\bnd\bd f\bfa\baq\bq c\bco\bom\bmm\bma\ban\bnd\bds\bs w\bwo\bor\brk\bk.\b.
2209
2210   The _\b-_\bi_\bn_\bf_\bo and _\b-_\bf_\ba_\bq commands simply reply with the contents of the
2211   D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/i\bin\bnf\bfo\bo and D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/f\bfa\baq\bq files. Edit these files directly or
2212   remotely (see ``How to remotely edit dir/text files'').  The
2213   D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/i\bin\bnf\bfo\bo file should start with a single line that is meaningful
2214   as is and describes the list. This will be used in later versions to
2215   allow automatic assembly of the global ``list-of-lists'' (see ``How to
2216   set up a global list address like majordomo@host or listserv@host'').
2217
2218
2219   4\b4.\b.3\b39\b9.\b.  H\bHo\bow\bw t\bth\bhe\be g\bgl\blo\bob\bba\bal\bl e\bez\bzm\bml\blm\bm l\bli\bis\bst\bt a\bad\bdd\bdr\bre\bes\bss\bs w\bwo\bor\brk\bks\bs.\b.
2220
2221   Sometimes, it is desirable to have a host- or user-wide address that
2222   can list available mailing lists.
2223
2224   ezmlm-request(1) can be used to set up a global address, such as
2225   ezmlm@host which allows the user to see and interact with a number of
2226   different mailing lists. This is especially useful when your users are
2227   used to other mailing list managers, such as ``majordomo'' or
2228   ``listproc''. ezmlm-request(1) is set up to answer requests to the
2229   address (see ``How to set up a global list address like majordomo@host
2230   or listserv@host'').  There, it interprets the first line of the
2231   message body as a command. It will reply directly to ``lists'' and
2232   ``which'' commands. All other commands will be used to construct
2233   messages to the respective lists. Where other mailing list managers
2234   use synonyms of ezmlm commands, ezmlm-request(1) recognizes these and
2235   translates them to the corresponding ezmlm commands.  ezmlm-request(1)
2236   will build commands also of unrecognized commands. Thus, if you create
2237   new commands for a list, ezmlm-request(1) will automatically support
2238   them.
2239
2240   If the user does not specify the complete list address, ezmlm-
2241   request(1) will attempt to complete the name. See the ezmlm-reject(1)
2242   man page for more info.
2243
2244
2245   4\b4.\b.4\b40\b0.\b.  H\bHo\bow\bw e\bez\bzm\bml\blm\bm-\b-c\bcr\bro\bon\bn w\bwo\bor\brk\bks\bs.\b.
2246
2247   If you are a user and have crond(8) access, if you do not need to get
2248   digests at specific times, or if you are a system administrator
2249   setting up lists, there is no reason for you to use ezmlm-cron(1). If
2250   you are a system administrator not allowing users crond(8) access or a
2251   user that needs digests at specific times, but without crond(8)
2252   access, read on.
2253
2254   ezmlm-cron(1) is a very restrictive interface to crond(8).  ezmlm-
2255   cron(1) can be used to create digest trigger messages. If a list is
2256   set up with a digest code (see ezmlm-make(1) and ezmlm-get(1)) ezmlm
2257   will generate a digest from the list joe-sos@host sent to to
2258   subscribers of joe-sos-digest@dighost when receiving a message to joe-
2259   sos-dig-code@host where ``code'' is the digest code. ezmlm-cron(1) can
2260   be used to generate such messages at regular intervals.  The file
2261   e\bez\bzc\bcr\bro\bon\bnr\brc\bc is set up by the sysadmin and controls what trigger messages
2262   specific users may set up via ezmlm-cron(1).
2263
2264   Usually, the ezcronrc of that use will have an entry like
2265   ``user:user-:host:10'' allowing ``user'' to create trigger messages
2266   for up to 10 lists with names starting with ``user-'' and on the host
2267   ``host''.
2268
2269   To list the ezcronrc line controlling your use of ezmlm-cron(1):
2270
2271
2272                % ezmlm-cron -c
2273
2274
2275
2276
2277   To list all entries that you've created:
2278
2279
2280                % ezmlm-cron -l
2281
2282
2283
2284
2285   To add an entry to trigger digests from list@host every morning at
2286   0230:
2287
2288
2289                % ezmlm-cron -t 02:30 -i24 list@host code
2290
2291
2292
2293
2294   A new entry for the same list overwrites an old entry.
2295
2296   To delete the entry above:
2297
2298
2299                % ezmlm-cron -d list@host
2300
2301
2302
2303
2304   or use ezmlm-cron to trigger messages at a different time:
2305
2306
2307                % ezmlm-cron -t 16:16 -i24 list@host code
2308
2309
2310
2311   4\b4.\b.4\b41\b1.\b.  H\bHo\bow\bw e\bez\bzm\bml\blm\bm-\b-m\bma\bak\bke\be w\bwo\bor\brk\bks\bs.\b.
2312
2313   ezmlm lists allow almost infinite customization. The component build,
2314   together with the qmail delivery mechanism makes it possible to create
2315   any variant of list function imaginable. However, this complexity
2316   makes it somewhat daunting to the average user wanting to set up a
2317   mailing list. ezmlm-make(1) allows automated list setup, while
2318   permitting a large amount of configurability.
2319
2320   At first glance, ezmlm-make(1) has many complicated options. However,
2321   these can be applied iteratively through the ezmlm-make(1) edit
2322   mechanism. Also, they are intended to be relatively complete so that
2323   execution of ezmlm-make(1) by e.g. a GUI can be used to safely set up
2324   and edit any list.
2325
2326   ezmlm-make(1) reads its command line arguments and switches, then
2327   creates the list directory. If the ``-e'' edit or ``-+'' sticky edit
2328   switches are not specified, ezmlm-make(1) will fail if the directory
2329   already exists. The directory argument must be an absolute path
2330   starting with a slash. The dot-qmail file argument, if specified, must
2331   also be absolute.
2332
2333   ezmlm-make(1) next reads ezmlmrc(5) located in the /\b/e\bet\btc\bc/\b/ directory
2334   with a default install. If not found, the file in the ezmlm binary
2335   directory will be used. The second ezmlm-make command line argument
2336   specify the root name of the .qmail files. If the ezmlm-make(1) ``-c''
2337   switch is used, ezmlm-make(1) will look in that directory for a
2338   .\b.e\bez\bzm\bml\blm\bmr\brc\bc file and use it instead. If this file does not exist, ezmlm-
2339   make(1) will print a warning and use the previously discussed
2340   ezmlmrc(5) files in the same order.  You can also use ``-C
2341   _\be_\bz_\bm_\bl_\bm_\br_\bc_\b._\ba_\bl_\bt'' to use _\be_\bz_\bm_\bl_\bm_\br_\bc_\b._\ba_\bl_\bt as the ezmlmrc(5) file. Again, ezmlm-
2342   make(1) will fall back to the others with a warning, if the specified
2343   ezmlmrc(5) file is not found.
2344
2345   When not run in ``-e edit'' or ``-+'' sticky edit modes, ezmlm-make(1)
2346   first creates the list directory.  It also as the last step of its
2347   action creates D\bDI\bIR\bR/\b/k\bke\bey\by containing the key used for cookie generation.
2348
2349   The ezmlmrc(5) file consists of a number of file names relative to the
2350   list directory, followed by conditional flags (see ezmlm-make(1) and
2351   ezmlmrc(5) for details). If all the conditional flags (controlled by
2352   the corresponding command line switches) are true, the lines that
2353   follow are entered into the named file. There are also tags to erase
2354   files.  Tags in the format <#X#> (where ``X'' is any number, except
2355   ``1'' and ``2'') are replaced by the corresponding ezmlm-make(1)
2356   switch argument. The ezmlm-make(1) command line arguments and the
2357   ezmlm binary path can be similarly substituted into the text. Thus,
2358   ezmlmrc(5) controls (within reason) the entire operation of ezmlm-
2359   make(1). ezmlmrc(5) is also set up so that no messages or file
2360   containing list state information are lost. Therefore, ezmlm-make(1)
2361   can be used to safely edit existing lists. The only caveat is that the
2362   list state is undefined while editing is in progress. Thus, it is
2363   advisable to prevent mail delivery by setting the ``sticky'' bit on
2364   the user's home directory while editing lists.
2365
2366   ezmlm-make(1) will create the file D\bDI\bIR\bR/\b/c\bco\bon\bnf\bfi\big\bg. This files saves all
2367   the flags that were set at the last execution of ezmlm-make, as well
2368   as all the switch and command line arguments. When editing a list,
2369   only ``DIR'' and the non-default letter switches need to be specified.
2370   Other command line arguments and the ``digit switch'' arguments are
2371   read from D\bDI\bIR\bR/\b/c\bco\bon\bnf\bfi\big\bg.  To remove a digit switch, simply use it with
2372   two single quotes as the argument.
2373
2374   You can also easily determine how a list was set up by looking at
2375   D\bDI\bIR\bR/\b/c\bco\bon\bnf\bfi\big\bg.
2376
2377   _\bN_\bo_\bt_\be_\b: D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/ files will be created but not overwritten when using
2378   the ``-e'' or ``-+'' edit switches. This is to preserve manual
2379   customizations. To overwrite these and reset the files to the content
2380   specified by e\bez\bzm\bml\blm\bmr\brc\bc, use ``-ee'' or ``-++''.
2381
2382   _\bN_\bo_\bt_\be_\b: As of ezmlm-idx-0.40 the ezmlm-make(1) ``-c'' and ``-C file''
2383   switches are sticky when using ``-+'' or ``-++'', so you do not need
2384   to specify them. This feature is disabled if ezmlm-make(1) is run as
2385   root.
2386
2387
2388   4\b4.\b.4\b42\b2.\b.  W\bWh\bha\bat\bt n\bna\bam\bme\bes\bs c\bca\ban\bn I\bI u\bus\bse\be f\bfo\bor\br m\bmy\by l\bli\bis\bst\bts\bs?\b?
2389
2390   Rather than restrict you to a single E-mail address (user@host), qmail
2391   in the default setup gives you control over an infinite number of
2392   addresses user-*@host. Of course, you (normally) have no way of
2393   controlling elsewhere@host since that could lead to overlap between
2394   users' ``e-mail address space''. As a consequence, all you mailing
2395   lists have to be named user-xx@host where ``user'' is your user name
2396   and ``xx'' is anything. You cannot create e.g. mylist@host, only user-
2397   mylist@host. To create the list user-list@host do:
2398
2399
2400                % ezmlm-make ~/list ~/.qmail-list user-list host
2401
2402
2403
2404
2405   Notice that ``user'' is n\bno\bot\bt part of the .\b.q\bqm\bma\bai\bil\bl file name.
2406
2407   There are two way to create lists with names not starting with your
2408   user name: First, qmail can be set up so that you control a virtual
2409   domain (see below).  Second, the system administrator can set up lists
2410   with arbitrary names within the ~\b~a\bal\bli\bia\bas\bs/\b/ directory.
2411
2412
2413   4\b4.\b.4\b43\b3.\b.  L\bLi\bis\bst\bts\bs i\bin\bn v\bvi\bir\brt\btu\bua\bal\bl d\bdo\bom\bma\bai\bin\bns\bs
2414
2415   If you use qmail>=1.02 and ezmlm-idx>=0.32, lists under virtual
2416   domains work just like other lists and require no adjustments. You can
2417   choose any local name for the list and the ezmlm-make(1) argument
2418   ``local'' is that name; ``host'' is the name of the virtual domain.
2419
2420
2421   4\b4.\b.4\b44\b4.\b.  H\bHo\bow\bw d\bdo\bo I\bI m\bma\bak\bke\be c\bcu\bus\bst\bto\bom\bmi\biz\bza\bat\bti\bio\bon\bn s\bsi\bim\bmp\bpl\ble\be f\bfo\bor\br m\bme\be/\b/m\bmy\by u\bus\bse\ber\brs\bs?\b?
2422
2423   All non-default switches, ezmlm-issubn(1) setups, etc, can be made
2424   standard for new lists by customizing the ezmlm-make(1) configuration
2425   file named ``e\bez\bzm\bml\blm\bmr\brc\bc''.  A default e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) is installed in the
2426   ezmlm binary directory. If installed, a system-wide customized ezmlmrc
2427   file in /\b/e\bet\btc\bc/\b/e\bez\bzm\bml\blm\bmr\brc\bc (or symlinked from there) overrides this.
2428   Installing a ~\b~/\b/.\b.e\bez\bzm\bml\blm\bmr\brc\bc file in a user d\bdo\bot\btd\bdi\bir\br and using the ezmlm-
2429   make(1) ``-c'' switch allows further per user customization (see
2430   ``Customizing ezmlm-make operation'').
2431
2432
2433   5\b5.\b.  e\bez\bzm\bml\blm\bm s\bsu\bup\bpp\bpo\bor\brt\bt f\bfo\bor\br S\bSQ\bQL\bL d\bda\bat\bta\bab\bba\bas\bse\bes\bs.\b.
2434
2435
2436   5\b5.\b.1\b1.\b.  W\bWh\bhy\by u\bus\bse\be a\ban\bn S\bSQ\bQL\bL d\bda\bat\bta\bab\bba\bas\bse\be w\bwi\bit\bth\bh e\bez\bzm\bml\blm\bm?\b?
2437
2438   The main advantages are that you are using an address database system
2439   that can easily be accessed from any number of other programs via
2440   ODBC, perl, java, PHP, ... You can easily hook up ezmlm with your
2441   customer database, etc.  ezmlm programs compiled with SQL support (and
2442   when available also those compiled with support for other SQL servers)
2443   are entirely backwards compatible. You can mix SQL dbs with normal
2444   ezmlm dbs, and convert lists between them.
2445
2446
2447   5\b5.\b.2\b2.\b.  W\bWh\bhy\by n\bno\bot\bt t\bto\bo u\bus\bse\be a\ban\bn S\bSQ\bQL\bL d\bda\bat\bta\bab\bba\bas\bse\be w\bwi\bit\bth\bh e\bez\bzm\bml\blm\bm.\b.
2448
2449   The main disadvantages of the SQL version are that you need to be
2450   familiar with the SQL server, the binaries are quite a bit larger, and
2451   you are trusting your addresses to a large database program, rather
2452   than a small and easily audited set of ezmlm programs. Also, the SQL
2453   server becomes a single point of failure.
2454
2455   Ezmlm with SQL support continues to rely on qmail stability. If
2456   connection fails, ezmlm aborts with a temporary error causing
2457   redelivery at a later time point.
2458
2459
2460   5\b5.\b.3\b3.\b.  T\bTa\bab\bbl\ble\bes\bs u\bus\bse\bed\bd f\bfo\bor\br (\b(M\bMy\by)\b)S\bSQ\bQL\bL s\bsu\bup\bpp\bpo\bor\brt\bt.\b.
2461
2462   The basic philosophy is that the database can be on any host (if you
2463   use SENDER restrictions, connectivity to the main host is more
2464   important than to the sublists), and you choose the database and
2465   ``table root'' names. The default database is ``ezmlm'' and the
2466   default table root is ``list''. Each list has a separate table root.
2467   Any number of lists can share a database.
2468
2469   The main list address table is named with the table root only, others
2470   have that name with various suffixes. In the following ``list'' is
2471   used as the table root.
2472
2473
2474   5\b5.\b.3\b3.\b.1\b1.\b.  A\bAd\bdd\bdr\bre\bes\bss\bs t\bta\bab\bbl\ble\bes\bs.\b.
2475
2476
2477      l\bli\bis\bst\bt
2478         List subscriber addresses.
2479
2480      l\bli\bis\bst\bt_\b_d\bdi\big\bge\bes\bst\bt
2481         Digest list subscriber addresses.
2482
2483      l\bli\bis\bst\bt_\b_a\bal\bll\blo\bow\bw
2484         List subscriber alias addresses. Used only if SENDER
2485         restrictions are used for the list. This is configured in the
2486         default SQL list setup, but a local (ezmlm-style non-SQL)
2487         database could also be used.
2488
2489      l\bli\bis\bst\bt_\b_d\bde\ben\bny\by
2490         List deny addresses. This table is created, but the default
2491         configuration, if it uses the ``deny'' addresses at all, will do
2492         so with a local database.
2493
2494      l\bli\bis\bst\bt_\b_m\bmo\bod\bd
2495         Moderator addresses. Created for completeness, but not used in
2496         the default configuration. If moderators are used, the addresses
2497         are stored in a local database.
2498
2499
2500   5\b5.\b.3\b3.\b.2\b2.\b.  S\bSu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\br l\blo\bog\bg t\bta\bab\bbl\ble\bes\bs.\b.
2501
2502   For each of the above tables, there is a ``*_slog'' table that
2503   contains one row per transaction against the corresponding address
2504   table. The entries contain a time stamp, the subscription address; a
2505   direction indicator (``-'' for removals, ``+'' for additions); a type
2506   indicator (blank for ezmlm-manage, ``m'' for ``manual'', ``p'' for
2507   ``probe, i.e. bounce handling; and the subscriber ``From:'' line
2508   contents (only additions and only when made by ezmlm-manage or by
2509   ``ezmlm-sub(1) -n'').
2510
2511
2512   5\b5.\b.3\b3.\b.3\b3.\b.  M\bMe\bes\bss\bsa\bag\bge\be l\blo\bog\bgg\bgi\bin\bng\bg t\bta\bab\bbl\ble\bes\bs.\b.
2513
2514   For both the list and the digest list, there are a pair of tables that
2515   log messages:
2516
2517
2518      l\bli\bis\bst\bt_\b_c\bco\boo\bok\bki\bie\be
2519         The main list stores the message number and a pseudo-random
2520         cookie in this table when it processes the message. The cookie
2521         is derived from the secret D\bDI\bIR\bR/\b/k\bke\bey\by, the message sender and the
2522         message number. Thus, it is non-repeating and virtually
2523         impossible to guess beforehand. Sublists will check that the
2524         cookie sent with the message is the same as the one received
2525         with the message.
2526
2527         The digest list is created similarly, except that it is ezmlm-
2528         get(1) that originates the message and creates the cookie.  This
2529         is done in ``list_digest_cookie''.
2530
2531
2532      l\bli\bis\bst\bt_\b_m\bml\blo\bog\bg
2533         Both the main list and the sublists make entries in this table.
2534         Each entry consists of a time stamp, a message number, a list
2535         number, and a code. The code is 0 for message arrival, 1 for
2536         ``finished processing'', 2 for ``receipt received'' and -1 for
2537         bounce. The lists will refuse to process messages that do not
2538         have the correct cookie, or if the message already has an entry
2539         with a code of greater than 0. To inject a message at the
2540         sublist, an attacker would have to inject a message with the
2541         correct code before the list has processed the ``real'' message,
2542         or subvert the SQL server. In practice, this is very hard to do,
2543         unless the attacker has broken security at the database server
2544         or a sublist. This authentication mechanism is intended to make
2545         it safe to sublist moderated lists. It also blocks any message
2546         duplication between main list and sublist from being propagated
2547         to the subscribers.
2548
2549         The codes 2 for ``receipt received'' and -1 for bounce are
2550         entered by ezmlm-receipt(1) at the main list. This program is
2551         configured instead of ezmlm-return(1) if the main list was set
2552         up with ``ezmlm-make -w6''.  ezmlm-receipt(1) checks the cookie
2553         of messages addresses to mainlocal-return-receipt@mainhost and
2554         if correct enters the ``receipt received'' code. This address is
2555         normally in the subscriber database with a hash of 98, so that
2556         each list sends a message to the address _\ba_\bf_\bt_\be_\br all subscriber
2557         addresses.
2558
2559         Bounces of sublist messages should not lead to removal of the
2560         sublist from the database. ezmlm-receipt(1) will instead log the
2561         bounce to the ``list_mlog'' table. It will also store up to 50
2562         bounces in the bounce directory. This helps error detection and
2563         diagnosis. After the first 50 bounces, no more bounces are
2564         stored, until you manually remove the old ones. This is to
2565         prevent filling up your hard disk in case a configuration error
2566         causes a deluge of bounces.
2567
2568         The digest list is treated in the same manner. Here, the tables
2569         is ``list_digest_mlog'' and the feedback address is mainlocal-
2570         digest-return-receipt@mainhost.
2571
2572
2573
2574
2575   5\b5.\b.4\b4.\b.  H\bHo\bow\bw t\bto\bo s\bse\bet\bt u\bup\bp a\ba s\bsi\bim\bmp\bpl\ble\be l\bli\bis\bst\bt w\bwi\bit\bth\bh S\bSQ\bQL\bL s\bsu\bup\bpp\bpo\bor\brt\bt.\b.
2576
2577   To use SQL database support, you have to compile the programs with SQL
2578   support. Currently, only MySQL support is available. See I\bIN\bNS\bST\bTA\bAL\bLL\bL.\b.i\bid\bdx\bx
2579   in the package on how to do this.
2580
2581   The programs with SQL support will work exactly like the normal
2582   programs for standard lists. However, if the file s\bsq\bql\bl exists in the
2583   basedir, it turns on the SQL mode and it is expected to contain SQL
2584   server connect info in the format
2585
2586        ``host:port:user:password:database:table''
2587
2588
2589   Here, ``Host'' is the SQL database server host, ``port'' can be left
2590   blank to use the default port, ``user'' and  ``password'' are connec-
2591   tion credentials for a user you need to define and grant access to the
2592   database. ``Table'' is the name of the address table (``list'' in the
2593   examples above and ``list_digest'' for the corresponding digest list).
2594   For list clusters, ``:sublist'' is suffixed to this info and it is the
2595   name/address of the sublist.
2596
2597   For each address database, you also need to create the address table
2598   as well as the ``*_slog'' subscription log table. In addition, you
2599   should create a ``*_cookie'' and ``*_mlog'' table for message logging.
2600   This is all it takes to start using an SQL database.
2601
2602
2603   5\b5.\b.4\b4.\b.1\b1.\b.  H\bHe\bel\blp\bpe\ber\br p\bpr\bro\bog\bgr\bra\bam\bms\bs f\bfo\bor\br S\bSQ\bQL\bL-\b-e\ben\bna\bab\bbl\ble\bed\bd l\bli\bis\bst\bts\bs.\b.
2604
2605   Two programs are supplied in the distribution to make it easier to
2606   create the database user and tables. Also, ezmlm-make(1) has support
2607   for setting up SQL-enabled lists.
2608
2609
2610      C\bCr\bre\bea\bat\bti\bin\bng\bg t\bth\bhe\be t\bta\bab\bbl\ble\bes\bs
2611         ezmlm-mktab(1) will create the necessary tables:
2612
2613
2614                   % ezmlm-mktab -d table
2615
2616
2617
2618
2619      Pipe this into the SQL client with the appropriate administrator
2620      credentials needed to create tables (see MySQL documentation, e.g.
2621      <http://www.tcx.se/>).
2622
2623      For most lists, the only addresses that are stored in the SQL
2624      database are the subscribers of list and digest, and the ``allow''
2625      aliases. It is NOT normally advisable to store moderator addresses
2626      there, since they are needed only at the main list and secrecy is
2627      more important. ``Deny'' addresses are few and again only needed at
2628      the main list. ``Allow'' are put in the SQL database when using the
2629      default ezmlmrc file only to make all relevant addresses
2630      manipulatable via the SQL server. The other tables are created, in
2631      case they are  wanted (the cost for having them as empty table is
2632      zero). The basedir/sql file is the decision point. If it exists, an
2633      SQL table is used; if not a local ezmlm db is used.
2634
2635
2636      C\bCr\bre\bea\bat\bti\bin\bng\bg a\ba u\bus\bse\ber\br e\ben\bnt\btr\bry\by
2637         Create a user that has full access to the database from the list
2638         host. How to do this depends on the RDBMS.
2639
2640
2641      C\bCr\bre\bea\bat\bti\bin\bng\bg t\bth\bhe\be l\bli\bis\bst\bt
2642         ezmlm-make(1) supports SQL-enabled lists with the ``-6'' switch:
2643
2644
2645                   % ezmlm-make other_switches -6 'host:port:user:pw:db:table' \
2646                           dir dot local host
2647
2648
2649
2650
2651      Will create an SQL-enabled list that uses the SQL server for the
2652      main list subscribers, digest list subscribers (if configured) and
2653      ``allow'' poster alias addresses (if configured).
2654
2655
2656   5\b5.\b.5\b5.\b.  M\bMa\ban\bnu\bua\bal\bll\bly\by m\bma\ban\bni\bip\bpu\bul\bla\bat\bti\bin\bng\bg t\bth\bhe\be s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs o\bof\bf a\ba S\bSQ\bQL\bL-\b-e\ben\bna\bab\bbl\ble\bed\bd l\bli\bis\bst\bt.\b.
2657
2658   ezmlm-sub(1), ezmlm-unsub(1), and ezmlm-list(1) work as you would
2659   expect also with a SQL-enabled list. ezmlm-list(1) may be minimally
2660   slower (depending on network speed) if the SQL server is not local.
2661   ezmlm-sub(1) and ezmlm-unsub(1) will be faster, but this is noticeable
2662   only with very large subscriber lists and addition/removal of large
2663   numbers of addresses (more than several thousands).
2664
2665
2666   5\b5.\b.6\b6.\b.  C\bCo\bon\bnv\bve\ber\brt\bti\bin\bng\bg t\bto\bo a\ban\bnd\bd f\bfr\bro\bom\bm a\ban\bnd\bd S\bSQ\bQL\bL d\bda\bat\bta\bab\bba\bas\bse\be.\b.
2667
2668   Just like other programs, ezmlm-list(1), ezmlm-sub(1), and ezmlm-
2669   unsub(1) will work with normal address databases in the absence of
2670   D\bDI\bIR\bR/\b/s\bsq\bql\bl.  However, they also have a ``-M'' switch to force this
2671   behavior even in the presence of D\bDI\bIR\bR/\b/s\bsq\bql\bl. This is used to convert an
2672   address database from the standard type to the SQL type:
2673
2674
2675                % ezmlm-list -M dir | xargs ezmlm-sub dir
2676
2677
2678
2679
2680   or from the SQL version to the standard type:
2681
2682
2683                % ezmlm-list dir | xargs ezmlm-sub -M dir
2684
2685
2686
2687
2688   To synchronize the two, remove one and then update it with ezmlm-
2689   sub(1) from the other. Alternatively, sort the ezmlm-list(1) output
2690   for both, use diff and sed/awk to get separate files of the differ-
2691   ences, and use ezmlm-sub(1) and ezmlm-unsub(1) to apply the differ-
2692   ences to the appropriate database.
2693
2694   This type of conversion can serve as a convenient means to convert a
2695   list from one type to another, to back up databases, and to move
2696   subscriber addresses from a standard list to a SQL table for other
2697   purposes, or from a SQL database to a standard mailing list (you may
2698   need to use addresses from a SQL table, without wanting your lists to
2699   be dependent on an SQL server for day to day operation).
2700
2701   _\bN_\bo_\bt_\be_\b: This inter-conversion requires the D\bDI\bIR\bR/\b/s\bsq\bql\bl file. If you do not
2702   run the list against an SQL server, you need to disable deliveries
2703   before you temporarily create this file. Otherwise, the list will run
2704   against the SQL database during the time D\bDI\bIR\bR/\b/s\bsq\bql\bl exists.
2705
2706
2707   5\b5.\b.7\b7.\b.  O\bOp\bpt\bti\bim\bmi\biz\bzi\bin\bng\bg M\bMy\byS\bSQ\bQL\bL f\bfo\bor\br e\bez\bzm\bml\blm\bm.\b.
2708
2709
2710   5\b5.\b.7\b7.\b.1\b1.\b.  A\bAd\bdd\bdr\bre\bes\bss\bs S\bSE\bEL\bLE\bEC\bCT\bTs\bs,\b, a\bad\bdd\bdi\bit\bti\bio\bon\bns\bs,\b, r\bre\bem\bmo\bov\bva\bal\bls\bs.\b.
2711
2712   ezmlm-idx-0.40 simplifies the SQL support and queries over ezmlm-
2713   idx-0.32 at the cost of dropping distributed sublist support. We have
2714   figured out a simpler way to support the latter, which hopefully will
2715   be incorporated into ezmlm in the future (written under contract).
2716
2717   With the simplification, the queries are very straight forward, and
2718   tuning is indicated only under extreme circumstances (very many very
2719   large and busy lists or constant addition/removal of many addresses).
2720
2721
2722   5\b5.\b.8\b8.\b.  M\bMa\bai\bin\bnt\bte\ben\bna\ban\bnc\bce\be o\bof\bf t\bth\bhe\be M\bMy\byS\bSQ\bQL\bL d\bda\bat\bta\bab\bba\bas\bse\be.\b.
2723
2724   Weekly to monthly error checks on MySQL tables is recommended. Best is
2725   to use:
2726
2727
2728                # isamchk -s -O readbuffer=2M */*.ISM
2729
2730
2731
2732
2733   Other options allow automatic correction of errors, but are dangerous
2734   if tables are accessed while isamchk is running.
2735
2736   Other isamchk options allow recovery of space after frequent
2737   insert/delete of addresses (can also be done with ``OPTIMIZE TABLE''),
2738   key optimization, etc.  See the MySQL documentation (
2739   <http://www.tcx.se>) for more info.
2740
2741
2742   6\b6.\b.  P\bPo\bos\bss\bsi\bib\bbl\ble\be e\ber\brr\bro\bor\br c\bco\bon\bnd\bdi\bit\bti\bio\bon\bns\bs i\bin\bn e\bez\bzm\bml\blm\bm l\bli\bis\bst\bts\bs.\b.
2743
2744
2745   6\b6.\b.1\b1.\b.  W\bWh\bha\bat\bt d\bdo\bo I\bI d\bdo\bo i\bif\bf e\bez\bzm\bml\blm\bm d\bdo\boe\bes\bsn\bn'\b't\bt w\bwo\bor\brk\bk?\b?
2746
2747   Try to determine where the problem occurs and how to reproduce it:
2748
2749   +\bo  Do messages to ezmlm return an error message to the sender or not?
2750
2751   +\bo  What is/are the error message(s)?
2752
2753   +\bo  What does ezmlm log into the mail log?
2754
2755   +\bo  Are you using a setup with virtual domains, and qmail<1.02 or
2756      ezmlm-idx<0.31? If so, have you adjusted D\bDI\bIR\bR/\b/i\bin\bnl\blo\boc\bca\bal\bl (see
2757      ``Adapting ezmlm-make for virtual domains'')?
2758
2759   +\bo  Are posts sent out to the subscribers?
2760
2761   +\bo  Are there subscribers?
2762
2763
2764        %  ezmlm-list DIR
2765
2766
2767
2768
2769   +\bo  Are there moderators?
2770
2771
2772
2773   % ezmlm-list moddir
2774
2775
2776
2777
2778   where ``moddir'' is the contents of D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be (for remote admin
2779   lists), of D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb (for subscription moderated lists) or D\bDI\bIR\bR/\b/m\bmo\bod\bd-\b-
2780   p\bpo\bos\bst\bt (for message moderation), if and only if the contents start with
2781   a forward slash. The default in all cases is D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/. If both
2782   D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb and D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be contain directory names, the one in D\bDI\bIR\bR/\b/m\bmo\bod\bd-\b-
2783   s\bsu\bub\bb is used for both subscription moderation and remote admin.
2784
2785   +\bo  Are the ownerships of all files correct, i.e. read/writable for the
2786      owner?
2787
2788
2789        % chown -R user DIR
2790
2791
2792
2793
2794   For lists under alias:
2795
2796
2797        % chown -R alias DIR
2798
2799
2800
2801
2802   If you use custom moderator databases, those directories and all their
2803   contents must also be readable for the user under which the list oper-
2804   ates (i.e. the user qmail changes to during the delivery).
2805
2806   +\bo  Read the qmail log and capture relevant parts.
2807
2808   +\bo  Did you customize the package at all? If so, try the default
2809      settings which are known to work.
2810
2811   +\bo  Did you customize e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b)? Try to use the default copy (skip the
2812      -c switch).
2813
2814   +\bo  Did your customization of .\b.e\bez\bzm\bml\blm\bmr\brc\bc fail to have an effect?
2815      Remember to use the -c switch. The .\b.e\bez\bzm\bml\blm\bmr\brc\bc file used is the one in
2816      ``dotdir'', i.e. the directory where the .\b.q\bqm\bma\bai\bil\bl files go, usually,
2817      but NOT necessarily, the one in your home directory.
2818
2819   +\bo  Make sure you followed the instructions in man pages and other
2820      documentation. Most of the problems are due to not closely
2821      following the instructions. Try again with a new test list.
2822
2823   +\bo  Make sure to take notes of how the list was created (which flags
2824      you used, etc.).
2825
2826   +\bo  use ezmlm-check(1) (see ``Using ezmlm-check to find setup
2827      errors'').  and compare the variables identified by ezmlm-check to
2828      D\bDI\bIR\bR/\b/i\bin\bnl\blo\boc\bca\bal\bl, etc. If you don't get a reply from ezmlm-check, then
2829      message was not delivered properly. Check your qmail setup.
2830
2831   +\bo  Try to find your problem or a question/item close to it in the FAQ.
2832
2833   +\bo  If this didn't resolve the problem, post to the ezmlm mailing list,
2834      describing how you set up the list, your general setup (especially
2835      the relevant control files for a virtual domain), what works and
2836      what doesn't and what results from different actions (log entries,
2837      error messages).
2838
2839   If you have solved a problem that you believe might be more general,
2840   please send a description of the problem and its solution to the
2841   authors, ideally as a FAQ item.
2842
2843
2844   6\b6.\b.2\b2.\b.  H\bHo\bow\bw d\bdo\bo I\bI r\bre\bep\bpo\bor\brt\bt e\bez\bzm\bml\blm\bm b\bbu\bug\bgs\bs?\b?
2845
2846   If you have found a bug in the ezmlm-idx additions, please send a bug
2847   report by E-mail to lindberg@id.wustl.edu. Describe the error, your
2848   setup, and your system in sufficient detail so that it can be
2849   reproduced by third parties. Include relevant sections of mail log,
2850   and information about any error messages returned. If you ran into a
2851   problem and resolved it on your own, include a fix as a context diff
2852   against the distribution.
2853
2854   If you have found a bug in ezmlm proper (unlikely), please send a
2855   similar bug report to djb@cr.yp.to or djb-ezmlm@cr.yp.to. If you're
2856   unsure where the bug is, you can start with lindberg@id.wustl.edu.  If
2857   you have problems and questions, please refer to the documentation,
2858   then to mailing list archives, then E-mail the ezmlm mailing list or
2859   the authors.
2860
2861
2862   6\b6.\b.3\b3.\b.  W\bWh\bhe\ber\bre\be d\bdo\bo I\bI s\bse\ben\bnd\bd s\bsu\bug\bgg\bge\bes\bst\bti\bio\bon\bns\bs f\bfo\bor\br e\bez\bzm\bml\blm\bm-\b-i\bid\bdx\bx i\bim\bmp\bpr\bro\bov\bve\bem\bme\ben\bnt\bts\bs?\b?
2863
2864   E-mail to lindberg@id.wustl.edu, ideally with a context diff.  For
2865   ezmlm proper, ezmlm@list.cr.yp.to may be better.
2866
2867
2868   6\b6.\b.4\b4.\b.  U\bUs\bsi\bin\bng\bg e\bez\bzm\bml\blm\bm-\b-t\bte\bes\bst\bt t\bto\bo c\bch\bhe\bec\bck\bk t\bth\bhe\be e\bez\bzm\bml\blm\bm(\b(-\b-i\bid\bdx\bx)\b) p\bpr\bro\bog\bgr\bra\bam\bms\bs.\b.
2869
2870   ezmlm-test(1) tests the different ezmlm(-idx) programs. It is useful
2871   to test your installation. If this program succeeds, it is not likely
2872   that you have problems due to platform-specific ezmlm(-idx) bugs. If
2873   ezmlm-test(1) fails, this is the place to start. The program is good
2874   at finding problems but not that easy to use to determine the cause.
2875   Start by finding the place where it fails, recreate the conditions
2876   (add ``exit 0'' just before the point of failure and set the
2877   environment variables as set by the script), then try to run the
2878   command manually. ~\b~/\b/_\b__\b_T\bTS\bST\bTD\bDI\bIR\bR_\b__\b_e\ber\brr\br may contain a relevant error
2879   message.  For further help, E-mail lindberg@id.wustl.edu.
2880
2881
2882   6\b6.\b.5\b5.\b.  U\bUs\bsi\bin\bng\bg e\bez\bzm\bml\blm\bm-\b-c\bch\bhe\bec\bck\bk t\bto\bo f\bfi\bin\bnd\bd s\bse\bet\btu\bup\bp e\ber\brr\bro\bor\brs\bs.\b.
2883
2884   ezmlm-check(1) is included in the ezmlm-idx distribution. ezmlm-
2885   check(1) is an evolving shell script which when put into a .\b.q\bqm\bma\bai\bil\bl file
2886   of a mailing list will return information about the environment
2887   variables passed by qmail to ezmlm as well as the list setup. It also
2888   attempts to check for common error conditions, such as HOST and
2889   D\bDI\bIR\bR/\b/i\bin\bnh\bho\bos\bst\bt mismatch, missing files, etc. To use ezmlm-check(1), place
2890   a line:
2891
2892
2893        |/usr/local/bin/ezmlm/ezmlm-check 'DIR'
2894
2895
2896
2897
2898   where ``DIR'' is the list directory, as the first line in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br
2899   (for mail to list), D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br (for mail to list-subscribe, list-
2900   help, etc), D\bDI\bIR\bR/\b/m\bmo\bod\bde\ber\bra\bat\bto\bor\br (for mail to list-accept, list-reject).
2901   ezmlm-check(1) will send its output to SENDER. The rest of the .\b.q\bqm\bma\bai\bil\bl
2902   file will be ignored.  If you use a non-standard ezmlm binary direc-
2903   tory, change the ezmlm-check(1) path accordingly.
2904
2905   ezmlm-check(1) in combination with mail logs and ezmlm error messages
2906   should make it easy to diagnose setup problems. When done, don't
2907   forget to remove the ezmlm-check(1) line. It is not security-proofed
2908   against SENDER manipulation and with it in place, the list won't work.
2909
2910   ezmlm-check(1) does not check all aspects of list generation, but
2911   catches all common errors when lists are created with ezmlm-make(1),
2912   an many other errors as well. The ezmlm-check(1) reply is also very
2913   valuable for support via E-mail.
2914
2915
2916   6\b6.\b.6\b6.\b.  P\bPo\bos\bst\bts\bs a\bar\bre\be r\bre\bej\bje\bec\bct\bte\bed\bd:\b: S\bSo\bor\brr\bry\by,\b, n\bno\bo m\bma\bai\bil\blb\bbo\box\bx h\bhe\ber\bre\be b\bby\by t\bth\bha\bat\bt n\bna\bam\bme\be
2917   (\b(#\b#5\b5.\b.1\b1.\b.1\b1)\b).\b.
2918
2919   qmail tried to deliver the mail, but there is no mailbox with that
2920   name.  ezmlm-make(1) was used with incorrect arguments, often in
2921   conjunction with a virtual domain setup. If the list is in a virtual
2922   domain, the ``host'' argument for ezmlm-make(1) should be the virtual
2923   domain, not the real host name.  See ``What names can I use for my
2924   mailing lists?''  and ``Lists in virtual domains'' for more info.
2925
2926   Other possibilities are that your qmail setup is incorrect.  For a
2927   virtual domain controlled by user ``virt'', create ~\b~v\bvi\bir\brt\bt/\b/.\b.q\bqm\bma\bai\bil\bl-\b-t\bte\bes\bst\bt
2928   containing ``|/bin/echo "It worked"; exit 100''. Now send mail to
2929   test@virtual.dom. If delivery works, you should get an error message
2930   ``It worked'' back. If you get anything else, you need to adjust your
2931   qmail setup. Similarly, for a normal user, create ~\b~u\bus\bse\ber\br/\b/.\b.q\bqm\bma\bai\bil\bl-\b-t\bte\bes\bst\bt
2932   and mail user-test@host to test that you control extension addresses.
2933   If this fails, contact your system administrator or adjust your qmail
2934   setup.
2935
2936   If these tests worked, but your list still does not, you most likely
2937   supplied an incorrect ``dot'' argument for ezmlm-manage(1). It should
2938   be ~\b~v\bvi\bir\brt\bt/\b/.\b.q\bqm\bma\bai\bil\bl-\b-t\bte\bes\bst\bt for the list test@virtual.dom and ~\b~u\bus\bse\ber\br/\b/.\b.q\bqm\bma\bai\bil\bl-\b-
2939   t\bte\bes\bst\bt for the list user-test@host.
2940
2941
2942   6\b6.\b.7\b7.\b.  P\bPo\bos\bst\bt a\bar\bre\be n\bno\bot\bt s\bse\ben\bnt\bt t\bto\bo s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs.\b.
2943
2944
2945      N\bNo\bon\bn-\b-m\bmo\bod\bde\ber\bra\bat\bte\bed\bd l\bli\bis\bst\bts\bs
2946
2947         1. Read the qmail log. Is your message delivered to the list?
2948            You can also:
2949
2950
2951
2952              % cat DIR/num
2953
2954
2955
2956
2957         2. Send a message to the list.
2958
2959         3. See if it was received/processed:
2960
2961
2962
2963              % cat DIR/num
2964
2965
2966
2967
2968         If the number was incremented, the message went to the list, and
2969         was successfully sent out in the opinion of ezmlm-send(1)
2970         (ezmlm-send(1) doesn't mind if there are no subscribers, so
2971         check that there really are both moderators and subscribers.
2972         These are added with ezmlm-sub(1). You can not just put
2973         addresses into a text file!).
2974
2975
2976      M\bMe\bes\bss\bsa\bag\bge\be m\bmo\bod\bde\ber\bra\bat\bte\bed\bd l\bli\bis\bst\bts\bs
2977
2978         1. Check number of queued messages awaiting moderation:
2979
2980
2981
2982              % ls -l DIR/mod/pending
2983
2984
2985
2986
2987         2. Send a message to the list.
2988
2989         3. Check if another message was added to the queue:
2990
2991
2992
2993              % ls -l DIR/mod/pending
2994
2995
2996
2997
2998         A new file should have appeared. If this file has the owner exe-
2999         cute bit set, it was successfully processed by ezmlm-store(1).
3000         If this is true, but no moderation request was sent, then con-
3001         tinue with ``Messages posted to the list do not result in moder-
3002         ation requests''. If there is no new file, the message did not
3003         reach ezmlm-store(1), or ezmlm-store(1) failed early. In both
3004         cases, the mail log should tell you more.
3005
3006         If the message is there, but the owner execute bit is not set,
3007         ezmlm-store(1) failed.  Check the mail log. Possible reasons
3008         include a failure to find the ezmlm-send(1) binary or D\bDI\bIR\bR/\b/m\bms\bsg\bg-\b-
3009         s\bsi\biz\bze\be is specified and the message body size is outside of the
3010         allowed range (again, this is accompanied by an error message
3011         and mail log entry).
3012
3013
3014      G\bGe\ben\bne\ber\bra\bal\bl
3015
3016         1. If the message was not received/processed, there should be an
3017            error message in the mail log.
3018
3019         2. Fix temporary and permanent errors with the help of qmail and
3020            ezmlm documentation.
3021
3022         3. If there is no log entry at all, then the mail went to
3023            another host. Check your qmail setup.
3024
3025         4. If mail was delivered to the list, but not forwarded to the
3026            subscribers (check the qmail log - there should be an entry
3027            for a new delivery to the list), t\bth\bhe\be m\bmo\bos\bst\bt c\bco\bom\bmm\bmo\bon\bn e\ber\brr\bro\bor\br i\bis\bs
3028            t\bth\bha\bat\bt t\bth\bhe\ber\bre\be a\bar\bre\be n\bno\bo s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs.\b.  In this case, ezmlm-send(1)
3029            sends a message from list-help@host, and logs success, but no
3030            recipients are logged. To qmail, it is perfectly acceptable
3031            to send a message without recipients, so no error message is
3032            logged.
3033
3034         5. Check subscribers:
3035
3036
3037                 % ezmlm-list DIR
3038
3039
3040
3041
3042         6. Assure that ownerships are correct on the list directories:
3043
3044
3045                      % chown -R user DIR
3046
3047
3048
3049
3050         For lists owned by the ``alias'' user (in ~alias):
3051
3052
3053                      % chown -R alias DIR
3054
3055
3056
3057
3058         7. Most other problems should be easily corrected with the help
3059            of the qmail log.
3060
3061
3062   6\b6.\b.8\b8.\b.  e\bez\bzm\bml\blm\bm-\b-m\bma\bak\bke\be f\bfa\bai\bil\bls\bs:\b: u\bus\bsa\bag\bge\be:\b: e\bez\bzm\bml\blm\bm-\b-m\bma\bak\bke\be .\b..\b..\b.
3063
3064   The command line you specified is incomplete. Usually, a command line
3065   argument has been omitted or a switch was placed after the other
3066   arguments rather than before.
3067
3068   The same error is issued when you attempt to invoke ezmlm-make(1) with
3069   only the ``DIR'' argument without using the ``-e'' or ``-+'' switch.
3070   Other command line arguments can be omitted only when editing lists
3071   created or previously edited with ezmlm-make from ezmlm-idx>=0.23.
3072
3073   Some special situations use ezmlm-make(1) as a general script
3074   processor, e.g.  the setting up of sublists with ezmlmsubrc(5) and of
3075   a global interface with ezmlmglrc(5). Here, there is no ``memory'' so
3076   all arguments have to be specified, even when using the ``-e'' or
3077   ``-+'' switches.
3078
3079
3080   6\b6.\b.9\b9.\b.  e\bez\bzm\bml\blm\bm-\b-m\bma\bak\bke\be f\bfa\bai\bil\bls\bs:\b: U\bUn\bna\bab\bbl\ble\be t\bto\bo c\bcr\bre\bea\bat\bte\be .\b..\b..\b.
3081
3082   This error occurs when ezmlm-make is used to set up a list, and it
3083   tries to create a directory or a .\b.q\bqm\bma\bai\bil\bl-\b-l\bli\bis\bst\bt link that already exists.
3084   Usually, this occurs because the list already exists. If you are
3085   creating a new list, first erase remnants of any old test lists by
3086   deleting the list directory and the link files: _\bN_\bO_\bT_\bE_\b: _\bD_\bO _\bN_\bO_\bT _\bU_\bS_\bE _\bT_\bH_\bE_\bS_\bE
3087   _\bC_\bO_\bM_\bM_\bA_\bN_\bD_\bS _\bW_\bI_\bT_\bH_\bO_\bU_\bT _\bU_\bN_\bD_\bE_\bR_\bS_\bT_\bA_\bN_\bD_\bI_\bN_\bG _\bT_\bH_\bE_\bM_\b.  You may erase more than you
3088   intended!
3089
3090
3091
3092        % rm -rf DIR
3093        % rm -rf ~/.qmail-list ~/.qmail-list-*
3094
3095
3096
3097
3098   If you want to save some files (such as in D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/), make backup
3099   copies first, run ezmlm-make, then copy the backups to D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/. Of
3100   course, it is usually easier to create a custom .\b.e\bez\bzm\bml\blm\bmr\brc\bc, and than use
3101   that for all your lists.
3102
3103   To use ezmlm-make(1) to modify an existing list, without changing the
3104   subscriber or moderator lists or the message archive, use the ezmlm-
3105   make ``-e'' switch. With this, you need to re-specify all desired
3106   switches. If instead you use ``-+'' you need to specify only switches
3107   that are changed/new.  NOTE: any customization that you've made to
3108   program files like D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br will be overwritten. For instance, if
3109   you manually added checks to D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br or added a pointer to a custom
3110   moderator database in e.g.  D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb these changes will be lost.  To
3111   retain such changes (especially ones that are common for several of
3112   your lists), place them in a local ~\b~/\b/.\b.e\bez\bzm\bml\blm\bmr\brc\bc file instead. You can
3113   either make such changes the default for your lists, or you can
3114   configure ~\b~/\b/.\b.e\bez\bzm\bml\blm\bmr\brc\bc so that they are added only if a specific ezmlm-
3115   make switch is used.  (see ``Customizing ezmlm-make operation'').
3116
3117
3118   6\b6.\b.1\b10\b0.\b.  e\bez\bzm\bml\blm\bm-\b-m\bma\bak\bke\be f\bfa\bai\bil\bls\bs:\b: .\b..\b..\b. e\bez\bzm\bml\blm\bmr\brc\bc d\bdo\boe\bes\bs n\bno\bot\bt e\bex\bxi\bis\bst\bt
3119
3120   There is no readable ezmlmrc(5) file in /\b/e\bet\btc\bc/\b/e\bez\bzm\bml\blm\bm nor in the ezmlm
3121   binary directory. If you have .\b.e\bez\bzm\bml\blm\bmr\brc\bc in ``dotdir'' (see
3122   ``Terminology: dotdir'') use the ezmlm-make(1) ``-c'' switch (see
3123   ``Customizing ezmlm-make operation'').  _\bN_\bo_\bt_\be_\b: The default location for
3124   a global edited e\bez\bzm\bml\blm\bmr\brc\bc file is /\b/e\bet\btc\bc/\b/e\bez\bzm\bml\blm\bm/\b/e\bez\bzm\bml\blm\bmr\brc\bc as of ezmlm-
3125   idx-0.40.
3126
3127
3128   6\b6.\b.1\b11\b1.\b.  I\bIn\bnd\bde\bex\bx/\b/g\bge\bet\bt/\b/t\bth\bhr\bre\bea\bad\bd r\bre\beq\bqu\bue\bes\bst\bts\bs f\bfa\bai\bil\bl q\bqu\bui\bie\bet\btl\bly\by o\bor\br w\bwi\bit\bth\bh e\ber\brr\bro\bor\brs\bs f\bfr\bro\bom\bm
3129   e\bez\bzm\bml\blm\bm-\b-m\bma\ban\bna\bag\bge\be.\b.
3130
3131   Make sure this is an indexed list and has an ``ezmlm-get'' line first
3132   in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. If not, your commands are fed directly to ezmlm-
3133   manage(1). If they contain ``-'', ezmlm-manage interprets the rest as
3134   an address to which it sends the error message.  Usually, this results
3135   in a "trash address" mail log entry and a bounce, which is why you
3136   don't see any error message. The same happens if you send non-existing
3137   commands followed by ``-'' and arguments. Thus, list-gugu-54@host
3138   results in an ezmlm-manage error, resulting in help text being sent to
3139   54@localhost ... When testing, try using syntax with a ``.'', not a
3140   ``-'', after the action command, e.g. list-get.54_60@host. This will
3141   assure that error messages get back to you.
3142
3143
3144   6\b6.\b.1\b12\b2.\b.  D\bDi\big\bge\bes\bst\bt t\btr\bri\big\bgg\bge\ber\bri\bin\bng\bg r\bre\beq\bqu\bue\bes\bst\bts\bs f\bfa\bai\bil\bl.\b.
3145
3146   (Digest triggering by mail is a relic from older versions. Use the
3147   standard setup with ezmlm-tstdig(1) as by ezmlm-make(1) ``-d'', or run
3148   ezmlm-get(1) directly from the command line via crond(8).)
3149
3150   If you get an error message, it tells you why the request failed. If
3151   you do not, see the previous item. Try using syntax without ``-''
3152   after the ``dig'' command. Also, requests that would result in an
3153   empty digest are silently ignored, but the reason why no digest was
3154   created is logged to the mail log. This is done so that cron scripts
3155   generating daily digest will just fail silently, rather than
3156   generating an error, for what isn't really one.
3157
3158
3159   6\b6.\b.1\b13\b3.\b.  R\bRe\bem\bmo\bot\bte\be a\bad\bdm\bmi\bin\bni\bis\bst\btr\bra\bat\bti\bio\bon\bn (\b(u\bun\bn)\b)s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\be c\bco\bon\bnf\bfi\bir\brm\bm r\bre\beq\bqu\bue\bes\bst\bts\bs g\bgo\bo t\bto\bo t\bth\bhe\be
3160   u\bus\bse\ber\br,\b, n\bno\bot\bt t\bth\bhe\be m\bmo\bod\bde\ber\bra\bat\bto\bor\br.\b.
3161
3162   Either the list is not set up for remote administration (i.e.
3163   D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be does not exist), or the moderator is sending the request
3164   from an address that is not in the moderator database (e.g. from
3165   Fred@host.dom, when fred@host.dom is in the moderator db, but
3166   Fred@host.dom is not). ezmlm-manage(1) has no way of knowing that the
3167   SENDER is a moderator and treats the request as coming from a regular
3168   user, i.e. it sends a confirmation request to the target address.
3169   Correct the SENDER address, the address in the moderator db, or create
3170   D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be. If you are using a non-default moderator db location, make
3171   sure that the moddir name is in D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be (for remote admin only) or
3172   D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb (if there is subscription moderation as well). In both
3173   cases, the contents will be ignored unless they start with a ``/''.
3174
3175
3176   6\b6.\b.1\b14\b4.\b.  (\b(U\bUn\bn)\b)s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs d\bdo\boe\bes\bs n\bno\bot\bt r\bre\bec\bce\bei\biv\bve\be a\ba (\b(u\bun\bn)\b)s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\be a\bac\bck\bkn\bno\bow\bwl\ble\bed\bdg\bge\be-\b-
3177   m\bme\ben\bnt\bt
3178
3179   With normal ezmlm lists, a subscriber confirming a subscription or a
3180   non-subscriber confirming a unsubscribe request results in a message
3181   to the target address. This message is suppressed when the list is set
3182   up for subscription and/or remote administration, so that
3183   confirmations from multiple moderators do not result in multiple
3184   messages to the target address. The target address is always notified
3185   if the subscriber status of the address changes (from non-subscriber
3186   to subscriber or vice versa).
3187
3188
3189   6\b6.\b.1\b15\b5.\b.  M\bMe\bes\bss\bsa\bag\bge\bes\bs p\bpo\bos\bst\bte\bed\bd t\bto\bo a\ba m\bmo\bod\bde\ber\bra\bat\bte\bed\bd l\bli\bis\bst\bt a\bar\bre\be s\bse\ben\bnt\bt o\bou\but\bt w\bwi\bit\bth\bho\bou\but\bt m\bmo\bod\bde\ber\br-\b-
3190   a\bat\bti\bio\bon\bn.\b.
3191
3192   The list is not set up as a moderated list. Check D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br.  If
3193   should contain a ezmlm-store(1) line after the ezmlm-reject line if it
3194   is a moderated list. No ezmlm-send(1) line should be in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br.
3195   If there is, the list is not moderated. Also, D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt must exist.
3196   If it does not, ezmlm-store(1) will post the messages directly (via
3197   ezmlm-send(1)) without sending them out for moderation first. This
3198   makes it easy to temporarily remove message moderation by simply
3199   removing D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt, but may be confusing if the user is unaware of
3200   this ezmlm-store(1) feature.
3201
3202
3203   6\b6.\b.1\b16\b6.\b.  M\bMe\bes\bss\bsa\bag\bge\bes\bs p\bpo\bos\bst\bte\bed\bd t\bto\bo a\ba m\bmo\bod\bde\ber\bra\bat\bte\bed\bd l\bli\bis\bst\bt d\bdo\bo n\bno\bot\bt r\bre\bes\bsu\bul\blt\bt i\bin\bn m\bmo\bod\bde\ber\bra\bat\bti\bio\bon\bn
3204   r\bre\beq\bqu\bue\bes\bst\bts\bs.\b.
3205
3206
3207   +\bo  Check that ~\b~/\b/.\b.q\bqm\bma\bai\bil\bl-\b-l\bli\bis\bst\bt is a link to D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br.
3208
3209   +\bo  Check that D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br contains ezmlm-store(1) and not ezmlm-
3210      send(1).  If this is not the case, the list is not message
3211      moderated.
3212
3213   +\bo  Check for the presence of D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt. If this file is missing, the
3214      list is not moderated, even if D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br is set up with ezmlm-
3215      store(1).
3216
3217   +\bo  Check qmail logs for error conditions during post delivery and
3218      correct these. If the messages are delivered correctly, verify that
3219      ezmlm-store(1) generated the moderation requests to the moderators.
3220
3221   +\bo  Check to see that there are indeed moderators:
3222
3223
3224
3225        % ezmlm-list moddir
3226
3227
3228
3229
3230   where ``moddir'' is the contents of D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt if they start with a
3231   ``/'', otherwise those of D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be (same ``/'' requirement), and
3232   D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/ by default.
3233
3234
3235   +\bo  Check file ownerships.
3236
3237      Another common problem is directory ownerships, especially for
3238      lists under ~alias. To correct this error, issue the following
3239      command while in the ~alias directory (User the user/group of the
3240      list owner; for ~alias lists user=alias, group=qmail):
3241
3242
3243        % chown -R user DIR
3244
3245
3246
3247
3248
3249   6\b6.\b.1\b17\b7.\b.  M\bMo\bod\bde\ber\bra\bat\bti\bio\bon\bn r\bre\beq\bqu\bue\bes\bst\bt r\bre\bep\bpl\bli\bie\bes\bs d\bdo\bo n\bno\bot\bt r\bre\bes\bsu\bul\blt\bt i\bin\bn t\bth\bhe\be a\bap\bpp\bpr\bro\bop\bpr\bri\bia\bat\bte\be
3250   a\bac\bct\bti\bio\bon\bn.\b.
3251
3252
3253   +\bo  Check that the address in the moderation request is correct.
3254
3255   +\bo  Check that the ~\b~/\b/.\b.q\bqm\bma\bai\bil\bl-\b-l\bli\bis\bst\bt-\b-a\bac\bcc\bce\bep\bpt\bt-\b-d\bde\bef\bfa\bau\bul\blt\bt and ~\b~.\b./\b/q\bqm\bma\bai\bil\bl-\b-l\bli\bis\bst\bt-\b-
3256      r\bre\bej\bje\bec\bct\bt-\b-d\bde\bef\bfa\bau\bul\blt\bt links exists and point to D\bDI\bIR\bR/\b/m\bmo\bod\bde\ber\bra\bat\bto\bor\br.
3257
3258   +\bo  Check that D\bDI\bIR\bR/\b/m\bmo\bod\bde\ber\bra\bat\bto\bor\br invokes ezmlm-moderate(1), and that there
3259      is a copy of ezmlm-send(1) in the ezmlm binary directory.
3260
3261   +\bo  Check the qmail log to see that the replies were delivered to this
3262      address.
3263
3264   +\bo  Check directory ownerships. For lists under alias:
3265
3266
3267
3268        % chown -R alias DIR
3269
3270
3271
3272
3273   _\bN_\bO_\bT_\bE_\b: This needs to be done every time you add/remove moderators as
3274   ``root''. For user-controlled lists (i.e. you are ``user'' when run-
3275   ning e.g. ezmlm-sub(1)) this is not a problem.
3276
3277   If setting up lists for _\ba_\bl_\bi_\ba_\bs, you can avoid many problems by setting
3278   them up as ``alias'', i.e. use ``su alias'' not ``su''.
3279
3280   If setting up lists for a user controlling a virtual domain, you can
3281   avoid many problems by assuming that uid (``su user'') before making
3282   any changes.
3283
3284   +\bo  Check the qmail logs: After the delivery of the moderation request,
3285      ezmlm-send(1) should run to send messages to all the list
3286      subscribers.
3287
3288   +\bo  Make sure there are list subscribers:
3289
3290
3291
3292        % ezmlm-list DIR
3293
3294
3295
3296
3297   Most error conditions, incorrect request cookies, etc, should result
3298   in informative error messages in the mail log.
3299
3300
3301   6\b6.\b.1\b18\b8.\b.  M\bMo\bod\bde\ber\bra\bat\bto\bor\br c\bco\bom\bmm\bme\ben\bnt\bts\bs w\bwi\bit\bth\bh m\bmo\bod\bde\ber\bra\bat\bti\bio\bon\bn r\bre\beq\bqu\bue\bes\bst\bt r\bre\bep\bpl\bli\bie\bes\bs a\bar\bre\be n\bno\bot\bt
3302   a\bad\bdd\bde\bed\bd t\bto\bo t\bth\bhe\be p\bpo\bos\bst\bt/\b/s\bse\ben\bnt\bt t\bto\bo t\bth\bhe\be p\bpo\bos\bst\bte\ber\br.\b.
3303
3304   Moderator comments are where the moderator chooses to ``reject'' the
3305   message and inform the person posting which his/her message was
3306   inappropriate.  However, if a moderator wants to comment on a\bac\bcc\bce\bep\bpt\bte\bed\bd
3307   posts, the moderator may only do so via a follow-up post to the list.
3308   This is to avoid anonymously tagged-on text to posts. If a moderator
3309   has something to say to the list, they should (and can only) do so in
3310   regular posts. If you want to edit posts before sending them to the
3311   list, set up a moderated list with you as the only moderator. Into
3312   D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br before the ezmlm-store(1) line, put a condredirect(1) line
3313   that redirects all messages with a SENDER other than you to your
3314   address. You can edit the contents ands repost, the message will pass
3315   condredirect(1), and hit ezmlm-store(1). You will be asked to confirm
3316   (needed to assure that nobody else can post directly) and when you do,
3317   the messages is posted.
3318
3319   Moderator comments for ``reject(ed)'' posts need to be enclosed
3320   between two lines (yes, the end marker is required), having ``%%%''
3321   starting on one of the first 5 positions of the line. If there are
3322   characters before the marker, these will be removed from any comment
3323   line that starts with the same characters (e.g. the characters before
3324   ``comment2'' in the example below will be removed):
3325
3326
3327   %%%
3328   comment
3329   %%%
3330
3331
3332   or:
3333
3334
3335   > %%%
3336   comment
3337   > comment2
3338   > %%%
3339
3340
3341   but not:
3342
3343   %%
3344   COMMENT
3345   %%
3346
3347
3348   and not:
3349
3350   %%% this is my comment %%%
3351
3352
3353   or
3354
3355   ezmlm said>%%%
3356   comment
3357   ezmlm said>%%%
3358
3359
3360
3361
3362   6\b6.\b.1\b19\b9.\b.  S\bSo\bom\bme\be h\bhe\bea\bad\bde\ber\brs\bs a\bar\bre\be m\bmi\bis\bss\bsi\bin\bng\bg f\bfr\bro\bom\bm m\bme\bes\bss\bsa\bag\bge\bes\bs i\bin\bn t\bth\bhe\be d\bdi\big\bge\bes\bst\bt.\b.
3363
3364   By default, only a subset of message headers are sent out in any
3365   digest and archive retrieval requests. First, headers in
3366   D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\brr\bre\bem\bmo\bov\bve\be are stripped. Most non-essential headers are excluded
3367   when the default archive retrieval format (``m'') is used.  Use the
3368   ``v'' or ``n'' format (see ezmlm-get(1)) to get all message headers
3369   that are in the archive.
3370
3371
3372   6\b6.\b.2\b20\b0.\b.  S\bSo\bom\bme\be R\bRe\bec\bce\bei\biv\bve\bed\bd:\b: h\bhe\bea\bad\bde\ber\brs\bs a\bar\bre\be m\bmi\bis\bss\bsi\bin\bng\bg f\bfr\bro\bom\bm m\bme\bes\bss\bsa\bag\bge\bes\bs.\b.
3373
3374   ezmlm-idx>=0.313 removes all but the latest ``Received:'' header from
3375   messages sent to the list. This is done since messages, especially
3376   sent via sublists, may have so many ``Received:'' headers that MTAs
3377   with primitive ``loop detection'' erroneously reject them. The
3378   subscriber can subscribe, since those messages have fewer such
3379   headers, and will receive warning and probe messages, but never see
3380   any posts.
3381
3382   To see all headers of a message for diagnostic purposes, mail
3383   mainlist-getv.num@mainhost, where ``num'' is the message number.  All
3384   ``Received:'' headers are stored in the archive copy of the message.
3385
3386   To disable ``Received:'' header pruning, use the ezmlm-send(1) ``-r''
3387   switch.
3388
3389
3390   6\b6.\b.2\b21\b1.\b.  M\bMy\by M\bMu\but\btt\bt u\bus\bse\ber\brs\bs c\bca\ban\bnn\bno\bot\bt t\bth\bhr\bre\bea\bad\bd t\bth\bhe\bei\bir\br d\bdi\big\bge\bes\bst\bt m\bme\bes\bss\bsa\bag\bge\bes\bs.\b.
3391
3392   The digest by default removed non-essential headers like ``In-Reply-
3393   To:'' from messages. Modern MUAs, like _\bM_\bu_\bt_\bt can split out messages
3394   from a digest and then thread them based on such headers. To include
3395   these and all other headers in the digest messages, use the ``v'' or
3396   ``n'' format as described on the ezmlm-get(1) man page. Normally, the
3397   threading done by ezmlm is sufficient and the default format preferred
3398   to reduce message and digest size, often by 25% or more.
3399
3400
3401   6\b6.\b.2\b22\b2.\b.  P\bPo\bos\bst\bts\bs f\bfa\bai\bil\bl:\b: M\bMe\bes\bss\bsa\bag\bge\be a\bal\blr\bre\bea\bad\bdy\by h\bha\bas\bs M\bMa\bai\bil\bli\bin\bng\bg-\b-L\bLi\bis\bst\bt (\b(#\b#5\b5.\b.7\b7.\b.2\b2)\b).\b.
3402
3403   The list you are trying to post to is used as a sublist (a list fed
3404   with messages from another (ezmlm) list), but not properly set up as a
3405   sublist. Put  the name of the parent list (``origlist@orighost'')
3406   which exactly matches the SENDER of the original (or parent) list into
3407   D\bDI\bIR\bR/\b/s\bsu\bub\bbl\bli\bis\bst\bt.  Check the ownership of D\bDI\bIR\bR/\b/s\bsu\bub\bbl\bli\bis\bst\bt, to make sure that
3408   the user controlling the list can read it.
3409
3410   Alternatively, use the ezmlm-make(1) ``-0 origlist@orighost'' switch
3411   (see ``Customizing ezmlm-make operation'').
3412
3413
3414   6\b6.\b.2\b23\b3.\b.  T\bTh\bhe\be l\bla\bas\bst\bt l\bli\bin\bne\be o\bof\bf a\ba D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/  f\bfi\bil\ble\be i\bis\bs i\big\bgn\bno\bor\bre\bed\bd.\b.
3415
3416   Only complete lines ending with ``newline'' are copied. The last line
3417   in the D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/ file most likely lacks a terminal ``newline''.
3418
3419
3420   6\b6.\b.2\b24\b4.\b.  N\bNo\bo C\bCO\bON\bNF\bFI\bIR\bRM\bM r\bre\beq\bqu\bue\bes\bst\bts\bs a\bar\bre\be s\bse\ben\bnt\bt t\bto\bo m\bmo\bod\bde\ber\bra\bat\bto\bor\brs\bs.\b.
3421
3422   Assuming that the user initiated the subscribe request, got a
3423   ``confirm'' request, and replied correctly, there are two possible
3424   causes for the problem: Either the list is not subscription moderated
3425   (in this case the user is subscribed and received a note saying so) or
3426   the list is subscription moderated but no moderators have been added
3427   (ezmlm-manage(1) sends out the request and doesn't mind that there are
3428   no recipients).
3429
3430   Check that the list is subscription moderated:
3431
3432
3433   % cat DIR/modsub
3434
3435
3436
3437
3438   If this fails the list is not subscription moderated. If it succeeds
3439   with a directory name with a leading ``/'', this is your ``moddir''.
3440   If not:
3441
3442
3443
3444        % cat DIR/remote
3445
3446
3447
3448
3449   If this succeeds with a directory name with a leading ``/'', this is
3450   your moddir, otherwise the moddir is ``D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/''.
3451
3452   Check for moderators:
3453
3454
3455
3456        % ezmlm-list moddir
3457
3458
3459
3460
3461   If there are none, this is your problem. If there are some, check the
3462   mail log to see what happened when the CONFIRM requests was supposed
3463   to have gone out. Assure correct ownerships for the moderator db:
3464
3465
3466
3467        % chown -R user moddir
3468
3469
3470
3471
3472   For ~alias:
3473
3474
3475
3476         # chown -R alias moddir
3477
3478
3479
3480
3481   Another possible problem is that you are trying to use the remote
3482   admin feature to subscribe a user, but you get no CONFIRM request.
3483   Usually, this is due to your SENDER address not being in the moderator
3484   database.  The CONFIRM request went to the target address instead,
3485   since as far as ezmlm is concerned, you are a regular user.
3486
3487
3488   6\b6.\b.2\b25\b5.\b.  D\bDe\bel\bli\biv\bve\ber\bri\bie\bes\bs f\bfa\bai\bil\bl `\b``\b`t\bte\bem\bmp\bpo\bor\bra\bar\bry\by q\bqm\bma\bai\bil\bl-\b-q\bqu\bue\beu\bue\be e\ber\brr\bro\bor\br'\b''\b'
3489
3490   Usually, this is due to a corrupted qmail queue (should affect all
3491   mail) or a corrupted ezmlm subscriber database (See ``How to deal with
3492   corrupted subscriber lists'').  ezmlm-idx>=0.40 has more informative
3493   qmail error messages.
3494
3495
3496
3497
3498
3499   6\b6.\b.2\b26\b6.\b.  H\bHo\bow\bw t\bto\bo d\bde\bea\bal\bl w\bwi\bit\bth\bh c\bco\bor\brr\bru\bup\bpt\bte\bed\bd s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\br l\bli\bis\bst\bts\bs
3500
3501   Dan has made ezmlm very robust, but a subscriber list can still become
3502   corrupted due to e.g. disk errors. Usually, this will lead to a
3503   ``temporary qmail-queue error'' because an address does not conform to
3504   the standard format. Occasionally, two E-mail addresses are fused,
3505   e.g.  ``addr1@hostTaddr2@host''.  To diagnose and fix this type of
3506   error, disable deliveries (easiest is to ``chmod 0 DIR/lock''), back
3507   up the contents of D\bDI\bIR\bR/\b/s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs/\b/, then:
3508
3509
3510
3511        % ezmlm-list DIR > tmp.tmp
3512
3513                ( edit tmp.tmp to fix any problems )
3514
3515        % rm -rf DIR/subscribers/*
3516        % ezmlm-sub DIR < tmp.tmp
3517
3518
3519
3520
3521   This will list all E-mail addresses, allow you to edit them, then re-
3522   subscribe them.  Don't forget to re-enable deliveries.
3523
3524
3525   6\b6.\b.2\b27\b7.\b.  V\bVa\bac\bca\bat\bti\bio\bon\bn p\bpr\bro\bog\bgr\bra\bam\bm r\bre\bep\bpl\bli\bie\bes\bs a\bar\bre\be t\btr\bre\bea\bat\bte\bed\bd a\bas\bs b\bbo\bou\bun\bnc\bce\bes\bs b\bby\by e\bez\bzm\bml\blm\bm.\b.
3526
3527   Standard vacation programs do not reply to messages that contain a
3528   ``Precedence: bulk'' header. ezmlm-idx>=0.23 sets up lists with this
3529   header in D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\bra\bad\bdd\bd. For older lists, use ``ezmlm-make -+'' or
3530   ``ezmlm-make -e'' to update them, or just add a ``Precedence: bulk''
3531   line to D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\bra\bad\bdd\bd.
3532
3533
3534   6\b6.\b.2\b28\b8.\b.  D\bDi\big\bge\bes\bst\bts\bs d\bdo\bo n\bno\bot\bt c\bco\bom\bme\be a\bat\bt r\bre\beg\bgu\bul\bla\bar\br h\bho\bou\bur\brs\bs.\b.
3535
3536   In the default setup, ezmlm-tstdig(1) determines if a new digest is
3537   due every time a message arrives to the list. Thus, even though ezmlm-
3538   tstdig is set to produce digests 48 hours after the previous digest,
3539   the digest will not be generated until a message arrives. If you'd
3540   like digests at a specific time each day, use crond(8) and crontab(1)
3541   to daily run:
3542
3543
3544                % ezmlm-get DIR
3545
3546
3547
3548
3549
3550   6\b6.\b.2\b29\b9.\b.  P\bPr\bre\bev\bve\ben\bnt\bti\bin\bng\bg l\blo\boo\bop\bps\bs f\bfr\bro\bom\bm m\bmi\bis\bsc\bco\bon\bnf\bfi\big\bgu\bur\bre\bed\bd s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\br a\bad\bdd\bdr\bre\bes\bss\bse\bes\bs.\b.
3551
3552   Occasionally, a subscriber address is misconfigured and automatically
3553   sends a message back to the list. Sometimes, the subscriber's setup
3554   has removed headers that ezmlm uses for loop detection or the
3555   generated messages has nothing in common with the send-out. To block
3556   such mail at the list, include the ezmlm-make(1) ``-k'' (kill) switch
3557   and add the offending address to D\bDI\bIR\bR/\b/d\bde\ben\bny\by/\b/ with
3558
3559
3560                % ezmlm-sub DIR/deny badadr@badhost
3561
3562
3563
3564
3565   ezmlm-unsub(1) and ezmlm-list(1) can be used similarly to remove or
3566   list the addresses. If your list is configured for remote administra-
3567   tion (see ``How remote administration works''), and you are a remote
3568   administrator, you can add the address by sending mail to list-deny-
3569   badadr=badhost@listhost. Other subscriber database commands work as
3570   well for list-deny.
3571
3572   In other instances, a configuration error somewhere close to the
3573   subscriber creates a local mail loop throwing off messages to you.
3574   They are often bounces that are sent to the list address or to ``list-
3575   help'' due to configuration errors. Rather than accepting these, or
3576   the often resulting double bounces to ``postmaster'', just add a
3577   ``|/path/ezmlm-weed'' line first to D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br or D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. This
3578   discards the bounce messages generated by the looping systems. ezmlm-
3579   weed(1) is also useful in other settings where excessive numbers of
3580   error messages are sent to the wrong address.
3581
3582
3583   6\b6.\b.3\b30\b0.\b.  A\bA u\bus\bse\ber\br c\bca\ban\bn s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\be a\ban\bnd\bd r\bre\bec\bce\bei\biv\bve\bes\bs w\bwa\bar\brn\bni\bin\bng\bg a\ban\bnd\bd p\bpr\bro\bob\bbe\be m\bme\bes\bss\bsa\bag\bge\bes\bs,\b,
3584   b\bbu\but\bt n\bno\bo m\bme\bes\bss\bsa\bag\bge\bes\bs f\bfr\bro\bom\bm t\bth\bhe\be l\bli\bis\bst\bt.\b.
3585
3586   ezmlm lists (ezmlm-idx>=0.31) remove ``Received:'' headers from
3587   incoming messages by default. This can be prevented with the ezmlm-
3588   send(1) ``-r'' switch.  When the headers are propagated, especially
3589   sublist message may have many (15-20 or more), ``Received:'' headers.
3590   If there is a poorly configured sendmail host with a ``hopcount'' set
3591   too low, it will bounce these messages, incorrectly believing that the
3592   many ``Received:'' headers are due to a mail loop.  The reason that
3593   administrative from the list do not bounce is that they have fewer
3594   ``Received:'' headers, since they originate from the sublist.
3595
3596   The message with all headers including the removed ``Received:''
3597   headers can be retrieved from the list archive with the _\b-_\bg_\be_\bt_\bv command.
3598   The top incoming ``Received:'' header is added by qmail at the receipt
3599   to the list (or last sublist) host. This header is not removed, to
3600   allow the recipient to determine when the message reached the list.
3601
3602
3603   7\b7.\b.  C\bCu\bus\bst\bto\bom\bmi\biz\bzi\bin\bng\bg e\bez\bzm\bml\blm\bm-\b-m\bma\bak\bke\be o\bop\bpe\ber\bra\bat\bti\bio\bon\bn v\bvi\bia\ba e\bez\bzm\bml\blm\bmr\brc\bc
3604
3605
3606   7\b7.\b.1\b1.\b.  U\bUs\bsi\bin\bng\bg e\bez\bzm\bml\blm\bm-\b-m\bma\bak\bke\be t\bto\bo e\bed\bdi\bit\bt e\bex\bxi\bis\bst\bti\bin\bng\bg l\bli\bis\bst\bts\bs.\b.
3607
3608   With ezmlm-make(1) (from ezmlm-idx >=0.21) you can use the ``-e''
3609   switch to edit existing lists.  Invoke the ezmlm-make(1) command just
3610   as you would to create the list anew, but change the switches to
3611   reflect the desired change, and add the ``-e'' switch. ezmlm-make will
3612   accept preexisting directories and overwrite or remove files to change
3613   the setup.  The message counter (D\bDI\bIR\bR/\b/n\bnu\bum\bm), digest counters (D\bDI\bIR\bR/\b/d\bdi\big\bgn\bnu\bum\bm
3614   and D\bDI\bIR\bR/\b/d\bdi\big\bgi\bis\bss\bsu\bue\be), the key (D\bDI\bIR\bR/\b/k\bke\bey\by) and the message archive will not
3615   be affected.
3616
3617   If the list has been created or previously edited with ezmlm-make(1)
3618   from ezmlm-idx>=0.23, the list remembers (via D\bDI\bIR\bR/\b/c\bco\bon\bnf\bfi\big\bg) the
3619   arguments and the switches. All you have to do is to use the ezmlm-
3620   make(1) ``-+'' switch and specify options you wish to change, or use
3621   the ``-e'' switch and specify all non-default options you'd like to
3622   use.
3623
3624   _\bN_\bO_\bT_\bE_\b: ezmlm-make(1) ``-e'' and ``-+'' will OVERWRITE any manual
3625   customizations you have made to the program files, but not text files
3626   and D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\bra\bad\bdd\bd, D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\brr\bre\bem\bmo\bov\bve\be, etc. To reset all such files
3627   (such as when changing list name), use ``-ee'' or ``-++''.
3628
3629   To make general customizations, please change e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) (see ``What
3630   is ezmlmrc?''  or read on) instead and use the ``-c'' switch as well.
3631   DO NOT use this option to change production lists without testing it
3632   on other lists first.  Also, for some changes, removing or adding a
3633   flag is sufficient (see ``How do I quickly change properties of my
3634   list'').
3635
3636
3637   7\b7.\b.2\b2.\b.  W\bWh\bha\bat\bt i\bis\bs e\bez\bzm\bml\blm\bmr\brc\bc?\b?
3638
3639   ezmlm-make(1) has a number of default switches that through e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b)
3640   have defined functions. These allow creation of many standard lists.
3641
3642   In addition, ezmlm-make(1) operation is fully customizable via
3643   modification of the template file, ezmlmrc(5) or .ezmlmrc. A default
3644   ezmlmrc(5) is installed in the ezmlm binary directory.  The system
3645   administrator can install a system-wide default e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) file in
3646   /\b/e\bet\btc\bc/\b/e\bez\bzm\bml\blm\bmr\brc\bc (or symlinked from there) which overrides the file in the
3647   ezmlm binary directory. If the ezmlm-make(1) ``-c'' (custom) switch is
3648   used, ezmlm-make(1) will look for .\b.e\bez\bzm\bml\blm\bmr\brc\bc in the ``dotdir'', i.e. the
3649   directory in which the .\b.q\bqm\bma\bai\bil\bl-\b-l\bli\bis\bst\bt links are placed. This is usually a
3650   set directory for a given user/virtual domain (usually, the home
3651   directory for the user controlling the lists).
3652
3653   e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) controls everything except creation of the list directory
3654   itself and the key used for cookie generation. The syntax of
3655   e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) is documented in ezmlm-make(1), the ezmlmrc(5) man page,
3656   and in the ezmlmrc(5) file installed in the ezmlm binary directory.
3657   ezmlm-make limits its effects to within the list ``dot'' and ``DIR''
3658   directories. In the ``dotdir'', only links to within ``DIR'' can be
3659   created.
3660
3661
3662   7\b7.\b.3\b3.\b.  C\bCh\bha\ban\bng\bgi\bin\bng\bg d\bde\bef\bfa\bau\bul\blt\bts\bs f\bfo\bor\br D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/  f\bfi\bil\ble\bes\bs.\b.
3663
3664   Copy the ezmlmrc(5) file from the ezmlm bin directory to .\b.e\bez\bzm\bml\blm\bmr\brc\bc in
3665   your .\b.q\bqm\bma\bai\bil\bl file base directory (usually your home directory):
3666
3667
3668        % cp /usr/local/bin/ezmlm/ezmlmrc ~/.ezmlmrc
3669
3670
3671
3672
3673   The base e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) file lives in the ezmlm binary directory, which
3674   may differ from ``/\b/u\bus\bsr\br/\b/l\blo\boc\bca\bal\bl/\b/b\bbi\bin\bn/\b/e\bez\bzm\bml\blm\bm/\b/e\bez\bzm\bml\blm\bmr\brc\bc'' if you do not have a
3675   default setup.  If your system administrator has placed a ezmlmrc(5)
3676   file into the /\b/e\bet\btc\bc directory, start with that one instead, as it is
3677   likely to already contain some useful local customization and
3678   comments.
3679
3680   Now edit ~\b~/\b/.\b.e\bez\bzm\bml\blm\bmr\brc\bc. Find the tag corresponding to the text file you
3681   want to change, e.g. ``</text/mod-request/>'', and modify it
3682   appropriately. Some tags have conditional flags, so that succeeding
3683   text is copied only if specific switches are on/off. Thus, text
3684   succeeding ``</text/file#rms/>'' is copied into D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/f\bfi\bil\ble\be if and
3685   only if the ezmlm-make(1) ``-rms'' switches are all used. For more
3686   info, see documentation in e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) and the ezmlm-make(1) man page.
3687   To invoke a custom .\b.e\bez\bzm\bml\blm\bmr\brc\bc file, use the ezmlm-make(1) ``-c''
3688   (custom) switch.
3689
3690
3691   7\b7.\b.4\b4.\b.  C\bCh\bha\ban\bng\bgi\bin\bng\bg d\bde\bef\bfa\bau\bul\blt\bt m\bmo\bod\bde\ber\bra\bat\bto\bor\br d\bdi\bir\bre\bec\bct\bto\bor\bri\bie\bes\bs.\b.
3692
3693   See above. Edit the .\b.e\bez\bzm\bml\blm\bmr\brc\bc file to add a directory name to e.g.
3694   ``</modsub/#s>''. Also, you need to create that directory, and the
3695   subscribers subdirectory under it. NOTE: D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/ is still required as
3696   the base directory for the message moderation queue.
3697   7\b7.\b.5\b5.\b.  A\bAd\bda\bap\bpt\bti\bin\bng\bg e\bez\bzm\bml\blm\bm-\b-m\bma\bak\bke\be f\bfo\bor\br v\bvi\bir\brt\btu\bua\bal\bl d\bdo\bom\bma\bai\bin\bns\bs.\b.
3698
3699   This is not necessary if you use qmail>=1.02 and ezmlm-idx>=0.32.
3700
3701   The problem with virtual domains is that ezmlm-make(1) by default puts
3702   the list name in D\bDI\bIR\bR/\b/i\bin\bnl\blo\boc\bca\bal\bl. However, if the domain host1.dom.com is
3703   controlled by the user ``virt'', then the local part of the address
3704   for the list list@host.dom.com will be ``virt-list'', not ``list''.
3705   This is easily accommodated by putting a .\b.e\bez\bzm\bml\blm\bmr\brc\bc file in ~\b~v\bvi\bir\brt\bt/\b/.  In
3706   the ``</inlocal/>'' section of this file, enter ``virt-<#L#>'' instead
3707   of ``<#L#>''.  Now, all lists created under ~\b~v\bvi\bir\brt\bt will be
3708   automatically set up correctly.
3709
3710   Similarly, if host1.dom.com is controlled by virt-dom1 and
3711   host2.dom.com by ``virt-dom2'', inlocal for list list@host1.dom.com
3712   should be ``virt-dom1-list'' and for list@host2.dom.com should be
3713   ``virt-dom2-list''. To accommodate this, put ``virt-<#1#>-<#L#>'' in
3714   ``</inlocal/>''.
3715
3716   Running:
3717
3718
3719        % ezmlm-make -c ~virt/LIST ~virt/.qmail-dom1-list \
3720                   list host1.dom.com
3721
3722
3723
3724
3725   will produce a L\bLI\bIS\bST\bT/\b/i\bin\bnl\blo\boc\bca\bal\bl of virt-dom1-list by substituting the
3726   first part between two ``-'' (dom1) for ``<#1#>''. Two levels of
3727   dashes are accommodated, i.e. ``<#2#>'' will be replaced by the second
3728   part between two ``-'' (in this case empty (_\bS_\bi_\bc_\b!)).  For more info,
3729   see ezmlm-make(1) and comments in e\bez\bzm\bml\blm\bmr\brc\bc.
3730
3731
3732   7\b7.\b.6\b6.\b.  S\bSe\bet\btt\bti\bin\bng\bg u\bup\bp e\bez\bzm\bml\blm\bm-\b-m\bma\bak\bke\be f\bfo\bor\br s\bsp\bpe\bec\bci\bia\bal\bl s\bsi\bit\btu\bua\bat\bti\bio\bon\bns\bs.\b.
3733
3734   Ezmlm-make is very flexible. There are only three sets of special
3735   command line switches: ``-vV'' for version info, ``-cC'' controlling
3736   the use of a custom file .\b.e\bez\bzm\bml\blm\bmr\brc\bc in the ``dot'' directory, and
3737   ``-eE'' for edit mode (i.e. reconfiguration of existing list setups).
3738   All other switches are soft, i.e. controlled through e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b).  Many
3739   switches, have special meanings via e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) and are documented in
3740   the man page. Any other switches can be used for customization (_\bN_\bO_\bT_\bE_\b:
3741   _\bw_\be _\bm_\ba_\by _\bu_\bs_\be _\bs_\bw_\bi_\bt_\bc_\bh_\be_\bs _\bo_\bt_\bh_\be_\br _\bt_\bh_\ba_\bn _\b`_\b`_\b-_\bx_\by_\bz_\b'_\b' _\bf_\bo_\br _\bs_\bp_\be_\bc_\bi_\bf_\bi_\bc _\bp_\bu_\br_\bp_\bo_\bs_\be_\bs _\bi_\bn
3742   _\bf_\bu_\bt_\bu_\br_\be _\bv_\be_\br_\bs_\bi_\bo_\bn_\bs_\b.)  The ``-xyz'' switches will always be available for
3743   your use, with the ``-x'' switch being configured for some
3744   demo/special features in the distributed e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b).  You can use them
3745   for anything you like. They are by default off=false. The complement
3746   of these switches is ``-XYZ'' (by default on=true). You can use these
3747   to cause specific changes in the list setup if a given switch is used.
3748   For an example, see the ``-x'' switch as used and documented in the
3749   default e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) file.  The switches ``-aip'' are set by default to
3750   be backwards compatible with ezmlm-0.53. Other switches are ``off'' by
3751   default.
3752
3753   Switches ``-a-z'' and ``-A-Z'' take no arguments.  Switches ``-0'' and
3754   and ``-3-9'' take arguments.  When the ezmlm-make(1) ``-+'' switch is
3755   used, the current settings for all these switches are read from the
3756   list's D\bDI\bIR\bR/\b/c\bco\bon\bnf\bfi\big\bg (if available).
3757
3758
3759   8\b8.\b.  R\bRe\bes\bst\btr\bri\bic\bct\bti\bin\bng\bg m\bme\bes\bss\bsa\bag\bge\be p\bpo\bos\bst\bti\bin\bng\bg t\bto\bo t\bth\bhe\be l\bli\bis\bst\bt.\b.
3760
3761
3762
3763   8\b8.\b.1\b1.\b.  R\bRe\beq\bqu\bui\bir\bri\bin\bng\bg t\bth\bhe\be l\bli\bis\bst\bt a\bad\bdd\bdr\bre\bes\bss\bs i\bin\bn T\bTo\bo:\b:/\b/C\bCc\bc:\b: h\bhe\bea\bad\bde\ber\brs\bs.\b.
3764
3765   SPAM or junk mail is usually sent by mailing a single message to a
3766   large number of (unwilling) recipients. As such, it usually does not
3767   contain the E-mail address of all recipients (remember, junk mailers
3768   pay for these address lists). By rejecting messages that do not have
3769   the list address in the To: or Cc: header(s) a large fraction of spam
3770   to the list can be filtered out.
3771
3772   This filter function is activated by default, but will work only if
3773   you specify the list directory on the ezmlm-reject(1) command line. To
3774   disable this restriction, remove the ``DIR'' argument from the ezmlm-
3775   reject(1) command line, or add the ``-T'' switch.
3776
3777   By default, this error is logged, and an error message is sent to the
3778   sender.  Since virtually all the failures will be SPAM and virtually
3779   all spam has a faked SENDER, most of these error messages will go to
3780   the postmaster.  Thus, you may want to use the ezmlm-reject ``-q''
3781   switch (quiet) to suppress the sender notification.
3782
3783
3784   8\b8.\b.2\b2.\b.  R\bRe\bej\bje\bec\bct\bti\bin\bng\bg m\bme\bes\bss\bsa\bag\bge\bes\bs s\bse\ben\bnt\bt f\bfr\bro\bom\bm o\bot\bth\bhe\ber\br m\bma\bai\bil\bli\bin\bng\bg l\bli\bis\bst\bts\bs.\b.
3785
3786   ezmlm automatically detects are rejects messages that are sent from
3787   other ezmlm mailing lists. Some other mailing list managers do not use
3788   a rigorous mechanisms to verify subscribers. Thus, it is possible to
3789   subscribe an ezmlm list address to such a mailing list. You can easily
3790   block such a list by adding the address to the ``deny'' if you use the
3791   ezmlm-make(1) ``-k'' option. However, you can also configure ezmlm-
3792   reject(1) to reject messages based on specific headers placed into
3793   D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\brr\bre\bej\bje\bec\bct\bt. A set of headers which will catch mailing list
3794   managers known to us are listed in the ezmlm-reject(1) man page. To
3795   activate this option, you must specify the ``-h'' switch and D\bDI\bIR\bR on
3796   the ezmlm-reject(1) line in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br. Naturally, you can make this
3797   the default by editing ezmlmrc(5) (See ``Customizing ezmlm-make
3798   operation'').
3799
3800
3801   8\b8.\b.3\b3.\b.  R\bRe\bes\bst\btr\bri\bic\bct\bti\bin\bng\bg p\bpo\bos\bst\bts\bs b\bba\bas\bse\bed\bd o\bon\bn t\bth\bhe\be S\bSu\bub\bbj\bje\bec\bct\bt l\bli\bin\bne\be.\b.
3802
3803   ezmlm-reject(1) is by default configured to reject posts with empty
3804   subject (``-s'' switch) or with a subject that consists of only an
3805   administrative command word (``-c'' switch), such as ``subscribe''. To
3806   remove these restrictions, use the ezmlm-reject(1) ``-S'' and ``-C''
3807   switch, respectively. You can also into D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br before the ezmlm-
3808   send(1) line add:
3809
3810
3811                | grep -i 'subject:' | grep -if DIR/bad_words >/dev/null && \
3812                        {echo "bad words found"; exit 100; }
3813
3814
3815
3816
3817   to reject messages that have a line matching ``Subject:'' followed by
3818   any bad word listed in D\bDI\bIR\bR/\b/b\bba\bad\bd_\b_w\bwo\bor\brd\bds\bs.
3819
3820
3821   8\b8.\b.4\b4.\b.  R\bRe\bes\bst\btr\bri\bic\bct\bti\bin\bng\bg t\bth\bhe\be s\bsi\biz\bze\be o\bof\bf p\bpo\bos\bst\bts\bs.\b.
3822
3823   If the ``DIR'' argument is specified on the ezmlm-reject(1) line in
3824   D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br and D\bDI\bIR\bR/\b/m\bms\bsg\bgs\bsi\biz\bze\be exists and contains a number (in bytes)
3825   greater than ``0'', then any posts with a body larger than the number
3826   specified is rejected. The maximum message size can optionally be
3827   followed by ``:'' and a minimum message body size in bytes.  For
3828   moderated lists, messages that are too large are rejected and not sent
3829   to the moderators. This feature can be used to prevent the posting an
3830   entire digest to the list by setting D\bDI\bIR\bR/\b/m\bms\bsg\bgs\bsi\biz\bze\be slightly below the
3831   message size set in your ezmlm-tstdig(1) innovation (if any). A
3832   minimum size can catch a few administrative request sent to the main
3833   list, but is otherwise not that useful. To always configure your lists
3834   with a message size restriction, add to e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b):
3835
3836
3837                </msgsize/>
3838                max:min
3839
3840
3841
3842
3843   The ezmlm-make(1) ``-x'' switch adds this with 40000:2.
3844
3845
3846   8\b8.\b.5\b5.\b.  R\bRe\bes\bst\btr\bri\bic\bct\bti\bin\bng\bg p\bpo\bos\bst\bts\bs b\bba\bas\bse\bed\bd o\bon\bn M\bMI\bIM\bME\bE c\bco\bon\bnt\bte\ben\bnt\bt-\b-t\bty\byp\bpe\be.\b.
3847
3848   ezmlm-reject(1) will look for D\bDI\bIR\bR/\b/m\bms\bsg\bgs\bsi\biz\bze\be, D\bDI\bIR\bR/\b/m\bmi\bim\bme\ber\bre\bej\bje\bec\bct\bt, and
3849   D\bDI\bIR\bR/\b/m\bmi\bim\bme\ber\bre\bem\bmo\bov\bve\be if the ``DIR'' argument is specified (``DIR'' can be
3850   left out to conserve resources on lists that do not use these
3851   features). _\bN_\bo_\bt_\be_\b: _\bT_\bh_\be _\b`_\b`_\bD_\bI_\bR_\b'_\b' _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt _\bi_\bs _\ba_\bl_\bs_\bo _\br_\be_\bq_\bu_\bi_\br_\be_\bd _\bf_\bo_\br _\bt_\bh_\be _\bt_\bh_\be
3852   _\bT_\bo_\b:_\b/_\bC_\bc_\b: _\bl_\bi_\bs_\bt _\ba_\bd_\bd_\br_\be_\bs_\bs _\br_\be_\bs_\bt_\br_\bi_\bc_\bt_\bi_\bo_\bn _\b(_\bs_\be_\be _\b`_\b`_\bR_\be_\bq_\bu_\bi_\br_\bi_\bn_\bg _\bt_\bh_\be _\bl_\bi_\bs_\bt _\ba_\bd_\bd_\br_\be_\bs_\bs _\bi_\bn
3853   _\bT_\bo_\b:_\b/_\bC_\bc_\b: _\bh_\be_\ba_\bd_\be_\br_\bs_\b'_\b'_\b)_\b.  If the message contains MIME parts that are of a
3854   content-type listed in D\bDI\bIR\bR/\b/m\bmi\bim\bme\ber\bre\bej\bje\bec\bct\bt they are rejected. If the
3855   message is a simple MIME message of a content-type listed in either
3856   D\bDI\bIR\bR/\b/m\bmi\bim\bme\ber\bre\bej\bje\bec\bct\bt or D\bDI\bIR\bR/\b/m\bmi\bim\bme\ber\bre\bem\bmo\bov\bve\be it is also rejected.
3857
3858   There is currently no ezmlm-make(1) switch for D\bDI\bIR\bR/\b/m\bmi\bim\bme\ber\bre\bej\bje\bec\bct\bt, but it
3859   can easily be configured by editing e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b). The ezmlm-make ``-x''
3860   switch configures D\bDI\bIR\bR/\b/m\bmi\bim\bme\ber\bre\bem\bmo\bov\bve\be (see ``mimeremove'') for a list of
3861   content-types).  Messages consisting solely of these content-types
3862   (rare) will be rejected, and the corresponding MIME parts of composite
3863   messages will be removed.
3864
3865
3866   8\b8.\b.6\b6.\b.  R\bRe\bes\bst\btr\bri\bic\bct\bti\bin\bng\bg p\bpo\bos\bst\bts\bs t\bto\bo l\bli\bis\bst\bt s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs.\b.
3867
3868   Use message moderation. As an alternative, implement a check against
3869   SENDER by using ezmlm-issubn(1). The latter is easily defeated by
3870   faking SENDER. Also, it prevents posts from legitimate subscribers
3871   that are subscribed under a different address than the one they send
3872   from.  Nevertheless, it may be useful in some situations. Add:
3873
3874
3875
3876        |/usr/local/bin/ezmlm/ezmlm-issubn 'DIR' 'DIR/digest' 'DIR/allow' ||
3877           { echo "Sorry, you are not allowed to post to this list.";
3878             exit 100; }
3879
3880
3881
3882
3883   _\bA_\bL_\bL _\bO_\bN _\bO_\bN_\bE _\bL_\bI_\bN_\bE to D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br before the ezmlm-send(1) line. ``DIR''
3884   is the main list directory. If your ezmlm binaries live in a different
3885   directory, change the ezmlm-issubn(1) path accordingly. If you would
3886   like denied posts to be dropped silently rather than bounced, change
3887   the exit code to 99.
3888
3889   See ``Customizing ezmlm-make operation'' if you want your lists to
3890   have some of these features by default or set by specific ezmlm-
3891   make(1) switches. The ezmlm-make(1) ``-u'' switch by default sets up
3892   restrictions this way.
3893
3894
3895   If you do not want to allow digest subscribers to post, remove
3896   D\bDI\bIR\bR/\b/d\bdi\big\bge\bes\bst\bt/\b/ from the ezmlm-issubn command line. To allow posts from an
3897   address that is not a subscriber, simply add it to the addresses in
3898   D\bDI\bIR\bR/\b/a\bal\bll\blo\bow\bw/\b/:
3899
3900
3901                % ezmlm-sub DIR/allow address@host
3902
3903
3904
3905
3906   The ``allow'' database can be manipulated remotely by sending mail to
3907   list-allow-subscribe@listhost, list-allow-unsubscribe@listhost, etc.
3908   If configured for the list, the ``-list'' command for remote adminis-
3909   trators will work for the ``allow'' database as well.
3910
3911   Please note that this setup is not secure, as it is easy to modify the
3912   envelope SENDER. For more secure options, see ``Restricting posts to
3913   an arbitrary set of E-mail addresses (higher security option)''.
3914
3915
3916
3917   8\b8.\b.7\b7.\b.  R\bRe\bes\bst\btr\bri\bic\bct\bti\bin\bng\bg p\bpo\bos\bst\bts\bs t\bto\bo a\ban\bn a\bar\brb\bbi\bit\btr\bra\bar\bry\by s\bse\bet\bt o\bof\bf E\bE-\b-m\bma\bai\bil\bl a\bad\bdd\bdr\bre\bes\bss\bse\bes\bs
3918   (\b(h\bhi\big\bgh\bhe\ber\br s\bse\bec\bcu\bur\bri\bit\bty\by o\bop\bpt\bti\bio\bon\bn)\b).\b.
3919
3920   The easiest way to achieve this is to simply set up a message
3921   moderated list, and add all the e-mail addresses to the moderator db.
3922   Use a custom location, if you want a different set of moderators for
3923   subscription moderation/remote admin. If a "moderator" posts, only
3924   s/he will get a confirmation request. If anybody else posts, the post
3925   will be sent to all moderators.
3926
3927
3928   To directly bounce posts from SENDERs not in the database, use the
3929   ezmlm-store ``-P'' (not public) switch. This is more secure than a
3930   simple ezmlm-issubn(1) construct, since faking SENDER to a moderator
3931   address will result in a confirmation request to that moderator (which
3932   s/he will reject/ignore), rather than a direct post. The draw-back is
3933   that each post has to be confirmed, but with the speed of ezmlm the
3934   request will arrive immediately after the post is made, so the
3935   overhead should is The best choice depends on your particular needs in
3936   the trade-off between security and convenience.
3937
3938   ``ezmlm-make -om'' will set up such a moderated list with ``ezmlm-
3939   store -P''.  This is the most useful setup for an announcement list.
3940
3941
3942   Setting a list up in this way with only the owner's address gives you
3943   a pretty safe owner-only list.
3944
3945
3946   8\b8.\b.8\b8.\b.  C\bCo\bom\bmp\bpl\ble\bet\bte\bel\bly\by r\bre\bes\bst\btr\bri\bic\bct\bti\bin\bng\bg p\bpo\bos\bst\bts\bs.\b.
3947
3948   To completely prevent posting (for instance a message-of-the-day
3949   list), set up a normal list, and just remove ~\b~/\b/.\b.q\bqm\bma\bai\bil\bl-\b-l\bli\bis\bst\bt and
3950   D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br altogether. Make posts from the shell, or from shell
3951   scripts or crond, by simply piping a (complete) message to ezmlm-
3952   send(1):
3953
3954
3955
3956        % /usr/local/bin/ezmlm/ezmlm-send DIR < message
3957
3958
3959
3960
3961   _\bN_\bO_\bT_\bE: This can be done by any user with write access to files within
3962   the list directory, so make sure your file modes are set correctly.
3963   The ezmlm-send(1) path may need to be changed to match your ezmlm
3964   binary directory. It's also a good idea to not allow others to read
3965   your list directory and D\bDI\bIR\bR/\b/s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs/\b/ and other address lists.
3966
3967
3968   8\b8.\b.9\b9.\b.  A\bA g\bge\ben\bne\ber\bra\bal\bl s\bso\bol\blu\but\bti\bio\bon\bn t\bto\bo r\bre\bes\bst\btr\bri\bic\bct\bti\bin\bng\bg p\bpo\bos\bst\bts\bs b\bba\bas\bse\bed\bd o\bon\bn S\bSE\bEN\bND\bDE\bER\bR.\b.
3969
3970   As discussed above, the security afforded by SENDER checks is minimal,
3971   but nevertheless sufficient to keep out most spam and garbage.
3972   However, some subscribers post from e-mail addresses other than their
3973   subscription address, and users tend to become unfriendly when their
3974   posts are denied even though they are subscribers. This is a general
3975   solution to this problem which has minimal overhead for the list owner
3976   and is essentially completely transparent to the subscriber.
3977
3978   Set up the list with ezmlm-gate(1) in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br in place of the
3979   ezmlm-send(1) line.  To the ezmlm-gate(1) command line add the list
3980   directory twice, then a digest directory D\bDI\bIR\bR/\b/d\bdi\big\bge\bes\bst\bt/\b/ (if it exists),
3981   then D\bDI\bIR\bR/\b/a\bal\bll\blo\bow\bw/\b/.  Create D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt. Add the list owner as a message
3982   moderator.
3983
3984   With this setup, any message from a SENDER that is a subscriber of the
3985   main list, the digest list or added to D\bDI\bIR\bR/\b/a\bal\bll\blo\bow\bw/\b/, will be posted
3986   directly, others will be sent to the list owner for approval. If the
3987   list wants to automatically approve posts from that address in future
3988   (e.g. it is an alias for a subscriber) s/he just adds it to the
3989   database in D\bDI\bIR\bR/\b/a\bal\bll\blo\bow\bw/\b/.  If the owner wants to approve this post, but
3990   not necessarily future posts from that address, s/he just accepts the
3991   message. To reject the message with a comment is equally easy. If the
3992   owner wished to have the option to silently ignore posts (and not have
3993   the SENDER notified that the post timed out), just add the ezmlm-
3994   clean(1) ``-R'' switch in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br and D\bDI\bIR\bR/\b/m\bmo\bod\bde\ber\bra\bat\bto\bor\br.
3995
3996   In this way, the normal subscriber is always happy and the ``behind
3997   the scenes'' work of the owner is minimalized.
3998
3999   ezmlm-make creates lists with this setup if you specify the ``-u''
4000   switch in addition to the ``-m'' switch:
4001
4002
4003
4004                % ezmlm-make -mu ~/list ~/.qmail-list joe-list host
4005
4006
4007
4008
4009   If you omit the ``-m'' switch, the setup will reject posts from non-
4010   subscribers that are not in the ``allow'' database.  ezmlm-both(1)
4011   uses a set of similar ezmlm-make(1) invocations to create a list with
4012   digest, optionally making you a remote admin, list owner, and
4013   subscriber to both lists.
4014
4015
4016   9\b9.\b.  C\bCu\bus\bst\bto\bom\bmi\biz\bzi\bin\bng\bg o\bou\but\btg\bgo\boi\bin\bng\bg m\bme\bes\bss\bsa\bag\bge\bes\bs.\b.
4017
4018
4019   9\b9.\b.1\b1.\b.  A\bAd\bdd\bdi\bin\bng\bg a\ba t\btr\bra\bai\bil\ble\ber\br t\bto\bo o\bou\but\btg\bgo\boi\bin\bng\bg m\bme\bes\bss\bsa\bag\bge\bes\bs.\b.
4020
4021   Put the text in D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/t\btr\bra\bai\bil\ble\ber\br. The text is NOT copied to the
4022   archived version of the message. This works also for sublists.  Tags
4023   ``<#h#>'', ``<#l#>'', and ``<#n#>'' are replaced by the list host,
4024   local name, and current message number, respectively.
4025
4026
4027   9\b9.\b.2\b2.\b.  A\bAd\bdd\bdi\bin\bng\bg a\ba s\bsu\bub\bbj\bje\bec\bct\bt p\bpr\bre\bef\bfi\bix\bx t\bto\bo o\bou\but\btg\bgo\boi\bin\bng\bg m\bme\bes\bss\bsa\bag\bge\bes\bs.\b.
4028
4029   Put the exact text in D\bDI\bIR\bR/\b/p\bpr\bre\bef\bfi\bix\bx. You can include the message number
4030   assigned to the post in the list archive by adding the ``#'' character
4031   in the text in D\bDI\bIR\bR/\b/p\bpr\bre\bef\bfi\bix\bx (example: put ``lsqb;listname-#rsqb;'' in
4032   D\bDI\bIR\bR/\b/p\bpr\bre\bef\bfi\bix\bx).  ezmlm does not modify the subject other than by
4033   prefixing it with the prefix.  ezmlm knows about rfc2047 encoded
4034   subject and can detect a prefix within an encoded word. However, ezmlm
4035   will not modify the subject itself. It will add a prefix only of none
4036   has been added before. A consequence of this is that a message will
4037   have the message number prefix of the first message in the thread
4038   rather than a prefix with the number of the message itself. The entire
4039   thread can always be retrieved with a message to list-thread-x@host,
4040   where ``x'' is the number in the prefix.
4041
4042   We recommend against using the prefix feature and strongly against the
4043   message number prefix. If you use it, make sure you understand the
4044   drawbacks, of message modification and subjects that change between
4045   message and reply.  ezmlm can deal with this, but other programs may
4046   not be able to.
4047
4048   Sublists ignore D\bDI\bIR\bR/\b/p\bpr\bre\bef\bfi\bix\bx.
4049
4050   If you add a prefix, especially if you previously added it by other
4051   means (procmail, etc.), use ezmlm-idx to re-index the archive. Due to
4052   the way ezmlm-get(1) does threading from the subject, it works best if
4053   you use exactly the same prefix as you did before.
4054
4055
4056   9\b9.\b.3\b3.\b.  A\bAd\bdd\bdi\bin\bng\bg a\ba h\bhe\bea\bad\bde\ber\br t\bto\bo o\bou\but\btg\bgo\boi\bin\bng\bg m\bme\bes\bss\bsa\bag\bge\bes\bs.\b.
4057
4058   Put the exact header text as a line in D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\bra\bad\bdd\bd.  Thus, if you'd
4059   like a ``Precedence: bulk'' header added to outgoing messages, put a
4060   line ``Precedence: bulk'' into D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\bra\bad\bdd\bd. This particular header
4061   is already added via the default ezmlmrc(5). Any modifications you
4062   wish to be active for all future lists should be made via modification
4063   of ezmlmrc(5) (see ``Customizing ezmlm-make operation'').  As of
4064   ezmlm-idx-0.32, the following tags can be used in D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\bra\bad\bdd\bd, and
4065   will be substituted: <#n#> for the current message number, <#l#> for
4066   the local part of the list (this will be the digest list for digests),
4067   <#h#> for the host part of the list name. These substitutions are done
4068   at the time of message delivery, in contrast to the ``capital letter''
4069   tags substituted by ezmlm-make(1) when the list is set up.
4070
4071
4072   9\b9.\b.4\b4.\b.  A\bAd\bdd\bdi\bin\bng\bg a\ba m\bme\bes\bss\bsa\bag\bge\be n\bnu\bum\bmb\bbe\ber\br h\bhe\bea\bad\bde\ber\br.\b.
4073
4074   Don't! A sequence header may be useful for users whose systems don't
4075   pass on the ``Return-to:'' header to the MUA.
4076
4077   Use D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\bra\bad\bdd\bd with a header of the type ``X-Sequence: <#n#>''.
4078
4079   Bounced messages are identified by their local message numbers, i.e.
4080   when ezmlm sends you a message about which messages bounced, it refers
4081   to the message number of the sublist. To be consistent with these
4082   numbers, and a local sublist archive, use D\bDI\bIR\bR/\b/s\bse\beq\bqu\bue\ben\bnc\bce\be on the sublist,
4083   not the main list. To get consistent message numbering in digests,
4084   digest have the message number of the first message in the digest.
4085
4086   ezmlm-idx tries to make message numbering problems with sublists a
4087   little easier: sublists use the incoming message number, but only when
4088   the sublist is not archived and not indexed. This restriction is
4089   necessary for security reasons. Otherwise, an attacker could wreak
4090   havoc in the local message archive by sending messages with faked
4091   message numbers in the SENDER.
4092
4093   9\b9.\b.5\b5.\b.  R\bRe\bem\bmo\bov\bvi\bin\bng\bg h\bhe\bea\bad\bde\ber\brs\bs f\bfr\bro\bom\bm o\bou\but\btg\bgo\boi\bin\bng\bg m\bme\bes\bss\bsa\bag\bge\bes\bs.\b.
4094
4095   Put the header up to, but excluding the ``:'' in D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\brr\bre\bem\bmo\bov\bve\be.
4096
4097
4098   9\b9.\b.6\b6.\b.  R\bRe\bem\bmo\bov\bvi\bin\bng\bg M\bMI\bIM\bME\bE p\bpa\bar\brt\bts\bs f\bfr\bro\bom\bm m\bme\bes\bss\bsa\bag\bge\bes\bs.\b.
4099
4100   ezmlm-idx>=0.30 can strip parts from composite mime messages based on
4101   content type. Just put the appropriate content-types such as
4102   ``text/ms-word'' or ``text/html'' into D\bDI\bIR\bR/\b/m\bmi\bim\bme\ber\bre\bem\bmo\bov\bve\be. This is
4103   automatically configured when using the ezmlm-make(1) ``-x'' switch.
4104
4105
4106   9\b9.\b.7\b7.\b.  L\bLi\bim\bmi\bit\bti\bin\bng\bg `\b``\b`R\bRe\bec\bce\bei\biv\bve\bed\bd:\b:'\b''\b' h\bhe\bea\bad\bde\ber\brs\bs i\bin\bn o\bou\but\btg\bgo\boi\bin\bng\bg m\bme\bes\bss\bsa\bag\bge\bes\bs.\b.
4107
4108   Sendmail still is being used on the majority of mail hubs. Sendmail
4109   has very primitive loop detection, bouncing messages based on
4110   excessive ``hopcount''.  The ``hopcount'' is determined by counting
4111   ``Received:'' headers. ezmlm by default propagates ``Received:''
4112   headers to facilitate message tracking. Thus, messages, especially
4113   from a sublist, can have a number of ``Received:'' headers that
4114   exceeds the ``hopcount'' set on poorly configured sendmail hosts.
4115   Subscription confirmation requests, warning, and probe messages have
4116   fewer ``Received:'' headers. Thus, a user may be able to receive
4117   these, but not (some of the) list messages. Of course, the best is to
4118   correct the configuration on the bouncing host, but this is often
4119   under the control of neither list owner nor user.
4120
4121   To compensate for this problem, ezmlm-send(1) of ezmlm-idx->=0.313 by
4122   default removes all ``Received:'' headers except the top one.  They
4123   are still written to the archive, an can be retrieved from there using
4124   the ``-getv'' command.  To cause ezmlm-send(1) to pass on all the
4125   ``Received:'' headers, use the ezmlm-send(1) ``-r'' switch.
4126
4127
4128   9\b9.\b.8\b8.\b.  S\bSe\bet\btt\bti\bin\bng\bg `\b``\b`R\bRe\bep\bpl\bly\by-\b-T\bTo\bo:\b: l\bli\bis\bst\bt@\b@h\bho\bos\bst\bt'\b''\b'.\b.
4129
4130   This is not recommended, since it leads to dissemination via the list
4131   of messages returned from bad auto-responders and MTAs. Also, it may
4132   lead to public replies to the list where personal replies were
4133   intended. In addition, the original ``Reply-To:'' header is lost. If
4134   you do want to add a reply-to list header, put ``reply-to'' into
4135   D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\brr\bre\bem\bmo\bov\bve\be, and ``Reply-To: list@host.dom'' into D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\bra\bad\bdd\bd.
4136
4137
4138   9\b9.\b.9\b9.\b.  C\bCo\bon\bnf\bfi\big\bgu\bur\bri\bin\bng\bg t\bth\bhe\be l\bli\bis\bst\bt s\bso\bo p\bpo\bos\bst\bts\bs a\bar\bre\be n\bno\bot\bt c\bco\bop\bpi\bie\bed\bd t\bto\bo t\bth\bhe\be o\bor\bri\big\bgi\bin\bna\bal\bl
4139   s\bse\ben\bnd\bde\ber\br.\b.
4140
4141   For most mailing lists, you want all subscribers, including the sender
4142   of a particular message, to get all messages. This way, the sender
4143   sees that the message reached the list. For small lists, such as a
4144   project group, it may be annoying for the members to receive their own
4145   posts.
4146
4147   ezmlm-send(1) can be configured to exclude the sender from the
4148   recipient E-mail addresses if configured with the ``-C'' switch. To
4149   add this switch, edit the ezmlm-send(1) line of D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br.
4150
4151
4152   9\b9.\b.1\b10\b0.\b.  C\bCu\bus\bst\bto\bom\bmi\biz\bzi\bin\bng\bg e\bez\bzm\bml\blm\bm n\bno\bot\bti\bif\bfi\bic\bca\bat\bti\bio\bon\bn m\bme\bes\bss\bsa\bag\bge\bes\bs.\b.
4153
4154   Most of ezmlm's more commonly used messages are stored in D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/.
4155   These messages can be edited manually for a list once it is set up, or
4156   on a global basis via modification of e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b).  The messages may
4157   also be edited via E-mail by remote administrators (remote admin must
4158   also be enabled - ezmlm-make switch ``-r'') after the list is
4159   established by creating the list using the ezmlm-make(1) ``-n'' (new
4160   text files) (see ``How text file editing works'' and see ``Customizing
4161   ezmlm-make operation'').
4162
4163   The most useful messages are D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/s\bsu\bub\bb-\b-o\bok\bk (and for subscription
4164   moderated lists D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/m\bmo\bod\bd-\b-s\bsu\bub\bb) for new subscriber information (such
4165   as the traditional ``welcome'' message, or a list charter or list
4166   posting rules/guidelines); D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/u\bun\bns\bsu\bub\bb-\b-n\bno\bop\bp is useful for messages
4167   to frustrated users unsuccessful in their unsubscribe attempts;
4168   D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/h\bhe\bel\blp\bp for general help information in reply to list-help@host
4169   or unrecognized commands, D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/b\bbo\bot\btt\bto\bom\bm for inclusion at the bottom
4170   of virtually all ezmlm messages; D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/m\bmo\bod\bd-\b-h\bhe\bel\blp\bp for moderator
4171   information; D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/t\btr\bra\bai\bil\ble\ber\br for a (few) line(s) at the bottom of
4172   each post; D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/d\bdi\big\bge\bes\bst\bt for information in the ``Administrivia''
4173   section of digests.
4174
4175
4176   9\b9.\b.1\b11\b1.\b.  S\bSp\bpe\bec\bci\bif\bfy\byi\bin\bng\bg c\bch\bha\bar\bra\bac\bct\bte\ber\br s\bse\bet\bt a\ban\bnd\bd c\bco\bon\bnt\bte\ben\bnt\bt-\b-t\btr\bra\ban\bns\bsf\bfe\ber\br-\b-e\ben\bnc\bco\bod\bdi\bin\bng\bg f\bfo\bor\br o\bou\but\bt-\b-
4177   g\bgo\boi\bin\bng\bg e\bez\bzm\bml\blm\bm m\bme\bes\bss\bsa\bag\bge\bes\bs.\b.
4178
4179   All ezmlm replies, except errors handled directly by qmail, can be
4180   sent in any character set and optionally with quoted-printable or
4181   base64 content-transfer-encoding. D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/ files are always 8-bit
4182   files, but even though qmail has no problems with 8-bit mail, other
4183   MTAs and MUAs do.  Problems due to this can be avoided by assuring
4184   that outgoing ezmlm messages are 7bit by using the appropriate
4185   content-transfer-encoding.
4186
4187   To specify a character set, put the name in D\bDI\bIR\bR/\b/c\bch\bha\bar\brs\bse\bet\bt (default: us-
4188   ascii). To specify quoted-printable or base64 content-transfer-
4189   encoding, add ``:Q'' or ``:B'' after the character set name in
4190   D\bDI\bIR\bR/\b/c\bch\bha\bar\brs\bse\bet\bt.
4191
4192
4193   1\b10\b0.\b.  C\bCu\bus\bst\bto\bom\bmi\biz\bzi\bin\bng\bg a\bar\brc\bch\bhi\biv\bve\be r\bre\bet\btr\bri\bie\bev\bva\bal\bl.\b.
4194
4195
4196   1\b10\b0.\b.1\b1.\b.  S\bSp\bpe\bec\bci\bif\bfy\byi\bin\bng\bg t\bth\bhe\be f\bfo\bor\brm\bma\bat\bt f\bfo\bor\br r\bre\bet\btr\bri\bie\bev\bve\bed\bd m\bme\bes\bss\bsa\bag\bge\bes\bs.\b.
4197
4198   Add a format (f) specifier after the archive retrieval command:
4199
4200
4201
4202        list-getf@host
4203
4204
4205
4206
4207   where ``f'' is ``r'' for rfc1153 format, ``m'' (mime; default) for
4208   MIME multipart/digest with subset of ordered headers, and ``v'' (vir-
4209   gin) MIME multipart/digest, i.e. with all headers retained from the
4210   archive, and ``n'' (native) the same as ``v'' except that no threading
4211   is performed and messages are returned in numerical order.  Under some
4212   circumstances, it may be preferable to have a digest in ``multi-
4213   part/mixed''.  The ``x'' (mixed) format is identical to ``m'' except
4214   for this header.
4215
4216   For ezmlm-cron(1), just suffix the format code to the digest code.
4217
4218
4219   1\b10\b0.\b.2\b2.\b.  S\bSp\bpe\bec\bci\bif\bfy\byi\bin\bng\bg t\bth\bhe\be d\bde\bef\bfa\bau\bul\blt\bt f\bfo\bor\brm\bma\bat\bt f\bfo\bor\br d\bdi\big\bge\bes\bst\bts\bs a\ban\bnd\bd a\bar\brc\bch\bhi\biv\bve\be
4220   r\bre\bet\btr\bri\bie\bev\bva\bal\bl.\b.
4221
4222   The ezmlm-get(1) ``-f'' switch can be used to change the default
4223   format (MIME with removal of less relevant headers) to other formats.
4224   The format specifiers are the same as for individual archive
4225   retrievals (see ``Specifying the format for retrieved messages'').
4226
4227
4228   1\b10\b0.\b.3\b3.\b.  L\bLi\bim\bmi\bit\bti\bin\bng\bg t\bth\bhe\be n\bnu\bum\bmb\bbe\ber\br o\bof\bf m\bme\bes\bss\bsa\bag\bge\bes\bs p\bpe\ber\br -\b-g\bge\bet\bt/\b/-\b-i\bin\bnd\bde\bex\bx r\bre\beq\bqu\bue\bes\bst\bt.\b.
4229
4230   By default, a single -get request returns a maximum of 100 messages,
4231   and a single -index request 2000 subjects entries (20 files of 100
4232   subjects entries each). This can be changed by editing MAXGET, and
4233   MAXINDEX in i\bid\bdx\bx.\b.h\bh and recompiling. Remember to edit t\bte\bex\bxt\bt/\b/b\bbo\bot\btt\bto\bom\bm,
4234   t\bte\bex\bxt\bt/\b/b\bbo\bou\bun\bnc\bce\be, and e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) to reflect these changes so that your
4235   users won't get confused.
4236
4237
4238   1\b11\b1.\b.  R\bRe\bes\bst\btr\bri\bic\bct\bti\bin\bng\bg a\bar\brc\bch\bhi\biv\bve\be r\bre\bet\btr\bri\bie\bev\bva\bal\bl.\b.
4239
4240
4241   1\b11\b1.\b.1\b1.\b.  R\bRe\bes\bst\btr\bri\bic\bct\bti\bin\bng\bg a\bar\brc\bch\bhi\biv\bve\be a\bac\bcc\bce\bes\bss\bs t\bto\bo s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs.\b.
4242
4243   If you use ezmlm-get(1), archive retrieval can be restricted by using
4244   the ezmlm-make(1) ``-g'' (guard archive) switch. This in turn sets
4245   ezmlm-get(1) up with its ``-s'' switch, allowing access only to
4246   addresses that are subscribers of the list, or of the digest list, or
4247   that are present in an extra address database stored in D\bDI\bIR\bR/\b/a\bal\bll\blo\bow\bw/\b/.
4248   Addresses can be added remotely by mailing list-allow-
4249   useralias=userhost@listhost. Other commands, such as ``subscribe''
4250   work as expected. As you can see, the different programs have many
4251   options and ezmlm-make(1) organizes most of them into the most useful
4252   sets to make it easier. Don't hesitate to look at the ezmlmrc(5) man
4253   page and man pages for individual commands. There are many useful
4254   options to more finely tune your lists to your taste. Via modification
4255   of ezmlmrc(5) you can make your favorite options the default!
4256
4257   Since ezmlm-get always sends the reply to SENDER, this assures that
4258   only subscribers can get archive excerpts. Since SENDER is easily
4259   faked, anyone can still request archive info (and drain system
4260   resources), but replies go only to subscriber E-mail addresses.  The
4261   D\bDI\bIR\bR/\b/a\bal\bll\blo\bow\bw/\b/ database can be used to manually add addresses that should
4262   be given archive access, but are not subscribers. This may be an
4263   address of a subscriber who posts from an address other than his or
4264   her subscription address.
4265
4266
4267   1\b11\b1.\b.2\b2.\b.  R\bRe\bes\bst\btr\bri\bic\bct\bti\bin\bng\bg a\bav\bva\bai\bil\bla\bab\bbl\ble\be a\bar\brc\bch\bhi\biv\bve\be r\bre\bet\btr\bri\bie\bev\bva\bal\bl c\bco\bom\bmm\bma\ban\bnd\bds\bs.\b.
4268
4269   If you want to disable all archive retrieval except digest creation,
4270   simply add the ``-C'' command line switch to the ezmlm-get(1) line in
4271   D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. If you don't want digest creation via trigger messages
4272   and D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br, but use other means to created digests, you can
4273   remove the ezmlm-get(1) line from D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br.
4274
4275
4276   1\b11\b1.\b.3\b3.\b.  R\bRe\bes\bst\btr\bri\bic\bct\bti\bin\bng\bg a\bar\brc\bch\bhi\biv\bve\be r\bre\bet\btr\bri\bie\bev\bva\bal\bl t\bto\bo m\bmo\bod\bde\ber\bra\bat\bto\bor\brs\bs.\b.
4277
4278   If D\bDI\bIR\bR/\b/p\bpu\bub\bbl\bli\bic\bc does not exist, ezmlm-manage(1) and ezmlm-get(1) modify
4279   their behavior. They disallow user requests, but for remote
4280   administration lists, honor moderator requests.  Thus, for a remote
4281   admin list without D\bDI\bIR\bR/\b/p\bpu\bub\bbl\bli\bic\bc, only subscription moderators or remote
4282   administrators can receive archive retrievals and only remote
4283   administrators can subscribe and unsubscribe user addresses.
4284
4285   If you'd like this restriction of archive retrieval with maintained
4286   user-initiated ezmlm-manage(1) subscription functions, use the ezmlm-
4287   get(1) ``-P'' (not public) switch, and retain D\bDI\bIR\bR/\b/p\bpu\bub\bbl\bli\bic\bc. Also, look
4288   at the ezmlm-make ``-b'' switch.
4289
4290
4291   1\b11\b1.\b.4\b4.\b.  A\bAl\bll\blo\bow\bwi\bin\bng\bg a\bar\brc\bch\bhi\biv\bve\be r\bre\bet\btr\bri\bie\bev\bva\bal\bl f\bfr\bro\bom\bm a\ba n\bno\bon\bn-\b-p\bpu\bub\bbl\bli\bic\bc l\bli\bis\bst\bt.\b.
4292
4293   A non-public list lacks D\bDI\bIR\bR/\b/p\bpu\bub\bbl\bli\bic\bc. ezmlm-manage(1) will reject user
4294   requests for (un) subscription and for archive retrieval. The
4295   restriction on archive retrieval can be removed with the ezmlm-get(1)
4296   ``-p'' (public) switch.
4297
4298
4299   1\b12\b2.\b.  C\bCu\bus\bst\bto\bom\bmi\biz\bzi\bin\bng\bg d\bdi\big\bge\bes\bst\bts\bs.\b.
4300
4301
4302   1\b12\b2.\b.1\b1.\b.  S\bSe\bet\btt\bti\bin\bng\bg u\bup\bp a\ba d\bdi\big\bge\bes\bst\bt l\bli\bis\bst\bt.\b.
4303
4304   Digests are integrated with normal ezmlm lists if you use ezmlm-
4305   idx>=0.30.  Just add the ezmlm-make(1) ``-d'' switch to your list
4306   setup. To add digests to an existing list created with ezmlm-idx>=0.23
4307   use:
4308
4309
4310                % ezmlm-make -+d DIR
4311
4312
4313
4314
4315   For ezmlm-0.53 or older lists, you just need to re-specify also other
4316   switches and the other ezmlm-make(1) arguments.
4317
4318
4319   1\b12\b2.\b.2\b2.\b.  G\bGe\ben\bne\ber\bra\bat\bti\bin\bng\bg d\bda\bai\bil\bly\by d\bdi\big\bge\bes\bst\bts\bs.\b.
4320
4321   The easiest way to generate trigger messages is to use crond(8) and
4322   execute ezmlm-get(1) daily. To do this, create the list with:
4323
4324
4325                ezmlm-make -d dir dot local host
4326
4327
4328
4329
4330   and add a line to your crontab file:
4331
4332
4333                30 04 * * * ezmlm-get dir
4334
4335
4336
4337
4338   and execute crontab(1). This will generate a digest each day at 04:30
4339   am. In addition, a digest will be generated at any time when the lat-
4340   est post makes it more than 30 messages or more than 64 kbytes of mes-
4341   sage body since the latest digest. If you do not want these extra
4342   digests, edit D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br and remove the ezmlm-tstdig(1) and ezmlm-
4343   get(1) lines.
4344
4345   If you do not need the digests to go out at a particular time, use the
4346   standard setup, but edit D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br to put ``-t 24'' on the ezmlm-
4347   tstdig(1) line instead of the default ``-t 48'' for 48 hours. This is
4348   even easier.  You can modify all parameters by editing e\bez\bzm\bml\blm\bmr\brc\bc or by
4349   using the ezmlm-make(1) ``-4'' argument when creating/editing the
4350   list. This is described in the ezmlm-make(1) man page, and the options
4351   etc, are described in the ezmlm-tstdig(1) man page.
4352
4353
4354
4355
4356
4357   1\b12\b2.\b.3\b3.\b.  G\bGe\ben\bne\ber\bra\bat\bti\bin\bng\bg t\bth\bhe\be f\bfi\bir\brs\bst\bt d\bdi\big\bge\bes\bst\bt.\b.
4358
4359   If you want the first digest to start with issue 1 and the first
4360   message in your archive, no special action is required.
4361
4362   If you want the first digest to start at message 123 and you have
4363   shell access, put '122' into D\bDI\bIR\bR/\b/d\bdi\big\bgn\bnu\bum\bm.
4364
4365   If you want the next digest to start at message 456, you can always
4366   edit D\bDI\bIR\bR/\b/d\bdi\big\bgn\bnu\bum\bm to contain '455'. If you want the next digest to be
4367   named issue 678, put '677' into D\bDI\bIR\bR/\b/d\bdi\big\bgi\bis\bss\bsu\bue\be.
4368
4369
4370   1\b12\b2.\b.4\b4.\b.  A\bAd\bdd\bdi\bin\bng\bg s\bst\bta\ban\bnd\bda\bar\brd\bd a\bad\bdm\bmi\bin\bni\bis\bst\btr\bra\bat\bti\biv\bve\be i\bin\bnf\bfo\bor\brm\bma\bat\bti\bio\bon\bn t\bto\bo d\bdi\big\bge\bes\bst\bts\bs.\b.
4371
4372   The text in D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/d\bdi\big\bge\bes\bst\bt is copied into  the ``Administrivia''
4373   section of the digest.  This information can be customized on a
4374   system-wide basis by editing /\b/e\bet\btc\bc/\b/e\bez\bzm\bml\blm\bmr\brc\bc, on a user-wide basis by
4375   editing ~\b~/\b/.\b.e\bez\bzm\bml\blm\bmr\brc\bc, or for the list by directly editing the
4376   D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/d\bdi\big\bge\bes\bst\bt file, or by a remote administrator by editing the file
4377   via e-mail, if the list has been set up using the ezmlm-make(1)
4378   ``-nr'' switches (see ``How text file editing works'').
4379
4380
4381   1\b12\b2.\b.5\b5.\b.  C\bCo\bon\bnt\btr\bro\bol\bll\bli\bin\bng\bg t\bth\bhe\be d\bdi\big\bge\bes\bst\bt f\bfo\bor\brm\bma\bat\bt.\b.
4382
4383   You can control the default format that ezmlm-get(1) uses for its
4384   output by using the ``-f x'' switch. For individual digests triggered
4385   by mail or other archive access, add a format specifier after the
4386   digestcode:
4387
4388
4389
4390        list-dig.codef@host
4391
4392
4393
4394
4395   For example:
4396
4397
4398
4399        joe-sos-dig.gagax@id.com
4400
4401
4402
4403
4404   where ``x'' is ``r'' for rfc1153 format, ``m'' (default) for MIME mul-
4405   tipart/digest with a subset of headers, ``v'' for virgin MIME multi-
4406   part/digest, i.e. with all headers retained from the archive, ``n''
4407   produces format similar to ``v'', without threading and with messages
4408   in numerical order. The ``x'' format is identical to the default ``m''
4409   format, but the digest content-type is ``multipart/alternative''
4410   rather than ``multipart/digest''. This helps with a pine bug if you
4411   are using quoted-printable/base64 encoding of ezmlm messages.
4412
4413   With digests triggered directly from crond(8), just use the ``-f''
4414   format specifier:
4415
4416
4417                ezmlm-get -fx DIR
4418
4419
4420
4421
4422   The same switch can also be used for standard digest triggering from
4423   D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br. Just add the ``-fx'' switch to the ezmlm-get(1) command
4424   line there. Edit ~\b~/\b/e\bez\bzm\bml\blm\bmr\brc\bc to assure that such customizations will be
4425   used for future list creations/edits.
4426
4427
4428   1\b12\b2.\b.6\b6.\b.  C\bCu\bus\bst\bto\bom\bmi\biz\bzi\bin\bng\bg b\bbo\bou\bun\bnc\bce\be h\bha\ban\bnd\bdl\bli\bin\bng\bg.\b.
4429
4430   The time out for bounce messages is normally 11.6 days. This means
4431   that a bad address will take longer that 3 weeks to be removed.
4432   Usually, this delay is desirable. After all, it is much worse to
4433   remove a subscriber just because the address had temporary problems
4434   that to send a few extra messages and receive a few extra bounces.
4435
4436   However, for large lists, bounce handling can consume a considerable
4437   amount of resources. To decrease the load, remove all ezmlm-warn(1)
4438   lines from the D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br, and D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br files. Instead, execute:
4439
4440
4441        /path/ezmlm-warn DIR
4442        /path/ezmlm-warn -d DIR
4443
4444
4445
4446
4447   daily during off-peak hours via a cron script. The second line can be
4448   omitted if you are not using the digest capability of the list.
4449
4450   This should not be necessary for ezmlm-idx>=0.32. That version adds
4451   much more efficient bounce handling, making this type of modification
4452   usable only for extremely large lists with many bad addresses (unusual
4453   for ezmlm lists) and for hosts that are working near the limit of
4454   their capacity (where shifting some qmail load to off-peak hours is
4455   worth the effort).
4456
4457   In addition, you may want to reduce the time out for bounces from 11.6
4458   to a lower number of days, e.g. 5. To do so, add ``-t 5'' to the
4459   ezmlm-warn(1) command line.
4460
4461   If you start with a list from a list manager that does not have bounce
4462   handling, chances are that you have many bad addresses in your list.
4463   You can always execute:
4464
4465
4466        /path/ezmlm-warn -t0 DIR
4467        /path/ezmlm-warn -d -t0 DIR
4468
4469
4470
4471
4472   to move bounce handling one step forward per execution. Users whose
4473   mail has bounced will be sent a warning. Users for whom the warning
4474   message has bounced will be sent a probe.
4475
4476
4477   1\b13\b3.\b.  R\bRe\bem\bmo\bot\bte\be a\bad\bdm\bmi\bin\bni\bis\bst\btr\bra\bat\bti\bio\bon\bn.\b.
4478
4479
4480   1\b13\b3.\b.1\b1.\b.  H\bHo\bow\bw c\bca\ban\bn I\bI r\bre\bem\bmo\bot\bte\bel\bly\by a\bad\bdd\bd m\bmo\bod\bde\ber\bra\bat\bto\bor\brs\bs,\b, s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\br a\bal\bli\bia\bas\bse\bes\bs,\b, e\bet\btc\bc?\b?
4481
4482   On any list, the D\bDI\bIR\bR/\b/a\bal\bll\blo\bow\bw/\b/ database can be manipulated remotely via
4483   mail to list-allow-subscribe@listhost, etc. The rules for
4484   adding/removing/listing addresses to this database are the same as for
4485   the main list. Thus, if a user on an open list wants to be able to
4486   post from alias@al.host.com s/he can send a message to list-allow-
4487   subscribe-alias=al.host.com@listhost and reply to the confirmation
4488   request. Now, s/he can post from this address even on a subscriber-
4489   only list and even though the address is not a real subscriber.
4490
4491   It can be confusing to some users that you use ``subscribe'' here, but
4492   you don't get any messages. If you explain to them that this is just
4493   another collection of addresses they will understand. You can also
4494   send the initial message on their behalf. If you are a remote admin,
4495   you can even complete the transaction adding the alias without
4496   subscriber participation.
4497
4498   Addresses can also be unsubscribed from the ``allow'' database.
4499   However, there is usually no good reason to do so.
4500
4501   If configured, the D\bDI\bIR\bR/\b/d\bde\ben\bny\by/\b/ database can be manipulated, but only by
4502   remote administrators, by mail to e.g.  list-deny-
4503   baduser=badhost@listhost. Normal users cannot access this database.
4504
4505   To remotely administrate the D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/ databases (i.e., without shell
4506   access), you need to set up a non-public, remotely administered list
4507   which ``resides'' within the D\bDI\bIR\bR/\b/m\bmo\bod\bd. _\bP_\bl_\be_\ba_\bs_\be _\bc_\ba_\br_\be_\bf_\bu_\bl_\bl_\by _\bc_\bo_\bn_\bs_\bi_\bd_\be_\br _\bt_\bh_\be
4508   _\bi_\bm_\bp_\bl_\bi_\bc_\ba_\bt_\bi_\bo_\bn_\bs _\bo_\bf _\bm_\ba_\bk_\bi_\bn_\bg _\bi_\bt _\bp_\bo_\bs_\bs_\bi_\bb_\bl_\be _\bt_\bo _\br_\be_\bm_\bo_\bt_\be_\bl_\by _\ba_\bd_\bd_\b, _\br_\be_\bm_\bo_\bv_\be_\b, _\ba_\bn_\bd _\bl_\bi_\bs_\bt
4509   _\bm_\bo_\bd_\be_\br_\ba_\bt_\bo_\br_\bs_\b. _\bI_\bn _\bm_\ba_\bn_\by _\bc_\bi_\br_\bc_\bu_\bm_\bs_\bt_\ba_\bn_\bc_\be_\bs_\b, _\bt_\bh_\bi_\bs _\bi_\bs _\bd_\ba_\bn_\bg_\be_\br_\bo_\bu_\bs_\b.
4510
4511   After setting up your list with the specific functionality you need,
4512   use the following command for D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/:
4513
4514
4515                % ezmlm-make -ePrIAl ~/list/mod ~/.qmail-list-mod joe-list-mod host
4516
4517
4518
4519
4520   The '-l' flag is not necessary, but makes it easier to administrate
4521   your moderator database by permitting the ``supermoderator'' to see
4522   who is on the list.
4523
4524   The new list does not have a key. Using the key from the main list is
4525   inadvisable. Instead, create a dummy list, copy the key from this list
4526   to your ``moderator'' list:
4527
4528
4529                % cp ~/DUMMY/key ~/DIR/mod/key
4530
4531
4532
4533
4534   Erase the dummy list. Also, posts to this list should not be allowed.
4535   Erase the ~\b~/\b/.\b.q\bqm\bma\bai\bil\bl-\b-l\bli\bis\bst\bt-\b-m\bmo\bod\bd and ~\b~/\b/D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/e\bed\bdi\bit\bto\bor\br.  Then add the remote
4536   administrator of the ``moderator'' list:
4537
4538
4539                % ezmlm-sub ~/list/mod/mod supermod@superhost
4540
4541
4542
4543
4544   The ``supermoderator'' can now remotely administrate the moderators of
4545   the main list.
4546
4547
4548   1\b13\b3.\b.2\b2.\b.  M\bMo\bod\bde\ber\bra\bat\bti\bin\bng\bg p\bpo\bos\bst\bts\bs f\bfr\bro\bom\bm a\ba s\bse\bec\bco\bon\bnd\bda\bar\bry\by a\bac\bcc\bco\bou\bun\bnt\bt.\b.
4549
4550   Request for moderation of posts can be forwarded to any address and
4551   acted on from that address. By default, all post moderation requests
4552   have subjects starting with ``MODERATE for'' followed by the list
4553   name.
4554
4555   1\b13\b3.\b.3\b3.\b.  M\bMo\bod\bde\ber\bra\bat\bti\bin\bng\bg s\bsu\bub\bbs\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn f\bfr\bro\bom\bm a\ba s\bse\bec\bco\bon\bnd\bda\bar\bry\by a\bac\bcc\bco\bou\bun\bnt\bt.\b.
4556
4557   Requests for moderator approval of user subscribe requests can be
4558   forwarded to any address and acted on from that address.  All
4559   subscription moderation requests have subjects starting with
4560   ``CONFIRM'' (or ``CONFIRM subscribe to listname'', since ``CONFIRM
4561   unsubscribe from listname'' is sent to the moderator only in reply to
4562   a moderator-initiated request on a list with remote admin).
4563
4564   Remote administration (initiation by the moderator of (un)subscribe
4565   requests on behalf of a user) CANNOT be initiated from an account that
4566   is not listed in the moderator database. If such attempts are made,
4567   these will be treated as regular requests, resulting in a confirm
4568   request to the user (which includes a copy of the initial request,
4569   revealing the moderator's address to the user). The user reply to a
4570   confirm request will on a non-moderated list result in the addition of
4571   the user address to the subscriber list, and in a moderated list a
4572   CONFIRM request to all the moderators. Replies to unsubscribe confirm
4573   requests always result in the removal of the address, without
4574   moderator intervention (except in some cases when the ezmlm-manage -U
4575   switch is used (see below)).  With this caveat, moderation and remote
4576   administration can be done from a secondary address.
4577
4578   For the subscription moderator to temporarily use a different address,
4579   s/he needs to forward all ``CONFIRM'' messages to the new address. For
4580   a permanent move, it is better to remove the old moderator address and
4581   add the new SENDER address to allow moderator-initiated (un)subscribes
4582   without user intervention from the new address (of course, the list
4583   has to be configured for remote administration with D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be).
4584
4585
4586   1\b13\b3.\b.4\b4.\b.  A\bAu\but\bto\bom\bma\bat\bti\bic\bca\bal\bll\bly\by a\bap\bpp\bpr\bro\bov\bvi\bin\bng\bg p\bpo\bos\bst\bts\bs o\bor\br s\bsu\bub\bbs\bsc\bcr\bri\bip\bpt\bti\bio\bon\bns\bs.\b.
4587
4588   Sometimes, it may be desirable for the moderator to automatically
4589   approve all moderation requests. This may be appropriate for a single
4590   moderator of a ``civilized'' list when away for the week.
4591
4592   Set up your client to auto-reply to the ``Reply-To:'' address for all
4593   messages with subjects ``CONFIRM subscribe to listname'' or ``MODERATE
4594   for listname''. Beware that this can be used by malicious people to
4595   trick your account to send mail anywhere.  In practice, this should
4596   not be a problem.  If you are worried, forward the messages to a
4597   (trusted) friend and ask him/her to appropriately reply to the
4598   requests.
4599
4600
4601   1\b13\b3.\b.5\b5.\b.  A\bAl\bll\blo\bow\bwi\bin\bng\bg r\bre\bem\bmo\bot\bte\be a\bad\bdm\bmi\bin\bni\bis\bst\btr\bra\bat\bto\bor\brs\bs t\bto\bo g\bge\bet\bt a\ba s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\br l\bli\bis\bst\bt.\b.
4602
4603   Access to the subscriber list is sensitive. Thus, this option is
4604   disabled by default. The ezmlm-manage(1) ``-l'' command line switch
4605   enables this option, but will send a subscriber list only to a
4606   moderator's address. This allows a moderator to also initiate a
4607   subscriber list retrieval from a secondary account (i.e.  one to which
4608   the moderator's mail is delivered, but for which SENDER is not a
4609   moderator). The latter option does not decrease security, as it is
4610   trivial to fake SENDER (see ``Ezmlm-idx security'' for a discussion of
4611   ezmlm-idx security aspects).
4612
4613   For maximum subscriber list security, do not enable this feature. To
4614   enable this feature by default, just modify e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) (see
4615   ``Customizing ezmlm-make operation'').
4616
4617
4618
4619
4620
4621   1\b13\b3.\b.6\b6.\b.  A\bAl\bll\blo\bow\bwi\bin\bng\bg r\bre\bem\bmo\bot\bte\be a\bad\bdm\bmi\bin\bni\bis\bst\btr\bra\bat\bto\bor\brs\bs t\bto\bo r\bre\bet\btr\bri\bie\bev\bve\be o\bor\br s\bse\bea\bar\brc\bch\bh a\ba s\bsu\bub\bb-\b-
4622   s\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn l\blo\bog\bg.\b.
4623
4624   This is restricted and works as the subscriber list, since it contains
4625   information of equal sensitivity. To receive the entire log, mail
4626   list-log@listhost.  See ``Howto get a subscription log'' for more
4627   details on the reply format.  As of ezmlm-idx-0.32, the subscription
4628   log also contains the From: line contents from the user's subscribe
4629   confirmation. This usually contains the user's name and can be helpful
4630   if the user cannot recall or determine the subscription address. To
4631   make life easier for the remote admin, ezmlm-idx-0.32 also supports
4632   searching the log, using exact matches for alphanumerics and ``_'' as
4633   a wild card character. Thus, to find records matching ``Keith John*'',
4634   the remote admin can mail list-log.Keith_John.  See ``Howto get a
4635   subscription log'' for more information.
4636
4637
4638   1\b13\b3.\b.7\b7.\b.  A\bAl\bll\blo\bow\bwi\bin\bng\bg u\bus\bse\ber\brs\bs t\bto\bo g\bge\bet\bt a\ba s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\br l\bli\bis\bst\bt.\b.
4639
4640   If you want any user to be able to get a subscriber list, you can set
4641   up a separate link to D\bDI\bIR\bR/\b/l\bli\bis\bst\bt and then put in a script using ezmlm-
4642   list (See ``adding your own commands'' for more info.)  . The authors
4643   strongly urge against this, since a common method for spammers to get
4644   valid E-mail addresses from mailing lists is to exploit unrestricted
4645   -list commands.  A subscriber with questions about who is on the list
4646   should contact the list-owner@host. A subscriber wishing to confirm
4647   that they are still on the list can just send a message to list-
4648   subscribe@listhost, and reply to the confirm request. The following
4649   message will be a ``ezmlm response'' if the user was already a
4650   subscriber, and a ``WELCOME to listname'' if s/he was not.
4651
4652
4653   1\b13\b3.\b.8\b8.\b.  C\bCh\bha\ban\bng\bgi\bin\bng\bg t\bth\bhe\be t\bti\bim\bme\beo\bou\but\bt f\bfo\bor\br m\bme\bes\bss\bsa\bag\bge\bes\bs i\bin\bn t\bth\bhe\be m\bmo\bod\bde\ber\bra\bat\bti\bio\bon\bn q\bqu\bue\beu\bue\be.\b.
4654
4655   Put the time, in hours, into D\bDI\bIR\bR/\b/m\bmo\bod\bdt\bti\bim\bme\be. This value may not exceed
4656   the range of 24-120 h set at compile time by the defines in i\bid\bdx\bx.\b.h\bh.
4657
4658
4659   1\b13\b3.\b.9\b9.\b.  F\bFi\bin\bnd\bdi\bin\bng\bg o\bou\but\bt h\bho\bow\bw m\bma\ban\bny\by m\bme\bes\bss\bsa\bag\bge\bes\bs a\bar\bre\be w\bwa\bai\bit\bti\bin\bng\bg f\bfo\bor\br m\bmo\bod\bde\ber\bra\bat\bti\bio\bon\bn.\b.
4660
4661
4662
4663        % ls -l DIR/mod/pending
4664
4665
4666
4667
4668   and count lines with the owner execute bit set (rwx------).  Others
4669   are remnants from failed ezmlm-store runs (ignore - ezmlm-clean(1)
4670   will remove them).
4671
4672   There is currently no way to see this remotely, although you could
4673   easily install a script mailing the 'ls' output in response to a
4674   message to e.g. l\bli\bis\bst\bt-\b-c\bch\bhk\bkq\bqu\bue\beu\bue\be@\b@h\bho\bos\bst\bt.  (See ezmlm-check(1) and ``adding
4675   your own commands'' for examples.)
4676
4677
4678   1\b13\b3.\b.1\b10\b0.\b.  U\bUs\bsi\bin\bng\bg t\bth\bhe\be s\bsa\bam\bme\be m\bmo\bod\bde\ber\bra\bat\bto\bor\brs\bs f\bfo\bor\br m\bmu\bul\blt\bti\bip\bpl\ble\be l\bli\bis\bst\bts\bs.\b.
4679
4680   Set up a moderator dir:
4681
4682
4683
4684
4685
4686
4687   % mkdir /path/moddir /path/moddir/subscribers
4688   % touch /path/moddir/lock
4689   % chown -R user /path/moddir
4690
4691
4692
4693
4694   For alias:
4695
4696
4697
4698         # chown -R alias /path/moddir
4699
4700
4701
4702
4703   For example:
4704
4705
4706
4707        % mkdir ~joe/mods ~joe/mods/subscribers
4708        % touch ~joe/mods/lock
4709
4710
4711
4712
4713   Then for the lists, put /\b/p\bpa\bat\bth\bh/\b/m\bmo\bod\bdd\bdi\bir\br into D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb (for moderation
4714   of subscribes), D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be (for remote admin if D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb does not
4715   exist), and D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt (for moderation of messages).
4716
4717   For example:
4718
4719
4720
4721        % echo "/home/joe/mods" > ~joe/DIR/modsub
4722
4723
4724
4725
4726   _\bN_\bO_\bT_\bE_\b: The path must start with a '/'.
4727
4728
4729   1\b13\b3.\b.1\b11\b1.\b.  U\bUs\bsi\bin\bng\bg d\bdi\bif\bff\bfe\ber\bre\ben\bnt\bt m\bmo\bod\bde\ber\bra\bat\bto\bor\brs\bs f\bfo\bor\br m\bme\bes\bss\bsa\bag\bge\be a\ban\bnd\bd s\bsu\bub\bbs\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn m\bmo\bod\bde\ber\br-\b-
4730   a\bat\bti\bio\bon\bn.\b.
4731
4732   Proceed as in the previous point, but set up two different moddirs.
4733   Naturally, one of these can be D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/ (preferably the one for posts,
4734   to keep it cleaner). Then modify the appropriate files (D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt
4735   and D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb) to contain absolute paths to the correct moddir.
4736
4737
4738   1\b13\b3.\b.1\b12\b2.\b.  t\bth\bhe\be `\b``\b`s\bsu\bup\bpe\ber\br m\bmo\bod\bde\ber\bra\bat\bto\bor\br'\b''\b' a\bab\bbl\ble\be t\bto\bo a\bad\bdd\bd/\b/r\bre\bem\bmo\bov\bve\be m\bmo\bod\bde\ber\bra\bat\bto\bor\brs\bs
4739   r\bre\bem\bmo\bot\bte\bel\bly\by.\b.  S\bSe\bet\btt\bti\bin\bng\bg u\bup\bp m\bmo\bod\bde\ber\bra\bat\bte\bed\bd l\bli\bis\bst\bts\bs w\bwi\bit\bth\bh t\bth\bhe\be l\bli\bis\bst\bt o\bow\bwn\bne\ber\br a\bas\bs
4740
4741   This is done by crating a list that has D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/ as it's main list
4742   directory, then adding the ``super moderator'' to D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/m\bmo\bod\bd/\b/ (see
4743   ``remotely adding moderators'').
4744
4745   If this is a common setup for you, you can write a simple script
4746   creating both lists (plus a digest list, if desired) with one simple
4747   action (see ezmlm-both(1) for an example).
4748
4749
4750
4751
4752
4753   1\b13\b3.\b.1\b13\b3.\b.  C\bCu\bus\bst\bto\bom\bmi\biz\bzi\bin\bng\bg e\bez\bzm\bml\blm\bm a\bad\bdm\bmi\bin\bni\bis\bst\btr\bra\bat\bti\biv\bve\be m\bme\bes\bss\bsa\bag\bge\bes\bs.\b.
4754
4755   Subject lines, and other ezmlm output for moderation are controlled by
4756   defines in i\bid\bdx\bx.\b.h\bh and by files in D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt. To customize these, change
4757   i\bid\bdx\bx.\b.h\bh and recompile or for D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt files, edit e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) (see
4758   ``Customizing ezmlm-make operation'').
4759
4760   You can also configure the list to allow remote administrators to edit
4761   files in D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/ via E-mail (see ``How text file editing works'').
4762
4763
4764   1\b13\b3.\b.1\b14\b4.\b.  M\bMa\ban\bnu\bua\bal\bll\bly\by a\bap\bpp\bpr\bro\bov\bvi\bin\bng\bg a\ba m\bme\bes\bss\bsa\bag\bge\be a\baw\bwa\bai\bit\bti\bin\bng\bg m\bmo\bod\bde\ber\bra\bat\bti\bio\bon\bn.\b.
4765
4766   All you have to do is to pipe the corresponding message to ``ezmlm-
4767   send DIR''. Messages awaiting moderation are kept in D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/p\bpe\ben\bnd\bdi\bin\bng\bg/\b/.
4768   To find a particular file, grep the contents.  Thus, to find a file
4769   from user@host.dom, try:
4770
4771
4772
4773        % grep 'user@host\.dom' DIR/mod/pending/*
4774
4775
4776
4777
4778   (Depending on your setup, you may not have to escape the period.)
4779   Check the files for the owner execute (``x'') bit. It is set on all
4780   messages queued successfully. Ignore other files!
4781
4782   To then accept the message (change the ezmlm-send(1) path if you've
4783   installed in a non-default directory):
4784
4785
4786
4787        % cat DIR/mod/pending/filename \
4788        % /usr/local/bin/ezmlm/ezmlm-send DIR
4789
4790
4791
4792
4793   Alternatively, use ezmlm-accept(1).  It checks the 'x' bit, ezmlm-
4794   send(1) return codes, removes the file, etc.
4795
4796   For example:
4797
4798
4799
4800        % ezmlm-accept ~joe/SOS ~joe/SOS/pending/*
4801
4802
4803
4804
4805   will accept all messages in the queue of the list in ~\b~j\bjo\boe\be/\b/S\bSO\bOS\bS/\b/.
4806
4807
4808   1\b13\b3.\b.1\b15\b5.\b.  M\bMa\ban\bnu\bua\bal\bll\bly\by r\bre\bej\bje\bec\bct\bti\bin\bng\bg a\ba m\bme\bes\bss\bsa\bag\bge\be a\baw\bwa\bai\bit\bti\bin\bng\bg m\bmo\bod\bde\ber\bra\bat\bti\bio\bon\bn.\b.
4809
4810   Simply deleting the file from D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/p\bpe\ben\bnd\bdi\bin\bng\bg/\b/ will do it. If you want
4811   to notify the sender, just send him/her an E-mail.  There is an easy
4812   way to get ezmlm-idx programs to do it for you: just wait and let
4813   ezmlm-clean(1) take care of it for you, once the message has timed out
4814   (number of hours settable within 24-240 in D\bDI\bIR\bR/\b/m\bmo\bod\bdt\bti\bim\bme\be; default 120).
4815
4816
4817
4818
4819   1\b14\b4.\b.  S\bSu\bub\bbl\bli\bis\bst\bts\bs.\b.
4820
4821   A sublist is a list that receives its input from another mailing list,
4822   rather than from users directly. The sublist is just a regular
4823   subscriber of the main list. A sublist in e.g. Tasmania is very useful
4824   since only one message is sent from the main list and then the
4825   sublists servers all subscribers in Tasmania. Bounces and all
4826   administration is handled locally. The local sublist can have a
4827   digest, even though the main list may not.  (See ``How sublists work''
4828   for more info on how sublists work).
4829
4830
4831   1\b14\b4.\b.1\b1.\b.  S\bSu\bub\bbl\bli\bis\bst\bts\bs o\bof\bf e\bez\bzm\bml\blm\bm l\bli\bis\bst\bts\bs.\b.
4832
4833   To set up a sublist to an ezmlm list, just use the ezmlm-make ``-5
4834   mainlist@mainhost'' switch. This will configure your list as a sublist
4835   to the mainlist@mainhost mailing list.
4836
4837
4838   1\b14\b4.\b.2\b2.\b.  S\bSu\bub\bbl\bli\bis\bst\bts\bs o\bof\bf n\bno\bon\bn-\b-e\bez\bzm\bml\blm\bm l\bli\bis\bst\bts\bs.\b.
4839
4840   To set up a sublist to an ezmlm list, just use the ezmlm-make ``-5
4841   mainlist@mainhost'' switch. This will configure your list as a sublist
4842   to the mainlist@mainhost mailing list. Since the main list may not use
4843   the ``Mailing-List'' header, you must identify another header that the
4844   main list adds to all messages. See the ezmlm-reject(1) man page for
4845   examples. Next, edit D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br of your sublist and add a ``-h
4846   _\bL_\bi_\bs_\bt_\bp_\br_\bo_\bc_\be_\bs_\bs_\bo_\br_\b-_\bV_\be_\br_\bs_\bi_\bo_\bn_\b:'' option to the ezmlm-send(1) line, but
4847   replacing ``_\bL_\bi_\bs_\bt_\bp_\br_\bo_\bc_\be_\bs_\bs_\bo_\br_\b-_\bV_\be_\br_\bs_\bi_\bo_\bn_\b:'' with your mainlist header.
4848
4849   Now your list will accept only messages from mainlist@mainhost and
4850   with the header specified.
4851
4852
4853   1\b14\b4.\b.3\b3.\b.  H\bHo\bow\bw t\bto\bo s\bse\bet\bt u\bup\bp a\ba c\bcl\blu\bus\bst\bte\ber\br o\bof\bf l\bli\bis\bst\bt a\ban\bnd\bd s\bsu\bub\bbl\bli\bis\bst\bts\bs w\bwi\bit\bth\bh s\bst\bta\ban\bnd\bda\bar\brd\bd
4854   d\bda\bat\bta\bab\bba\bas\bse\bes\bs.\b.
4855
4856   ezmlm-0.53 allows sublists. The difference between a sublist and a
4857   main list is that the sublist requires that the SENDER of the message
4858   is the main list and that the message has a ``Mailing-List:'' header.
4859   Sublist messages have their own subscriber database and subscription
4860   mechanism, and use their own message number. This is very convenient
4861   if you want to create a private sublist.  Since the subscribers have
4862   to interact with the appropriate sublist, it is difficult to
4863   administrate if you want to use it to distribute the load of a very
4864   large list, since users will have to address administrative requests
4865   such as unsubscribe to the correct sublist. Also, bounce messages
4866   refer to the sublist archive with sublist message numbers.
4867
4868   ezmlm-idx modifies this in several ways: First, the message number of
4869   the incoming message is used also for the outgoing message so that
4870   subscribers see the same message number no matter which sublist they
4871   get it from. For security reasons, this is enabled only if the sublist
4872   is NOT ARCHIVED. With this feature, bounce messages can refer the user
4873   to the main list archive instead, obviating multiple archives.
4874
4875   Second, ezmlm-split(1) can be used to forward administrative requests
4876   sent to the main list, to the appropriate sublist. Thus, subscribers
4877   interact only with the main list, and do not need to know which
4878   sublist that servers them. With bounce and administrative messages
4879   referring them to the main list, subscribers will usually be unaware
4880   of the sublisting.
4881
4882   To set this up:
4883
4884
4885   +\bo
4886
4887      c\bcr\bre\bea\bat\bte\be t\bth\bhe\be m\bma\bai\bin\bn l\bli\bis\bst\bt
4888
4889
4890                   ezmlm-make dir dot local host
4891
4892
4893
4894
4895   +\bo
4896
4897      a\bad\bdd\bd a\ban\bn e\bez\bzm\bml\blm\bm-\b-s\bsp\bpl\bli\bit\bt(\b(1\b1)\b) i\bin\bnv\bvo\boc\bca\bat\bti\bio\bon\bn
4898         Before the ezmlm-manage(1) line in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br add:
4899
4900
4901                   |/path/ezmlm-split dir
4902
4903
4904
4905
4906   +\bo
4907
4908      d\bde\bec\bci\bid\bde\be h\bho\bow\bw t\bto\bo s\bsp\bpl\bli\bit\bt t\bth\bhe\be l\blo\boa\bad\bd
4909         The main list sends to sublists and to any addresses not covered
4910         by the split table. You can split the load by domain
4911         (``geographically''), and any domain (including '') can be
4912         subdivided by ``hash'' by using different parts of the 0-52
4913         range. Of course, you can also use hash alone.  The request will
4914         go to the first row that matches, so although overlaps are not
4915         advisable (in case you later want to add sublists of switch to
4916         an SQL server-based system (see ``'')), they have no negative
4917         effects. The domain for ezmlm-split can be the last TWO parts,
4918         i.e. ``edu.wustl'' to handle all *.wustl.edu subscribers.  This
4919         is useful, but remember that the SQL version supports only one
4920         level.
4921
4922         An example:
4923
4924
4925              domain:hash_lo:hash_hi:sublistname
4926              edu:0:52:sub1@here.edu
4927              com:0:26:sub2@there.net
4928              com:27:52:sub3@some.com
4929              :0:13:sub4@what.org
4930              :14:39:sub5@what.org
4931
4932
4933
4934
4935      As you can see, the entire ``edu'' domain is handled by
4936      sub1@here.edu.  The ``com'' domain is about evenly split between
4937      sub2@there.net and sub3@some.com.  Everything else is split so that
4938      approximately 1/4 goes to sub4@what.org, 1/2 to sub5@what.org and
4939      the rest falls through, i.e. is handled by the main list.
4940
4941      Why are there 2 sublists on the same host? This is in preparation
4942      of adding a host. It easy to just move the entire sub5@what.org
4943      list to a new host.  All we have to do it to set up the new list,
4944      copy over the subscribers, and change the name in the split table
4945      entry.
4946
4947      To split the split the sub5@what.org load onto 2 lists requires a
4948      little more work. First, create a dummy split table in a directory
4949      ``temp'':
4950
4951         :14:26:new1@new.net
4952         :27:39:new1@other.net
4953
4954
4955
4956
4957      Next, split the subscribers of sub5@what.org into these 2 groups,
4958      as detailed in the ezmlm-split(1) man page. Create the two new
4959      lists, add the respective subscribers, and replace the
4960      sub5@what.org line with the two lines above.
4961
4962      To add a totally new domain, e.g. jp:0:52:sub6@niko.jp requires
4963      collection or subscribers from all lists that currently handle
4964      these subscribers, (the ones with blank domain in the example), re-
4965      splitting them, and adjusting the subscribers. Easiest here is to
4966      just unsubscribe the sub6@niko.jp subscribers to be from the other
4967      list with ezmlm-sub(1).  Since that program will silently ignore
4968      any addresses that are not on the respective list, it will work
4969      fine.
4970
4971   +\bo
4972
4973      C\bCr\bre\bea\bat\bte\be t\bth\bhe\be s\bsu\bub\bbl\bli\bis\bst\bts\bs
4974         Use ezmlmsubrc which sets up a minimal non-archived sublist with
4975         bounce texts pointing to the main list:
4976
4977
4978
4979                   % ezmlm-make -Cezmlmsubrc -3mainlocal -4mainhost \
4980                           DIR dot sub1local sub1host
4981
4982
4983
4984
4985   +\bo
4986
4987      s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\be t\bth\bhe\be r\bre\bes\bsp\bpe\bec\bct\bti\biv\bve\be s\bsu\bub\bbl\bli\bis\bst\bts\bs t\bto\bo t\bth\bhe\be m\bma\bai\bin\bn l\bli\bis\bst\bt
4988         If you forget, the sublist will not get any messages to
4989         distribute. Add these addresses with ezmlm-sub(1) as subscribers
4990         to the main list.
4991
4992   A strong point of this system is that it is relatively simple and that
4993   only a fraction of the addresses are available to any given sublist.
4994   Thus, compromised security at a sublist threatens only the addresses
4995   and functions handled by that sublist.
4996
4997   As you can see, this works quite well, but it's not trivial to change
4998   the setup.  If you modify it while the list is running, some
4999   subscribers may get duplicate messages or miss messages. Therefore,
5000   you should disable deliveries to the main list before the final step
5001   of the changes (removal of subscribers from old lists and adding new
5002   lists as subscribers to the main list). For most lists, this should
5003   work flawlessly, and some minimal planning and extra lines in
5004   ``split'' can markedly facilitate future expansion.
5005
5006   Another weak point is the authentication of messages between list and
5007   sublist.  The requirements the sublist places on the message can be
5008   easily faked. This allows injection of messages at the sublist level
5009   as a way to circumvent moderation or other access control.
5010
5011   An associated disadvantage is that not even the main list has access
5012   to all the addresses. Thus, SENDER checks for archive access
5013   (relatively secure) and posts (relatively insecure) cannot directly be
5014   used. Also, sublist cooperation is required to determine the number of
5015   subscribers, or to access subscriber addresses for a purpose other
5016   than distribution of list messages.
5017   1\b15\b5.\b.  M\bMi\big\bgr\bra\bat\bti\bio\bon\bn t\bto\bo E\bEz\bzm\bml\blm\bm f\bfr\bro\bom\bm o\bot\bth\bhe\ber\br M\bMa\bai\bil\bli\bin\bng\bg L\bLi\bis\bst\bt M\bMa\ban\bna\bag\bge\ber\brs\bs.\b.
5018
5019   This section describes differences and similarities between ezmlm and
5020   other mailing list managers. It also details functions of ezmlm-idx
5021   that allow you to configure ezmlm to respond to commands utilized by
5022   such other mailing list managers so the command syntax will be
5023   familiar to such users.  Contributions to complete this sections are
5024   welcome.
5025
5026
5027   1\b15\b5.\b.1\b1.\b.  B\bBa\bas\bsi\bic\bc C\bCo\bon\bnc\bce\bep\bpt\bts\bs.\b.
5028
5029   Ezmlm is different from other mailing list managers in that it is
5030   _\bl_\bi_\bs_\bt_\b-_\bc_\be_\bn_\bt_\br_\bi_\bc rather than _\bh_\bo_\bs_\bt_\b-_\bc_\be_\bn_\bt_\br_\bi_\bc. With a _\bl_\bi_\bs_\bt_\b-_\bc_\be_\bn_\bt_\br_\bi_\bc interface,
5031   you address the list directly with administrative commands. With
5032   ezmlm, the command is embedded in the list address thus becoming part
5033   of it (i.e., the ``command address''.)  With smartlist, again you
5034   address the list, but send all administrative commands to the list-
5035   request address. Ezmlm lists can support this if you use the ezmlm-
5036   make(1) ``-q'' switch to configure ezmlm-request(1) in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br.
5037
5038   Other mailing list managers are _\bh_\bo_\bs_\bt_\b-_\bc_\be_\bn_\bt_\br_\bi_\bc, i.e.  administrative
5039   commands for any list on that particular host are addressed to a
5040   central address such as majordomo@host, listserv@host, or
5041   listproc@host. Then the user is required to place the command in
5042   either the subject header or more commonly in the body text of the
5043   message. The listname has to be included with the command. [_\bN_\bo_\bt_\be_\b: The
5044   above concept is not universally applicable to all host-centric
5045   mailing lists.  While intended to to used in a host-centric manner,
5046   many such mailing list managers also support listname-request@host
5047   addressing. See the applicable list manger documentation for details.
5048   Coverage of this aspect of other mailing list manager functionality is
5049   beyond the scope of this FAQ.]  To make the migration to ezmlm easier,
5050   support for a _\bh_\bo_\bs_\bt_\b-_\bc_\be_\bn_\bt_\br_\bi_\bc style mailing list manger is available.
5051   This is based on the use of ezmlm-request(1) with the ``-f
5052   c\bco\bon\bnf\bfi\big\bg_\b_f\bfi\bil\ble\be'' switch.
5053
5054
5055   1\b15\b5.\b.2\b2.\b.  S\bSe\bet\btt\bti\bin\bng\bg u\bup\bp e\bez\bzm\bml\blm\bm t\bto\bo r\bre\bes\bsp\bpo\bon\bnd\bd t\bto\bo h\bho\bos\bst\bt-\b-c\bce\ben\bnt\btr\bri\bic\bc c\bco\bom\bmm\bma\ban\bnd\bds\bs.\b.
5056
5057   ezmlm-request(1) can be used a a ``majordomo/listserv-emulator''. You
5058   can create the necessary accessory files manually. However, ezmlm-
5059   idx>=0.32 contains ezmlmglrc(5) which makes is very easy for you:
5060
5061
5062                % su
5063                # su alias
5064                # ezmlm-make -C/usr/local/bin/ezmlmglrc dir dot local host
5065
5066
5067
5068
5069   where ``local'' may be e.g. ``majordomo''. Even easier is to set it up
5070   under a virtual domain ``host'' controlled by a user ``user''. Just
5071   put ``user'' in place of ``alias'' in the example.
5072
5073   If you use a character set other than US-ASCII, put it's name,
5074   optionally followed by ``:'' and the desired content-transfer-encoding
5075   character (``Q'' for quoted-printable and ``B'' for base64) into
5076   e\bez\bzd\bdo\bom\bmo\bo/\b/c\bch\bha\bar\brs\bse\bet\bt.
5077
5078   All that remains is to set up D\bDI\bIR\bR/\b/e\bez\bzd\bdo\bom\bmo\bo.\b.c\bcf\bf with information on the
5079   lists (local and/or remote) that you want to make accessible via this
5080   interface. Another script, ezmlm-glconf(1) can help you with this for
5081   your local lists. To configure for all your lists:
5082
5083           ezmlm-glmake ~/ > ~/dir/ezdomo.cf
5084
5085
5086
5087
5088   See man page for details. Alternatively, do it manually:
5089
5090   The D\bDI\bIR\bR/\b/e\bez\bzd\bdo\bom\bmo\bo.\b.c\bcf\bf contains a list of mailing lists which the
5091   ``majordomo'' (in this case) can provide information about in the
5092   following syntax:
5093
5094
5095          list@host:listdir:description
5096
5097
5098
5099
5100   To show a list in ``lists'', but not include it in a ``which'' search,
5101   simply omit the ``listdir'' for that line:
5102
5103
5104          list@host::description
5105
5106
5107
5108
5109   For the ``which'' command to work, the D\bDI\bIR\bR/\b/, which contains the
5110   subscriber database, must be readable by the user under which mail is
5111   delivered. This means that ``which'' is usually limited to lists owned
5112   by the user or virtual domain under which the ``ezdomo'' interface is
5113   set up.
5114
5115
5116   1\b15\b5.\b.3\b3.\b.  C\bCo\bom\bmm\bma\ban\bnd\bds\bs o\bof\bf o\bot\bth\bhe\ber\br m\bma\bai\bil\bli\bin\bng\bgl\bli\bis\bst\bt m\bma\ban\bna\bag\bge\ber\brs\bs r\bre\bec\bco\bog\bgn\bni\biz\bze\bed\bd b\bby\by e\bez\bzm\bml\blm\bm.\b.
5117
5118
5119   1\b15\b5.\b.3\b3.\b.1\b1.\b.  L\bLi\bis\bst\btp\bpr\bro\boc\bc/\b/L\bLi\bis\bst\bts\bse\ber\brv\bv.\b.
5120
5121   When set up as above, substituting ``listproc'' or ``listserv'' for
5122   ``majordomo'' as appropriate, ezmlm will recognize and respond to the
5123   following commands placed in the body of the e-mail with the syntax
5124   below.  N\bNo\bot\bte\be:\b: e\bez\bzm\bml\blm\bm w\bwi\bil\bll\bl o\bon\bnl\bly\by r\bre\bes\bsp\bpo\bon\bnd\bd t\bto\bo o\bon\bne\be c\bco\bom\bmm\bma\ban\bnd\bd p\bpe\ber\br m\bme\bes\bss\bsa\bag\bge\be.\b.
5125
5126   s\bsy\byn\bnt\bta\bax\bx:\b: c\bco\bom\bmm\bma\ban\bnd\bd l\bli\bis\bst\btn\bna\bam\bme\be [\b[s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\br@\b@h\bho\bos\bst\bt]\b]
5127
5128
5129      S\bSu\bup\bpp\bpo\bor\brt\bte\bed\bd c\bco\bom\bmm\bma\ban\bnd\bds\bs
5130         subscribe, sub, unsubscribe, unsub, list, help, review.
5131
5132      A\bAd\bdd\bdi\bit\bti\bio\bon\bna\bal\bl s\bsu\bup\bpp\bpo\bor\brt\bte\bed\bd c\bco\bom\bmm\bma\ban\bnd\bds\bs
5133         All ezmlm commands, such as ``thread'', ``index'' and ``get'' as
5134         well as the list owner's commands.
5135
5136   This interfaced makes information available via command messages to
5137   the appropriate mailing list.  Thus, ``list'' and ``review'' will send
5138   a subscriber list only to remote administrators and only if
5139   specifically allowed by the list owner.
5140
5141
5142   1\b15\b5.\b.3\b3.\b.2\b2.\b.  M\bMa\baj\bjo\bor\brd\bdo\bom\bmo\bo.\b.
5143
5144   s\bsy\byn\bnt\bta\bax\bx:\b: c\bco\bom\bmm\bma\ban\bnd\bd l\bli\bis\bst\btn\bna\bam\bme\be [\b[s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\br@\b@h\bho\bos\bst\bt]\b]
5145
5146
5147      S\bSu\bup\bpp\bpo\bor\brt\bte\bed\bd c\bco\bom\bmm\bma\ban\bnd\bds\bs
5148         lists, subscribe, unsubscribe, help, which, who.
5149      A\bAd\bdd\bdi\bit\bti\bio\bon\bna\bal\bl s\bsu\bup\bpp\bpo\bor\brt\bte\bed\bd c\bco\bom\bmm\bma\ban\bnd\bds\bs
5150         All ezmlm user and ezmlm owner commands.
5151
5152   This interfaced makes information available via command messages to
5153   the appropriate mailing list.  Thus, ``who'' will send a subscriber
5154   list only to remote administrators and only if specifically allowed by
5155   the list owner.
5156
5157
5158   1\b15\b5.\b.3\b3.\b.3\b3.\b.  S\bSm\bma\bar\brt\btl\bli\bis\bst\bt.\b.
5159
5160   Unlike ``listproc/listserv'' or ``majordomo'', ``smart-list'' does not
5161   provide ``host-centric'' services. Rather, commands are addressed to
5162   listname-request@host and the command placed on the ``Subject:'' line:
5163
5164
5165          To: listname-request@host
5166          Subject: command [subscriber@host]
5167
5168
5169
5170
5171   The body of the message is normally ignored.  If the subject is empty,
5172   the first body line that starts with a letter is interpreted.
5173
5174
5175      S\bSu\bup\bpp\bpo\bor\brt\bte\bed\bd c\bco\bom\bmm\bma\ban\bnd\bds\bs
5176         subscribe, unsubscribe.
5177
5178      A\bAd\bdd\bdi\bit\bti\bio\bon\bna\bal\bl S\bSu\bup\bpp\bpo\bor\brt\bte\bed\bd C\bCo\bom\bmm\bma\ban\bnd\bds\bs
5179         All ezmlm user and ezmlm owner commands.
5180
5181
5182   1\b16\b6.\b.  O\bOp\bpt\bti\bim\bmi\biz\bzi\bin\bng\bg l\bli\bis\bst\bt p\bpe\ber\brf\bfo\bor\brm\bma\ban\bnc\bce\be.\b.
5183
5184   Ezmlm-idx is designed to make it as easy as possible to set up mailing
5185   lists.  The default setup works well for small and medium-sized lists.
5186   For large lists, the lists can be made more efficient with a few
5187   simple changes.
5188
5189
5190   1\b16\b6.\b.1\b1.\b.  C\bCr\bro\bon\bnd\bd-\b-g\bge\ben\bne\ber\bra\bat\bte\bed\bd d\bdi\big\bge\bes\bst\bts\bs f\bfo\bor\br b\bbe\bet\btt\bte\ber\br p\bpe\ber\brf\bfo\bor\brm\bma\ban\bnc\bce\be.\b.
5191
5192   With the default setup, ezmlm-tstdig(1) in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br tests if a
5193   digest should be sent out. On lists with a lot of traffic this is
5194   inefficient.  Also, you may want digests to be delivered as a specific
5195   time. To do this, use crond(8) to execute ezmlm-get(1) directly, as
5196   described elsewhere.
5197
5198
5199   1\b16\b6.\b.2\b2.\b.  O\bOp\bpt\bti\bim\bmi\biz\bzi\bin\bng\bg e\bex\bxe\bec\bcu\but\bti\bio\bon\bn o\bof\bf e\bez\bzm\bml\blm\bm-\b-w\bwa\bar\brn\bn(\b(1\b1)\b).\b.
5200
5201   ezmlm-idx>=0.32 comes with much improved bounce handling. Modification
5202   as described below should be considered only when you expect thousands
5203   of bouncing addresses (virtually never). The description remains, for
5204   users of ezmlm-0.53 or earlier versions of ezmlm-idx. For users of
5205   ezmlm-0.53 alone, we recommend a patch (
5206   <ftp://ftp.id.wustl.edu/pub/patches/ezmlm-return.diff> which fixes a
5207   bug in ezmlm-0.53 bounce handling. The patch is superseded by ezmlm-
5208   idx.
5209
5210   To redistribute the load of bounce warning and probe addresses to off-
5211   peak hours, you may want to set up the list without ezmlm-warn(1) by
5212   using the ezmlm-make ``-w'' switch, and instead execute ``ezmlm-warn
5213   DIR'' via crond(8). You also need to run ``ezmlm-warn -d DIR'' for
5214   digest bounces if your list is configured with digests. Normal ezmlm
5215   list with ezmlm-idx>=0.32 will have an insignificant bounce load,
5216   except if you bulk add addresses, e.g. from a MLM without bounce
5217   handling. In the latter case, the load will be higher for the first
5218   2-4 weeks, then decrease drastically. If you feel you need to run
5219   ezmlm-warn(1) from crond(8), you should seriously consider sublisting
5220   your lists.
5221
5222   _\bN_\bo_\bt_\be_\b: the ezmlm-make(1) ``-w'' switch has a special meaning if used at
5223   the same time as enabling SQL-support (``-6''; see man pages).
5224
5225
5226   1\b16\b6.\b.3\b3.\b.  D\bDe\bec\bcr\bre\bea\bas\bsi\bin\bng\bg e\bez\bzm\bml\blm\bm-\b-w\bwa\bar\brn\bn t\bti\bim\bme\be o\bou\but\bt t\bto\bo i\bin\bnc\bcr\bre\bea\bas\bse\be p\bpe\ber\brf\bfo\bor\brm\bma\ban\bnc\bce\be.\b.
5227
5228   With ezmlm-idx, you may alter the ezmlm-warn(1) timeout to a number of
5229   seconds with the ``-t seconds'' switch.  The default is 1,000,000
5230   seconds or about 11.6 days. This is the time from the first bounce
5231   until ezmlm-warn(1) sends a warning message and the time from the
5232   warning message bounce until ezmlm-warn(1) sends a probe (which if
5233   bounced leads to removal of the address from the subscriber list).  If
5234   you have a digest list, remember to execute ezmlm-warn(1) with the
5235   ``-d'' switch as well.
5236
5237   Decreasing the default to e.g. 5 days will cut in half the average
5238   number of files in the bounce directory and the number of messages
5239   sent at each crond(8)-directed invocation of ezmlm-warn(1). The trade-
5240   off is that worst case, a subscriber may be unsubscribed if his/her
5241   mail path is defective for more than twice the timeout. Removing a
5242   subscriber after 10 days seems reasonable on a busy list. Do this by
5243   adding the ``-t'' switch to all the ezmlm-warn(1) invocations. This
5244   timeout should be larger than the interval between ezmlm-warn(1)
5245   invocation.
5246
5247   To be aggressive, use ``ezmlm-warn -t0''. This will minimize the time
5248   your lists spends servicing bounces, but will for some errors lead to
5249   subscribers to be also lead to subscribers being removed if messages
5250   to them bounce for two consecutive ezmlm-warn(1) runs. This is useful
5251   to rapidly clean up a low quality address collection.
5252
5253
5254   1\b16\b6.\b.4\b4.\b.  U\bUs\bse\be e\bez\bzm\bml\blm\bm w\bwi\bit\bth\bho\bou\but\bt e\bez\bzm\bml\blm\bm-\b-i\bid\bdx\bx f\bfo\bor\br m\bma\bax\bxi\bim\bmu\bum\bm p\bpe\ber\brf\bfo\bor\brm\bma\ban\bnc\bce\be.\b.
5255
5256   ezmlm-idx adds a number of functions to ezmlm. It indexes the archive,
5257   and adds an index entry for each message, it can remove MIME parts, it
5258   can add a subject prefix and message trailer, decode rfc2047-encoded
5259   subjects, etc.  Although designed to impact minimally on performance,
5260   these options when used take time. Even when they are not used, time
5261   is spent looking for e.g. the prefix. However, the performance penalty
5262   is small, as the absolutely dominating cost of a mailing list is the
5263   work qmail does to deliver the messages to subscribers.
5264
5265   In bench marking, we have not found a significant difference in
5266   performance between ezmlm-0.53 and ezmlm-0.53+ezmlm-idx-0.32 when
5267   ezmlm-idx features are not used. Thus, a non-indexed list with ezmlm-
5268   idx-0.32 performs the same as the corresponding ezmlm-0.53 list.
5269   Adding an index adds the overhead of another safe write (the index
5270   file). Use of other features adds very marginally to execution time.
5271   For virtually all lists, the ezmlm execution time is negligible
5272   compared to the resources needed by qmail to disseminate the message
5273   to the subscribers.
5274
5275
5276   1\b16\b6.\b.5\b5.\b.  N\bNo\bot\bt a\bar\brc\bch\bhi\biv\bvi\bin\bng\bg t\bto\bo m\bma\bax\bxi\bim\bmi\biz\bze\be p\bpe\ber\brf\bfo\bor\brm\bma\ban\bnc\bce\be.\b.
5277
5278   An archived list needs to write the message to the archive. If you
5279   don't need an archive, don't archive. However, the archive is very
5280   useful to allow users to catch up on messages that they didn't receive
5281   due to delivery problems.
5282
5283
5284   1\b16\b6.\b.6\b6.\b.  S\bSu\bub\bbl\bli\bis\bst\bts\bs t\bto\bo m\bma\bax\bxi\bim\bmi\biz\bze\be p\bpe\ber\brf\bfo\bor\brm\bma\ban\bnc\bce\be.\b.
5285
5286   Consider splitting your list into sublists, ideally geographically.
5287   The main list deals only with a subset of subscribers (or only the
5288   sublists), and each sublist deals with a subset of subscribers,
5289   bounces, etc. This is the most rational way to scale ezmlm to large
5290   lists (see ``How sublists work'' for more info on how sublists work
5291   and ``Sublists'' on how to set up sublists).
5292
5293
5294   1\b17\b7.\b.  M\bMi\bis\bsc\bce\bel\bll\bla\ban\bne\beo\bou\bus\bs.\b.
5295
5296
5297   1\b17\b7.\b.1\b1.\b.  H\bHo\bow\bw d\bdo\bo I\bI q\bqu\bui\bic\bck\bkl\bly\by c\bch\bha\ban\bng\bge\be t\bth\bhe\be p\bpr\bro\bop\bpe\ber\brt\bti\bie\bes\bs o\bof\bf m\bmy\by l\bli\bis\bst\bt?\b?
5298
5299
5300
5301                ezmlm-make -+ [changed_switches] dir
5302
5303
5304
5305
5306   ezmlm-make(1) stores configuration info in D\bDI\bIR\bR/\b/c\bco\bon\bnf\bfi\big\bg and uses that
5307   info as the default when you use the ``-+'' switch. If the list was
5308   created with a very old version or ezmlm-0.53 ezmlm-make(1) you have
5309   to restate all arguments the first time you edit the list.
5310
5311   The ``-e'' switch works the same, without stickiness for switches.
5312
5313   A message arriving during reconfiguration may be handled incorrectly.
5314   The prudent user will set the sticky bit on the home directory to
5315   prevent delivery, then clear it after the list has been changed.
5316
5317
5318   1\b17\b7.\b.2\b2.\b.  O\bOp\bpe\ben\bn a\bar\brc\bch\bhi\biv\bve\bed\bd l\bli\bis\bst\bt w\bwi\bit\bth\bh d\bda\bai\bil\bly\by d\bdi\big\bge\bes\bst\bts\bs.\b.
5319
5320   This is the default setup. The main list generates digests in response
5321   to a mailed request or when a message arrives and the amount of
5322   messages since the last digest exceeds set limits (see ezmlm-
5323   tstdig(1)).  Alternatively, ezmlm-get(1) can be invoked from the
5324   command line. In both cases, the generated digest message is
5325   disseminated to the subscribers stored in D\bDI\bIR\bR/\b/d\bdi\big\bge\bes\bst\bt/\b/s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs/\b/,
5326   i.e. the subscriber database with the base directory D\bDI\bIR\bR/\b/d\bdi\big\bge\bes\bst\bt/\b/.
5327
5328   +\bo  See ``setting up a digest list'' on how to set up the lists.
5329
5330
5331   1\b17\b7.\b.3\b3.\b.  V\bVa\bar\bri\bia\bat\bti\bio\bon\bns\bs i\bin\bn m\bmo\bod\bde\ber\bra\bat\bti\bio\bon\bn
5332
5333   You can set up lists with combinations of message moderation,
5334   subscription moderation, and remote administration, easiest by
5335   combining ezmlm-make(1) ``-m'' ,``-s'', and ``-r'' switches. You can
5336   use a non-default moderator db, by specifying a directory starting
5337   with a slash in D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb or D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be (for remote admin and
5338   subscription moderation - always the same db for both functions) or in
5339   D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt for message moderation. You can point several lists to the
5340   same moderator db, thus using the same moderators for several lists.
5341   _\bN_\bO_\bT_\bE_\b: The user controlling the list must have read/write access to the
5342   files (specifically, must be able to write the lock file).
5343
5344   Some of these setups are not trivial. However, you can make them
5345   trivial by modifying ezmlmrc(5) so that ezmlm-make(1) can set up the
5346   desired lists by default or when the user uses e.g. the ``-y'' or
5347   ``-z'' switches (see ``Customizing ezmlm-make operation'').
5348
5349
5350   1\b17\b7.\b.4\b4.\b.  L\bLi\bis\bst\bts\bs t\bth\bha\bat\bt a\bal\bll\blo\bow\bw r\bre\bem\bmo\bot\bte\be a\bad\bdm\bmi\bin\bn,\b, b\bbu\but\bt n\bno\bot\bt u\bus\bse\ber\br i\bin\bni\bit\bti\bia\bat\bte\bed\bd s\bsu\bub\bbs\bsc\bcr\bri\bip\bp-\b-
5351   t\bti\bio\bon\bn o\bor\br a\bar\brc\bch\bhi\biv\bve\be r\bre\bet\btr\bri\bie\bev\bva\bal\bl.\b.
5352
5353   Create a regular remote admin list, but remove D\bDI\bIR\bR/\b/p\bpu\bub\bbl\bli\bic\bc.  This
5354   allows moderators to (un)subscribe users and have archive access, but
5355   rejects all user requests. Posts work as usual.  Naturally, this can
5356   be combined with message moderation or ezmlm-issub SENDER checks (see
5357   ``Restricting message posting to the list'').
5358
5359
5360   1\b17\b7.\b.5\b5.\b.  L\bLi\bis\bst\bts\bs t\bth\bha\bat\bt a\bal\bll\blo\bow\bw r\bre\bem\bmo\bot\bte\be a\bad\bdm\bmi\bin\bn,\b, u\bus\bse\ber\br a\bar\brc\bch\bhi\biv\bve\be r\bre\bet\btr\bri\bie\bev\bva\bal\bl,\b, b\bbu\but\bt n\bno\bot\bt
5361   u\bus\bse\ber\br-\b-i\bin\bni\bit\bti\bia\bat\bte\bed\bd s\bsu\bub\bbs\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn.\b.
5362
5363   Create a regular remote admin list, remove D\bDI\bIR\bR/\b/p\bpu\bub\bbl\bli\bic\bc, and add the
5364   ``-p'' [public] switch to the ezmlm-get(1) command line in
5365   D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. This overrides the normal D\bDI\bIR\bR/\b/p\bpu\bub\bbl\bli\bic\bc effect on ezmlm-
5366   get(1) and archive retrieval, allowing full archive access to anyone,
5367   but rejecting user -help and subscription commands.  It is assumed
5368   that the users know archive retrieval commands without help. If you
5369   want to provide specific help, just link ~\b~/\b/.\b.q\bqm\bma\bai\bil\bl-\b-l\bli\bis\bst\btn\bna\bam\bme\be-\b-h\bhe\bel\blp\bp to
5370   D\bDI\bIR\bR/\b/h\bhe\bel\blp\bp, and invoke a script that copies help info from there. See
5371   ezmlm-check(1) for an example.
5372
5373
5374   1\b17\b7.\b.6\b6.\b.  L\bLi\bis\bst\bts\bs t\bth\bha\bat\bt r\bre\bes\bst\btr\bri\bic\bct\bt a\bar\brc\bch\bhi\biv\bve\be r\bre\bet\btr\bri\bie\bev\bva\bal\bl t\bto\bo s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs.\b.
5375
5376   Use a standard list, but add the ezmlm-get(1) ``-s'' command line
5377   switch in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. Only subscribers can receive archive excerpts.
5378   Digests work as usual. This can be set up using the ezmlm-make(1)
5379   ``-g'' switch.
5380
5381
5382   1\b17\b7.\b.7\b7.\b.  L\bLi\bis\bst\bts\bs t\bth\bha\bat\bt d\bdo\bo n\bno\bot\bt a\bal\bll\blo\bow\bw a\bar\brc\bch\bhi\biv\bve\be r\bre\bet\btr\bri\bie\bev\bva\bal\bl a\bat\bt a\bal\bll\bl.\b.
5383
5384   Use a standard list, but add the ``-C'' switch to both the ezmlm-
5385   get(1) and ezmlm-manage(1) command lines in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. No archive
5386   retrieval commands will be honored. Digest can be created as usual
5387   (See ``Restricting archive retrieval'').
5388
5389
5390   1\b17\b7.\b.8\b8.\b.  L\bLi\bis\bst\bts\bs t\bth\bha\bat\bt d\bdo\bo n\bno\bot\bt a\bal\bll\blo\bow\bw a\bar\brc\bch\bhi\biv\bve\be r\bre\bet\btr\bri\bie\bev\bva\bal\bl a\ban\bnd\bd d\bdo\bo n\bno\bot\bt a\bal\bll\blo\bow\bw
5391   d\bdi\big\bge\bes\bst\bt t\btr\bri\big\bgg\bge\ber\bri\bin\bng\bg p\bpe\ber\br m\bma\bai\bil\bl.\b.
5392
5393   For maximal archive security, set up a normal indexed and archived
5394   list, then remove the ezmlm-get(1) line from D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br and add the
5395   ``-C'' switch to the ezmlm-manage(1) command line. You can still
5396   create digests by direct invocation of ezmlm-get(1) from a script or
5397   crontab entry.
5398
5399
5400   1\b17\b7.\b.9\b9.\b.  L\bLi\bis\bst\bts\bs t\bth\bha\bat\bt a\bal\bll\blo\bow\bw a\bar\brc\bch\bhi\biv\bve\be r\bre\bet\btr\bri\bie\bev\bva\bal\bl o\bon\bnl\bly\by t\bto\bo m\bmo\bod\bde\ber\bra\bat\bto\bor\brs\bs,\b, b\bbu\but\bt
5401   a\bal\bll\blo\bow\bw u\bus\bse\ber\br-\b-i\bin\bni\bit\bti\bia\bat\bte\bed\bd s\bsu\bub\bbs\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn.\b.
5402
5403   Create a normal remote admin (+ subscription moderated) list, and add
5404   the ``-P'' (not public) switch to the ezmlm-get(1) command line in
5405   D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. Subscription will not be affected, but ezmlm-get(1) will
5406   send archive excerpts only to moderators.  Digests are unaffected.
5407
5408
5409   1\b17\b7.\b.1\b10\b0.\b.  L\bLi\bis\bst\bts\bs t\bth\bha\bat\bt d\bdo\bo n\bno\bot\bt r\bre\beq\bqu\bui\bir\bre\be u\bus\bse\ber\br c\bco\bon\bnf\bfi\bir\brm\bma\bat\bti\bio\bon\bn f\bfo\bor\br (\b(u\bun\bn)\b)s\bsu\bub\bbs\bsc\bcr\bri\bip\bp-\b-
5410   t\bti\bio\bon\bn.\b.
5411
5412
5413   The need for a user handshake can be eliminated by the ezmlm-manage(1)
5414   ``-S'' (subscribe) and/or ``-U'' (unsubscribe) switches. Alone, this
5415   is very insecure. However, there may be some use for it in local lists
5416   with subscription moderation, or alone for notifications where ease of
5417   use is more important than preventing users from (un)subscribing
5418   others. If the list has subscription moderation or remote
5419   administration, any user subscribe or unsubscribe request is forwarded
5420   to the moderators if the SENDER and target address do not match, even
5421   if the ``-U/-S'' switches are specified. This is put in place to make
5422   a ``-U/-S'' list similar to other list managers, not for security
5423   (it's not secure, since a malicious outsider can easily fake the
5424   SENDER address). Unsubscribe confirmations are sent also to the target
5425   in this case, to avoid situations where the user needs moderator
5426   ``permission'' to get off the list.
5427
5428
5429   1\b17\b7.\b.1\b11\b1.\b.  A\bAn\bnn\bno\bou\bun\bnc\bce\bem\bme\ben\bnt\bt l\bli\bis\bst\bts\bs f\bfo\bor\br a\ba s\bsm\bma\bal\bll\bl s\bse\bet\bt o\bof\bf t\btr\bru\bus\bst\bte\bed\bd p\bpo\bos\bst\bte\ber\brs\bs
5430
5431   Set up the list with ezmlm-make ``-om'' and add the ``trusted E-mail
5432   addresses'' to D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/ with
5433
5434
5435        % ezmlm-sub DIR/mod address@host
5436
5437
5438
5439
5440   A post from a ``trusted address'' is sent back to that address for
5441   approval, assuring that the user at that address really sent the post.
5442   Posts from other e-mail addresses are rejected.
5443
5444
5445   1\b17\b7.\b.1\b12\b2.\b.  A\bAn\bnn\bno\bou\bun\bnc\bce\bem\bme\ben\bnt\bt l\bli\bis\bst\bts\bs a\bal\bll\blo\bow\bwi\bin\bng\bg m\bmo\bod\bde\ber\bra\bat\bte\bed\bd p\bpo\bos\bst\bts\bs f\bfr\bro\bom\bm a\ban\bny\byo\bon\bne\be.\b.
5446
5447   This is useful in many circumstances. A list announcing new programs
5448   for a system, where both the main developers and other users may have
5449   contributed programs.
5450
5451   Set up the list with ezmlm-make ``-m'' and the main developers as
5452   moderators. When any of these posts, that user alone is asked to
5453   confirm. Posts from other E-mail addresses are sent to all
5454   moderators/developers.  To use a different set of E-mail addresses as
5455   ``trusted e-mail addresses'' and moderators for other posts, use the
5456   ezmlm-store(1) ``-S'' switch and make a separate address database for
5457   the ``trusted E-mail addresses''.  Put the name of the basedir for the
5458   ``trusted e-mail addresses'' database in D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt (needs leading
5459   ``/''), and add the post moderator(s) to D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/ using ezmlm-sub(1)
5460   as shown above.
5461
5462
5463   1\b17\b7.\b.1\b13\b3.\b.  A\bAn\bnn\bno\bou\bun\bnc\bce\bem\bme\ben\bnt\bt l\bli\bis\bst\bts\bs w\bwi\bit\bth\bh l\ble\bes\bss\bs s\bse\bec\bcu\bur\bri\bit\bty\by a\ban\bnd\bd m\bmo\bor\bre\be c\bco\bon\bnv\bve\ben\bni\bie\ben\bnc\bce\be.\b.
5464
5465   A general solution for SENDER checking is to configure list with
5466   ezmlm-gate(1).  ezmlm-gate(1) takes as arguments any number of
5467   basedirs for subscriber lists. Posts from SENDERs that are found are
5468   posted. For others ezmlm-store(1) is invoked. If D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt exists,
5469   ezmlm-store(1) will send out other messages for moderation.  To bounce
5470   such messages, create D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt, and use the ezmlm-gate(1) ``-P''
5471   switch (will be passed on to ezmlm-store(1) to bounce any posts not
5472   from a moderator).
5473
5474   By default, ezmlm-gate(1) accepts messages from subscribers. However,
5475   this is overridden if any ``basedirs'' are put on the ezmlm-gate(1)
5476   command line. Common would be to create a address list and put its
5477   ``basedir'' on the ezmlm-gate(1) command line. Trusted E-mail
5478   addresses can then be added with:
5479        % ezmlm-sub basedir trusted@host
5480
5481
5482
5483
5484   As this relies on SENDER checks it is less secure than the ezmlm-store
5485   based confirmation-requiring setup.
5486
5487
5488   1\b18\b8.\b.  E\bEz\bzm\bml\blm\bm-\b-i\bid\bdx\bx c\bco\bom\bmp\bpi\bil\ble\be t\bti\bim\bme\be o\bop\bpt\bti\bio\bon\bns\bs.\b.
5489
5490
5491   1\b18\b8.\b.1\b1.\b.  L\bLo\boc\bca\bat\bti\bio\bon\bn o\bof\bf b\bbi\bin\bna\bar\bri\bie\bes\bs.\b.
5492
5493   This is configured via c\bco\bon\bnf\bf-\b-b\bbi\bin\bn as for other ezmlm programs.  The
5494   default is /\b/u\bus\bsr\br/\b/l\blo\boc\bca\bal\bl/\b/b\bbi\bin\bn/\b/e\bez\bzm\bml\blm\bm.
5495
5496
5497   1\b18\b8.\b.2\b2.\b.  L\bLo\boc\bca\bat\bti\bio\bon\bn o\bof\bf m\bma\ban\bn p\bpa\bag\bge\bes\bs.\b.
5498
5499   This is configured via c\bco\bon\bnf\bf-\b-m\bma\ban\bn as for other ezmlm programs.  The
5500   default is /\b/u\bus\bsr\br/\b/l\blo\boc\bca\bal\bl/\b/m\bma\ban\bn.
5501
5502
5503   1\b18\b8.\b.3\b3.\b.  B\bBa\bas\bse\be d\bdi\bir\bre\bec\bct\bto\bor\bry\by o\bof\bf q\bqm\bma\bai\bil\bl-\b-i\bin\bns\bst\bta\bal\bll\bla\bat\bti\bio\bon\bn.\b.
5504
5505   This is configured via c\bco\bon\bnf\bf-\b-q\bqm\bma\bai\bil\bl as for other ezmlm programs.  The
5506   default is /\b/v\bva\bar\br/\b/q\bqm\bma\bai\bil\bl.
5507
5508
5509   1\b18\b8.\b.4\b4.\b.  S\bSh\bho\bor\brt\bt h\bhe\bea\bad\bde\ber\br t\bte\bex\bxt\bts\bs,\b, e\bet\btc\bc.\b.
5510
5511   Ezmlm-idx text (short lines, such as ``Administrivia'' for digests),
5512   command names, etc, are defined in i\bid\bdx\bx.\b.h\bh, used at compile time. You
5513   can change them by changing the defines in this file.
5514
5515
5516   1\b18\b8.\b.5\b5.\b.  A\bAr\brb\bbi\bit\btr\bra\bar\bry\by l\bli\bim\bmi\bit\bts\bs.\b.
5517
5518   i\bid\bdx\bx.\b.h\bh contains defines for some ezmlm-idx arbitrary limits, such as
5519   the maximum number of messages per ``-get'' request. They can be
5520   changed here.
5521
5522
5523   1\b18\b8.\b.6\b6.\b.  C\bCo\bom\bmm\bma\ban\bnd\bd n\bna\bam\bme\bes\bs.\b.
5524
5525   There is support for one alias per user command for
5526   internationalization.  (See ``Multiple language support''.)
5527
5528
5529   1\b18\b8.\b.7\b7.\b.  E\bEr\brr\bro\bor\br m\bme\bes\bss\bsa\bag\bge\bes\bs.\b.
5530
5531   All ezmlm-idx error messages are defines in e\ber\brr\brt\btx\bxt\bt.\b.h\bh, used at compile
5532   time. These can be changed for special situations, but we would advise
5533   against doing so. If you do for some reason produce such a translated
5534   file, we would appreciate if you sent a copy to the authors. NOTE:
5535   These do not affect error messages from programs that are not part of
5536   the ezmlm-idx package, nor of some subroutines used by ezmlm-idx
5537   programs (getconf_line.c comes to mind).
5538
5539   Hopefully, the error messages for all parts will be synchronized in
5540   later versions of ezmlm, and possibly handled from a run-time
5541   changeable separate file (maybe as a .cdb database).
5542
5543
5544
5545   1\b18\b8.\b.8\b8.\b.  P\bPa\bat\bth\bhs\bs a\ban\bnd\bd o\bot\bth\bhe\ber\br o\bod\bdd\bd c\bco\bon\bnf\bfi\big\bgu\bur\bra\bat\bti\bio\bon\bn i\bit\bte\bem\bms\bs.\b.
5546
5547   idx.h also has defines for /\b/e\bet\btc\bc/\b/e\bez\bzm\bml\blm\bmr\brc\bc, default formats for
5548   moderation enclosures, default character set, default digest format,
5549   etc. Since most of these items are easily changed at run time, there
5550   is usually no need to change the compiled-in defaults. If you do need
5551   to, this is where they are.
5552
5553
5554   1\b19\b9.\b.  M\bMu\bul\blt\bti\bip\bpl\ble\be l\bla\ban\bng\bgu\bua\bag\bge\be s\bsu\bup\bpp\bpo\bor\brt\bt.\b.
5555
5556
5557   1\b19\b9.\b.1\b1.\b.  C\bCo\bom\bmm\bma\ban\bnd\bd n\bna\bam\bme\bes\bs.\b.
5558
5559   ezmlm commands can have aliases for use in translations for non-
5560   English use.  Due to the use of commands in mail e-mail addresses, the
5561   character set is limited by rfc822 to us-ascii. To enable the command
5562   aliases, remove the comment marks around the INTL_CMDS define in
5563   idx.h. Also, remove the comments from the define corresponding to one
5564   language (currently, only LANG_FR - French) available.
5565
5566   The INTL_CMDS define results in the compilation of all ezmlm programs
5567   with support for alias commands for those commands listed in the INTL
5568   section (all that are used directly by users). All aliases MUST be
5569   defined, but should be the normal English commands. The language-
5570   specific sections un-define and redefine the commands for which
5571   alternative names should be used. This allows use of e.g.
5572   ``inscription'' as an alias in addition to the standard ``subscribe''.
5573
5574
5575   1\b19\b9.\b.2\b2.\b.  T\bTe\bex\bxt\bt f\bfi\bil\ble\bes\bs.\b.
5576
5577   Most ezmlm responses are made from text files in D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/. These are
5578   created from the template file ``ezmlmrc''. Thanks to Frank Denis, and
5579   Masashi Fujita, Wanderlei Antonio Cavassin, Sergiusz Pawlowicz, Frank
5580   Tegtmeyer, Torben Fjerdingstad, Jan Kasprzak, and Sebastian Andersson,
5581   French, Japanese, Portuguese (var. Brazil), Polish, German, Danish,
5582   Czech, and Swedish versions are available. Just:
5583
5584
5585                % make jp
5586
5587
5588
5589
5590   before
5591
5592
5593                # make setup
5594
5595
5596
5597
5598   or just copy e\bez\bzm\bml\blm\bmr\brc\bc.\b.j\bjp\bp to /\b/e\bet\btc\bc/\b/e\bez\bzm\bml\blm\bmr\brc\bc, where it will override the
5599   copy installed in the ezmlm binary directory. For rpm packages, the
5600   en_US version is installed, but the other versions are available in
5601   the /\b/u\bus\bsr\br/\b/d\bdo\boc\bc/\b/ hierarchy.
5602
5603   If you have made an e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) version for another language, please
5604   make it public domain and E-mail it as an attachment to
5605   lindberg@id.wustl.edu. It will then be put into the e\bez\bzm\bml\blm\bmr\brc\bc directory
5606   of the distribution site. Please take advantage of the ``Content-
5607   transfer-encoding'' capability of ezmlm-idx>=0.30, if needed, as this
5608   avoids problems when messages are sent via non-8-bit MUAs.
5609
5610
5611   Other ezmlm responses, such as words in subject lines, are defines in
5612   i\bid\bdx\bx.\b.h\bh and can be changed there. Error messages should ideally not be
5613   altered. However, it may make sense to change a few of them which are
5614   used as messages to e.g. remote administrators. The defines for all
5615   error messages are in e\ber\brr\brt\btx\bxt\bt.\b.h\bh.
5616
5617
5618   1\b19\b9.\b.3\b3.\b.  M\bMu\bul\blt\bti\bi-\b-b\bby\byt\bte\be c\bch\bha\bar\bra\bac\bct\bte\ber\br c\bco\bod\bde\be s\bsu\bup\bpp\bpo\bor\brt\bt.\b.
5619
5620   ezmlm, as far as we know, places no restrictions on character sets.
5621   The configurable default character set allows you to use other
5622   character sets for out going ezmlm messages. ezmlm-make does not _\bp_\be_\br
5623   _\bs_\be support other character sets. However, any single-byte character
5624   set is supported, as long as the us-ascii character sequence ``</''
5625   does not occur anywhere as the first characters of the line, and the
5626   character sequence ``<#x#>'' (where ``x'' is any number, or A, B, C,
5627   D, F, H, L, R, T) does not occur anywhere is text (if it does, it
5628   risks being substituted). Also, any occurrence or ``<#A#>'' and
5629   ``<#R#>'' that is the first on any text line will be substituted by
5630   ezmlm-manage and ezmlm-store. Any occurrence of ``!A'' and ``!R'' as
5631   the first characters on a line will be substituted by ezmlm-manage and
5632   ezmlm-store.
5633
5634   For multi-byte character codes, the same restrictions apply.  Thus,
5635   ``</'' at the start of a line will confuse ezmlm-make, and any
5636   ``<#x#>'' sequence within the text risks substitution. In practice,
5637   both of these should be very rare and easily avoidable when setting up
5638   an ezmlmrc(5).
5639
5640
5641   2\b20\b0.\b.  S\bSu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\br n\bno\bot\bti\bif\bfi\bic\bca\bat\bti\bio\bon\bn o\bof\bf m\bmo\bod\bde\ber\bra\bat\bti\bio\bon\bn e\bev\bve\ben\bnt\bts\bs.\b.
5642
5643
5644   2\b20\b0.\b.1\b1.\b.  G\bGe\ben\bne\ber\bra\bal\bl o\bop\bpi\bin\bni\bio\bon\bns\bs.\b.
5645
5646   This is a collection of the authors opinions and an explanation of
5647   ezmlm-idx moderation design, which you may or may not agree with.
5648
5649
5650   2\b20\b0.\b.2\b2.\b.  U\bUs\bse\ber\brs\bs s\bsh\bho\bou\bul\bld\bd k\bkn\bno\bow\bw t\bth\bha\bat\bt t\bth\bhe\be l\bli\bis\bst\bt i\bis\bs s\bsu\bub\bbs\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn m\bmo\bod\bde\ber\bra\bat\bte\bed\bd.\b.
5651
5652   List subscribers should be informed that subscriptions to the list are
5653   controlled by a moderator.  ezmlm-idx in its default setup handles
5654   this notification during and after the subscribe handshake. Most of
5655   this can be disabled by manipulation of the D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/ files.
5656
5657
5658   2\b20\b0.\b.3\b3.\b.  S\bSu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs s\bsh\bho\bou\bul\bld\bd k\bkn\bno\bow\bw t\bth\bha\bat\bt p\bpo\bos\bst\bts\bs a\bar\bre\be m\bmo\bod\bde\ber\bra\bat\bte\bed\bd.\b.
5659
5660   List subscribers should be informed that posts to the list are
5661   moderated. ezmlm-idx does this by adding the ``Delivered-To: moderator
5662   for ...'' header, but IOHO, the list owner should make the fact of
5663   list moderation plain in introductory messages, or other means, to the
5664   list subscribers.
5665
5666
5667   2\b20\b0.\b.4\b4.\b.  S\bSe\ben\bnd\bde\ber\brs\bs o\bof\bf p\bpo\bos\bst\bts\bs s\bsh\bho\bou\bul\bld\bd b\bbe\be n\bno\bot\bti\bif\bfi\bie\bed\bd o\bof\bf r\bre\bej\bje\bec\bct\bti\bio\bon\bns\bs.\b.
5668
5669   With normal use of ezmlm-idx, the sender of a rejected post is
5670   notified that the post has been rejected and if the moderators chooses
5671   to comment, the sender receives this comment, usually describing why
5672   the post was rejected.  This ezmlm behavior cannot be disabled at run
5673   time.
5674
5675   If post are neither accepted or rejected, they time out. ezmlm-
5676   clean(1) notifies the sender when this happens. This behavior can be
5677   disabled with the ezmlm-clean(1) ``-R'' (not return) switch, which has
5678   to be placed on the command line of all invocations of ezmlm-clean(1)
5679   (normally in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br and D\bDI\bIR\bR/\b/m\bmo\bod\bde\ber\bra\bat\bto\bor\br).  If you for some reason do
5680   not wish to inform the sender of your editorial decision, you can use
5681   this switch and let undesirable posts time out, rather than actively
5682   rejecting them. IOHO, it is better to be "above board" and use the
5683   normal notification mechanisms, together with active rejection and
5684   informative rejection comments.
5685
5686   The ezmlm-make(1) ``-u'' switch uses moderation in a slightly
5687   different way. Here, posts are restricted to subscribers, but posts
5688   from non-subscribers are sent to the moderator(s) rather that being
5689   ignored. This to help the subscriber that posts from an alias of the
5690   subscribed address, or the occasional non-subscriber. In this case it
5691   is perfectly acceptable to just ignore non-accepted posts. Thus, using
5692   the ezmlm-make(1) ``-u'' switch configures the ezmlm-clean(1)
5693   invocations with the ``-R'' switch.
5694
5695
5696   2\b21\b1.\b.  E\bEz\bzm\bml\blm\bm-\b-i\bid\bdx\bx s\bse\bec\bcu\bur\bri\bit\bty\by.\b.
5697
5698
5699   2\b21\b1.\b.1\b1.\b.  G\bGe\ben\bne\ber\bra\bal\bl a\bas\bss\bsu\bum\bmp\bpt\bti\bio\bon\bns\bs.\b.
5700
5701   This document discusses security aspects of ezmlm-idx addition to the
5702   ezmlm-0.53 mailing list manager. This is the authors' understanding of
5703   security aspects of ezmlm-idx functions and not to be taken as a
5704   warranty. If you find any errors in this document or the ezmlm-idx
5705   package in general, please inform the authors.
5706
5707   In general, ezmlm with or without the ezmlm-idx package is more secure
5708   and less resource hungry than most other mailing list managers. Better
5709   security than afforded by ezmlm +/- ezmlm-idx would require encryption
5710   or PGP/digital signatures. Such an addition would make it difficult,
5711   if not impossible, to run the mailing list from a standard MUA. The
5712   ezmlm-idx package adds a number of functions and options, which under
5713   some conditions may decrease security. The purpose of this document is
5714   to discuss security aspects of using/enabling these different
5715   functions.
5716
5717
5718   2\b21\b1.\b.2\b2.\b.  S\bSE\bEN\bND\bDE\bER\bR m\bma\ban\bni\bip\bpu\bul\bla\bat\bti\bio\bon\bn.\b.
5719
5720   We assume that the cost of manipulating/falsifying the SENDER address
5721   of a message is zero. Thus, any mechanism relying on SENDER alone is
5722   insecure. However, such a mechanism may help in case of simple mailer
5723   or user errors. We also assume that the "cookies" used by ezmlm are
5724   secure, i.e.  that it is very hard for someone to generate a valid
5725   cookie for a given address. SENDER is used to identify a moderator for
5726   remote administration of subscriptions. The result of the action or
5727   the confirmation request are sent back to that moderator address.
5728   Thus, providing a false SENDER is useless, unless the attacker can
5729   also read that moderator's mail.
5730
5731
5732   2\b21\b1.\b.3\b3.\b.  e\bez\bzm\bml\blm\bm c\bco\boo\bok\bki\bie\bes\bs.\b.
5733
5734   Since ezmlm doesn't rely on the SENDER, the security lies entirely
5735   within the action-time-cookie-address combination.  Anyone obtaining a
5736   valid "combination" can do whatever the combination is meant to do,
5737   but nothing else. Also, the cookie times out 1000000 seconds
5738   (approximately 11.6 days) after it was issued. Since the
5739   "combinations" are specific for a particular action and address, they
5740   can only be reused for that particular purpose, and within 11.6 days.
5741   Ezmlm (un)subscriptions for a given address are usually pointless to
5742   repeat. Message moderation "combinations" are useless after they've
5743   been used, since the message is no longer in the moderation queue.
5744
5745
5746   2\b21\b1.\b.4\b4.\b.  L\bLi\bis\bst\bts\bs w\bwi\bit\bth\bho\bou\but\bt r\bre\bem\bmo\bot\bte\be a\bad\bdm\bmi\bin\bn/\b/s\bsu\bub\bbs\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn m\bmo\bod\bde\ber\bra\bat\bti\bio\bon\bn.\b.
5747
5748   Maliciously (un)subscribing an address with ezmlm-0.53 requires that
5749   the attacker is able to read mail sent to the subscription address.
5750
5751   With the ezmlm-idx add-on, a non-moderated list works exactly the same
5752   way. Ezmlm-idx introduces the moderator for moderated and remote admin
5753   lists. For any moderator functions, an attacker needs to be able to
5754   read mail sent to a moderator's address. If s/he can do this, the
5755   attacker can affect anything the moderator is allowed to do (since
5756   falsifying SENDER is trivial). To minimize risks, give moderators only
5757   the power they need, do not use more moderators than necessary, and
5758   use moderators whose mail is hard to intercept (on the same
5759   machine/same internal/secure network or by encryption via e.g. ssh).
5760
5761
5762   2\b21\b1.\b.5\b5.\b.  M\bMe\bes\bss\bsa\bag\bge\be m\bmo\bod\bde\ber\bra\bat\bti\bio\bon\bn.\b.
5763
5764   A basic message moderated list keeps ezmlm subscriber security, but
5765   interpolates the moderator(s) between the address of the list and the
5766   list itself. An attacker able to read moderator mail can accept/reject
5767   a post, if s/he can do it before a regular moderator has taken action.
5768   The potential for abuse can be minimized by using few and local
5769   moderators. Mail logs are needed to trace which moderator address was
5770   misused.
5771
5772
5773   2\b21\b1.\b.6\b6.\b.  S\bSu\bub\bbs\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn m\bmo\bod\bde\ber\bra\bat\bti\bio\bon\bn.\b.
5774
5775   A basic subscription moderated list retains ezmlm subscriber security,
5776   but adds a moderator handshake. An attacker would need to be able to
5777   both read mail to the subscriber address and to at least one
5778   moderator.
5779
5780
5781   2\b21\b1.\b.7\b7.\b.  R\bRe\bem\bmo\bot\bte\be a\bad\bdm\bmi\bin\bni\bis\bst\btr\bra\bat\bti\bio\bon\bn.\b.
5782
5783   A remote admin (-r) list adds the ability of the moderator to
5784   (un)subscribe any address. The price of this is that an attacker able
5785   to read moderator mail can (un)subscribe any address. The moderator
5786   handshake message will be delivered to the abused moderator address,
5787   which will alert that moderator and reveal the compromise. Another
5788   basic assumption is that action-date-cookie-address combinations are
5789   only sent to the target address or a moderator and that moderator
5790   action "combinations" are never sent to non-moderators.
5791
5792
5793   2\b21\b1.\b.8\b8.\b.  R\bRe\bem\bmo\bot\bte\be e\bed\bdi\bit\bti\bin\bng\bg o\bof\bf e\bez\bzm\bml\blm\bm t\bte\bex\bxt\bt f\bfi\bil\ble\bes\bs.\b.
5794
5795   ezmlm-manage(1) can allow remote administrators to edit files in
5796   D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt.  First, this option is disabled by default. Second, the
5797   ``-edit'' command is accepted only when the target (the recipient) is
5798   a remote administrator.  Third, only existing files within D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt
5799   are editable.  It is not possible to create files.
5800
5801   ezmlm replies to a valid request with an informative message and the
5802   contents of the file. In addition, the ``Reply-To:'' address contains
5803   a cookie based on the file name and contents, as well as the current
5804   time.  Anyone possessing this cookie can save a new version of the
5805   text file. As with other ezmlm security, the security of this process
5806   depends on only the remote administrator receiving remote
5807   administrator mail. If this is not sufficiently secure for you, do not
5808   enable this option. As always, an increase in accessibility results
5809   results in a decrease in security.
5810
5811   Cookies for editing expire in approximately 27 hours. Also, as soon as
5812   a file is changed, the cookie is invalidated since the file contents
5813   change.  This also means that an outstanding edit request cannot be
5814   completed if the files has been updated in the interim.
5815
5816   A potential attacker obtaining a valid cookie has a window of
5817   opportunity while you edit the file, or for at most 27 hours. S/he can
5818   overwrite and existing text file with potentially offensive material.
5819   Usually, this can be achieved more easily by posting to the list. S/he
5820   can also potentially fill your disk with a large amount of data (up to
5821   two times 10240 bytes (limited by MAXEDIT in i\bid\bdx\bx.\b.h\bh)) and could put
5822   part of this data onto messages leaving the list. Again, this is much
5823   more easily achieved by e.g. sending the equivalently sized message to
5824   your list.
5825
5826
5827   2\b21\b1.\b.9\b9.\b.  D\bDi\big\bge\bes\bst\bt g\bge\ben\bne\ber\bra\bat\bti\bio\bon\bn a\ban\bnd\bd a\bar\brc\bch\bhi\biv\bve\be r\bre\bet\btr\bri\bie\bev\bva\bal\bl.\b.
5828
5829   The archive retrieval functions added by ezmlm-idx are digests
5830   (protected by a "code") and other functions. Anyone who knows the
5831   digest code (through reading mail logs, reading D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br of the
5832   list, or reading any scripts used to send digest triggering messages)
5833   can trigger a digest. Protect these locations accordingly!  For
5834   default lists with digests triggered from D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br via ezmlm-
5835   tstdig(1) and ezmlm-get(1), you do not need the digest code and can
5836   thus disable the possibility to trigger digest by mail.  For other
5837   functions, the output is sent to SENDER and can be restricted to
5838   subscribers (the ``-s'' switch). ezmlm-get(1) functions (apart from
5839   digest) can be entirely disabled with the i``-C'' switch, or
5840   restricted to moderators with the ``-P'' switch or by removing
5841   D\bDI\bIR\bR/\b/p\bpu\bub\bbl\bli\bic\bc. Other sections of this document discuss several other
5842   options. All switches are documented in the man pages.
5843
5844   The moderator support functions added by the ezmlm-idx package
5845   (extended help and subscriber list) are sent only to a moderator
5846   address, i.e. an attacker again needs to be able to read moderator
5847   mail to read the output. The help info (D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/m\bmo\bod\bd-\b-h\bhe\bel\blp\bp) should not
5848   contain secrets. The ``-list'' function is normally disabled, but can
5849   be enabled with the ezmlm-manage -l switch to aid the remote
5850   administrator(s).
5851
5852
5853   2\b21\b1.\b.1\b10\b0.\b.  C\bCo\bon\bnv\bve\ben\bni\bie\ben\bnc\bce\be f\bfo\bor\br s\bse\bec\bcu\bur\bri\bit\bty\by:\b: t\bth\bhe\be e\bez\bzm\bml\blm\bm-\b-m\bma\ban\bna\bag\bge\be `\b``\b`-\b-S\bS'\b''\b' a\ban\bnd\bd `\b``\b`-\b-U\bU'\b''\b'
5854   s\bsw\bwi\bit\btc\bch\bhe\bes\bs.\b.
5855
5856   ezmlm-manage(1) functions can be made more convenient, at the expense
5857   of security. There have been many requests for these options, so they
5858   have been added, although we recommend against using them:
5859
5860   The ezmlm-manage(1) ``-S'' switch eliminates the subscriber handshake
5861   from subscribe requests. Thus, it is no longer necessary for the
5862   subscriber to confirm the subscription. This is not secure, but may be
5863   convenient for some moderated lists.  Use only with extreme caution.
5864   The ezmlm-manage(1) ``-U'' switch similarly eliminates subscriber
5865   confirmation from unsubscribe requests. Again, this is insecure and
5866   useful only under special circumstances. If the list has any
5867   moderators (remote or modsub), requests to (un)subscribe an address
5868   other than sender are still routed to a moderator. This is similar to
5869   how some other lists work. Naturally, this is insecure because it
5870   relies on SENDER.  Unsubscribe requests are always non-moderated,
5871   since, IOHO, it seems un-ethical to force a subscriber to remain on a
5872   list. Where an unsubscribe confirm request is sent out it is (also)
5873   sent to the target, except when the request was initiated by a
5874   moderator on a list with remote administration (D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be exists).
5875   The (un)subscription target is always informed about completed
5876   (un)subscribe request, whether initiated by that address, another
5877   address, or by a moderator. Thus, attempts of a user or moderator to
5878   subscribe an address will be brought to the attention of the user
5879   receiving mail at that address.
5880
5881
5882   2\b21\b1.\b.1\b11\b1.\b.  D\bDe\ben\bni\bia\bal\bl o\bof\bf s\bse\ber\brv\bvi\bic\bce\be.\b.
5883
5884   ezmlm-get(1) archive retrieval functions can be used to deplete system
5885   resources. However, this can also be done by posting messages to
5886   lists, mail bombing, etc. If you are worried about this, you can use a
5887   combination of ezmlm-manage/ezmlm-get ``-C'', ``-s'', and ``-P''
5888   switches, removal of D\bDI\bIR\bR/\b/p\bpu\bub\bbl\bli\bic\bc, and removal of the mail-triggered
5889   digest function (by removing the digest code from the ezmlm-get(1)
5890   command line) to decrease availability of these functions (see man
5891   pages). Digest can also be triggered by direct execution of ezmlm-get
5892   from within a script from D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br as in the default setup with the
5893   ezmlm-make(1) ``-d'' switch.
5894
5895
5896   2\b21\b1.\b.1\b12\b2.\b.  M\bMo\bod\bde\ber\bra\bat\bto\bor\br a\ban\bno\bon\bny\bym\bmi\bit\bty\by.\b.
5897
5898   Anyone getting messages from the list can see the ``Delivered-To:
5899   Moderator for ...'' header and realize that the list is moderated.  In
5900   the authors opinion, this is fair and appropriate. If this bothers
5901   you, edit the source of e\bez\bzm\bml\blm\bm-\b-s\bst\bto\bor\bre\be.\b.c\bc.
5902
5903   While the fact that the list is moderated will be disclosed by the
5904   headers, the moderator(s)' identity will not be disclosed by the
5905   header. Moderators are anonymous to anyone who cannot directly read
5906   the mail log, the moderator list, or monitor your outgoing and
5907   incoming mail. Anyone intercepting the acting moderators' mail or able
5908   to read the mail log can determine who took a particular action.
5909
5910   Moderator E-mail addresses are not (to our knowledge) disclosed by any
5911   ezmlm mechanism. Thus, the poster does not know who rejected/accepted
5912   the message. Other moderators can find out that the message was
5913   accepted (by seeing it on the list or by themselves committing to a
5914   reject/accept reply) or rejected (by being informed by the poster or
5915   by themselves committing to a reject/accept reply). If no moderator
5916   takes any action for a given time (120 h - configurable to anything
5917   24-240 h via D\bDI\bIR\bR/\b/m\bmo\bod\bdt\bti\bim\bme\be - and the parameters are likewise
5918   configurable at compile time via i\bid\bdx\bx.\b.h\bh) the message times out, an act
5919   for which no particular moderator can be held accountable.
5920
5921   Subscription requests are acted upon only if a moderator completes the
5922   transaction by approving the requests. Requests can not be directly
5923   disapproved, but the associated cookie becomes invalid after
5924   approximately 11.6 days. Neither the subscriber nor the other
5925   moderators know which moderator accepted the subscription request.
5926   Requests to unsubscribe from the list are never moderated or otherwise
5927   controlled, except by requiring confirmation from the subscriber
5928   (normal unsubscribe) or the moderator that initiated the request
5929   (remote administration). If several moderators approve the same
5930   subscribe request, the user gets multiple notifications.
5931
5932   The triggering message (the moderation approval or the moderator's
5933   completion of the subscription request) are not returned or logged.
5934   This protects moderator anonymity, but makes it harder to track down
5935   the offender in case of abuse. Only a good mail log will help. IOHO,
5936   abuse of these mechanisms requires considerably more effort that it is
5937   worth to (un)subscribe someone to a list.  Also, IOHO, moderator
5938   anonymity is more important. If this increased difficulty in tracking
5939   down abusive behavior bothers you, don't use the remote administration
5940   and moderated subscription features.
5941   2\b21\b1.\b.1\b13\b3.\b.  C\bCo\bon\bnf\bfi\bid\bde\ben\bnt\bti\bia\bal\bli\bit\bty\by o\bof\bf s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\br E\bE-\b-m\bma\bai\bil\bl a\bad\bdd\bdr\bre\bes\bss\bse\bes\bs.\b.
5942
5943   The optional ``-list'' command enabled by the ``-l'' ezmlm-manage(1)
5944   command line switch returns a subscriber list to the moderator. Again,
5945   anyone who can intercept a moderators' mail can fake SENDER and use
5946   this command to obtain a subscriber list. The use of local moderators
5947   minimize the risk. If the risk of subscriber disclosure is not worth
5948   this convenience, do not enable this feature.
5949
5950
5951   2\b21\b1.\b.1\b14\b4.\b.  H\bHe\bel\blp\bp m\bme\bes\bss\bsa\bag\bge\be f\bfo\bor\br m\bmo\bod\bde\ber\bra\bat\bto\bor\brs\bs.\b.
5952
5953   ezmlm-manage sends D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/m\bmo\bod\bd-\b-h\bhe\bel\blp\bp, rather than D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/h\bhe\bel\blp\bp in
5954   reply to messages to list-help@host if the target address is a
5955   moderator.  D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/m\bmo\bod\bd-\b-h\bhe\bel\blp\bp should not contain secrets or other
5956   confidential information.
5957
5958
5959   2\b21\b1.\b.1\b15\b5.\b.  S\bSu\bub\bbl\bli\bis\bst\bts\bs.\b.
5960
5961   ezmlm sublists require that the message envelope sender is the main
5962   list, and that the message has a ``Mailing-List:'' header. Both are
5963   easy to fake, allowing an attacker to inject messages at the sublist
5964   level. Other than the possible ramifications of only a subset of
5965   subscribers seeing the message, this is of no concern for open lists.
5966   For a ``subscriber-only'' list based on SENDER checks, it is no harder
5967   to set SENDER to the address of a subscriber than to fake the headers
5968   required by the sublist. However, for a moderated list the mainlist to
5969   sublist communication becomes the weakest link. Sublists using a SQL
5970   database also use better authentication in this step (see ``SQL-
5971   enabled ezmlm lists'').
5972
5973   A sublist user can unsubscribe a normal ezmlm sublist from the main
5974   list. To guard against this, you need to prevent propagation of
5975   unsubscribe confirm requests by the sublist. Easiest is to add a line
5976   to D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br before the ezmlm-send(1) line:
5977
5978
5979                |grep -i '^Subject: CONFIRM' >/dev/null 2>&1 && exit 99; exit 0
5980
5981
5982
5983
5984   Another option would be to take advantage of the fact that D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\br-\b-
5985   a\bad\bdd\bd headers at the main list are added to normal messages, but not to
5986   administrative messages. Thus, one could discard messages that lack
5987   the default ``Precedence: bulk'' header:
5988
5989
5990                |grep -i '^Precedence: bulk' >/dev/null 2>&1 || exit 99; exit 0
5991
5992
5993
5994
5995   For lists with SQL-support, users cannot unsubscribe sublists (see
5996   ``SQL-enabled ezmlm lists'').
5997
5998   Break-in at a sublist host for normal ezmlm lists leads to
5999   loss/compromise of the addresses handled by the sublist. For MySQL-
6000   enabled lists, the sublist access credentials give DELETE and SELECT
6001   access to all addresses serviced by the list. Thus, a successful
6002   sublist attacker can completely disable the list. The MySQL log (if
6003   used) will reveal from which host the attack was done. Although the
6004   potential damage to a SQL-enabled list is greater, the results are of
6005   the same order of magnitude. The risk in minimized by keeping control
6006   over all sublist hosts. A successful sublist attacker cannot normally
6007   add addresses, since the sublist users by default are set up without
6008   INSERT privileges to the address database.
6009
6010
6011   2\b21\b1.\b.1\b16\b6.\b.  S\bSQ\bQL\bL d\bda\bat\bta\bab\bba\bas\bse\bes\bs.\b.
6012
6013   For SQL-enabled lists, the database contains all list information.
6014   Subversion of your database server allows an attacker to add/remove
6015   addresses at will.  This is also true for normal ezmlm lists. In
6016   addition, modification of the ``*_name'', ``*_cookie'', and ``*_mlog''
6017   tables can cause the list to misbehave in a manner that doesn't
6018   immediately suggest a security breach.  Keep your ezmlm list and
6019   database servers secure.
6020
6021
6022   2\b21\b1.\b.1\b17\b7.\b.  R\bRe\bep\bpo\bor\brt\bti\bin\bng\bg s\bse\bec\bcu\bur\bri\bit\bty\by p\bpr\bro\bob\bbl\ble\bem\bms\bs.\b.
6023
6024   Please send private E-mail about any security problems with the ezmlm-
6025   idx additions to Fred Lindberg, lindberg@id.wustl.edu.  For ezmlm,
6026   please send them via private E-mail to Dan J. Bernstein, the author of
6027   ezmlm proper.
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072