Import ezmlm-idx 0.40
[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