+ EZFAQ 0.40 - ezmlm-idx and ezmlm FAQ
+ Fred Lindberg, lindberg@id.wustl.edu & Fred B. Ringel,
+ fredr@rivertown.net
+ 22-NOV-1999
+
+ This document is a collection of frequently asked questions about
+ ezmlm-idx. Where applicable, ezmlm itself is also covered. This FAQ
+ presumes familiarity with Unix, and with the basic concepts of E-mail
+ and mailing lists. This FAQ is updated for ezmlm-0.53 and ezmlm-
+ idx-0.40.
+ ______________________________________________________________________
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1. General Information
+
+ 1.1 Acknowledgements
+ 1.2 What is this document?
+ 1.3 Terminology
+ 1.4 What is the difference between ezmlm and ezmlm-idx?
+ 1.5 Where can I get all of the ezmlm-related programs?
+ 1.6 Where can I find documentation for ezmlm and patches?
+ 1.7 Where do I send comments on this document?
+ 1.8 How to experiment with new versions of ezmlm-idx.
+
+ 2. Quick start
+
+ 3. Overview of mailing list management and mailing list managers
+
+ 4. Overview of ezmlm function
+
+ 4.1 The basic setup.
+ 4.2 Inventions in ezmlm.
+ 4.3 The qmail delivery mechanism.
+ 4.4 What the different programs do.
+ 4.5 What the different files in the list directory do.
+ 4.6 The paper path for posts.
+ 4.7 The ezmlm path for moderation messages.
+ 4.8 The ezmlm path for administrative messages.
+ 4.9 The ezmlm path for bounces.
+ 4.10 Messages to list-owner and list-digest-owner.
+ 4.11 Structure of subscriber databases.
+ 4.12 Local case in E-mail addresses.
+ 4.13 Testing SENDER to allow posts only from list subscribers.
+ 4.14 How cookies work.
+ 4.15 How moderator E-mail addresses are stored.
+ 4.16 How subscription moderation works.
+ 4.17 How remote administration works.
+ 4.18 How message moderation works.
+ 4.19 How QMQP support works
+ 4.20 How messages are stored in the archive.
+ 4.21 How the message index works.
+ 4.22 How threading works.
+ 4.23 How digests work.
+ 4.24 How WWW archive access works.
+ 4.25 How ezmlm-tstdig works.
+ 4.26 How sublists work.
+ 4.27 How sublisting can be made transparent to the user.
+ 4.28 How to service commands in the subject line.
+ 4.29 How to support alternative command names.
+ 4.30 How to add your own commands.
+ 4.31 How remote administrators can retrieve a subscriber list
+ 4.32 How remote administrators can determine the number of subscribers
+ 4.33 How remote admins can see if an address is a subscriber or not
+ 4.34 How remote administrators can search the subscription log
+ 4.35 How text file editing works.
+ 4.36 How subject line prefixes work.
+ 4.37 How bounces are handled.
+ 4.38 How the info and faq commands work.
+ 4.39 How the global ezmlm list address works.
+ 4.40 How ezmlm-cron works.
+ 4.41 How ezmlm-make works.
+ 4.42 What names can I use for my lists?
+ 4.43 Lists in virtual domains
+ 4.44 How do I make customization simple for me/my users?
+
+ 5. ezmlm support for SQL databases.
+
+ 5.1 Why use an SQL database with ezmlm?
+ 5.2 Why not to use an SQL database with ezmlm.
+ 5.3 Tables used for (My)SQL support.
+ 5.3.1 Address tables.
+ 5.3.2 Subscriber log tables.
+ 5.3.3 Message logging tables.
+ 5.4 How to set up a simple list with SQL support.
+ 5.4.1 Helper programs for SQL-enabled lists.
+ 5.5 Manually manipulating the subscribers of a SQL-enabled list.
+ 5.6 Converting to and from and SQL database.
+ 5.7 Optimizing MySQL for ezmlm.
+ 5.7.1 Address SELECTs, additions, removals.
+ 5.8 Maintenance of the MySQL database.
+
+ 6. Possible error conditions in ezmlm lists.
+
+ 6.1 What do I do if ezmlm doesn't work?
+ 6.2 How do I report ezmlm bugs?
+ 6.3 Where do I send suggestions for ezmlm-idx improvements?
+ 6.4 Using ezmlm-test to check the ezmlm(-idx) programs.
+ 6.5 Using ezmlm-check to find setup errors.
+ 6.6 Posts are rejected: Sorry, no mailbox here by that name (#5.1.1).
+ 6.7 Post are not sent to subscribers.
+ 6.8 ezmlm-make fails: usage: ezmlm-make ...
+ 6.9 ezmlm-make fails: Unable to create ...
+ 6.10 ezmlm-make fails: ... ezmlmrc does not exist
+ 6.11 Index/get/thread requests fail quietly or with errors from ezmlm-manage.
+ 6.12 Digest triggering requests fail.
+ 6.13 Remote administration (un)subscribe confirm requests go to the user, not the moderator.
+ 6.14 (Un)subscribers does not receive a (un)subscribe acknowledgement
+ 6.15 Messages posted to a moderated list are sent out without moderation.
+ 6.16 Messages posted to a moderated list do not result in moderation requests.
+ 6.17 Moderation request replies do not result in the appropriate action.
+ 6.18 Moderator comments with moderation request replies are not added to the post/sent to the poster.
+ 6.19 Some headers are missing from messages in the digest.
+ 6.20 Some Received: headers are missing from messages.
+ 6.21 My Mutt users cannot thread their digest messages.
+ 6.22 Posts fail: Message already has Mailing-List (#5.7.2).
+ 6.23 The last line of a
+ 6.24 No CONFIRM requests are sent to moderators.
+ 6.25 Deliveries fail ``temporary qmail-queue error''
+ 6.26 How to deal with corrupted subscriber lists
+ 6.27 Vacation program replies are treated as bounces by ezmlm.
+ 6.28 Digests do not come at regular hours.
+ 6.29 Preventing loops from misconfigured subscriber addresses.
+ 6.30 A user can subscribe and receives warning and probe messages, but no messages from the list.
+
+ 7. Customizing ezmlm-make operation via ezmlmrc
+
+ 7.1 Using ezmlm-make to edit existing lists.
+ 7.2 What is ezmlmrc?
+ 7.3 Changing defaults for
+ 7.4 Changing default moderator directories.
+ 7.5 Adapting ezmlm-make for virtual domains.
+ 7.6 Setting up ezmlm-make for special situations.
+
+ 8. Restricting message posting to the list.
+
+ 8.1 Requiring the list address in To:/Cc: headers.
+ 8.2 Rejecting messages sent from other mailing lists.
+ 8.3 Restricting posts based on the Subject line.
+ 8.4 Restricting the size of posts.
+ 8.5 Restricting posts based on MIME content-type.
+ 8.6 Restricting posts to list subscribers.
+ 8.7 Restricting posts to an arbitrary set of E-mail addresses (higher security option).
+ 8.8 Completely restricting posts.
+ 8.9 A general solution to restricting posts based on SENDER.
+
+ 9. Customizing outgoing messages.
+
+ 9.1 Adding a trailer to outgoing messages.
+ 9.2 Adding a subject prefix to outgoing messages.
+ 9.3 Adding a header to outgoing messages.
+ 9.4 Adding a message number header.
+ 9.5 Removing headers from outgoing messages.
+ 9.6 Removing MIME parts from messages.
+ 9.7 Limiting ``Received:'' headers in outgoing messages.
+ 9.8 Setting ``Reply-To: list@host''.
+ 9.9 Configuring the list so posts are not copied to the original sender.
+ 9.10 Customizing ezmlm notification messages.
+ 9.11 Specifying character set and content-transfer-encoding for outgoing ezmlm messages.
+
+ 10. Customizing archive retrieval.
+
+ 10.1 Specifying the format for retrieved messages.
+ 10.2 Specifying the default format for digests and archive retrieval.
+ 10.3 Limiting the number of messages per -get/-index request.
+
+ 11. Restricting archive retrieval.
+
+ 11.1 Restricting archive access to subscribers.
+ 11.2 Restricting available archive retrieval commands.
+ 11.3 Restricting archive retrieval to moderators.
+ 11.4 Allowing archive retrieval from a non-public list.
+
+ 12. Customizing digests.
+
+ 12.1 Setting up a digest list.
+ 12.2 Generating daily digests.
+ 12.3 Generating the first digest.
+ 12.4 Adding standard administrative information to digests.
+ 12.5 Controlling the digest format.
+ 12.6 Customizing bounce handling.
+
+ 13. Remote administration.
+
+ 13.1 How can I remotely add moderators, subscriber aliases, etc?
+ 13.2 Moderating posts from a secondary account.
+ 13.3 Moderating subscription from a secondary account.
+ 13.4 Automatically approving posts or subscriptions.
+ 13.5 Allowing remote administrators to get a subscriber list.
+ 13.6 Allowing remote administrators to retrieve or search a subscription log.
+ 13.7 Allowing users to get a subscriber list.
+ 13.8 Changing the timeout for messages in the moderation queue.
+ 13.9 Finding out how many messages are waiting for moderation.
+ 13.10 Using the same moderators for multiple lists.
+ 13.11 Using different moderators for message and subscription moderation.
+ 13.12 Setting up moderated lists with the list owner as the ``super moderator'' able to add/remove moderators remotely.
+ 13.13 Customizing ezmlm administrative messages.
+ 13.14 Manually approving a message awaiting moderation.
+ 13.15 Manually rejecting a message awaiting moderation.
+
+ 14. Sublists.
+
+ 14.1 Sublists of ezmlm lists.
+ 14.2 Sublists of non-ezmlm lists.
+ 14.3 How to set up a cluster of list and sublists with standard databases.
+
+ 15. Migration to Ezmlm from other Mailing List Managers.
+
+ 15.1 Basic Concepts.
+ 15.2 Setting up ezmlm to respond to host-centric commands.
+ 15.3 Commands of other mailinglist managers recognized by ezmlm.
+ 15.3.1 Listproc/Listserv.
+ 15.3.2 Majordomo.
+ 15.3.3 Smartlist.
+
+ 16. Optimizing list performance.
+
+ 16.1 Crond-generated digests for better performance.
+ 16.2 Optimizing execution of ezmlm-warn(1).
+ 16.3 Decreasing ezmlm-warn time out to increase performance.
+ 16.4 Use ezmlm without ezmlm-idx for maximum performance.
+ 16.5 Not archiving to maximize performance.
+ 16.6 Sublists to maximize performance.
+
+ 17. Miscellaneous.
+
+ 17.1 How do I quickly change the properties of my list?
+ 17.2 Open archived list with daily digests.
+ 17.3 Variations in moderation
+ 17.4 Lists that allow remote admin, but not user initiated subscription or archive retrieval.
+ 17.5 Lists that allow remote admin, user archive retrieval, but not user-initiated subscription.
+ 17.6 Lists that restrict archive retrieval to subscribers.
+ 17.7 Lists that do not allow archive retrieval at all.
+ 17.8 Lists that do not allow archive retrieval and do not allow digest triggering per mail.
+ 17.9 Lists that allow archive retrieval only to moderators, but allow user-initiated subscription.
+ 17.10 Lists that do not require user confirmation for (un)subscription.
+ 17.11 Announcement lists for a small set of trusted posters
+ 17.12 Announcement lists allowing moderated posts from anyone.
+ 17.13 Announcement lists with less security and more convenience.
+
+ 18. Ezmlm-idx compile time options.
+
+ 18.1 Location of binaries.
+ 18.2 Location of man pages.
+ 18.3 Base directory of qmail-installation.
+ 18.4 Short header texts, etc.
+ 18.5 Arbitrary limits.
+ 18.6 Command names.
+ 18.7 Error messages.
+ 18.8 Paths and other odd configuration items.
+
+ 19. Multiple language support.
+
+ 19.1 Command names.
+ 19.2 Text files.
+ 19.3 Multi-byte character code support.
+
+ 20. Subscriber notification of moderation events.
+
+ 20.1 General opinions.
+ 20.2 Users should know that the list is subscription moderated.
+ 20.3 Subscribers should know that posts are moderated.
+ 20.4 Senders of posts should be notified of rejections.
+
+ 21. Ezmlm-idx security.
+
+ 21.1 General assumptions.
+ 21.2 SENDER manipulation.
+ 21.3 ezmlm cookies.
+ 21.4 Lists without remote admin/subscription moderation.
+ 21.5 Message moderation.
+ 21.6 Subscription moderation.
+ 21.7 Remote administration.
+ 21.8 Remote editing of ezmlm text files.
+ 21.9 Digest generation and archive retrieval.
+ 21.10 Convenience for security: the ezmlm-manage ``-S'' and ``-U'' switches.
+ 21.11 Denial of service.
+ 21.12 Moderator anonymity.
+ 21.13 Confidentiality of subscriber E-mail addresses.
+ 21.14 Help message for moderators.
+ 21.15 Sublists.
+ 21.16 SQL databases.
+ 21.17 Reporting security problems.
+
+
+ ______________________________________________________________________
+
+ 1\b1.\b. G\bGe\ben\bne\ber\bra\bal\bl I\bIn\bnf\bfo\bor\brm\bma\bat\bti\bio\bon\bn
+
+
+ 1\b1.\b.1\b1.\b. A\bAc\bck\bkn\bno\bow\bwl\ble\bed\bdg\bge\bem\bme\ben\bnt\bts\bs
+
+ Many ezmlm users have contributed to improvements in ezmlm-idx. These
+ are listed in the R\bRE\bEA\bAD\bDM\bME\bE.\b.i\bid\bdx\bx file in the ezmlm-idx distribution.
+ Others have through questions and suggestions inspired parts in this
+ FAQ, or pointed out errors or omissions. Thanks! Direct contributions
+ are attributed to the respective authors in the text. Thanks again!
+
+
+ 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?
+
+ This FAQ contains answers to many questions that arise while
+ installing ezmlm, ezmlm-idx, and while setting up and managing ezmlm
+ mailing lists. See ``'' for a brief summary of what is ezmlm and what
+ is ezmlm-idx.
+
+ Many aspects of ezmlm are covered in several places in this FAQ. The
+ early sections explain how ezmlm works. Later sections discuss how to
+ deal with possible errors/problems. Subsequent sections discuss
+ details of customization and list setup in a _\bH_\bO_\bW_\bT_\bO form. Finally,
+ there are sections on information philosophy for moderated lists and
+ on security aspects on ezmlm lists.
+
+ This is an evolving document. If you find any errors, or wish to
+ comment, please do so to the authors. This FAQ is currently aimed at
+ system administrators and knowledgeable users, and heavily weighted
+ towards questions specific to the ezmlm-idx add-on.
+
+ If you have problems with the ezmlm-idx package, please start by
+ reading the ``man'' pages which come with each program, then this
+ document and other ezmlm documentation which is identified here. If
+ you have exhausted these resources, try the ezmlm and qmail mailing
+ lists and their respective mailing list archives. If you have solved a
+ problem not in the documentation, write it up as a proposed section of
+ a FAQ and send it to the authors. This way, it can be added to the
+ next version of this FAQ.
+
+
+ 1\b1.\b.3\b3.\b. T\bTe\ber\brm\bmi\bin\bno\bol\blo\bog\bgy\by
+
+ This document uses a number of terms. Here are the meanings ascribed
+ to them by the authors.
+
+ D\bDI\bIR\bR
+ The base directory of the list.
+
+
+ S\bSE\bEN\bND\bDE\bER\bR
+ The envelope sender of the message, as passed to ezmlm by qmail
+ via the $SENDER environment variable.
+
+
+ L\bLO\bOC\bCA\bAL\bL
+ The local part of the envelope recipient. For list-get-1@host,
+ it is usually _\bl_\bi_\bs_\bt_\b-_\bg_\be_\bt_\b-_\b1. If host is a virtual domain,
+ 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.
+
+
+ m\bmo\bod\bdd\bdi\bir\br
+ Base directory for moderators. Moderator E-mail addresses are
+ 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,
+ ``moddir'' is D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/.
+
+ To add or remove moderators:
+
+
+ % ezmlm-sub DIR/moddir moderator@host.domain
+ % ezmlm-unsub DIR/moddir moderator@host.domain
+
+
+
+
+
+ d\bdo\bot\btd\bdi\bir\br
+
+ The second argument of ezmlm-make is the main .qmail file for
+ the list. dotdir is the directory in which this ``dot file''
+ resides, i.e. the directory part of the ``dot'' argument. This
+ is usually the home directory of the user controlling the list
+ (but NOT necessarily of the one creating the list). Thus, _\bd_\bo_\bt_\bd_\bi_\br
+ is ~\b~a\bal\bli\bia\bas\bs/\b/ if ``root'' creates a list:
+
+
+ # ezmlm-make ~alias/list ~alias/.qmail-list ...
+
+
+
+
+ _\bd_\bo_\bt_\bd_\bi_\br is where the .\b.e\bez\bzm\bml\blm\bmr\brc\bc file is expected when the ezmlm-
+ make(1) ``-c'' switch is used (see ``Customizing ezmlm-make opera-
+ tion'').
+
+
+ e\bez\bzm\bml\blm\bm b\bbi\bin\bna\bar\bry\by d\bdi\bir\bre\bec\bct\bto\bor\bry\by
+ The directory where the ezmlm-binaries are normally stored, as
+ defined at compile time in c\bco\bon\bnf\bf-\b-b\bbi\bin\bn. This is compiled into the
+ programs and does not change just because you have moved the
+ program.
+
+
+ e\bez\bzm\bml\blm\bm-\b-g\bge\bet\bt(\b(1\b1)\b)
+ This is a reference to the ezmlm-get.1 man page. Access it with
+ one of the following:
+
+
+ % man ezmlm-get
+ % man 1 ezmlm-get
+
+
+
+
+ or if you have not yet installed ezmlm-idx (replace ``xxx'' with
+ the version number):
+
+
+ % cd ezmlm-idx-0.xxx
+ % man ./ezmlm-get.1
+
+
+
+ b\bba\bas\bse\bed\bdi\bir\br
+ The list directory when referencing the list subscriber address
+ database. For E-mail addresses stored in a set of files within
+ D\bDI\bIR\bR/\b/s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs/\b/, the ``basedir'' is ``DIR''.
+
+
+ a\bad\bdd\bdr\bre\bes\bss\bs d\bda\bat\bta\bab\bba\bas\bse\be
+ A collection of E-mail addresses stored in a set of files within
+ the ``subscribers'' subdirectory of the basedir,
+ D\bDI\bIR\bR/\b/s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs/\b/.
+
+
+ m\bme\bes\bss\bsa\bag\bge\be m\bmo\bod\bde\ber\bra\bat\bto\bor\br
+ An address to which moderation requests for posts to the list
+ are sent. The moderation requests are formatted with
+ ``From:''-``reject'' and a ``To:''-``accept'' default headers
+ for moderator replies. A reply to the ``reject'' address leads
+ to the rejection of the post. A reply to the ``accept'' address
+ leads to the acceptance of the post. Any E-mail address can be a
+ moderator E-mail address. Any number of moderator E-mail
+ addresses can be used. If a post is sent from a moderator E-mail
+ address, the moderation request is sent to that E-mail address
+ only. If a post is sent from an E-mail address that is not a
+ moderator, a moderation request is sent to all moderators.
+
+ The first reply to the moderation request determines the fate of
+ the message. Further requests for the action already taken are
+ silently ignored, while a request for the contrary action
+ results in an error message stating the actual fate of the
+ message. Thus, if you want to ``accept'' the message and it has
+ already been accepted, you receive no reply, but if you attempt
+ to ``reject'' it, you will receive an error message stating that
+ the message already has been accepted.
+
+ Most lists are not message moderated. If they are, the owner is
+ usually a ``message moderator'', sometimes together with a few
+ other trusted users.
+
+ For an announcement list, it is common to make all the
+ ``official announcers'' ``message moderators''. This way, they
+ can post securely and ``accept'' their own posts, while posts
+ from other users will be sent to this set of ``official
+ announcers'' for approval.
+
+
+ s\bsu\bub\bbs\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn m\bmo\bod\bde\ber\bra\bat\bto\bor\br
+ An E-mail address where subscription moderation requests are
+ sent. A subscription moderation request is sent after a user has
+ confirmed her intention to subscribe. The subscription
+ moderation request is sent to all moderators. As soon as a reply
+ to this message is received, the user is subscribed and
+ notified. Any E-mail address can be a subscription moderator and
+ any number of subscription moderators can be used.
+
+ Unsubscribe requests are never moderated (except when the ezmlm-
+ manage(1) ``-U'' flag is used and the sender attempts to remove
+ an address other than the one s/he is sending from). It is hard
+ to imagine a legitimate mailing list that would want to prevent
+ unsubscriptions.
+
+
+ r\bre\bem\bmo\bot\bte\be a\bad\bdm\bmi\bin\bni\bis\bst\btr\bra\bat\bto\bor\br
+ When a remote administrator subscribes or unsubscribes a list
+ member, the ``confirm'' request is sent back to the remote
+ administrator, rather than to the subscriber's E-mail address.
+ This allows the remote administrator to (un)subscribe any list
+ member without the cooperation of the subscriber at that
+ address. Any E-mail address can be a remote administrator and
+ any number of E-mail addresses can be remote administrators.
+
+ The set of E-mail addresses that are ``remote administrators''
+ and ``subscription moderators'' are always the same. This set of
+ E-mail addresses can be ``remote administrators'',
+ ``subscription moderators'' or both.
+
+ For most lists, the owner would be the ``remote administrator'',
+ if s/he wishes to moderate messages, the owner would be the
+ ``message moderator'' and if s/he wishes to moderate
+ subscriptions the owner would also be the ``subscription
+ moderator''.
+
+ The list's ``message moderator(s)'' can be the same, but can
+ also be set up to be completely different.
+
+
+ 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'
+ Within this FAQ there are references to the need to check or
+ change the list ``ownership.'' This is not a reference to the
+ individual user who is the ``list-owner'', but a reference to
+ the ownership of the files by your operating system which make
+ up the list and reside in D\bDI\bIR\bR/\b/.
+
+ To change the ownership of D\bDI\bIR\bR/\b/ and everything within:
+
+
+ % chown -R user DIR
+ % chgrp -R group DIR
+
+
+
+
+ Depending on your system/shell, it may be possible to combine these
+ commands into either:
+
+
+ % chown -R user.group DIR
+ % chown -R user:group DIR
+
+
+
+
+
+ 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?
+
+ ezmlm-0.53 is a qmail-based mailing list manager written by Dan J.
+ Bernstein. It has all the basic functionality of a mailing list
+ manager, such as subscriber address management including automated
+ bounce handling as well as message distribution and archiving.
+
+ ezmlm-idx is an add-on to ezmlm. It adds multi-message threaded
+ message retrieval from the archive, digests, message and subscription
+ moderation, and a number of remote administration function. It
+ modifies the configuration program ezmlm-make(1) so that it uses a
+ text file template rather than compiled-in texts in list creation. In
+ this manner, ezmlm-idx allows easy setup of lists in different
+ languages and customization of default list setup. ezmlm-idx also adds
+ MIME handling, and other support to streamline use with languages
+ other than English. As an ezmlm add-on, ezmlm-idx does not work
+ without ezmlm and tries to be compatible with ezmlm as much as
+ possible. ezmlm-idx also modifies the ezmlm subscriber database to be
+ case insensitive to avoid many unsubscribe problems.
+
+ New in ezmlm-idx-0.40 are better support for announcement lists,
+ support for QMQP to offload message distribution onto external hosts,
+ simplified optional SQL database use (MySQL or PostgreSQL), more
+ flexibility in determining which messages should be moderated, a WWW
+ interface to the list archives, and many small improvements.
+
+ ezmlm-idx-0.32 adds improved handling of very large lists with
+ optimized bounce handling, ezmlm-split(1) for forwarding (un)subscribe
+ requests to sublists to allow sublisting transparent to the
+ subscriber, and SQL support to allow sublisting with improved message
+ authentication and monitoring of list function, as well as dynamic
+ addition/removal/reconfiguration of sublists. Also, subscriber
+ ``From:'' lines are logged with support for finding a subscription
+ address from a name. The qmail DEFAULT variable is used, if present.
+ Together, these additions eliminate the most common problems making
+ ezmlm use and administration even easier.
+
+ This document is a FAQ for ezmlm-idx. However, many of the basic items
+ that are discussed also apply to ezmlm per se. Referring to the two
+ paragraphs above, it should be relatively easy to figure out which
+ features require ezmlm-idx.
+
+
+ 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?
+
+ We have now registered ezmlm.org to make access to ezmlm-idx and
+ related programs/documentation easier. www.ezmlm.org is currently an
+ alias for Fred B. Ringel's www.rivertown.net/~ezmlm/ and ftp.ezmlm.org
+ an alias for Fred Lindberg's ftp.id.wustl.edu.
+
+
+ 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
+
+ +\bo <ftp://cr.yp.to/pub/software/ezmlm-0.53.tar.gz>
+
+ +\bo <ftp://ftp.ezmlm.org/pub/qmail/ezmlm-0.53.tar.gz>
+
+ +\bo <ftp://ftp.ntnu.no/pub/unix/mail/qmail/ezmlm-0.53.tar.gz>
+
+ +\bo <ftp://ftp.pipex.net/mirrors/qmail/ezmlm-0.53.tar.gz>
+
+ +\bo <ftp://ftp.jp.qmail.org/qmail/ezmlm-0.53.tar.gz>
+
+ +\bo <ftp://ftp.rifkin.technion.ac.il/pub/qmail/ezmlm-0.53.tar.gz>
+
+ +\bo <ftp://ftp.mira.net.au/unix/mail/qmail/ezmlm-0.53.tar.gz>
+
+ +\bo <http://www.qmail.org/>
+
+ 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
+ ezmlm-idx releases are numbered ``ezmlm-idx-0.xy[z]''. Versions
+ with the same ``x'' are backwards compatible. A change in ``x''
+ signifies major changes, some of which _\bm_\ba_\by require list changes
+ (see UPGRADE.idx). However, backwards compatibility with
+ ezmlm-0.53 list will be maintained. Thus, this is an issue only
+ if you are already using an older version of ezmlm-idx.
+
+ Addition of ``z'' are bug fixes only. Thus, ezmlm-idx-0.301 is
+ ezmlm-idx-0.30 with known bugs fixed (but no other significant
+ changes). When available, patches are named
+ ``filename-0.xy[z].diff'', where ``0.xy[z]'' corresponds to the
+ release to which they apply. When a number of bugs (or a
+ significant bug) are found a bug-fix release is made
+ incorporating all the patches for the previous version.
+
+ To get the latest features, look for the highest number (``e.g.
+ ezmlm-idx-0.40''). Any bugs in versions with new features are
+ expected to be limited to the new features.
+
+ To get the most solid version, get the highest 3-digit number,
+ i.e. a bug fix. If you already run a version in that series and
+ a new bug fix is released, see CHANGES.idx to determine if it is
+ worthwhile to upgrade. Most bugs so far have been relevant only
+ when using lists in very unusual ways or with rarely used
+ options.
+
+
+ +\bo <ftp://ftp.ezmlm.org/pub/patches/>
+
+ +\bo <ftp://gd.tuwien.ac.at/infosys/mail/qmail/ezmlm-patches/> ftp
+ mirror in Austria.
+
+ +\bo <http://gd.tuwien.ac.at/infosys/mail/qmail/ezmlm-patches/> http
+ access to the same mirror.
+
+ +\bo <ftp://ftp.win.or.jp/pub/network/mail/qmail/ezmlm-idx/> ftp
+ mirror in Japan.
+
+ 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
+ The latest versions at the time of release of a package are
+ included in that package. Thus, this directory will have a file
+ labeled with the current ezmlm-idx version number only if it has
+ been updated later than the package. ezmlmrc(5) files are
+ updated and new ones are added all the time, also with bug fix
+ releases. Therefore, always look at the latest package. Please
+ note that ezmlmrc may change significantly between versions.
+ Thus, do not expect the ezmlm-idx-0.324 ezmlmrc.es to work with
+ ezmlm-idx-0.40.
+
+ ezmlmrc(5) files contain some release-specific configurations.
+ Do not use a later file (other than from bug fix releases) with
+ an earlier version of the programs. It is usually OK to use a
+ version from an earlier package (see UPGRADE.idx), but some new
+ functionality may nor be available.
+
+ To contribute an ezmlmrc(5) file in a new language, start with
+ the en_US version from the latest package, and send the gzipped
+ file to lindberg@id.wustl.edu. Please leave comments intact and
+ in English and do not change the order of items in the file.
+ This will facilitate maintenance.
+
+
+ +\bo <ftp://ftp.ezmlm.org/pub/patches/ezmlmrc/>
+
+ +\bo <ftp://gd.tuwien.ac.at/infosys/mail/qmail/ezmlm-
+ patches/ezmlmrc/>
+
+ +\bo <http://gd.tuwien.ac.at/infosys/mail/qmail/ezmlm-
+ patches/ezmlmrc/>
+
+ +\bo <ftp://ftp.win.or.jp/pub/network/mail/qmail/ezmlm-idx/ezmlmrc/>
+
+ e\bez\bzm\bml\blm\bm-\b-i\bis\bss\bsu\bub\bb-\b-0\b0.\b.0\b05\b5
+
+ +\bo <ftp://ftp.ezmlm.org/pub/patches/ezmlm-issub-0.05.tar.gz>. Use
+ ezmlm-issub only if you do not use ezmlm-idx. The same
+ functionality is available in ezmlm-idx and the packages are not
+ compatible.
+
+ +\bo Also via mirrors mentioned above.
+
+
+ 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
+
+ +\bo <ftp://ftp.ezmlm.org/pub/patches/>
+
+ +\bo <ftp://summersoft.fay.ar.us/pub/qmail/>
+
+
+ 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?
+
+
+ m\bma\ban\bn p\bpa\bag\bge\bes\bs
+ All ezmlm component programs come with their own man pages.
+ Thus, for info on _\be_\bz_\bm_\bl_\bm_\b-_\bs_\be_\bn_\bd, type:
+
+
+
+ % man ezmlm-send
+
+
+
+
+ or if you have unpacked ezmlm, but not made it or installed it:
+
+
+
+ % cd ezmlm-0.53
+ % man ./ezmlm-send.1
+
+
+
+
+
+ e\bez\bzm\bml\blm\bm(\b(5\b5)\b)
+ General info on ezmlm and list directories is in e\bez\bzm\bml\blm\bm.\b.5\b5:
+
+
+
+ % man ezmlm
+
+
+
+
+ or
+
+
+
+ % cd ezmlm-0.53
+ % man ./ezmlm.5
+
+
+
+
+ _\bN_\bO_\bT_\bE_\b: Installation of the ezmlm-idx package updates some existing
+ man pages to reflect changes made by the patch (e.g. ezmlm-
+ send(1), ezmlm(5)).
+
+
+ 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
+ ezmlm comes with a R\bRE\bEA\bAD\bDM\bME\bE file with general instructions, an
+ I\bIN\bNS\bST\bTA\bAL\bLL\bL file with installation instructions, an U\bUP\bPG\bGR\bRA\bAD\bDE\bE file for
+ upgrading from a previous version and a C\bCH\bHA\bAN\bNG\bGE\bES\bS file with
+ information on changes from previous versions. ezmlm-idx comes
+ with similar files suffixed with ``.\b.i\bid\bdx\bx''. Most other patches or
+ add-ons contain similar files and man pages and should contain
+ identifying suffixes (.iss for ezmlm-issub, for example). For a
+ discussion of the authors' understanding of ezmlm security, see
+ ``Ezmlm-idx security''.
+
+
+ `\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
+ The ezmlm manual is a brief manual that is meant for list
+ subscribers, list moderators and remote administrators, and as
+ an introduction for list owners. It is useful even if you do not
+ use ezmlm-idx. Features requiring ezmlm-idx are marked as such.
+ The manual is available as a set of html files, as a text file,
+ and in a ``letter'' and ``A4'' postscript version:
+
+ +\bo ezman for download <ftp://ftp.ezmlm.org/pub/patches/ezman/>
+
+ +\bo An on-line html version <http://www.ezmlm.org/ezman>
+
+
+ T\bTh\bhi\bis\bs F\bFA\bAQ\bQ
+ This FAQ is built from a sgml source. It is available in the
+ following formats:
+
+ +\bo A text file <ftp://ftp.ezmlm.org/pub/patches/ezfaq.txt.gz>
+
+ +\bo An on-line html version <http://www.ezmlm.org/>
+
+ +\bo Html for download
+ <ftp://ftp.ezmlm.org/pub/patches/ezfaq.html.tar.gz>
+
+ +\bo A postscript (letter) version
+ <ftp://ftp.ezmlm.org/pub/patches/ezfaq.ps.gz>
+
+ +\bo A postscript (A4) version
+ <ftp://ftp.ezmlm.org/pub/patches/ezfaq.ps4.gz>
+
+ +\bo Via mirrors mentioned for the ezmlm-idx package.
+
+ +\bo An up-to-date text version,F\bFA\bAQ\bQ.\b.i\bid\bdx\bx, included with the ezmlm-idx
+ package.
+
+
+ W\bWW\bWW\bW r\bre\bes\bso\bou\bur\brc\bce\bes\bs
+
+ 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
+ <http://www.ezmlm.org/>The main site with an up-to-date
+ mirror list. <http://www.de.ezmlm.org/>German mirror.
+ <http://www.pl.ezmlm.org/www.ezmlm.org/>Polish mirror.
+ <http://www.jp.ezmlm.org/>Japanese mirror.
+ <http://www.pt.ezmlm.org/>Portuguese mirror.
+ <http://www.at.ezmlm.org/>Austrian mirror.
+ <http://www.ca.ezmlm.org/ezmlm/>Canadian mirror.
+
+ 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
+
+ +\bo Dan J. Bernstein's qmail page
+ <http://www.pobox.com/~djb/qmail.html>
+
+ +\bo Dan J. Bernstein's ezmlm page
+ <http://www.pobox.com/~djb/ezmlm.html>
+
+ +\bo Russell Nelson's qmail page <http://www.qmail.org>
+
+ +\bo Mirrors of www.qmail.org <http://www.ISO.qmail.org>.
+ Substitute your two-letter country abbreviation for ``ISO''.
+
+ 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
+
+
+ +\bo <http://www.ornl.gov/cts/archives/mailing-lists/qmail/>
+
+ 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
+
+ +\bo <http://sunsite.auc.dk/mhonarc-archives/ezmlm/>
+ <http://www.ezmlm.org/archive/> This archive of the ezmlm
+ list is searchable from 11/97-present. ezmlm-cgi(1) is used
+ to allow direct access to the sublist archive.
+
+ M\bMa\bai\bil\bli\bin\bng\bg l\bli\bis\bst\bts\bs
+ Please read other documentation and mailing list archives before
+ posting questions to the lists. It's also useful to ``lurk'' on
+ the list for a few days, (i.e. to subscribe and read without
+ posting) before asking your questions on the list.
+
+ To subscribe, send mail to the E-mail addresses listed:
+
+ +\bo Dan Bernstein's ezmlm list: ezmlm-subscribe@list.cr.yp.to
+
+ +\bo A digest version of the ezmlm list fredr-ezmlm-digest-
+ subscribe@rivertown.net
+
+ +\bo Dan Bernstein's qmail list: qmail-subscribe@list.cr.yp.to
+
+ +\bo The Japanese ezmlm list: ezmlm-subscribe@jp.qmail.org
+
+ +\bo The Japanese qmail list: qmail-subscribe@jp.qmail.org
+
+ +\bo A ezmlm/idx digest list of djb-qmail: qmail-digest-
+ subscribe@id.wustl.edu
+
+ +\bo A ezmlm/idx sublist of djb-qmail (you can test ezmlm-idx
+ commands): qmail-index@id.wustl.edu
+
+
+ 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?
+
+ To the authors via E-mail:
+
+ +\bo Fred Lindberg, lindberg@id.wustl.edu
+
+ +\bo Fred B. Ringel, fredr@rivertown.net
+
+
+ 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.
+
+ ezmlm-idx>=0.23 writes D\bDI\bIR\bR/\b/c\bco\bon\bnf\bfi\big\bg in a standard format. If ezmlm-
+ make(1) is invoked with the ``-e'' or ``-+'' switch and the ``DIR''
+ argument only, ezmlm-make(1) will read other arguments from this file.
+ The difference between the switches is that with ``-e'' the options
+ used are the ones specified on the command line, whereas with ``-+''
+ they are the ones currently active for the list, as overridden by any
+ command line options. Thus, with just:
+
+
+ % ezmlm-make -+ DIR
+
+
+
+
+ you can rebuild the list, without affecting any archives, list state
+ 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
+ _\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
+ being overwritten, so that your manual customizations of these files
+ are retained. To override this protection, simply specify the used
+ edit switch twice, e.g. ``-ee'' and ``-++'', respectively. This is a
+ feature introduced in ezmlm-idx-0.40.
+
+ To test a new version of ezmlm-idx or to run several version, make the
+ 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)
+ or U\bUP\bPG\bGR\bRA\bAD\bDE\bE.\b.i\bid\bdx\bx (if you've got a previous version of ezmlm-idx
+ installed), setting c\bco\bon\bnf\bf-\b-b\bbi\bin\bn to a new directory. You can use either
+ the current directory or any other directory. If not using the current
+ dir, you also have to:
+
+
+ % make setup
+
+
+
+
+ If you now edit the list using the new ezmlm-make program, the list
+ will automatically be configured to use the new binaries. To change
+ back to the ``default'' installation, just edit the list again, this
+ time with the old ezmlm-make(1).
+
+ 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
+ place the e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) file for the ezmlm version you want to test in
+ d\bdo\bot\btd\bdi\bir\br of the list and use the ezmlm-make(1) ``-c'' switch (see
+ ``Terminology: dotdir'').
+
+ ezmlm-idx>=0.314 comes with ezmlm-test(1), a program that tests most
+ functions of ezmlm+idx and can be used before installation.
+
+
+ 2\b2.\b. Q\bQu\bui\bic\bck\bk s\bst\bta\bar\brt\bt
+
+
+ 1. Create a use ``eztest'' for testing. If you use another name, add
+ the switch ``-u another_name'' to the ezmlm-test(1) line below.
+ (The space between the switch and the argument is required.)
+
+ 2. Unpack the ezmlm-0.53 distribution.
+
+ 3. Unpack the ezmlm-idx distribution.
+
+ 4. Move the ezmlm-idx files to the ezmlm-0.53 directory.
+
+ 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.
+
+ 6. build and install:
+
+
+ % cd ezmlm-0.53
+ % patch < idx.patch
+ % make; make man
+ % su
+ # su eztest
+ % ./ezmlm-test
+ % exit
+ # make setup
+ # exit
+
+
+
+
+ 7. Make a list and digest list
+
+
+
+
+
+ % ezmlm-make -rdugm -5 me@host ~/list ~/.qmail-list me-list host
+ % ezmlm-sub ~/list me@host
+ % ezmlm-sub ~/list/digest me@host
+ % ezmlm-sub ~/list/mod me@host
+
+
+
+
+ where ``me'' is your user name and ``host'' the host your list is on.
+
+ Now, you are the owner, remote administrator, and subscriber of both
+ list@host and the accompanying digest list list-digest@host. Only
+ subscribers are allowed to access the archive and to post. To post to
+ the list, mail to list@host. For a user to subscribe, s/he should mail
+ to list-subscribe@host and for help to list-help@host.
+
+ When a non-subscriber posts, you will be asked to approve, reject, or
+ ignore the request. If you want to subscriber joe@joehost.dom, mail
+ list-subscribe-joe=joehost.dom@host.
+
+ Digests are generated about every two days, when 30 messages have
+ arrived since the last digest, or when more than 64 kbytes of message
+ body has arrived. To manage the digest list, use the same commands as
+ the main list, but replace ``list'' with ``list-digest''.
+
+ The sender restriction on posting used in this setup works, but is not
+ secure. For more info, read the man pages (start with ezmlm(5) and
+ ezmlm-make(1)), this FAQ (F\bFA\bAQ\bQ.\b.i\bid\bdx\bx in the distribution),
+ 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.
+
+
+ 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
+
+ (To be written. Until then, please consult the
+ <http://www.ezmlm.org/ezman/> manual for ezmlm and ezmlm-idx related
+ material.)
+
+
+ 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
+
+
+ 4\b4.\b.1\b1.\b. T\bTh\bhe\be b\bba\bas\bsi\bic\bc s\bse\bet\btu\bup\bp.\b.
+
+ In designing ezmlm, _\bD_\ba_\bn _\bJ_\b. _\bB_\be_\br_\bn_\bs_\bt_\be_\bi_\bn has used the unix philosophy of
+ small component programs with limited and well defined functions.
+ Requests for specific functions can then be met by the addition of new
+ programs.
+
+ Thanks to the program execution mechanism Dan built into qmail, it is
+ easy to execute several small programs per delivery in a defined
+ sequence. It is also very easy to add shell scripts for further
+ customization.
+
+
+ 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.
+
+ Dan J. Bernstein has written ezmlm in C. It is written for speed and
+ reliability even in the face of power loss and NFS. These features
+ are augmented to a large extent by the ruggedness of the qmail (also
+ by Dan) delivery mechanism (see qmail-command(8)).
+
+ ezmlm uses some routines and techniques that still are not frequently
+ seen in many mailing list managers. For example, subscriber E-mail
+ addresses are stored in a hash so that searches require reading only,
+ at most, 2% of the E-mail addresses. ezmlm has a optional message
+ archive, where messages are stored 100 per directory, again to allow
+ more efficient storage and retrieval. Important files are written
+ under a new name and, only when safely written, moved in place, to
+ assure that crashes do not leave the list in an undefined state.
+
+ In addition, ezmlm has a number of new inventions. One of these is
+ bounce detection, which generates an automatic warning containing
+ information identifying the messages which have bounced, followed by a
+ probe message to the E-mail addresses for which mail has bounced. If
+ the probe bounces, the address is unsubscribed. Thus, the system won't
+ remove E-mail addresses due to temporary bounces: it takes 12 days
+ after the first bounce before a warning is sent, and another 12 days
+ of bounces after the warning bounce before the probe message is set.
+
+ Another Dan J. Bernstein invention is the use of cryptographic cookies
+ based on a timestamp, address, and action. These are used to assure
+ that the user sending a request to subscribe or unsubscribe really
+ controls the target address. It is also used to prevent forgery of
+ warning or probe messages to make it exceedingly difficult to subvert
+ the bounce detection mechanism to unsubscribe another user.
+
+
+ 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.
+
+ See qmail(7), qmail-local(8), qmail-command(8), envelopes(5), and dot-
+ qmail(5). Briefly, qmail having resolved the delivery address
+ delivers it via the .\b.q\bqm\bma\bai\bil\bl file that most completely matches the
+ address. This file may be a link to another file, as is the case in
+ ezmlm lists. qmail then delivers the message according to successive
+ lines in this file forwarding it to an address, storing it, or piping
+ it to a program. In the latter case, the program is expected to exit 0
+ leading delivery to proceed to the next line in the .\b.q\bqm\bma\bai\bil\bl file, or 99
+ leading to success without delivery to succeeding lines. An exit code
+ of 100 is a permanent error leading to an error message to the SENDER.
+ An exit code of 111 is used for temporary errors, leading to re-
+ delivery until successful or until the queue lifetime of the message
+ has been exceeded.
+
+ Delivery granularity is the .\b.q\bqm\bma\bai\bil\bl file and re-deliveries start at the
+ top. Thus, if the message fails temporarily at a later line, the
+ delivery according to an earlier line will be repeated. Similarly,
+ qmail may have made deliveries successfully according to most of the
+ .\b.q\bqm\bma\bai\bil\bl file and then fail permanently. The SENDER is informed that the
+ delivery failed, but not about at which point.
+
+ ezmlm takes advantage of these basic mechanisms to build a fast,
+ efficient, and very configurable mailing list manager from a set of
+ small independent programs.
+
+
+ 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.
+
+ See ezmlm(5) and the man pages for the different programs (listed in
+ ezmlm(5)).
+
+
+ 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.
+
+ See ezmlm(5).
+
+
+ 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.
+
+ 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-
+ 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
+ delivered to ezmlm-reject(1) which can reject messages based on
+ subject line contents, MIME content-type, and message body length. It
+ also by default rejects all messages that do not have the list address
+ in the ``To:'' or ``Cc:'' header. This eliminates most bulk spam. If
+ the list is set up for restrictions based on envelope SENDER, the next
+ delivery is to one or more instances of ezmlm-issubn(1). If the
+ messages passed this check, it is usually delivered to ezmlm-send(1)
+ for distribution. If the list is message moderated, it is instead
+ delivered to ezmlm-store(1) which queues the message and sends out a
+ moderation request. ezmlm-gate(1) is used by some other setups. It
+ will for message moderated lists invoke ezmlm-send(1) directly if the
+ message is from a specific set of SENDERs, and in other cases ezmlm-
+ store(1) to send the message out for moderation.
+
+ You can specify a separate .\b.q\bqm\bma\bai\bil\bl-like file for ezmlm-gate(1). The
+ lines will be executed and the return codes determine if the message
+ is rejected, sent to the list, or sent to the moderator. See man page
+ for details.
+
+ If the list is configured for digests, D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br also contains an
+ ezmlm-tstdig(1) line followed by an ezmlm-get(1) line. If ezmlm-
+ tstdig(1) determines that the criteria are met for digest generation,
+ it exits with an exit code of 0, causing the ezmlm-get(1) line to be
+ executed leading to a digest mailing. Otherwise, ezmlm-tstdig(1) exits
+ 99, resulting in the remainder of the D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br file to be ignored
+ too long. The digest is not related to the message being delivered,
+ but the delivery is used to trigger execution of the relevant
+ programs.
+
+
+ In addition, D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br contains a number of house-keeping functions.
+ These are invocations of ezmlm-warn(1) to send out bounce warnings and
+ and (if the list is moderated) ezmlm-clean(1) to clean the moderation
+ queue of messages that have been ignored. Again, these functions are
+ not related to the specific message delivered, but the delivery itself
+ is used as a convenient ``trigger'' for processing.
+
+
+ 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.
+
+ Replies to moderation requests are channeled to D\bDI\bIR\bR/\b/m\bmo\bod\bde\ber\bra\bat\bto\bor\br. This
+ file contains an invocation of ezmlm-moderate(1) which invokes ezmlm-
+ send(1) for accepted messages and sends out a rejection notice for
+ rejected messages. It also sends error messages if the message is not
+ found or already accepted/rejected _\bc_\bo_\bn_\bt_\br_\ba_\br_\by to the moderation message.
+ Thus, if you accept a message already accepted, no error message is
+ 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
+ keeping.
+
+
+ 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.
+
+ Administrative requests for both list and digest lists are captured by
+ ~\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
+ delivered first to ezmlm-get(1) which processed archive retrieval
+ requests, exiting 99 after successful completion which causes the rest
+ of the delivery lines to be ignored. If the request is not for ezmlm-
+ get(1) it rapidly exits 0. This leads to invocation of ezmlm-manage(1)
+ which handles subscriber database functions, help messages, and (if
+ configured) editing of D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/ files. Again, ezmlm-warn(1) lines are
+ included for bounce directory processing.
+
+ If configured, an ezmlm-request(1) line is present. This program
+ constructs valid ezmlm requests from command in the subject lines of
+ messages sent to listname-request@host and exits 99. These requests
+ are mailed and will then return to be processed by one of the other
+ programs.
+
+ 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.
+
+ Bounces to the list are handled by D\bDI\bIR\bR/\b/b\bbo\bou\bun\bnc\bce\ber\br. For the digest list
+ 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
+ versions, which is still supported. As this leads to problems with
+ list names ending in ``digest'', the functions are separate with lists
+ set up or edited with ezmlm-idx>=0.32. The bounce is first delivery is
+ to ezmlm-weed(1) which removes delivery delay notification and other
+ junk. The second to ezmlm-return(1) which analyzes valid bounces
+ storing the information in D\bDI\bIR\bR/\b/b\bbo\bou\bun\bnc\bce\be/\b/ for the list and
+ 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
+ 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
+ processes for automatic bounce handling. ezmlm-return(1) will also
+ unsubscribe a subscriber from whom a probe message has bounced.
+
+
+ 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.
+
+ 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
+ default. It is better to put the real owner address in this location.
+ This can be done manually, via editing of e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b), or via the
+ ezmlm-make(1) -5 switch. Again, some house-keeping functions are also
+ executed.
+
+
+ 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.
+
+ 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/
+ as a hashed set of 53 files. The hash calculated from the address
+ determines which of the 53 files and address is stored in. Thus, to
+ find out if an address is a subscriber, ezmlm has to read at most
+ about 2% of the E-mail addresses. The hash function insures that E-
+ mail addresses are reasonably evenly distributed among the 53 files.
+
+ 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
+ starting with ``T'', followed by the address, followed by a zero byte.
+ This is the same format as taken by qmail-queue(8) on file descriptor
+ 1. Thus, subscriber lists can be directly copied to qmail without any
+ further processing.
+
+ With ezmlm-idx>=0.32 you can use an SQL server for the subscriber
+ databases. Please see the SQL section (``ezmlm support for SQL
+ datbases'').
+
+
+ 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.
+
+ rfc822 states that the host part of an address is case insensitive,
+ but that case of the local part should be respected and the
+ interpretation of it is the prerogative of the machine where the
+ mailbox exists. Thus, ezmlm preserves the case of the local part, but
+ converts the host part to lower case. ezmlm proper also bases the hash
+ on the case of the local part, so that USER@host and user@host are not
+ (usually) stored in the same file.
+
+ Locally, deliveries are most often case insensitive, i.e. mail to
+ USER@host and user@host are delivered to the same mail box. A
+ consequence of this is that many users use E-mail addresses with
+ different case interchangeably. The problem is that when USER@host is
+ subscribed, ezmlm will not find that address in response to an
+ unsubscribe request from user@host. This is even more problematic when
+ E-mail addresses have been added by hand to e.g. moderator lists.
+
+ ezmlm-idx>=0.22 changes address storage to make comparisons case
+ insensitive and store E-mail addresses based on the hash of the all
+ lower case address. Case is maintained for the local part. Thus, if
+ USER@host is subscribed, mail is set to USER@host, but user@host is
+ recognized as a subscriber and an unsubscribe request from user@host
+ will remove USER@host from the subscriber list.
+
+ To maintain backwards compatibility with old subscriber lists, a
+ second lookup is made for partially upper case E-mail addresses in
+ some cases. This will find USER@host subscribed with a case sensitive
+ hash as well.
+
+ If may be useful to move all old mixed case E-mail addresses to the
+ ``new'' positions. Without this, USER@host subscribed with the old
+ system will be able to unsubscribe as USER@host, but not as user@host.
+ After the repositioning, s/he will be successfully able to use any
+ case in an unsubscribe request, e.g. UsEr@host. To do this:
+
+
+
+ % ezmlm-list DIR | grep -G '[A-Z]' > tmp.tmp
+ % xargs ezmlm-sub DIR < tmp.tmp
+
+
+
+
+ This works, because subscribing an address, even if it already exists,
+ will assure that it is stored with a case insensitive hash. On some
+ systems, the grep ``-G'' switch need/should not be used.
+
+
+ 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.
+
+ This mode of operation is automatically set up if you specify the
+ ezmlm-make(1) ``-u'' switch. Since there may be some addresses that
+ should be allowed to post, but are not subscribers of list or list-
+ digest, ezmlm-make(1) sets up an additional address database in
+ D\bDI\bIR\bR/\b/a\bal\bll\blo\bow\bw/\b/. Use ezmlm-sub(1), ezmlm-unsub(1), and ezmlm-list(1) to
+ manipulate these addresses. If the list is configured for remote
+ administration (see ``How remote administration works''), you can
+ add/remove addresses from the D\bDI\bIR\bR/\b/a\bal\bll\blo\bow\bw/\b/ database by mailing list-
+ allow-subscribe@listhost and list-allow-unsubscribe@listhost,
+ respectively. Other commands that access subscriber databases work in
+ the same manner.
+
+ To similarly restrict archive access, use the ezmlm-make(1) ``-g''
+ switch.
+
+ Since SENDER is under the control of a potential attacker, it is not
+ secure to use tests of SENDER for anything important. However, when
+ replies are always sent to SENDER (such as for archive access), a
+ check of SENDER can prevent the sending of information to E-mail
+ addresses not in the database.
+
+ To test sender, use the program ezmlm-issubn(1). It will return 0
+ (true for the shell, success for qmail deliveries) if SENDER is in at
+ least one of a set of subscriber databases. If not, it will return 99
+ (false for the shell: success, but skip remainder of .\b.q\bqm\bma\bai\bil\bl file for
+ qmail deliveries). The basedirs of the subscriber lists (i.e. the
+ directories in which the ``subscriber'' dirs are located) are given as
+ arguments. ezmlm-issubn(1) can take any number of arguments.
+
+ Thus, to permit an action if SENDER is a subscriber to the list in any
+ 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
+ following into the relevant .\b.q\bqm\bma\bai\bil\bl file:
+
+
+
+
+ |/usr/local/bin/ezmlm/ezmlm-issubn DIR DIR/digest DIR/allow [...]
+ |/path/action_program
+
+
+
+
+ Restricting your list to posts from your subscribers is as easy as
+ that. If your ezmlm binaries are in a different directory, you may
+ have to modify the ezmlm-issubn(1) path.
+
+ ezmlm-issubn(1) has a ``-n'' switch which ``negates/reverses'' the
+ exit code. To do an action if SENDER is _\bN_\bO_\bT a subscriber of any of
+ the lists:
+
+
+
+ |/usr/local/bin/ezmlm/ezmlm-issubn -n DIR/deny [dir2 ...]
+ |/path/other_program
+
+
+
+
+ To automatically configure the list with a blacklist address database
+ in D\bDI\bIR\bR/\b/d\bde\ben\bny\by, use the ezmlm-make(1) ``-k'' switch. If the list is
+ configured for remote administration (see ``How remote administration
+ works'') and if you are a remote administrator, you can manipulate the
+ ``deny'' database remotely by sending mail to list-deny-subscribe-
+ user=userhost@listhost, etc.
+
+
+ 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.
+
+ Each ezmlm list has it's own ``key'' created by ezmlm-make at setup
+ time. This key is stored in D\bDI\bIR\bR/\b/k\bke\bey\by, and you can improve it by adding
+ garbage of your own to it. However, changing the key will make all
+ outstanding cookies invalid, so this should be done when the list is
+ established.
+
+ When ezmlm receives an action request, such as ``subscribe'', it
+ constructs a cookie as a function of:
+
+ +\bo the request,
+
+ +\bo the time,
+
+ +\bo and the target address.
+
+ The cookie and these items are then assembled into a address that
+ is sent out as the ``Reply-To:'' address in the confirmation
+ request sent to the subscriber. When the subscriber replies, ezmlm
+ first checks if the timestamp is more than 1,000,000 seconds old
+ (approx 11.6 days) and rejects the request if it is. Next, ezmlm
+ recalculates the cookie from the items. If the cookies match, the
+ request is valid and will be completed. Depending on the
+ circumstances, ezmlm generates an error message or a new cookie
+ based on the current time and sends the target a new confirmation
+ request.
+
+ Dan has based these cookies on cryptographic functions that make it
+ very unlikely that a change in any part of the cookie or the items
+ will result in a valid combination. Thus, it is virtually impossible
+ to forge a request even for someone who has a number of valid requests
+ to analyze. Since the algorithm ezmlm uses is available, the security
+ rests on the key (and the correctness of the algorithm). Anyone who
+ knows the key for your lists can easily construct valid requests.
+
+ As ezmlm-make(1) doesn't use a truly random process to generate the
+ key, it is theoretically possible that someone with sufficient
+ knowledge about your system can guess your key. In practice, this is
+ very unlikely, and the safety of the system is orders of magnitude
+ higher than that of other mechanisms that you may rely on in your list
+ management and mail transport (exclusive of strong encryption, such as
+ _\bP_\bG_\bP).
+
+
+ 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.
+
+ Moderator E-mail addresses are stored just like ezmlm subscriber
+ addresses, in a set of up to 53 files within the s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs
+ 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
+ the list directory itself, i.e. D\bDI\bIR\bR/\b/. For moderators, the default is
+ 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
+ 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
+ subscription moderation, remote administration, and message
+ moderation, respectively. This permits the use of one moderator
+ 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
+ _\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
+ 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.
+
+
+ 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.
+
+ Subscription moderation is a simple extension of the ezmlm subscribe
+ mechanism. Once the user has confirmed the subscribe request, a new
+ 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
+ to the moderator(s). When a moderator replies with a valid request and
+ cookie combination, the user is subscribed. The user is then also
+ welcomed to the list. Other moderators won't know that the request has
+ already been approved. If other moderators reply to the request, no
+ notification of the duplicate action is sent to the subscriber of the
+ duplicate action. Ezmlm knows that this is a repeat request since the
+ target address is already a subscriber.
+
+ The moderators are not informed about the result, unless there was an
+ error (subscribing a target that is already a subscriber is not
+ considered an error). This cuts down the number of messages a
+ moderator receives. Any list moderator knows (or _\bs_\bh_\bo_\bu_\bl_\bd know) the
+ 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
+ _\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
+ used to some other operating systems, but in our experience it doesn't
+ take long to get used to the reliability and efficiency of
+ U*ix/qmail/ezmlm.
+
+ Subscription moderation is enabled by creating D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb and adding
+ the subscription moderator to D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/:
+
+
+ % ezmlm-sub DIR/mod moderator@host
+
+
+
+
+ To use an alternative basedir for subscription moderators, place that
+ directory name with a leading ``/'' in D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb.
+
+
+ 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.
+
+ The term ``remote administration'' is used to denote the ability of a
+ list administrator by E-mail to add or remove any E-mail address from
+ the subscriber list without the cooperation of the user. Normally,
+ when user@userhost sends a message to list-subscribe-
+ other=otherhost@listhost to subscribe other@otherhost, the
+ confirmation request goes to other@otherhost. However, if remote
+ administration is enabled and user@userhost is a moderator, a
+ confirmation request (with a different action code) is sent back to
+ user@userhost instead. The reply from the administrator is suppressed
+ in the welcome message sent to the new subscriber (other@otherhost).
+ This protects the identity of the remote administrator.
+
+ Remote administration is enabled by creating D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be and adding the
+ remote administrator E-mail address(es) to D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/:
+
+
+ % ezmlm-sub DIR/mod remoteadm@host
+
+
+
+
+ To use an alternative basedir for remote administrators, place that
+ directory name with a leading ``/'' in D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb. Remote administra-
+ tors and subscription moderators databases always consist of the same
+ E-mail addresses. If both are enabled and one of 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 contains an alternative basedir name, this basedir is used
+ 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-
+ tory names, the one in D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb is used for both functions.
+
+ Remote administrators can add and remove addresses to the digest list,
+ the ``allow'' list (user aliases for lists using SENDER restrictions
+ on posting and archive access), and if used the ``deny'' list
+ containing addresses that are denied posting rights to the list. The
+ latter is easy to circumvent and intended to block errant mail robots,
+ rather than human users.
+
+
+ 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.
+
+ ezmlm-store(1), invoked in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br, receives messages for message
+ moderated lists. If D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt does not exist, ezmlm-store(1) just
+ calls ezmlm-send(1) and the message is posted to the list as if it
+ were not moderated. If D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt exists, ezmlm-store(1) places the
+ 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
+ all the moderators. Included with this request is a copy of the
+ message. The ``From:'' and ``Reply-To:'' E-mail addresses contain
+ codes for ``reject'' and ``accept'', together with a unique message
+ name (derived from the message timestamp and process id) and a cookie
+ based on these items. When a moderator replies, ezmlm-moderate(1) is
+ invoked via D\bDI\bIR\bR/\b/m\bmo\bod\bde\ber\bra\bat\bto\bor\br. ezmlm-moderate(1) validates the request,
+ and if the request is valid and the message is found in
+ 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.
+
+ If the request is ``reject'' the post is returned to SENDER with an
+ explanation and an optional moderator comment. If the request is
+ ``accept'' the message is posted to the list via ezmlm-send(1). As the
+ request is processed, a stub for the message is created in
+ 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''
+ requests, respectively.
+
+ If a valid reply is received but the message is no longer in
+ 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
+ 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
+ the fate of the message was the one dictated by the new request, no
+ further action is taken. If, however, no stub is found or the request
+ and the actual message fate do not match, a notification is sent to
+ the moderator. This scheme was chosen to impart a maximum of
+ information with a minimum of messages. Also, it is the least
+ demoralizing setup for multiple moderator lists, where it is important
+ not to notify subsequent moderators that their work was in vain since
+ the action of the first responding moderator has already resulted in
+ processing of the message.
+
+ If a message is not ``rejected'' or ``accepted'' it remains in
+ 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
+ stubs is accomplished by ezmlm-clean(1) which is invoked through both
+ 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-
+ clean(1) looks at the timestamp used to generate the message/stub
+ name. If it is older than 120 hours (configurable in a range of 24-240
+ hours, by placing the value in D\bDI\bIR\bR/\b/m\bmo\bod\bdt\bti\bim\bme\be) it is removed. Unless
+ suppressed with the ezmlm-clean(1) ``-R'' switch, the SENDER of the
+ message is notified.
+
+ By default, the E-mail addresses of message moderators are stored as a
+ subscriber list with a basedir of D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/. This can be changed to
+ any other b\bba\bas\bse\bed\bdi\bir\br by placing the name of that directory with a leading
+ ``/'' in D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt. Although the default basedirs for message
+ moderation and subscription moderation/remote administration are the
+ same, both the functions and actors are entirely independent.
+
+
+ 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
+
+ qmail processes messages on a first-come-first-served basis. This
+ means that when it receives a post to 100,000 subscribers, it will try
+ all the recipients before processing the next message. Often, it is
+ desirable to offload this work to an external host so that the main
+ list host remains responsive to e.g. ``subscribe'' and archive access
+ commands, as well as to other mail is it is not a dedicated mail host.
+
+ ezmlm-idx allows the main distribution work to be offloaded to an
+ external server via the QMQP protocol. Configure qmail-qmqpc(1) on the
+ list host, and qmail-qmqpd(1) on the mail host (see qmail docs for
+ 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
+ D\bDI\bIR\bR will now use the QMQP server for posts, by the local qmail for
+ other messages. If you apply the qmail-qmqpc.tar.gz patch (included in
+ the ezmlm-idx distribution), you can specify the QMQP server IP
+ 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
+ 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
+ be contacted, the installation will try the second, and so on. The
+ advantage of controlling the servers locally is that you can specify
+ different servers for different lists. A good idea is to set up also
+ the list host as a QMQP server and use that as the last IP address.
+ This way, the list host will be used if the main QMQP server cannot be
+ contacted. Of course, ezmlm does not loose messages, but rather lets
+ qmail redeliver the post if no QMQP server is available.
+
+
+ 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.
+
+ The structure of the ezmlm list archive is described in the ezmlm(5)
+ 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,
+ where ``n'' is the message number divided by 100 and ``m'' the
+ 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.
+
+
+ 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.
+
+ The ezmlm-idx(1) adds the option (default) of a message index to
+ ezmlm. The ``From:'' line, the subject, the author's E-mail address
+ and name and the time of receipt are logged for each message as it is
+ received. The subject is ``normalized'' by concatenating split lines
+ and removing reply-indicators such as ``Re:''. A hash of the
+ normalized subject with all white space removed is also stored. The
+ hash for any message within a thread is almost always the same and is
+ used together with the order of receipt to connect a set of messages
+ into a ``thread''. A hash is needed due to the inconsistent handling
+ by MUAs of white space in rfc2047-encoded subject headers.
+
+ 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
+ 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
+ messages 5200 through 5299 and the file ``index'' which contains the
+ index for those messages.
+
+ The message index can be retrieved with the -index command (see ezmlm-
+ get(1)). You can also retrieve a range of messages, a specific thread,
+ or generate a message digest (see ezmlm-get(1)). Each of these
+ commands can be disabled or restricted as desired by the list owner.
+
+ The ezmlm-idx(1) can be used at any time to either reconstruct an
+ existing index or create one an index for an existing message archive.
+ without one.
+
+
+ 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.
+
+ A ezmlm thread is just a message number-ordered set of messages with
+ identical ``normalized'' subject entries. This is a very reliable
+ method for threading messages. It does not rely on any variably
+ present ``In-Reply-To:'' or ``References:'' headers. If the subject
+ changes, the continuation becomes a separate thread very close to the
+ original thread in a digest. ezmlm uses this mechanism to return
+ message sets threaded and with a thread and author index, unless
+ specifically told not to do so with the ``n'' format specifier.
+ Naturally, lists set up without a message index (using the ezmlm-make
+ ``-I'' switch) do not maintain thread information.
+
+
+ 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.
+
+ A ``digest'' is just an ordered collection of messages from a list,
+ usually sent out regularly depending on the time and traffic volume
+ since the last digest. Digest subscribers thus can read messages as
+ ``threads'' once daily, rather than receiving a constant trickle of
+ messages.
+
+ As a major change in ezmlm-idx-0.30, the digest is no longer a totally
+ separate ezmlm-list, but a part of the main list. This has security
+ advantages, makes setup and administration easier, saves space, and
+ allows a consistent way for subscribers of both ``list'' and ``list-
+ digest'' to retrieve missed messages from a single archive.
+
+ The digest of the list ``list'' is always called ``list-digest''. To
+ set up a list with a digest, simply use the ezmlm-make(1) ``-d''
+ switch. You subscribe to and unsubscribe from a digest the same way as
+ for the main list, except that the request is sent to e.g. list-
+ digest-subscribe@host rather than to list-subscribe@host.
+
+ Any option such as remote admin or subscription moderation that is
+ active for the list applies also to the digest list. Any restrictions
+ in posts or archive retrieval set up for the list, automatically
+ accept both subscribers of the main list and of the digest list.
+
+ The changes in ezmlm-idx>=0.30 allow all programs to service both list
+ and list-digest functions. All digest-specific files are stored in
+ D\bDI\bIR\bR/\b/d\bdi\big\bge\bes\bst\bt/\b/. Digest list subscriber addresses 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/ and digest list bounce information in
+ 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
+ get the local part of the list or list-digest name in a context
+ sensitive manner, use ``<#l#>'' (lower case ``L'') in the text file.
+
+
+ In order to generate digest, the list needs to be archived and indexed
+ (both default). You can retrieve sets of messages from the message
+ archive. Such sets are always returned to the SENDER of the request.
+ ``Digests'' are a special form of such a set/request. First, there are
+ no restrictions on the number of messages that can be in a digest
+ (which is balanced by the requirement for a ``digest code'' that needs
+ to be specified in order to create a digest based on a mailed
+ 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
+ track of the digest issue and the message number, amount, and time
+ when the last digest was created. Thus, the system is adapted to make
+ it easy to create the regular collections of messages commonly
+ referred to as ``digests''.
+
+ Digest can be generated in several different ways:
+
+ C\bCo\bom\bmm\bma\ban\bnd\bd l\bli\bin\bne\be
+ ezmlm-get can be invoked on the command line, or via a script
+ from e.g. crond(8):
+
+
+ % ezmlm-get DIR
+
+
+
+
+ If for some reason the digest should be disseminated via a separate
+ list, the digest can be redirected to a ``target address'' with the
+ ezmlm-get(1) ``-t'' switch. This may be useful if a non-standard
+ digest list name is required. In this case, the list disseminating
+ the digest must be set up as a sublist of the main list (see ``How
+ sublists work'').
+
+
+ f\bfr\bro\bom\bm D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br
+ This is the default and does not require and additional setup.
+ It works well with most lists. The only possible advantage is
+ for very low traffic lists and for lists where it is important
+ that a digest be sent out at a specific time (as D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br
+ digests are triggered only when messages are received).
+
+ In D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br, ezmlm-get(1) needs to be combined with ezmlm-
+ tstdig(1) so that digests are generated only if certain criteria
+ are met (in this case, more than 30 messages, 64 kbytes of
+ message body or 48 hours since the latest digest). Add these
+ lines after the ezmlm-send line in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br:
+
+
+ |/usr/local/bin/ezmlm/ezmlm-tstdig -t48 -m30 -k64 DIR || exit 99
+ |/usr/local/bin/ezmlm/ezmlm-get diglist@host DIR || exit 0
+
+
+
+
+ To set this up automatically when you create the list:
+
+
+ % ezmlm-make -d DIR dot local host [code]
+
+
+
+
+ Again, the ezmlm-get(1) ``-t'' switch can be used for non-standard
+ arrangements to redirect the digest. The ezmlm-make(1) ``-4''
+ switch can be used to specify alternative ezmlm-tstdig(1) parame-
+ ters.
+
+ f\bfr\bro\bom\bm D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br
+ This is useful only if you want digests at specific times, and
+ you do not have access to crond(8) on the list host. ezmlm-
+ get(1) is in it's normal place in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br before ezmlm-
+ manage(1), but a digest code is specified in the ezmlm-get(1)
+ command line. To trigger digests requires a regular trigger
+ messages generated from e.g. crond(8) (see below), but this can
+ be done from _any_ host, not only the list host. ezmlm-make(1)
+ sets up ezmlm-get(1) this way if a digest ``code'' is given as
+ the 5th ezmlm-make(1) command line argument. However, you need
+ to set up the trigger messages separately (see below):
+
+
+ % ezmlm-make DIR dot local host code
+
+
+
+
+ To also test for message volume with this setup, generate trigger
+ messages with the granularity you'd like, and add a ezmlm-tstdig(1)
+ 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
+ the following ezmlm-tstdig(1) line before ezmlm-get(1):
+
+
+ |/usr/local/bin/ezmlm/ezmlm-tstdig -t24 -m30 -k64 DIR || exit 99
+
+
+
+
+ In general, a cron-triggered digest is preferred for very large
+ lists and for lists with very low traffic. Again, the ezmlm-get(1)
+ ``-t'' switch can be used for non-standard arrangements to redirect
+ the digest. For most lists, the digesting from D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br works
+ very well, and does not require any extra setup work.
+
+ C\bCo\bom\bmb\bbi\bin\bna\bat\bti\bio\bon\bn s\bse\bet\btu\bup\bps\bs
+ The default setup in the ezmlmrc(5) file included in the
+ distribution is the D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br triggered setup described above.
+ If you in addition use ezmlm-cron(1) or crond(8) directly to
+ generate trigger messages to list-dig.code@host, you can get
+ regular digests (via the trigger messages and D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br), with
+ extra digest sent when traffic is unusually high (via the ezmlm-
+ tstdig/ezmlm-get limits set in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br). This works best
+ when the time argument on the ezmlm-tstdig(1) command line is
+ the same as the trigger message interval, and the other ezmlm-
+ tstdig(1) parameters are set so that they are only rarely
+ exceeded within the normal digest interval.
+
+
+ 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.
+
+ If the list is set up with ezmlm-make -i, ezmlm-archive(1) will be
+ invoked from D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br. This program creates indices for threads,
+ 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-
+ cgi(1) is set up per user or globally (see man page) and told about
+ 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
+ and used the index created by ezmlm-archive(1) and converts these and
+ the messages to html on-the-fly. To be as efficient as possible,
+ ezmlm-cgi(1) outputs only basic html. However, style sheets are
+ supported and can be used to customize formatting without modification
+ of ezmlm-cgi(1). Extra buttons can be added via the config file. See
+ man page for details.
+
+
+
+
+ 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.
+
+ 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
+ messages and how much traffic (in terms of bytes of message body) has
+ arrived to the list since the latest digest. It also determines how
+ much time has passed since the last digest was generated. If any of
+ the criteria specified by command line switches exists, ezmlm-
+ tstdig(1) exits 0, causing the invocation of the next line in the
+ .qmail file. If not, ezmlm-tstdig(1) exits 99 causing qmail to skip
+ the rest of the .qmail file. ezmlm-tstdig(1) looks at LOCAL to
+ determine if it is invoked in the command line, in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br, or in
+ D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. In the latter two cases, ezmlm-tstdig(1) verifies that
+ the list local address is correct. If invoked in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br, ezmlm-
+ tstdig(1) exits 0 for all action requests except list-dig, so that is
+ does not interfere with the normal functions of ezmlm-get(1) and
+ ezmlm-manage(1). ezmlm-tstdig(1) uses D\bDI\bIR\bR/\b/t\bts\bst\btd\bdi\big\bg as a flag to avoid
+ problems caused by starting the program when another copy is already
+ running.
+
+ ezmlm-make(1) automatically configures ezmlm-tstdig(1) with the
+ parameters ``-t48 -m30 -k64'', which can be overridden with the ``-3''
+ switch.
+
+
+ 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.
+
+ ezmlm uses the concept of sublists. Sublists are regular ezmlm lists,
+ except that they only accept messages from their parent list, which is
+ placed in the file D\bDI\bIR\bR/\b/s\bsu\bub\bbl\bli\bis\bst\bt.
+
+ sublists are used to split the load of a large mailing list among
+ several hosts. All you need to do to set up a local sublist of e.g.
+ the qmail@list.cr.yp.to list is to create a ezmlm list, and put
+ ``qmail@list.cr.yp.to'' into D\bDI\bIR\bR/\b/s\bsu\bub\bbl\bli\bis\bst\bt of you list, and subscribe
+ the sublist to the main qmail list. Now anyone can subscribe to your
+ local list which handles its own bounces, subscribe requests, etc.
+ The load on the main list is only the single message to your local
+ list.
+
+ Sublists will not add their own mailing list header and they will not
+ add a subject prefix. Normally, sublists will use their own message
+ number, rather than that used by the main list. With ezmlm-idx>=0.23,
+ sublists that are not archived and not indexed, will instead use the
+ main list message number. This way, bounce messages from the sublist
+ can refer the subscriber to the main list archive. This is not done
+ for indexed/archived sublists for security reasons (an attacker could
+ overwrite messages in the sublist archive).
+
+ With ezmlm-idx>=0.31, there is support for using ezmlm as a sublist of
+ a mailing list run by another mailing list manager. To set this up,
+ 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-
+ _\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-
+ _\bV_\be_\br_\bs_\bi_\bo_\bn_\b:'' (before D\bDI\bIR\bR). As the header text, you need to use a header
+ that the main list manager adds to messages. Now your sublist will
+ accept only messages from the main list requiring that they come from
+ that list _\ba_\bn_\bd contain the header specified.
+
+ ezmlm-idx>=0.313 also has added protection against the malicious
+ subscription of the ezmlm list to mailing lists run by other list
+ managers. If the ezmlm-reject(1) line in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br has ``-h'' and
+ ``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
+ messages that have any header specified in that file. See the ezmlm-
+ reject(1) man page for suitable headers.
+
+
+
+ 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.
+
+ Often you create a local sublist of a list that you do not control.
+ Local users know to subscribe to your local list. However,
+ occasionally, you want to run your own list as a main list and a
+ series of sublists per geographic site, or split onto several hosts if
+ the list is too large to be handled by a single computer. You may also
+ want to split the load of a ``well known'' list host that is getting
+ overwhelmed with traffic. ezmlm supports sublists, but here the fact
+ that the user has to interact with the correct sublist is a problem.
+ What if the user doesn't remember which sublist s/he is subscribed to?
+ What if you change the name of a sublist host or move a sublist to a
+ different host?
+
+ ezmlm-idx&-0.32 adds ezmlm-split(1), which allows sublisting
+ transparent to the user. This program is invoked before ezmlm-
+ manage(1) in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. If it detects a subscribe or unsubscribe
+ command, it will forward the command to the appropriate sublist based
+ on a ``split file'' D\bDI\bIR\bR/\b/s\bsp\bpl\bli\bit\bt. This file contains entries, one per
+ line, of the format:
+
+
+ domain:lo:hi:sublistname@sublisthost
+ edu:::othersub@otherhost
+ :1:26:third@thirdhost
+
+
+
+
+ For each address, a hash in the range 0-52 is calculated. The
+ ``domain'' is the last two parts of the host name, reversed. Thus, for
+ id.wustl.edu it would be ``edu.wustl''. The domain is considered to
+ match if the characters in the split file match. It is advisable to
+ use only the last part of the domain for compatibility with the SQL
+ version version (see section ``ezmlm support for SQL datbases'').
+
+ Thus, any address *@*.domain with a hash between ``lo'' and ``hi''
+ inclusive would match the first line and be forwarded to
+ sublistname@sublisthost. *@*.edu (independent of hash) would match
+ the second line and be forwarded to othersub@otherhost. Of remaining
+ requests, a request for any target address with a hash between 1 and
+ 26 would be forwarded to the sublist third@thirdhost. Remaining
+ requests would be passed on to the local list.
+
+ The domain is useful for ``geographic'' splitting, and the hash for
+ load splitting (within a domain). The user interacts only with the
+ main list, and does not need to know from which sublist s/he is
+ serviced.
+
+ ezmlm-idx sublists use the message number of the main list message if
+ they are not indexed. This allows sublists to in bounce messages refer
+ the subscriber to the main list archive. Use ezmlm-make(1) in
+ conjunction with ezmlmsubrc(5) to set up the sublists. See man pages
+ for further details.
+
+ Since the addresses are stored locally, the system is very fast and
+ robust, but it is difficult to add new sublists. ezmlm-split(1) -D
+ supports parsing addresses on stdin and splitting them to stdout (see
+ man page). Thus, if you divide the domain of some sublist(s) onto a
+ net set of sublists, you can use ezmlm-list(1) to collect the
+ addresses, ezmlm-split -D with the new split file to split them, then
+ after clearing the local subscriber databases use ezmlm-sub(1) to add
+ the correct addresses to each new sublist. The section on SQL support
+ describes an alternative way of managing sublists (see section ``ezmlm
+ support for SQL datbases'').
+
+ 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.
+
+ Rfc2142 (standards track) says that for each mailing list list@host,
+ there MUST be an administrative address list-request@host. This is not
+ the default for ezmlm, but can be added with ezmlm-make(1) ``-q'',
+ which adds a ezmlm-request(1) line before the ezmlm-manage(1) line in
+ D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. This address is used to manage commands in the
+ ``Subject:'' line, by translating them into appropriate ezmlm command
+ messages.
+
+ When migrating from other mailing list managers which use this method
+ to issue list commands, configuring ezmlm to respond to such commands
+ may be useful. In addition, some software manufacturers sell MUAs and
+ mail gateways that are unable to correctly transport rfc822-compliant
+ Internet mail with certain characters in the local part of the
+ address.
+
+ ezmlm-request(1) services the list-request@host address per rfc2142
+ (standards track). It is usually invoked in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br before ezmlm-
+ get(1) and ezmlm-manage(1). It ignores all requests that are not for
+ the list-request address. For requests to the list-request@host
+ address, ezmlm-request(1) parses the ``Subject:'' line. If a ezmlm
+ command address starting with the contents of D\bDI\bIR\bR/\b/o\bou\but\btl\blo\boc\bca\bal\bl (e.g. list-
+ get45) is on the command line, ezmlm-request(1) generates the
+ corresponding full ezmlm request message. If the subject does not
+ start with the contents of D\bDI\bIR\bR/\b/o\bou\but\btl\blo\boc\bca\bal\bl, ezmlm-request(1) prefixes the
+ line with the contents of D\bDI\bIR\bR/\b/o\bou\but\btl\blo\boc\bca\bal\bl, thereby building a complete
+ ezmlm command. If a host name is specified, it must match the contents
+ of D\bDI\bIR\bR/\b/o\bou\but\bth\bho\bos\bst\bt, i.e. ezmlm-request(1) in this function will only
+ generate command messages for the local list.
+
+ Thus, a subject of ``subscribe'' to list-request@host will be auto-
+ magically rewritten as a message to list-subscribe-
+ userlocal=userhost@host. Similarly, any ezmlm command or ``Reply-
+ To:'' address can be pasted into the subject field and sent to list-
+ request@host. ezmlm-request(1) does not validate the command name,
+ but invalid commands result in a ``help'' message in reply via ezmlm-
+ manage(1). This allows ezmlm-request(1) to also service custom
+ commands, like list-faq@host that you may have created for your list.
+
+ If the ``Subject:'' is empty or does not start with a letter, ezmlm-
+ request(1) will attempt to interpret the first message body line that
+ starts with a letter in the first position.
+
+ When ezmlm-request(1) has successfully processed a ''request''
+ command, it exits 99 to skip the rest of D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br.
+
+ To set up a list to include ezmlm-request processing, use the ezmlm-
+ make(1) ``-q'' switch. The default is to not do this.
+
+
+ 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.
+
+ ezmlm-idx>=0.23 allows alternate names for all user commands. This can
+ be used to e.g. make a message to list-remove@host to result in an
+ ``unsubscribe'' action. This may help migration from other mailing
+ list managers and in non-English environments. The use of aliases
+ allows ezmlm to respond to new command names, while always responding
+ correctly to the standard commands. If ezmlm-request(1) is used it
+ will automatically be able to deal with any commands you set up for
+ the list, within ezmlm or as separate programs. See ``Multiple
+ language support'' on how to set up command aliases.
+
+
+
+
+ 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.
+
+ The qmail/ezmlm mechanism makes it very easy to add your own commands.
+ 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
+ of ordering and exit codes. Easier is to set them up separately with a
+ .\b.q\bqm\bma\bai\bil\bl-\b-l\bli\bis\bst\bt-\b-c\bco\bom\bmm\bma\ban\bnd\bd file.
+
+ Let's assume you want to allow anyone to determine how many
+ subscribers are subscribed to your list with the command list-
+ count@host. Just create a program to do the work:
+
+
+ #!/bin/sh
+ DTLINE='Delivered-To: list-count@host processor'
+ grep "$DTLINE" > /dev/null &&
+ { echo "This message is looping"; exit 100; }
+ {
+ echo "$DTLINE"
+ cat <<EOF
+ From: list-help@host
+ To: $SENDER
+ Subject: list@host subscriber count
+
+ Current number of subscribers:
+ EOF
+ ezmlm-list ~/DIR | wc -l
+ } | /var/qmail/qmail-inject -f list-return- "$SENDER"
+ exit 0
+
+
+
+
+ Then, create D\bDI\bIR\bR/\b/c\bco\bou\bun\bnt\bt containing ``|/path/program'' and then do ``ln
+ -sf DIR/count ~/.qmail-list-count''. Now, the command will pass the
+ message to ``program''. The first thing ``program'' looks for is its
+ delivered-to line to detect looping. If not found, it goes on to print
+ this header, followed by some minimal text and the subscriber number.
+ This can of course be made prettier with ezmlm-list error checking,
+ and maybe in perl, but shows how easy it is to extend ezmlm. All
+ thanks to the DJB/qmail delivery mechanism.
+
+
+ 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
+
+ A user with shell access can always manipulate subscriber lists with
+ ezmlm-sub(1), ezmlm-unsub(1), and ezmlm-list(1) for the lists s/he
+ owns.
+
+ Sometimes a remote administrator requires a list of subscriber E-mail
+ addresses. At the same time, the list should be kept out of the hands
+ of spammers and all unauthorized entities. By default, ezmlm does not
+ allow remote subscriber list retrieval. You can enable the ``-list''
+ command for remote retrieval of a subscriber list by using the ezmlm-
+ make(1) ``-l'' switch or by adding the ``-l'' switch to the ezmlm-
+ manage(1) line in DIR/manager. With this switch, ezmlm will permit
+ retrieval of a subscriber list, but only to remote administrators.
+ Subscribers cannot get the list membership, and any outsider would
+ have to be able to read a remote administrator's mail to get the list.
+ _\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
+ _\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
+ _\bb_\bo_\bt_\bh _\bb_\be _\bu_\bs_\be_\bd_\b.
+
+ The list returned is unsorted for efficiency reasons. You can easily
+ sort it or use your mail reader to find a specific entry. The number
+ of subscribers is shown at the bottom of the list. To get the number
+ of subscribers from the command line, use:
+ % ezmlm-list DIR | wc -l
+
+
+
+
+
+ 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-
+ s\bsc\bcr\bri\bib\bbe\ber\brs\bs
+
+ For the list aaa@example.com, send a message to aaa-listn@example.com.
+ This is preferable to the ``-list'' command for very large lists.
+
+
+ 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
+
+ For the list aaa@example.com, and subscriber user@host.cn send a
+ message to aaa-query=host.cn@example.com. Users can do this as well,
+ but in that case the reply is sent to the target address
+ (user@host.cn) and not to the SENDER to protect the subscriber
+ addresses.
+
+
+ 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
+
+ The same conditions that enable remote administrators to retrieve a
+ subscriber list (see ``'') also enable the remote admin to retrieve
+ the subscription log, i.e. the log of changes made to the subscriber
+ list. The command is list-log@host. The entries are of the form ``date
+ timestamp dir event address comment''. ``dir'' is ``+'' for addition
+ of an address, ``-'' for removal, ``event'' is empty for normal
+ (un)subscribe ``manual'' for changes made with ezmlm-(un)sub, and
+ ``probe'' for removals via bounce handling. ``address'' is the
+ subscription address, and ``comment'' is empty or the subscribers
+ ``From:'' line. The log can be used to look at recent
+ additions/removals and to try to track down a subscriber address from
+ e.g. the name on the ``From:'' line. The log is written on a best-
+ effort basis. In contrast to the subscriber database, entries in the
+ log may be lost at a system crash.
+
+ The remote administrator can do a case-insensitive search through the
+ log with the command list-log.xxx@host, where ``xxx'' is any sequence
+ of letters/numbers that must occur on a line in order for that line to
+ be included in the reply. A ``_'' is a wild card and should be used
+ for special characters as well. Thus, to search for any entry with a
+ host name of host* mail list-log._host and to find entries for ``Keith
+ John...'' etc, use list-log.keith_john.
+
+ For SQL-enabled lists, this command searches the ``list_slog'' table.
+
+
+ 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.
+
+ If a list is set up with the ezmlm-make(1) ``-n'' switch, or if the
+ ``-e'' switch is added to the ezmlm-manage(1) line in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br,
+ ezmlm allows remote administrators to edit the text files that make up
+ most of the ezmlm responses. Of course, this will work only if remote
+ administration is enabled for the list. Replies are sent only if the
+ target address is a remote administrator. Thus, ezmlm does not rely
+ on SENDER (easily forged) but on the notion that only the recipient
+ receives the message. This is a reasonable assumption for remote
+ administrators that receive mail on the local system.
+
+ With this switch, ezmlm replies to the -edit command with a list of
+ the files in D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/. Only files where editing seems reasonable are
+ included in the list. The remote administrator can edit any file in
+ D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/ by sending e-mail containing the new text to -edit.file
+ where ``file'' is the name of the file replaced (edited). The file
+ must exist and the name consist of only lower case letters and '-'.
+ Any '-' (hyphen) must be substituted by a '_' (underscore). For remote
+ administrator convenience, the substitution has been made in the list
+ of files sent in reply to the -edit command.
+
+ In reply to this command, ezmlm sends a message with the file and
+ editing instructions. A ``cookie'' based on the date, file name, and
+ contents of the file is added to the ``Reply-To:'' address. The cookie
+ becomes invalid as soon as the file has been changed, or after 27
+ hours, whichever is shorter. Also, the cookie cannot be used to edit
+ any other file, even if the other file has exactly the same contents.
+ If you sent an edit request, and decide not to edit the file, you can
+ simply delete the message.
+
+ To apply standard changes to all your text files it is easier to edit
+ ~\b~/\b/.\b.e\bez\bzm\bml\blm\bmr\brc\bc. To reset the list's text files back to their default
+ contents (as specified by e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b)), use the ezmlm-make(1) ``-ee''
+ switch together with any other switches used to set up the list, or
+ the ``-++'' switch and any switches that you whish to change from the
+ current configuration.
+
+
+ 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.
+
+ First of all, it is against a number of RFCs to modify the
+ ``Subject:'' header of messages. However, it is frequently requested
+ by users who have seen it on other list managers. Second, it is many
+ times worse to have a prefix that changes from message to message,
+ such as a prefix with the message number. However, a number of lists,
+ especially in Japan, use this feature and in its absence these lists
+ might be unable to take advantage of ezmlm. Thus, while we recommend
+ against using a prefix, ezmlm-idx supports it.
+
+ To add a subject prefix, just put the text into D\bDI\bIR\bR/\b/p\bpr\bre\bef\bfi\bix\bx. The only
+ format that makes any sense is ``list:'' or ``(list)'' or such.
+
+ The message number prefix is activated by putting e.g. ``(list-#)''
+ into D\bDI\bIR\bR/\b/p\bpr\bre\bef\bfi\bix\bx. ``#'' is replaced by the message number. ezmlm
+ refuses to make more drastic changes in the subject of a message. As a
+ consequence, the message number prefix is added only when the subject
+ does not already contain a prefix. Thus, replies will have the message
+ number of the original message. Doing anything else and still
+ supporting rfc2047-encoded subjects in the archive threading (much
+ more important) would require decoding the subject, removing/editing
+ the prefix, and re-encoding the subject. This is far too invasive.
+
+ The entire thread can always be retrieved by sending a message to
+ list-thread-x where ``x'' is the message number in the prefix of any
+ message in the thread.
+
+
+ 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.
+
+ Ezmlm messages are sent with an envelope sender (``Return-Path'') that
+ directs bounces to D\bDI\bIR\bR/\b/b\bbo\bou\bun\bnc\bce\ber\br and also via ``VERP'' contain
+ information about the intended recipient. Thus, programs run from
+ D\bDI\bIR\bR/\b/b\bbo\bou\bun\bnc\bce\ber\br know the subscriber for whom the message bounced. ezmlm-
+ weed(1) is used to weed out delivery delay notification and other
+ junk. For others ezmlm-return(1) decides if the address is a
+ subscriber. If so, it saves the first bounce message and a list of
+ bounced-message numbers. ezmlm-warn(1) executed from e.g. D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br
+ goes through these bounce files. If it finds any that are older than
+ 1,000,000 seconds (about 11.6 days) it sends a warning message to the
+ subscriber. If this warning message bounces, ezmlm-return(1) sets up a
+ "warning flag" for the subscriber. If ezmlm-warn(1) finds a warning
+ flag older than 11.6 days, it sends a "probe" to the subscriber. If
+ ezmlm-return(1) receives a bounced probe, the subscriber is
+ automatically unsubscribed.
+
+ The ezmlm-warn(1) ``-t'' switch can be used to change the time-out (in
+ days). The ezmlm-warn(1) ``-d'' switch causes processing of ``list-
+ digest'' bounces rather than ``list'' bounces. ezmlm-weed(1) and
+ ezmlm-return(1) can handle bounces for either list.
+
+ ezmlm-warn(1) also removes any files in the bounce directory that are
+ older than 3 times the bounce time-out.
+
+ ezmlm-warn(1) is normally run from D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br. This can take quite a
+ lot of resources, if there are a large number of bouncing addresses
+ (>>1000) on a busy list, since by default all bounces are stored in a
+ single directory and ezmlm-warn(1) examines all of them with each
+ invocation. ezmlm-idx->=0.32 changes bounce handling to improve
+ performance for large lists. Bounces are stored in subdirectories of
+ D\bDI\bIR\bR/\b/b\bbo\bou\bun\bnc\bce\be/\b/d\bd/\b/, one per 10,000 seconds. The corresponding address
+ 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
+ looking at all bounces, ezmlm-warn(1) processes only the bounces in
+ D\bDI\bIR\bR/\b/b\bbo\bou\bun\bnc\bce\be/\b/d\bd/\b/ subdirectories that are ``due''. In addition, ezmlm-
+ 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
+ will do work only at most once every 5.5 hours. (Times are scaled to
+ the ezmlm-warn(1) ``-t'' argument if used.) Together, these changes
+ assure that bounce handling will scale well in the default
+ configuration, even for very large lists.
+
+
+ 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.
+
+ The _\b-_\bi_\bn_\bf_\bo and _\b-_\bf_\ba_\bq commands simply reply with the contents of the
+ 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
+ remotely (see ``How to remotely edit dir/text files''). The
+ 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
+ as is and describes the list. This will be used in later versions to
+ allow automatic assembly of the global ``list-of-lists'' (see ``How to
+ set up a global list address like majordomo@host or listserv@host'').
+
+
+ 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.
+
+ Sometimes, it is desirable to have a host- or user-wide address that
+ can list available mailing lists.
+
+ ezmlm-request(1) can be used to set up a global address, such as
+ ezmlm@host which allows the user to see and interact with a number of
+ different mailing lists. This is especially useful when your users are
+ used to other mailing list managers, such as ``majordomo'' or
+ ``listproc''. ezmlm-request(1) is set up to answer requests to the
+ address (see ``How to set up a global list address like majordomo@host
+ or listserv@host''). There, it interprets the first line of the
+ message body as a command. It will reply directly to ``lists'' and
+ ``which'' commands. All other commands will be used to construct
+ messages to the respective lists. Where other mailing list managers
+ use synonyms of ezmlm commands, ezmlm-request(1) recognizes these and
+ translates them to the corresponding ezmlm commands. ezmlm-request(1)
+ will build commands also of unrecognized commands. Thus, if you create
+ new commands for a list, ezmlm-request(1) will automatically support
+ them.
+
+ If the user does not specify the complete list address, ezmlm-
+ request(1) will attempt to complete the name. See the ezmlm-reject(1)
+ man page for more info.
+
+
+ 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.
+
+ If you are a user and have crond(8) access, if you do not need to get
+ digests at specific times, or if you are a system administrator
+ setting up lists, there is no reason for you to use ezmlm-cron(1). If
+ you are a system administrator not allowing users crond(8) access or a
+ user that needs digests at specific times, but without crond(8)
+ access, read on.
+
+ ezmlm-cron(1) is a very restrictive interface to crond(8). ezmlm-
+ cron(1) can be used to create digest trigger messages. If a list is
+ set up with a digest code (see ezmlm-make(1) and ezmlm-get(1)) ezmlm
+ will generate a digest from the list joe-sos@host sent to to
+ subscribers of joe-sos-digest@dighost when receiving a message to joe-
+ sos-dig-code@host where ``code'' is the digest code. ezmlm-cron(1) can
+ be used to generate such messages at regular intervals. The file
+ e\bez\bzc\bcr\bro\bon\bnr\brc\bc is set up by the sysadmin and controls what trigger messages
+ specific users may set up via ezmlm-cron(1).
+
+ Usually, the ezcronrc of that use will have an entry like
+ ``user:user-:host:10'' allowing ``user'' to create trigger messages
+ for up to 10 lists with names starting with ``user-'' and on the host
+ ``host''.
+
+ To list the ezcronrc line controlling your use of ezmlm-cron(1):
+
+
+ % ezmlm-cron -c
+
+
+
+
+ To list all entries that you've created:
+
+
+ % ezmlm-cron -l
+
+
+
+
+ To add an entry to trigger digests from list@host every morning at
+ 0230:
+
+
+ % ezmlm-cron -t 02:30 -i24 list@host code
+
+
+
+
+ A new entry for the same list overwrites an old entry.
+
+ To delete the entry above:
+
+
+ % ezmlm-cron -d list@host
+
+
+
+
+ or use ezmlm-cron to trigger messages at a different time:
+
+
+ % ezmlm-cron -t 16:16 -i24 list@host code
+
+
+
+ 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.
+
+ ezmlm lists allow almost infinite customization. The component build,
+ together with the qmail delivery mechanism makes it possible to create
+ any variant of list function imaginable. However, this complexity
+ makes it somewhat daunting to the average user wanting to set up a
+ mailing list. ezmlm-make(1) allows automated list setup, while
+ permitting a large amount of configurability.
+
+ At first glance, ezmlm-make(1) has many complicated options. However,
+ these can be applied iteratively through the ezmlm-make(1) edit
+ mechanism. Also, they are intended to be relatively complete so that
+ execution of ezmlm-make(1) by e.g. a GUI can be used to safely set up
+ and edit any list.
+
+ ezmlm-make(1) reads its command line arguments and switches, then
+ creates the list directory. If the ``-e'' edit or ``-+'' sticky edit
+ switches are not specified, ezmlm-make(1) will fail if the directory
+ already exists. The directory argument must be an absolute path
+ starting with a slash. The dot-qmail file argument, if specified, must
+ also be absolute.
+
+ ezmlm-make(1) next reads ezmlmrc(5) located in the /\b/e\bet\btc\bc/\b/ directory
+ with a default install. If not found, the file in the ezmlm binary
+ directory will be used. The second ezmlm-make command line argument
+ specify the root name of the .qmail files. If the ezmlm-make(1) ``-c''
+ switch is used, ezmlm-make(1) will look in that directory for a
+ .\b.e\bez\bzm\bml\blm\bmr\brc\bc file and use it instead. If this file does not exist, ezmlm-
+ make(1) will print a warning and use the previously discussed
+ ezmlmrc(5) files in the same order. You can also use ``-C
+ _\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-
+ make(1) will fall back to the others with a warning, if the specified
+ ezmlmrc(5) file is not found.
+
+ When not run in ``-e edit'' or ``-+'' sticky edit modes, ezmlm-make(1)
+ first creates the list directory. It also as the last step of its
+ action creates D\bDI\bIR\bR/\b/k\bke\bey\by containing the key used for cookie generation.
+
+ The ezmlmrc(5) file consists of a number of file names relative to the
+ list directory, followed by conditional flags (see ezmlm-make(1) and
+ ezmlmrc(5) for details). If all the conditional flags (controlled by
+ the corresponding command line switches) are true, the lines that
+ follow are entered into the named file. There are also tags to erase
+ files. Tags in the format <#X#> (where ``X'' is any number, except
+ ``1'' and ``2'') are replaced by the corresponding ezmlm-make(1)
+ switch argument. The ezmlm-make(1) command line arguments and the
+ ezmlm binary path can be similarly substituted into the text. Thus,
+ ezmlmrc(5) controls (within reason) the entire operation of ezmlm-
+ make(1). ezmlmrc(5) is also set up so that no messages or file
+ containing list state information are lost. Therefore, ezmlm-make(1)
+ can be used to safely edit existing lists. The only caveat is that the
+ list state is undefined while editing is in progress. Thus, it is
+ advisable to prevent mail delivery by setting the ``sticky'' bit on
+ the user's home directory while editing lists.
+
+ ezmlm-make(1) will create the file D\bDI\bIR\bR/\b/c\bco\bon\bnf\bfi\big\bg. This files saves all
+ the flags that were set at the last execution of ezmlm-make, as well
+ as all the switch and command line arguments. When editing a list,
+ only ``DIR'' and the non-default letter switches need to be specified.
+ Other command line arguments and the ``digit switch'' arguments are
+ read from D\bDI\bIR\bR/\b/c\bco\bon\bnf\bfi\big\bg. To remove a digit switch, simply use it with
+ two single quotes as the argument.
+
+ You can also easily determine how a list was set up by looking at
+ D\bDI\bIR\bR/\b/c\bco\bon\bnf\bfi\big\bg.
+
+ _\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
+ the ``-e'' or ``-+'' edit switches. This is to preserve manual
+ customizations. To overwrite these and reset the files to the content
+ specified by e\bez\bzm\bml\blm\bmr\brc\bc, use ``-ee'' or ``-++''.
+
+ _\bN_\bo_\bt_\be_\b: As of ezmlm-idx-0.40 the ezmlm-make(1) ``-c'' and ``-C file''
+ switches are sticky when using ``-+'' or ``-++'', so you do not need
+ to specify them. This feature is disabled if ezmlm-make(1) is run as
+ root.
+
+
+ 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?
+
+ Rather than restrict you to a single E-mail address (user@host), qmail
+ in the default setup gives you control over an infinite number of
+ addresses user-*@host. Of course, you (normally) have no way of
+ controlling elsewhere@host since that could lead to overlap between
+ users' ``e-mail address space''. As a consequence, all you mailing
+ lists have to be named user-xx@host where ``user'' is your user name
+ and ``xx'' is anything. You cannot create e.g. mylist@host, only user-
+ mylist@host. To create the list user-list@host do:
+
+
+ % ezmlm-make ~/list ~/.qmail-list user-list host
+
+
+
+
+ Notice that ``user'' is n\bno\bot\bt part of the .\b.q\bqm\bma\bai\bil\bl file name.
+
+ There are two way to create lists with names not starting with your
+ user name: First, qmail can be set up so that you control a virtual
+ domain (see below). Second, the system administrator can set up lists
+ with arbitrary names within the ~\b~a\bal\bli\bia\bas\bs/\b/ directory.
+
+
+ 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
+
+ If you use qmail>=1.02 and ezmlm-idx>=0.32, lists under virtual
+ domains work just like other lists and require no adjustments. You can
+ choose any local name for the list and the ezmlm-make(1) argument
+ ``local'' is that name; ``host'' is the name of the virtual domain.
+
+
+ 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?
+
+ All non-default switches, ezmlm-issubn(1) setups, etc, can be made
+ standard for new lists by customizing the ezmlm-make(1) configuration
+ 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
+ ezmlm binary directory. If installed, a system-wide customized ezmlmrc
+ file in /\b/e\bet\btc\bc/\b/e\bez\bzm\bml\blm\bmr\brc\bc (or symlinked from there) overrides this.
+ 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-
+ make(1) ``-c'' switch allows further per user customization (see
+ ``Customizing ezmlm-make operation'').
+
+
+ 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.
+
+
+ 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?
+
+ The main advantages are that you are using an address database system
+ that can easily be accessed from any number of other programs via
+ ODBC, perl, java, PHP, ... You can easily hook up ezmlm with your
+ customer database, etc. ezmlm programs compiled with SQL support (and
+ when available also those compiled with support for other SQL servers)
+ are entirely backwards compatible. You can mix SQL dbs with normal
+ ezmlm dbs, and convert lists between them.
+
+
+ 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.
+
+ The main disadvantages of the SQL version are that you need to be
+ familiar with the SQL server, the binaries are quite a bit larger, and
+ you are trusting your addresses to a large database program, rather
+ than a small and easily audited set of ezmlm programs. Also, the SQL
+ server becomes a single point of failure.
+
+ Ezmlm with SQL support continues to rely on qmail stability. If
+ connection fails, ezmlm aborts with a temporary error causing
+ redelivery at a later time point.
+
+
+ 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.
+
+ The basic philosophy is that the database can be on any host (if you
+ use SENDER restrictions, connectivity to the main host is more
+ important than to the sublists), and you choose the database and
+ ``table root'' names. The default database is ``ezmlm'' and the
+ default table root is ``list''. Each list has a separate table root.
+ Any number of lists can share a database.
+
+ The main list address table is named with the table root only, others
+ have that name with various suffixes. In the following ``list'' is
+ used as the table root.
+
+
+ 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.
+
+
+ l\bli\bis\bst\bt
+ List subscriber addresses.
+
+ l\bli\bis\bst\bt_\b_d\bdi\big\bge\bes\bst\bt
+ Digest list subscriber addresses.
+
+ l\bli\bis\bst\bt_\b_a\bal\bll\blo\bow\bw
+ List subscriber alias addresses. Used only if SENDER
+ restrictions are used for the list. This is configured in the
+ default SQL list setup, but a local (ezmlm-style non-SQL)
+ database could also be used.
+
+ l\bli\bis\bst\bt_\b_d\bde\ben\bny\by
+ List deny addresses. This table is created, but the default
+ configuration, if it uses the ``deny'' addresses at all, will do
+ so with a local database.
+
+ l\bli\bis\bst\bt_\b_m\bmo\bod\bd
+ Moderator addresses. Created for completeness, but not used in
+ the default configuration. If moderators are used, the addresses
+ are stored in a local database.
+
+
+ 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.
+
+ For each of the above tables, there is a ``*_slog'' table that
+ contains one row per transaction against the corresponding address
+ table. The entries contain a time stamp, the subscription address; a
+ direction indicator (``-'' for removals, ``+'' for additions); a type
+ indicator (blank for ezmlm-manage, ``m'' for ``manual'', ``p'' for
+ ``probe, i.e. bounce handling; and the subscriber ``From:'' line
+ contents (only additions and only when made by ezmlm-manage or by
+ ``ezmlm-sub(1) -n'').
+
+
+ 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.
+
+ For both the list and the digest list, there are a pair of tables that
+ log messages:
+
+
+ l\bli\bis\bst\bt_\b_c\bco\boo\bok\bki\bie\be
+ The main list stores the message number and a pseudo-random
+ cookie in this table when it processes the message. The cookie
+ is derived from the secret D\bDI\bIR\bR/\b/k\bke\bey\by, the message sender and the
+ message number. Thus, it is non-repeating and virtually
+ impossible to guess beforehand. Sublists will check that the
+ cookie sent with the message is the same as the one received
+ with the message.
+
+ The digest list is created similarly, except that it is ezmlm-
+ get(1) that originates the message and creates the cookie. This
+ is done in ``list_digest_cookie''.
+
+
+ l\bli\bis\bst\bt_\b_m\bml\blo\bog\bg
+ Both the main list and the sublists make entries in this table.
+ Each entry consists of a time stamp, a message number, a list
+ number, and a code. The code is 0 for message arrival, 1 for
+ ``finished processing'', 2 for ``receipt received'' and -1 for
+ bounce. The lists will refuse to process messages that do not
+ have the correct cookie, or if the message already has an entry
+ with a code of greater than 0. To inject a message at the
+ sublist, an attacker would have to inject a message with the
+ correct code before the list has processed the ``real'' message,
+ or subvert the SQL server. In practice, this is very hard to do,
+ unless the attacker has broken security at the database server
+ or a sublist. This authentication mechanism is intended to make
+ it safe to sublist moderated lists. It also blocks any message
+ duplication between main list and sublist from being propagated
+ to the subscribers.
+
+ The codes 2 for ``receipt received'' and -1 for bounce are
+ entered by ezmlm-receipt(1) at the main list. This program is
+ configured instead of ezmlm-return(1) if the main list was set
+ up with ``ezmlm-make -w6''. ezmlm-receipt(1) checks the cookie
+ of messages addresses to mainlocal-return-receipt@mainhost and
+ if correct enters the ``receipt received'' code. This address is
+ normally in the subscriber database with a hash of 98, so that
+ each list sends a message to the address _\ba_\bf_\bt_\be_\br all subscriber
+ addresses.
+
+ Bounces of sublist messages should not lead to removal of the
+ sublist from the database. ezmlm-receipt(1) will instead log the
+ bounce to the ``list_mlog'' table. It will also store up to 50
+ bounces in the bounce directory. This helps error detection and
+ diagnosis. After the first 50 bounces, no more bounces are
+ stored, until you manually remove the old ones. This is to
+ prevent filling up your hard disk in case a configuration error
+ causes a deluge of bounces.
+
+ The digest list is treated in the same manner. Here, the tables
+ is ``list_digest_mlog'' and the feedback address is mainlocal-
+ digest-return-receipt@mainhost.
+
+
+
+
+ 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.
+
+ To use SQL database support, you have to compile the programs with SQL
+ support. Currently, only MySQL support is available. See I\bIN\bNS\bST\bTA\bAL\bLL\bL.\b.i\bid\bdx\bx
+ in the package on how to do this.
+
+ The programs with SQL support will work exactly like the normal
+ programs for standard lists. However, if the file s\bsq\bql\bl exists in the
+ basedir, it turns on the SQL mode and it is expected to contain SQL
+ server connect info in the format
+
+ ``host:port:user:password:database:table''
+
+
+ Here, ``Host'' is the SQL database server host, ``port'' can be left
+ blank to use the default port, ``user'' and ``password'' are connec-
+ tion credentials for a user you need to define and grant access to the
+ database. ``Table'' is the name of the address table (``list'' in the
+ examples above and ``list_digest'' for the corresponding digest list).
+ For list clusters, ``:sublist'' is suffixed to this info and it is the
+ name/address of the sublist.
+
+ For each address database, you also need to create the address table
+ as well as the ``*_slog'' subscription log table. In addition, you
+ should create a ``*_cookie'' and ``*_mlog'' table for message logging.
+ This is all it takes to start using an SQL database.
+
+
+ 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.
+
+ Two programs are supplied in the distribution to make it easier to
+ create the database user and tables. Also, ezmlm-make(1) has support
+ for setting up SQL-enabled lists.
+
+
+ C\bCr\bre\bea\bat\bti\bin\bng\bg t\bth\bhe\be t\bta\bab\bbl\ble\bes\bs
+ ezmlm-mktab(1) will create the necessary tables:
+
+
+ % ezmlm-mktab -d table
+
+
+
+
+ Pipe this into the SQL client with the appropriate administrator
+ credentials needed to create tables (see MySQL documentation, e.g.
+ <http://www.tcx.se/>).
+
+ For most lists, the only addresses that are stored in the SQL
+ database are the subscribers of list and digest, and the ``allow''
+ aliases. It is NOT normally advisable to store moderator addresses
+ there, since they are needed only at the main list and secrecy is
+ more important. ``Deny'' addresses are few and again only needed at
+ the main list. ``Allow'' are put in the SQL database when using the
+ default ezmlmrc file only to make all relevant addresses
+ manipulatable via the SQL server. The other tables are created, in
+ case they are wanted (the cost for having them as empty table is
+ zero). The basedir/sql file is the decision point. If it exists, an
+ SQL table is used; if not a local ezmlm db is used.
+
+
+ C\bCr\bre\bea\bat\bti\bin\bng\bg a\ba u\bus\bse\ber\br e\ben\bnt\btr\bry\by
+ Create a user that has full access to the database from the list
+ host. How to do this depends on the RDBMS.
+
+
+ C\bCr\bre\bea\bat\bti\bin\bng\bg t\bth\bhe\be l\bli\bis\bst\bt
+ ezmlm-make(1) supports SQL-enabled lists with the ``-6'' switch:
+
+
+ % ezmlm-make other_switches -6 'host:port:user:pw:db:table' \
+ dir dot local host
+
+
+
+
+ Will create an SQL-enabled list that uses the SQL server for the
+ main list subscribers, digest list subscribers (if configured) and
+ ``allow'' poster alias addresses (if configured).
+
+
+ 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.
+
+ ezmlm-sub(1), ezmlm-unsub(1), and ezmlm-list(1) work as you would
+ expect also with a SQL-enabled list. ezmlm-list(1) may be minimally
+ slower (depending on network speed) if the SQL server is not local.
+ ezmlm-sub(1) and ezmlm-unsub(1) will be faster, but this is noticeable
+ only with very large subscriber lists and addition/removal of large
+ numbers of addresses (more than several thousands).
+
+
+ 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.
+
+ Just like other programs, ezmlm-list(1), ezmlm-sub(1), and ezmlm-
+ unsub(1) will work with normal address databases in the absence of
+ D\bDI\bIR\bR/\b/s\bsq\bql\bl. However, they also have a ``-M'' switch to force this
+ behavior even in the presence of D\bDI\bIR\bR/\b/s\bsq\bql\bl. This is used to convert an
+ address database from the standard type to the SQL type:
+
+
+ % ezmlm-list -M dir | xargs ezmlm-sub dir
+
+
+
+
+ or from the SQL version to the standard type:
+
+
+ % ezmlm-list dir | xargs ezmlm-sub -M dir
+
+
+
+
+ To synchronize the two, remove one and then update it with ezmlm-
+ sub(1) from the other. Alternatively, sort the ezmlm-list(1) output
+ for both, use diff and sed/awk to get separate files of the differ-
+ ences, and use ezmlm-sub(1) and ezmlm-unsub(1) to apply the differ-
+ ences to the appropriate database.
+
+ This type of conversion can serve as a convenient means to convert a
+ list from one type to another, to back up databases, and to move
+ subscriber addresses from a standard list to a SQL table for other
+ purposes, or from a SQL database to a standard mailing list (you may
+ need to use addresses from a SQL table, without wanting your lists to
+ be dependent on an SQL server for day to day operation).
+
+ _\bN_\bo_\bt_\be_\b: This inter-conversion requires the D\bDI\bIR\bR/\b/s\bsq\bql\bl file. If you do not
+ run the list against an SQL server, you need to disable deliveries
+ before you temporarily create this file. Otherwise, the list will run
+ against the SQL database during the time D\bDI\bIR\bR/\b/s\bsq\bql\bl exists.
+
+
+ 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.
+
+
+ 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.
+
+ ezmlm-idx-0.40 simplifies the SQL support and queries over ezmlm-
+ idx-0.32 at the cost of dropping distributed sublist support. We have
+ figured out a simpler way to support the latter, which hopefully will
+ be incorporated into ezmlm in the future (written under contract).
+
+ With the simplification, the queries are very straight forward, and
+ tuning is indicated only under extreme circumstances (very many very
+ large and busy lists or constant addition/removal of many addresses).
+
+
+ 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.
+
+ Weekly to monthly error checks on MySQL tables is recommended. Best is
+ to use:
+
+
+ # isamchk -s -O readbuffer=2M */*.ISM
+
+
+
+
+ Other options allow automatic correction of errors, but are dangerous
+ if tables are accessed while isamchk is running.
+
+ Other isamchk options allow recovery of space after frequent
+ insert/delete of addresses (can also be done with ``OPTIMIZE TABLE''),
+ key optimization, etc. See the MySQL documentation (
+ <http://www.tcx.se>) for more info.
+
+
+ 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.
+
+
+ 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?
+
+ Try to determine where the problem occurs and how to reproduce it:
+
+ +\bo Do messages to ezmlm return an error message to the sender or not?
+
+ +\bo What is/are the error message(s)?
+
+ +\bo What does ezmlm log into the mail log?
+
+ +\bo Are you using a setup with virtual domains, and qmail<1.02 or
+ ezmlm-idx<0.31? If so, have you adjusted D\bDI\bIR\bR/\b/i\bin\bnl\blo\boc\bca\bal\bl (see
+ ``Adapting ezmlm-make for virtual domains'')?
+
+ +\bo Are posts sent out to the subscribers?
+
+ +\bo Are there subscribers?
+
+
+ % ezmlm-list DIR
+
+
+
+
+ +\bo Are there moderators?
+
+
+
+ % ezmlm-list moddir
+
+
+
+
+ where ``moddir'' is the contents of D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be (for remote admin
+ 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-
+ p\bpo\bos\bst\bt (for message moderation), if and only if the contents start with
+ a forward slash. The default in all cases is D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/. 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 directory names, the one in D\bDI\bIR\bR/\b/m\bmo\bod\bd-\b-
+ s\bsu\bub\bb is used for both subscription moderation and remote admin.
+
+ +\bo Are the ownerships of all files correct, i.e. read/writable for the
+ owner?
+
+
+ % chown -R user DIR
+
+
+
+
+ For lists under alias:
+
+
+ % chown -R alias DIR
+
+
+
+
+ If you use custom moderator databases, those directories and all their
+ contents must also be readable for the user under which the list oper-
+ ates (i.e. the user qmail changes to during the delivery).
+
+ +\bo Read the qmail log and capture relevant parts.
+
+ +\bo Did you customize the package at all? If so, try the default
+ settings which are known to work.
+
+ +\bo Did you customize e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b)? Try to use the default copy (skip the
+ -c switch).
+
+ +\bo Did your customization of .\b.e\bez\bzm\bml\blm\bmr\brc\bc fail to have an effect?
+ Remember to use the -c switch. The .\b.e\bez\bzm\bml\blm\bmr\brc\bc file used is the one in
+ ``dotdir'', i.e. the directory where the .\b.q\bqm\bma\bai\bil\bl files go, usually,
+ but NOT necessarily, the one in your home directory.
+
+ +\bo Make sure you followed the instructions in man pages and other
+ documentation. Most of the problems are due to not closely
+ following the instructions. Try again with a new test list.
+
+ +\bo Make sure to take notes of how the list was created (which flags
+ you used, etc.).
+
+ +\bo use ezmlm-check(1) (see ``Using ezmlm-check to find setup
+ errors''). and compare the variables identified by ezmlm-check to
+ 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
+ message was not delivered properly. Check your qmail setup.
+
+ +\bo Try to find your problem or a question/item close to it in the FAQ.
+
+ +\bo If this didn't resolve the problem, post to the ezmlm mailing list,
+ describing how you set up the list, your general setup (especially
+ the relevant control files for a virtual domain), what works and
+ what doesn't and what results from different actions (log entries,
+ error messages).
+
+ If you have solved a problem that you believe might be more general,
+ please send a description of the problem and its solution to the
+ authors, ideally as a FAQ item.
+
+
+ 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?
+
+ If you have found a bug in the ezmlm-idx additions, please send a bug
+ report by E-mail to lindberg@id.wustl.edu. Describe the error, your
+ setup, and your system in sufficient detail so that it can be
+ reproduced by third parties. Include relevant sections of mail log,
+ and information about any error messages returned. If you ran into a
+ problem and resolved it on your own, include a fix as a context diff
+ against the distribution.
+
+ If you have found a bug in ezmlm proper (unlikely), please send a
+ similar bug report to djb@cr.yp.to or djb-ezmlm@cr.yp.to. If you're
+ unsure where the bug is, you can start with lindberg@id.wustl.edu. If
+ you have problems and questions, please refer to the documentation,
+ then to mailing list archives, then E-mail the ezmlm mailing list or
+ the authors.
+
+
+ 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?
+
+ E-mail to lindberg@id.wustl.edu, ideally with a context diff. For
+ ezmlm proper, ezmlm@list.cr.yp.to may be better.
+
+
+ 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.
+
+ ezmlm-test(1) tests the different ezmlm(-idx) programs. It is useful
+ to test your installation. If this program succeeds, it is not likely
+ that you have problems due to platform-specific ezmlm(-idx) bugs. If
+ ezmlm-test(1) fails, this is the place to start. The program is good
+ at finding problems but not that easy to use to determine the cause.
+ Start by finding the place where it fails, recreate the conditions
+ (add ``exit 0'' just before the point of failure and set the
+ environment variables as set by the script), then try to run the
+ command manually. ~\b~/\b/_\b__\b_T\bTS\bST\bTD\bDI\bIR\bR_\b__\b_e\ber\brr\br may contain a relevant error
+ message. For further help, E-mail lindberg@id.wustl.edu.
+
+
+ 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.
+
+ ezmlm-check(1) is included in the ezmlm-idx distribution. ezmlm-
+ check(1) is an evolving shell script which when put into a .\b.q\bqm\bma\bai\bil\bl file
+ of a mailing list will return information about the environment
+ variables passed by qmail to ezmlm as well as the list setup. It also
+ attempts to check for common error conditions, such as HOST and
+ D\bDI\bIR\bR/\b/i\bin\bnh\bho\bos\bst\bt mismatch, missing files, etc. To use ezmlm-check(1), place
+ a line:
+
+
+ |/usr/local/bin/ezmlm/ezmlm-check 'DIR'
+
+
+
+
+ where ``DIR'' is the list directory, as the first line in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br
+ (for mail to list), D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br (for mail to list-subscribe, list-
+ help, etc), D\bDI\bIR\bR/\b/m\bmo\bod\bde\ber\bra\bat\bto\bor\br (for mail to list-accept, list-reject).
+ ezmlm-check(1) will send its output to SENDER. The rest of the .\b.q\bqm\bma\bai\bil\bl
+ file will be ignored. If you use a non-standard ezmlm binary direc-
+ tory, change the ezmlm-check(1) path accordingly.
+
+ ezmlm-check(1) in combination with mail logs and ezmlm error messages
+ should make it easy to diagnose setup problems. When done, don't
+ forget to remove the ezmlm-check(1) line. It is not security-proofed
+ against SENDER manipulation and with it in place, the list won't work.
+
+ ezmlm-check(1) does not check all aspects of list generation, but
+ catches all common errors when lists are created with ezmlm-make(1),
+ an many other errors as well. The ezmlm-check(1) reply is also very
+ valuable for support via E-mail.
+
+
+ 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
+ (\b(#\b#5\b5.\b.1\b1.\b.1\b1)\b).\b.
+
+ qmail tried to deliver the mail, but there is no mailbox with that
+ name. ezmlm-make(1) was used with incorrect arguments, often in
+ conjunction with a virtual domain setup. If the list is in a virtual
+ domain, the ``host'' argument for ezmlm-make(1) should be the virtual
+ domain, not the real host name. See ``What names can I use for my
+ mailing lists?'' and ``Lists in virtual domains'' for more info.
+
+ Other possibilities are that your qmail setup is incorrect. For a
+ 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
+ containing ``|/bin/echo "It worked"; exit 100''. Now send mail to
+ test@virtual.dom. If delivery works, you should get an error message
+ ``It worked'' back. If you get anything else, you need to adjust your
+ 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
+ and mail user-test@host to test that you control extension addresses.
+ If this fails, contact your system administrator or adjust your qmail
+ setup.
+
+ If these tests worked, but your list still does not, you most likely
+ supplied an incorrect ``dot'' argument for ezmlm-manage(1). It should
+ 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-
+ t\bte\bes\bst\bt for the list user-test@host.
+
+
+ 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.
+
+
+ N\bNo\bon\bn-\b-m\bmo\bod\bde\ber\bra\bat\bte\bed\bd l\bli\bis\bst\bts\bs
+
+ 1. Read the qmail log. Is your message delivered to the list?
+ You can also:
+
+
+
+ % cat DIR/num
+
+
+
+
+ 2. Send a message to the list.
+
+ 3. See if it was received/processed:
+
+
+
+ % cat DIR/num
+
+
+
+
+ If the number was incremented, the message went to the list, and
+ was successfully sent out in the opinion of ezmlm-send(1)
+ (ezmlm-send(1) doesn't mind if there are no subscribers, so
+ check that there really are both moderators and subscribers.
+ These are added with ezmlm-sub(1). You can not just put
+ addresses into a text file!).
+
+
+ M\bMe\bes\bss\bsa\bag\bge\be m\bmo\bod\bde\ber\bra\bat\bte\bed\bd l\bli\bis\bst\bts\bs
+
+ 1. Check number of queued messages awaiting moderation:
+
+
+
+ % ls -l DIR/mod/pending
+
+
+
+
+ 2. Send a message to the list.
+
+ 3. Check if another message was added to the queue:
+
+
+
+ % ls -l DIR/mod/pending
+
+
+
+
+ A new file should have appeared. If this file has the owner exe-
+ cute bit set, it was successfully processed by ezmlm-store(1).
+ If this is true, but no moderation request was sent, then con-
+ tinue with ``Messages posted to the list do not result in moder-
+ ation requests''. If there is no new file, the message did not
+ reach ezmlm-store(1), or ezmlm-store(1) failed early. In both
+ cases, the mail log should tell you more.
+
+ If the message is there, but the owner execute bit is not set,
+ ezmlm-store(1) failed. Check the mail log. Possible reasons
+ include a failure to find the ezmlm-send(1) binary or D\bDI\bIR\bR/\b/m\bms\bsg\bg-\b-
+ s\bsi\biz\bze\be is specified and the message body size is outside of the
+ allowed range (again, this is accompanied by an error message
+ and mail log entry).
+
+
+ G\bGe\ben\bne\ber\bra\bal\bl
+
+ 1. If the message was not received/processed, there should be an
+ error message in the mail log.
+
+ 2. Fix temporary and permanent errors with the help of qmail and
+ ezmlm documentation.
+
+ 3. If there is no log entry at all, then the mail went to
+ another host. Check your qmail setup.
+
+ 4. If mail was delivered to the list, but not forwarded to the
+ subscribers (check the qmail log - there should be an entry
+ 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
+ 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)
+ sends a message from list-help@host, and logs success, but no
+ recipients are logged. To qmail, it is perfectly acceptable
+ to send a message without recipients, so no error message is
+ logged.
+
+ 5. Check subscribers:
+
+
+ % ezmlm-list DIR
+
+
+
+
+ 6. Assure that ownerships are correct on the list directories:
+
+
+ % chown -R user DIR
+
+
+
+
+ For lists owned by the ``alias'' user (in ~alias):
+
+
+ % chown -R alias DIR
+
+
+
+
+ 7. Most other problems should be easily corrected with the help
+ of the qmail log.
+
+
+ 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.
+
+ The command line you specified is incomplete. Usually, a command line
+ argument has been omitted or a switch was placed after the other
+ arguments rather than before.
+
+ The same error is issued when you attempt to invoke ezmlm-make(1) with
+ only the ``DIR'' argument without using the ``-e'' or ``-+'' switch.
+ Other command line arguments can be omitted only when editing lists
+ created or previously edited with ezmlm-make from ezmlm-idx>=0.23.
+
+ Some special situations use ezmlm-make(1) as a general script
+ processor, e.g. the setting up of sublists with ezmlmsubrc(5) and of
+ a global interface with ezmlmglrc(5). Here, there is no ``memory'' so
+ all arguments have to be specified, even when using the ``-e'' or
+ ``-+'' switches.
+
+
+ 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.
+
+ This error occurs when ezmlm-make is used to set up a list, and it
+ tries to create a directory or a .\b.q\bqm\bma\bai\bil\bl-\b-l\bli\bis\bst\bt link that already exists.
+ Usually, this occurs because the list already exists. If you are
+ creating a new list, first erase remnants of any old test lists by
+ 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
+ _\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
+ intended!
+
+
+
+ % rm -rf DIR
+ % rm -rf ~/.qmail-list ~/.qmail-list-*
+
+
+
+
+ If you want to save some files (such as in D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/), make backup
+ copies first, run ezmlm-make, then copy the backups to D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/. Of
+ course, it is usually easier to create a custom .\b.e\bez\bzm\bml\blm\bmr\brc\bc, and than use
+ that for all your lists.
+
+ To use ezmlm-make(1) to modify an existing list, without changing the
+ subscriber or moderator lists or the message archive, use the ezmlm-
+ make ``-e'' switch. With this, you need to re-specify all desired
+ switches. If instead you use ``-+'' you need to specify only switches
+ that are changed/new. NOTE: any customization that you've made to
+ program files like D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br will be overwritten. For instance, if
+ you manually added checks to D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br or added a pointer to a custom
+ moderator database in e.g. D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb these changes will be lost. To
+ retain such changes (especially ones that are common for several of
+ your lists), place them in a local ~\b~/\b/.\b.e\bez\bzm\bml\blm\bmr\brc\bc file instead. You can
+ either make such changes the default for your lists, or you can
+ configure ~\b~/\b/.\b.e\bez\bzm\bml\blm\bmr\brc\bc so that they are added only if a specific ezmlm-
+ make switch is used. (see ``Customizing ezmlm-make operation'').
+
+
+ 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
+
+ There is no readable ezmlmrc(5) file in /\b/e\bet\btc\bc/\b/e\bez\bzm\bml\blm\bm nor in the ezmlm
+ binary directory. If you have .\b.e\bez\bzm\bml\blm\bmr\brc\bc in ``dotdir'' (see
+ ``Terminology: dotdir'') use the ezmlm-make(1) ``-c'' switch (see
+ ``Customizing ezmlm-make operation''). _\bN_\bo_\bt_\be_\b: The default location for
+ 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-
+ idx-0.40.
+
+
+ 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
+ e\bez\bzm\bml\blm\bm-\b-m\bma\ban\bna\bag\bge\be.\b.
+
+ Make sure this is an indexed list and has an ``ezmlm-get'' line first
+ in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. If not, your commands are fed directly to ezmlm-
+ manage(1). If they contain ``-'', ezmlm-manage interprets the rest as
+ an address to which it sends the error message. Usually, this results
+ in a "trash address" mail log entry and a bounce, which is why you
+ don't see any error message. The same happens if you send non-existing
+ commands followed by ``-'' and arguments. Thus, list-gugu-54@host
+ results in an ezmlm-manage error, resulting in help text being sent to
+ 54@localhost ... When testing, try using syntax with a ``.'', not a
+ ``-'', after the action command, e.g. list-get.54_60@host. This will
+ assure that error messages get back to you.
+
+
+ 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.
+
+ (Digest triggering by mail is a relic from older versions. Use the
+ standard setup with ezmlm-tstdig(1) as by ezmlm-make(1) ``-d'', or run
+ ezmlm-get(1) directly from the command line via crond(8).)
+
+ If you get an error message, it tells you why the request failed. If
+ you do not, see the previous item. Try using syntax without ``-''
+ after the ``dig'' command. Also, requests that would result in an
+ empty digest are silently ignored, but the reason why no digest was
+ created is logged to the mail log. This is done so that cron scripts
+ generating daily digest will just fail silently, rather than
+ generating an error, for what isn't really one.
+
+
+ 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
+ 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.
+
+ Either the list is not set up for remote administration (i.e.
+ D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be does not exist), or the moderator is sending the request
+ from an address that is not in the moderator database (e.g. from
+ Fred@host.dom, when fred@host.dom is in the moderator db, but
+ Fred@host.dom is not). ezmlm-manage(1) has no way of knowing that the
+ SENDER is a moderator and treats the request as coming from a regular
+ user, i.e. it sends a confirmation request to the target address.
+ Correct the SENDER address, the address in the moderator db, or create
+ D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be. If you are using a non-default moderator db location, make
+ sure that the moddir name is in D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be (for remote admin only) or
+ D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb (if there is subscription moderation as well). In both
+ cases, the contents will be ignored unless they start with a ``/''.
+
+
+ 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-
+ m\bme\ben\bnt\bt
+
+ With normal ezmlm lists, a subscriber confirming a subscription or a
+ non-subscriber confirming a unsubscribe request results in a message
+ to the target address. This message is suppressed when the list is set
+ up for subscription and/or remote administration, so that
+ confirmations from multiple moderators do not result in multiple
+ messages to the target address. The target address is always notified
+ if the subscriber status of the address changes (from non-subscriber
+ to subscriber or vice versa).
+
+
+ 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-
+ a\bat\bti\bio\bon\bn.\b.
+
+ The list is not set up as a moderated list. Check D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br. If
+ should contain a ezmlm-store(1) line after the ezmlm-reject line if it
+ is a moderated list. No ezmlm-send(1) line should be in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br.
+ If there is, the list is not moderated. Also, D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt must exist.
+ If it does not, ezmlm-store(1) will post the messages directly (via
+ ezmlm-send(1)) without sending them out for moderation first. This
+ makes it easy to temporarily remove message moderation by simply
+ removing D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt, but may be confusing if the user is unaware of
+ this ezmlm-store(1) feature.
+
+
+ 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
+ r\bre\beq\bqu\bue\bes\bst\bts\bs.\b.
+
+
+ +\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.
+
+ +\bo Check that D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br contains ezmlm-store(1) and not ezmlm-
+ send(1). If this is not the case, the list is not message
+ moderated.
+
+ +\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
+ list is not moderated, even if D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br is set up with ezmlm-
+ store(1).
+
+ +\bo Check qmail logs for error conditions during post delivery and
+ correct these. If the messages are delivered correctly, verify that
+ ezmlm-store(1) generated the moderation requests to the moderators.
+
+ +\bo Check to see that there are indeed moderators:
+
+
+
+ % ezmlm-list moddir
+
+
+
+
+ where ``moddir'' is the contents of D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt if they start with a
+ ``/'', otherwise those of D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be (same ``/'' requirement), and
+ D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/ by default.
+
+
+ +\bo Check file ownerships.
+
+ Another common problem is directory ownerships, especially for
+ lists under ~alias. To correct this error, issue the following
+ command while in the ~alias directory (User the user/group of the
+ list owner; for ~alias lists user=alias, group=qmail):
+
+
+ % chown -R user DIR
+
+
+
+
+
+ 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
+ a\bac\bct\bti\bio\bon\bn.\b.
+
+
+ +\bo Check that the address in the moderation request is correct.
+
+ +\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-
+ 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.
+
+ +\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
+ is a copy of ezmlm-send(1) in the ezmlm binary directory.
+
+ +\bo Check the qmail log to see that the replies were delivered to this
+ address.
+
+ +\bo Check directory ownerships. For lists under alias:
+
+
+
+ % chown -R alias DIR
+
+
+
+
+ _\bN_\bO_\bT_\bE_\b: This needs to be done every time you add/remove moderators as
+ ``root''. For user-controlled lists (i.e. you are ``user'' when run-
+ ning e.g. ezmlm-sub(1)) this is not a problem.
+
+ If setting up lists for _\ba_\bl_\bi_\ba_\bs, you can avoid many problems by setting
+ them up as ``alias'', i.e. use ``su alias'' not ``su''.
+
+ If setting up lists for a user controlling a virtual domain, you can
+ avoid many problems by assuming that uid (``su user'') before making
+ any changes.
+
+ +\bo Check the qmail logs: After the delivery of the moderation request,
+ ezmlm-send(1) should run to send messages to all the list
+ subscribers.
+
+ +\bo Make sure there are list subscribers:
+
+
+
+ % ezmlm-list DIR
+
+
+
+
+ Most error conditions, incorrect request cookies, etc, should result
+ in informative error messages in the mail log.
+
+
+ 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
+ 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.
+
+ Moderator comments are where the moderator chooses to ``reject'' the
+ message and inform the person posting which his/her message was
+ inappropriate. However, if a moderator wants to comment on a\bac\bcc\bce\bep\bpt\bte\bed\bd
+ posts, the moderator may only do so via a follow-up post to the list.
+ This is to avoid anonymously tagged-on text to posts. If a moderator
+ has something to say to the list, they should (and can only) do so in
+ regular posts. If you want to edit posts before sending them to the
+ list, set up a moderated list with you as the only moderator. Into
+ D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br before the ezmlm-store(1) line, put a condredirect(1) line
+ that redirects all messages with a SENDER other than you to your
+ address. You can edit the contents ands repost, the message will pass
+ condredirect(1), and hit ezmlm-store(1). You will be asked to confirm
+ (needed to assure that nobody else can post directly) and when you do,
+ the messages is posted.
+
+ Moderator comments for ``reject(ed)'' posts need to be enclosed
+ between two lines (yes, the end marker is required), having ``%%%''
+ starting on one of the first 5 positions of the line. If there are
+ characters before the marker, these will be removed from any comment
+ line that starts with the same characters (e.g. the characters before
+ ``comment2'' in the example below will be removed):
+
+
+ %%%
+ comment
+ %%%
+
+
+ or:
+
+
+ > %%%
+ comment
+ > comment2
+ > %%%
+
+
+ but not:
+
+ %%
+ COMMENT
+ %%
+
+
+ and not:
+
+ %%% this is my comment %%%
+
+
+ or
+
+ ezmlm said>%%%
+ comment
+ ezmlm said>%%%
+
+
+
+
+ 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.
+
+ By default, only a subset of message headers are sent out in any
+ digest and archive retrieval requests. First, headers in
+ 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
+ when the default archive retrieval format (``m'') is used. Use the
+ ``v'' or ``n'' format (see ezmlm-get(1)) to get all message headers
+ that are in the archive.
+
+
+ 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.
+
+ ezmlm-idx>=0.313 removes all but the latest ``Received:'' header from
+ messages sent to the list. This is done since messages, especially
+ sent via sublists, may have so many ``Received:'' headers that MTAs
+ with primitive ``loop detection'' erroneously reject them. The
+ subscriber can subscribe, since those messages have fewer such
+ headers, and will receive warning and probe messages, but never see
+ any posts.
+
+ To see all headers of a message for diagnostic purposes, mail
+ mainlist-getv.num@mainhost, where ``num'' is the message number. All
+ ``Received:'' headers are stored in the archive copy of the message.
+
+ To disable ``Received:'' header pruning, use the ezmlm-send(1) ``-r''
+ switch.
+
+
+ 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.
+
+ The digest by default removed non-essential headers like ``In-Reply-
+ To:'' from messages. Modern MUAs, like _\bM_\bu_\bt_\bt can split out messages
+ from a digest and then thread them based on such headers. To include
+ these and all other headers in the digest messages, use the ``v'' or
+ ``n'' format as described on the ezmlm-get(1) man page. Normally, the
+ threading done by ezmlm is sufficient and the default format preferred
+ to reduce message and digest size, often by 25% or more.
+
+
+ 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.
+
+ The list you are trying to post to is used as a sublist (a list fed
+ with messages from another (ezmlm) list), but not properly set up as a
+ sublist. Put the name of the parent list (``origlist@orighost'')
+ which exactly matches the SENDER of the original (or parent) list into
+ 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
+ the user controlling the list can read it.
+
+ Alternatively, use the ezmlm-make(1) ``-0 origlist@orighost'' switch
+ (see ``Customizing ezmlm-make operation'').
+
+
+ 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.
+
+ Only complete lines ending with ``newline'' are copied. The last line
+ in the D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/ file most likely lacks a terminal ``newline''.
+
+
+ 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.
+
+ Assuming that the user initiated the subscribe request, got a
+ ``confirm'' request, and replied correctly, there are two possible
+ causes for the problem: Either the list is not subscription moderated
+ (in this case the user is subscribed and received a note saying so) or
+ the list is subscription moderated but no moderators have been added
+ (ezmlm-manage(1) sends out the request and doesn't mind that there are
+ no recipients).
+
+ Check that the list is subscription moderated:
+
+
+ % cat DIR/modsub
+
+
+
+
+ If this fails the list is not subscription moderated. If it succeeds
+ with a directory name with a leading ``/'', this is your ``moddir''.
+ If not:
+
+
+
+ % cat DIR/remote
+
+
+
+
+ If this succeeds with a directory name with a leading ``/'', this is
+ your moddir, otherwise the moddir is ``D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/''.
+
+ Check for moderators:
+
+
+
+ % ezmlm-list moddir
+
+
+
+
+ If there are none, this is your problem. If there are some, check the
+ mail log to see what happened when the CONFIRM requests was supposed
+ to have gone out. Assure correct ownerships for the moderator db:
+
+
+
+ % chown -R user moddir
+
+
+
+
+ For ~alias:
+
+
+
+ # chown -R alias moddir
+
+
+
+
+ Another possible problem is that you are trying to use the remote
+ admin feature to subscribe a user, but you get no CONFIRM request.
+ Usually, this is due to your SENDER address not being in the moderator
+ database. The CONFIRM request went to the target address instead,
+ since as far as ezmlm is concerned, you are a regular user.
+
+
+ 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'
+
+ Usually, this is due to a corrupted qmail queue (should affect all
+ mail) or a corrupted ezmlm subscriber database (See ``How to deal with
+ corrupted subscriber lists''). ezmlm-idx>=0.40 has more informative
+ qmail error messages.
+
+
+
+
+
+ 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
+
+ Dan has made ezmlm very robust, but a subscriber list can still become
+ corrupted due to e.g. disk errors. Usually, this will lead to a
+ ``temporary qmail-queue error'' because an address does not conform to
+ the standard format. Occasionally, two E-mail addresses are fused,
+ e.g. ``addr1@hostTaddr2@host''. To diagnose and fix this type of
+ error, disable deliveries (easiest is to ``chmod 0 DIR/lock''), back
+ up the contents of D\bDI\bIR\bR/\b/s\bsu\bub\bbs\bsc\bcr\bri\bib\bbe\ber\brs\bs/\b/, then:
+
+
+
+ % ezmlm-list DIR > tmp.tmp
+
+ ( edit tmp.tmp to fix any problems )
+
+ % rm -rf DIR/subscribers/*
+ % ezmlm-sub DIR < tmp.tmp
+
+
+
+
+ This will list all E-mail addresses, allow you to edit them, then re-
+ subscribe them. Don't forget to re-enable deliveries.
+
+
+ 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.
+
+ Standard vacation programs do not reply to messages that contain a
+ ``Precedence: bulk'' header. ezmlm-idx>=0.23 sets up lists with this
+ header in D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\bra\bad\bdd\bd. For older lists, use ``ezmlm-make -+'' or
+ ``ezmlm-make -e'' to update them, or just add a ``Precedence: bulk''
+ line to D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\bra\bad\bdd\bd.
+
+
+ 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.
+
+ In the default setup, ezmlm-tstdig(1) determines if a new digest is
+ due every time a message arrives to the list. Thus, even though ezmlm-
+ tstdig is set to produce digests 48 hours after the previous digest,
+ the digest will not be generated until a message arrives. If you'd
+ like digests at a specific time each day, use crond(8) and crontab(1)
+ to daily run:
+
+
+ % ezmlm-get DIR
+
+
+
+
+
+ 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.
+
+ Occasionally, a subscriber address is misconfigured and automatically
+ sends a message back to the list. Sometimes, the subscriber's setup
+ has removed headers that ezmlm uses for loop detection or the
+ generated messages has nothing in common with the send-out. To block
+ such mail at the list, include the ezmlm-make(1) ``-k'' (kill) switch
+ and add the offending address to D\bDI\bIR\bR/\b/d\bde\ben\bny\by/\b/ with
+
+
+ % ezmlm-sub DIR/deny badadr@badhost
+
+
+
+
+ ezmlm-unsub(1) and ezmlm-list(1) can be used similarly to remove or
+ list the addresses. If your list is configured for remote administra-
+ tion (see ``How remote administration works''), and you are a remote
+ administrator, you can add the address by sending mail to list-deny-
+ badadr=badhost@listhost. Other subscriber database commands work as
+ well for list-deny.
+
+ In other instances, a configuration error somewhere close to the
+ subscriber creates a local mail loop throwing off messages to you.
+ They are often bounces that are sent to the list address or to ``list-
+ help'' due to configuration errors. Rather than accepting these, or
+ the often resulting double bounces to ``postmaster'', just add a
+ ``|/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
+ discards the bounce messages generated by the looping systems. ezmlm-
+ weed(1) is also useful in other settings where excessive numbers of
+ error messages are sent to the wrong address.
+
+
+ 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,
+ 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.
+
+ ezmlm lists (ezmlm-idx>=0.31) remove ``Received:'' headers from
+ incoming messages by default. This can be prevented with the ezmlm-
+ send(1) ``-r'' switch. When the headers are propagated, especially
+ sublist message may have many (15-20 or more), ``Received:'' headers.
+ If there is a poorly configured sendmail host with a ``hopcount'' set
+ too low, it will bounce these messages, incorrectly believing that the
+ many ``Received:'' headers are due to a mail loop. The reason that
+ administrative from the list do not bounce is that they have fewer
+ ``Received:'' headers, since they originate from the sublist.
+
+ The message with all headers including the removed ``Received:''
+ headers can be retrieved from the list archive with the _\b-_\bg_\be_\bt_\bv command.
+ The top incoming ``Received:'' header is added by qmail at the receipt
+ to the list (or last sublist) host. This header is not removed, to
+ allow the recipient to determine when the message reached the list.
+
+
+ 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
+
+
+ 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.
+
+ With ezmlm-make(1) (from ezmlm-idx >=0.21) you can use the ``-e''
+ switch to edit existing lists. Invoke the ezmlm-make(1) command just
+ as you would to create the list anew, but change the switches to
+ reflect the desired change, and add the ``-e'' switch. ezmlm-make will
+ accept preexisting directories and overwrite or remove files to change
+ 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
+ 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
+ be affected.
+
+ If the list has been created or previously edited with ezmlm-make(1)
+ from ezmlm-idx>=0.23, the list remembers (via D\bDI\bIR\bR/\b/c\bco\bon\bnf\bfi\big\bg) the
+ arguments and the switches. All you have to do is to use the ezmlm-
+ make(1) ``-+'' switch and specify options you wish to change, or use
+ the ``-e'' switch and specify all non-default options you'd like to
+ use.
+
+ _\bN_\bO_\bT_\bE_\b: ezmlm-make(1) ``-e'' and ``-+'' will OVERWRITE any manual
+ customizations you have made to the program files, but not text files
+ 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
+ (such as when changing list name), use ``-ee'' or ``-++''.
+
+ To make general customizations, please change e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) (see ``What
+ is ezmlmrc?'' or read on) instead and use the ``-c'' switch as well.
+ DO NOT use this option to change production lists without testing it
+ on other lists first. Also, for some changes, removing or adding a
+ flag is sufficient (see ``How do I quickly change properties of my
+ list'').
+
+
+ 7\b7.\b.2\b2.\b. W\bWh\bha\bat\bt i\bis\bs e\bez\bzm\bml\blm\bmr\brc\bc?\b?
+
+ ezmlm-make(1) has a number of default switches that through e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b)
+ have defined functions. These allow creation of many standard lists.
+
+ In addition, ezmlm-make(1) operation is fully customizable via
+ modification of the template file, ezmlmrc(5) or .ezmlmrc. A default
+ ezmlmrc(5) is installed in the ezmlm binary directory. The system
+ administrator can install a system-wide default e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) file in
+ /\b/e\bet\btc\bc/\b/e\bez\bzm\bml\blm\bmr\brc\bc (or symlinked from there) which overrides the file in the
+ ezmlm binary directory. If the ezmlm-make(1) ``-c'' (custom) switch is
+ used, ezmlm-make(1) will look for .\b.e\bez\bzm\bml\blm\bmr\brc\bc in the ``dotdir'', i.e. the
+ directory in which the .\b.q\bqm\bma\bai\bil\bl-\b-l\bli\bis\bst\bt links are placed. This is usually a
+ set directory for a given user/virtual domain (usually, the home
+ directory for the user controlling the lists).
+
+ e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) controls everything except creation of the list directory
+ itself and the key used for cookie generation. The syntax of
+ e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) is documented in ezmlm-make(1), the ezmlmrc(5) man page,
+ and in the ezmlmrc(5) file installed in the ezmlm binary directory.
+ ezmlm-make limits its effects to within the list ``dot'' and ``DIR''
+ directories. In the ``dotdir'', only links to within ``DIR'' can be
+ created.
+
+
+ 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.
+
+ Copy the ezmlmrc(5) file from the ezmlm bin directory to .\b.e\bez\bzm\bml\blm\bmr\brc\bc in
+ your .\b.q\bqm\bma\bai\bil\bl file base directory (usually your home directory):
+
+
+ % cp /usr/local/bin/ezmlm/ezmlmrc ~/.ezmlmrc
+
+
+
+
+ The base e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) file lives in the ezmlm binary directory, which
+ 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
+ default setup. If your system administrator has placed a ezmlmrc(5)
+ file into the /\b/e\bet\btc\bc directory, start with that one instead, as it is
+ likely to already contain some useful local customization and
+ comments.
+
+ Now edit ~\b~/\b/.\b.e\bez\bzm\bml\blm\bmr\brc\bc. Find the tag corresponding to the text file you
+ want to change, e.g. ``</text/mod-request/>'', and modify it
+ appropriately. Some tags have conditional flags, so that succeeding
+ text is copied only if specific switches are on/off. Thus, text
+ 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
+ only if the ezmlm-make(1) ``-rms'' switches are all used. For more
+ info, see documentation in e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) and the ezmlm-make(1) man page.
+ To invoke a custom .\b.e\bez\bzm\bml\blm\bmr\brc\bc file, use the ezmlm-make(1) ``-c''
+ (custom) switch.
+
+
+ 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.
+
+ See above. Edit the .\b.e\bez\bzm\bml\blm\bmr\brc\bc file to add a directory name to e.g.
+ ``</modsub/#s>''. Also, you need to create that directory, and the
+ subscribers subdirectory under it. NOTE: D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/ is still required as
+ the base directory for the message moderation queue.
+ 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.
+
+ This is not necessary if you use qmail>=1.02 and ezmlm-idx>=0.32.
+
+ The problem with virtual domains is that ezmlm-make(1) by default puts
+ 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
+ controlled by the user ``virt'', then the local part of the address
+ for the list list@host.dom.com will be ``virt-list'', not ``list''.
+ 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
+ the ``</inlocal/>'' section of this file, enter ``virt-<#L#>'' instead
+ of ``<#L#>''. Now, all lists created under ~\b~v\bvi\bir\brt\bt will be
+ automatically set up correctly.
+
+ Similarly, if host1.dom.com is controlled by virt-dom1 and
+ host2.dom.com by ``virt-dom2'', inlocal for list list@host1.dom.com
+ should be ``virt-dom1-list'' and for list@host2.dom.com should be
+ ``virt-dom2-list''. To accommodate this, put ``virt-<#1#>-<#L#>'' in
+ ``</inlocal/>''.
+
+ Running:
+
+
+ % ezmlm-make -c ~virt/LIST ~virt/.qmail-dom1-list \
+ list host1.dom.com
+
+
+
+
+ will produce a L\bLI\bIS\bST\bT/\b/i\bin\bnl\blo\boc\bca\bal\bl of virt-dom1-list by substituting the
+ first part between two ``-'' (dom1) for ``<#1#>''. Two levels of
+ dashes are accommodated, i.e. ``<#2#>'' will be replaced by the second
+ part between two ``-'' (in this case empty (_\bS_\bi_\bc_\b!)). For more info,
+ see ezmlm-make(1) and comments in e\bez\bzm\bml\blm\bmr\brc\bc.
+
+
+ 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.
+
+ Ezmlm-make is very flexible. There are only three sets of special
+ command line switches: ``-vV'' for version info, ``-cC'' controlling
+ the use of a custom file .\b.e\bez\bzm\bml\blm\bmr\brc\bc in the ``dot'' directory, and
+ ``-eE'' for edit mode (i.e. reconfiguration of existing list setups).
+ All other switches are soft, i.e. controlled through e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b). Many
+ switches, have special meanings via e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) and are documented in
+ the man page. Any other switches can be used for customization (_\bN_\bO_\bT_\bE_\b:
+ _\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
+ _\bf_\bu_\bt_\bu_\br_\be _\bv_\be_\br_\bs_\bi_\bo_\bn_\bs_\b.) The ``-xyz'' switches will always be available for
+ your use, with the ``-x'' switch being configured for some
+ demo/special features in the distributed e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b). You can use them
+ for anything you like. They are by default off=false. The complement
+ of these switches is ``-XYZ'' (by default on=true). You can use these
+ to cause specific changes in the list setup if a given switch is used.
+ For an example, see the ``-x'' switch as used and documented in the
+ default e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) file. The switches ``-aip'' are set by default to
+ be backwards compatible with ezmlm-0.53. Other switches are ``off'' by
+ default.
+
+ Switches ``-a-z'' and ``-A-Z'' take no arguments. Switches ``-0'' and
+ and ``-3-9'' take arguments. When the ezmlm-make(1) ``-+'' switch is
+ used, the current settings for all these switches are read from the
+ list's D\bDI\bIR\bR/\b/c\bco\bon\bnf\bfi\big\bg (if available).
+
+
+ 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.
+
+
+
+ 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.
+
+ SPAM or junk mail is usually sent by mailing a single message to a
+ large number of (unwilling) recipients. As such, it usually does not
+ contain the E-mail address of all recipients (remember, junk mailers
+ pay for these address lists). By rejecting messages that do not have
+ the list address in the To: or Cc: header(s) a large fraction of spam
+ to the list can be filtered out.
+
+ This filter function is activated by default, but will work only if
+ you specify the list directory on the ezmlm-reject(1) command line. To
+ disable this restriction, remove the ``DIR'' argument from the ezmlm-
+ reject(1) command line, or add the ``-T'' switch.
+
+ By default, this error is logged, and an error message is sent to the
+ sender. Since virtually all the failures will be SPAM and virtually
+ all spam has a faked SENDER, most of these error messages will go to
+ the postmaster. Thus, you may want to use the ezmlm-reject ``-q''
+ switch (quiet) to suppress the sender notification.
+
+
+ 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.
+
+ ezmlm automatically detects are rejects messages that are sent from
+ other ezmlm mailing lists. Some other mailing list managers do not use
+ a rigorous mechanisms to verify subscribers. Thus, it is possible to
+ subscribe an ezmlm list address to such a mailing list. You can easily
+ block such a list by adding the address to the ``deny'' if you use the
+ ezmlm-make(1) ``-k'' option. However, you can also configure ezmlm-
+ reject(1) to reject messages based on specific headers placed into
+ 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
+ managers known to us are listed in the ezmlm-reject(1) man page. To
+ activate this option, you must specify the ``-h'' switch and D\bDI\bIR\bR on
+ the ezmlm-reject(1) line in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br. Naturally, you can make this
+ the default by editing ezmlmrc(5) (See ``Customizing ezmlm-make
+ operation'').
+
+
+ 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.
+
+ ezmlm-reject(1) is by default configured to reject posts with empty
+ subject (``-s'' switch) or with a subject that consists of only an
+ administrative command word (``-c'' switch), such as ``subscribe''. To
+ remove these restrictions, use the ezmlm-reject(1) ``-S'' and ``-C''
+ switch, respectively. You can also into D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br before the ezmlm-
+ send(1) line add:
+
+
+ | grep -i 'subject:' | grep -if DIR/bad_words >/dev/null && \
+ {echo "bad words found"; exit 100; }
+
+
+
+
+ to reject messages that have a line matching ``Subject:'' followed by
+ any bad word listed in D\bDI\bIR\bR/\b/b\bba\bad\bd_\b_w\bwo\bor\brd\bds\bs.
+
+
+ 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.
+
+ If the ``DIR'' argument is specified on the ezmlm-reject(1) line in
+ 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)
+ greater than ``0'', then any posts with a body larger than the number
+ specified is rejected. The maximum message size can optionally be
+ followed by ``:'' and a minimum message body size in bytes. For
+ moderated lists, messages that are too large are rejected and not sent
+ to the moderators. This feature can be used to prevent the posting an
+ entire digest to the list by setting D\bDI\bIR\bR/\b/m\bms\bsg\bgs\bsi\biz\bze\be slightly below the
+ message size set in your ezmlm-tstdig(1) innovation (if any). A
+ minimum size can catch a few administrative request sent to the main
+ list, but is otherwise not that useful. To always configure your lists
+ with a message size restriction, add to e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b):
+
+
+ </msgsize/>
+ max:min
+
+
+
+
+ The ezmlm-make(1) ``-x'' switch adds this with 40000:2.
+
+
+ 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.
+
+ 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
+ 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
+ left out to conserve resources on lists that do not use these
+ 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
+ _\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
+ _\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
+ 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
+ message is a simple MIME message of a content-type listed in either
+ 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.
+
+ 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
+ can easily be configured by editing e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b). The ezmlm-make ``-x''
+ switch configures D\bDI\bIR\bR/\b/m\bmi\bim\bme\ber\bre\bem\bmo\bov\bve\be (see ``mimeremove'') for a list of
+ content-types). Messages consisting solely of these content-types
+ (rare) will be rejected, and the corresponding MIME parts of composite
+ messages will be removed.
+
+
+ 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.
+
+ Use message moderation. As an alternative, implement a check against
+ SENDER by using ezmlm-issubn(1). The latter is easily defeated by
+ faking SENDER. Also, it prevents posts from legitimate subscribers
+ that are subscribed under a different address than the one they send
+ from. Nevertheless, it may be useful in some situations. Add:
+
+
+
+ |/usr/local/bin/ezmlm/ezmlm-issubn 'DIR' 'DIR/digest' 'DIR/allow' ||
+ { echo "Sorry, you are not allowed to post to this list.";
+ exit 100; }
+
+
+
+
+ _\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''
+ is the main list directory. If your ezmlm binaries live in a different
+ directory, change the ezmlm-issubn(1) path accordingly. If you would
+ like denied posts to be dropped silently rather than bounced, change
+ the exit code to 99.
+
+ See ``Customizing ezmlm-make operation'' if you want your lists to
+ have some of these features by default or set by specific ezmlm-
+ make(1) switches. The ezmlm-make(1) ``-u'' switch by default sets up
+ restrictions this way.
+
+
+ If you do not want to allow digest subscribers to post, remove
+ D\bDI\bIR\bR/\b/d\bdi\big\bge\bes\bst\bt/\b/ from the ezmlm-issubn command line. To allow posts from an
+ address that is not a subscriber, simply add it to the addresses in
+ D\bDI\bIR\bR/\b/a\bal\bll\blo\bow\bw/\b/:
+
+
+ % ezmlm-sub DIR/allow address@host
+
+
+
+
+ The ``allow'' database can be manipulated remotely by sending mail to
+ list-allow-subscribe@listhost, list-allow-unsubscribe@listhost, etc.
+ If configured for the list, the ``-list'' command for remote adminis-
+ trators will work for the ``allow'' database as well.
+
+ Please note that this setup is not secure, as it is easy to modify the
+ envelope SENDER. For more secure options, see ``Restricting posts to
+ an arbitrary set of E-mail addresses (higher security option)''.
+
+
+
+ 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
+ (\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.
+
+ The easiest way to achieve this is to simply set up a message
+ moderated list, and add all the e-mail addresses to the moderator db.
+ Use a custom location, if you want a different set of moderators for
+ subscription moderation/remote admin. If a "moderator" posts, only
+ s/he will get a confirmation request. If anybody else posts, the post
+ will be sent to all moderators.
+
+
+ To directly bounce posts from SENDERs not in the database, use the
+ ezmlm-store ``-P'' (not public) switch. This is more secure than a
+ simple ezmlm-issubn(1) construct, since faking SENDER to a moderator
+ address will result in a confirmation request to that moderator (which
+ s/he will reject/ignore), rather than a direct post. The draw-back is
+ that each post has to be confirmed, but with the speed of ezmlm the
+ request will arrive immediately after the post is made, so the
+ overhead should is The best choice depends on your particular needs in
+ the trade-off between security and convenience.
+
+ ``ezmlm-make -om'' will set up such a moderated list with ``ezmlm-
+ store -P''. This is the most useful setup for an announcement list.
+
+
+ Setting a list up in this way with only the owner's address gives you
+ a pretty safe owner-only list.
+
+
+ 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.
+
+ To completely prevent posting (for instance a message-of-the-day
+ 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
+ D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br altogether. Make posts from the shell, or from shell
+ scripts or crond, by simply piping a (complete) message to ezmlm-
+ send(1):
+
+
+
+ % /usr/local/bin/ezmlm/ezmlm-send DIR < message
+
+
+
+
+ _\bN_\bO_\bT_\bE: This can be done by any user with write access to files within
+ the list directory, so make sure your file modes are set correctly.
+ The ezmlm-send(1) path may need to be changed to match your ezmlm
+ binary directory. It's also a good idea to not allow others to read
+ 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.
+
+
+ 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.
+
+ As discussed above, the security afforded by SENDER checks is minimal,
+ but nevertheless sufficient to keep out most spam and garbage.
+ However, some subscribers post from e-mail addresses other than their
+ subscription address, and users tend to become unfriendly when their
+ posts are denied even though they are subscribers. This is a general
+ solution to this problem which has minimal overhead for the list owner
+ and is essentially completely transparent to the subscriber.
+
+ 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
+ ezmlm-send(1) line. To the ezmlm-gate(1) command line add the list
+ directory twice, then a digest directory D\bDI\bIR\bR/\b/d\bdi\big\bge\bes\bst\bt/\b/ (if it exists),
+ 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
+ moderator.
+
+ With this setup, any message from a SENDER that is a subscriber of the
+ main list, the digest list or added to D\bDI\bIR\bR/\b/a\bal\bll\blo\bow\bw/\b/, will be posted
+ directly, others will be sent to the list owner for approval. If the
+ list wants to automatically approve posts from that address in future
+ (e.g. it is an alias for a subscriber) s/he just adds it to the
+ database in D\bDI\bIR\bR/\b/a\bal\bll\blo\bow\bw/\b/. If the owner wants to approve this post, but
+ not necessarily future posts from that address, s/he just accepts the
+ message. To reject the message with a comment is equally easy. If the
+ owner wished to have the option to silently ignore posts (and not have
+ the SENDER notified that the post timed out), just add the ezmlm-
+ 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.
+
+ In this way, the normal subscriber is always happy and the ``behind
+ the scenes'' work of the owner is minimalized.
+
+ ezmlm-make creates lists with this setup if you specify the ``-u''
+ switch in addition to the ``-m'' switch:
+
+
+
+ % ezmlm-make -mu ~/list ~/.qmail-list joe-list host
+
+
+
+
+ If you omit the ``-m'' switch, the setup will reject posts from non-
+ subscribers that are not in the ``allow'' database. ezmlm-both(1)
+ uses a set of similar ezmlm-make(1) invocations to create a list with
+ digest, optionally making you a remote admin, list owner, and
+ subscriber to both lists.
+
+
+ 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.
+
+
+ 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.
+
+ 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
+ archived version of the message. This works also for sublists. Tags
+ ``<#h#>'', ``<#l#>'', and ``<#n#>'' are replaced by the list host,
+ local name, and current message number, respectively.
+
+
+ 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.
+
+ Put the exact text in D\bDI\bIR\bR/\b/p\bpr\bre\bef\bfi\bix\bx. You can include the message number
+ assigned to the post in the list archive by adding the ``#'' character
+ in the text in D\bDI\bIR\bR/\b/p\bpr\bre\bef\bfi\bix\bx (example: put ``lsqb;listname-#rsqb;'' in
+ D\bDI\bIR\bR/\b/p\bpr\bre\bef\bfi\bix\bx). ezmlm does not modify the subject other than by
+ prefixing it with the prefix. ezmlm knows about rfc2047 encoded
+ subject and can detect a prefix within an encoded word. However, ezmlm
+ will not modify the subject itself. It will add a prefix only of none
+ has been added before. A consequence of this is that a message will
+ have the message number prefix of the first message in the thread
+ rather than a prefix with the number of the message itself. The entire
+ thread can always be retrieved with a message to list-thread-x@host,
+ where ``x'' is the number in the prefix.
+
+ We recommend against using the prefix feature and strongly against the
+ message number prefix. If you use it, make sure you understand the
+ drawbacks, of message modification and subjects that change between
+ message and reply. ezmlm can deal with this, but other programs may
+ not be able to.
+
+ Sublists ignore D\bDI\bIR\bR/\b/p\bpr\bre\bef\bfi\bix\bx.
+
+ If you add a prefix, especially if you previously added it by other
+ means (procmail, etc.), use ezmlm-idx to re-index the archive. Due to
+ the way ezmlm-get(1) does threading from the subject, it works best if
+ you use exactly the same prefix as you did before.
+
+
+ 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.
+
+ 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
+ like a ``Precedence: bulk'' header added to outgoing messages, put a
+ line ``Precedence: bulk'' into D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\bra\bad\bdd\bd. This particular header
+ is already added via the default ezmlmrc(5). Any modifications you
+ wish to be active for all future lists should be made via modification
+ of ezmlmrc(5) (see ``Customizing ezmlm-make operation''). As of
+ 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
+ will be substituted: <#n#> for the current message number, <#l#> for
+ the local part of the list (this will be the digest list for digests),
+ <#h#> for the host part of the list name. These substitutions are done
+ at the time of message delivery, in contrast to the ``capital letter''
+ tags substituted by ezmlm-make(1) when the list is set up.
+
+
+ 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.
+
+ Don't! A sequence header may be useful for users whose systems don't
+ pass on the ``Return-to:'' header to the MUA.
+
+ 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#>''.
+
+ Bounced messages are identified by their local message numbers, i.e.
+ when ezmlm sends you a message about which messages bounced, it refers
+ to the message number of the sublist. To be consistent with these
+ numbers, and a local sublist archive, use D\bDI\bIR\bR/\b/s\bse\beq\bqu\bue\ben\bnc\bce\be on the sublist,
+ not the main list. To get consistent message numbering in digests,
+ digest have the message number of the first message in the digest.
+
+ ezmlm-idx tries to make message numbering problems with sublists a
+ little easier: sublists use the incoming message number, but only when
+ the sublist is not archived and not indexed. This restriction is
+ necessary for security reasons. Otherwise, an attacker could wreak
+ havoc in the local message archive by sending messages with faked
+ message numbers in the SENDER.
+
+ 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.
+
+ 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.
+
+
+ 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.
+
+ ezmlm-idx>=0.30 can strip parts from composite mime messages based on
+ content type. Just put the appropriate content-types such as
+ ``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
+ automatically configured when using the ezmlm-make(1) ``-x'' switch.
+
+
+ 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.
+
+ Sendmail still is being used on the majority of mail hubs. Sendmail
+ has very primitive loop detection, bouncing messages based on
+ excessive ``hopcount''. The ``hopcount'' is determined by counting
+ ``Received:'' headers. ezmlm by default propagates ``Received:''
+ headers to facilitate message tracking. Thus, messages, especially
+ from a sublist, can have a number of ``Received:'' headers that
+ exceeds the ``hopcount'' set on poorly configured sendmail hosts.
+ Subscription confirmation requests, warning, and probe messages have
+ fewer ``Received:'' headers. Thus, a user may be able to receive
+ these, but not (some of the) list messages. Of course, the best is to
+ correct the configuration on the bouncing host, but this is often
+ under the control of neither list owner nor user.
+
+ To compensate for this problem, ezmlm-send(1) of ezmlm-idx->=0.313 by
+ default removes all ``Received:'' headers except the top one. They
+ are still written to the archive, an can be retrieved from there using
+ the ``-getv'' command. To cause ezmlm-send(1) to pass on all the
+ ``Received:'' headers, use the ezmlm-send(1) ``-r'' switch.
+
+
+ 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.
+
+ This is not recommended, since it leads to dissemination via the list
+ of messages returned from bad auto-responders and MTAs. Also, it may
+ lead to public replies to the list where personal replies were
+ intended. In addition, the original ``Reply-To:'' header is lost. If
+ you do want to add a reply-to list header, put ``reply-to'' into
+ 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.
+
+
+ 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
+ s\bse\ben\bnd\bde\ber\br.\b.
+
+ For most mailing lists, you want all subscribers, including the sender
+ of a particular message, to get all messages. This way, the sender
+ sees that the message reached the list. For small lists, such as a
+ project group, it may be annoying for the members to receive their own
+ posts.
+
+ ezmlm-send(1) can be configured to exclude the sender from the
+ recipient E-mail addresses if configured with the ``-C'' switch. To
+ add this switch, edit the ezmlm-send(1) line of D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br.
+
+
+ 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.
+
+ Most of ezmlm's more commonly used messages are stored in D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/.
+ These messages can be edited manually for a list once it is set up, or
+ on a global basis via modification of e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b). The messages may
+ also be edited via E-mail by remote administrators (remote admin must
+ also be enabled - ezmlm-make switch ``-r'') after the list is
+ established by creating the list using the ezmlm-make(1) ``-n'' (new
+ text files) (see ``How text file editing works'' and see ``Customizing
+ ezmlm-make operation'').
+
+ 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
+ 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
+ as the traditional ``welcome'' message, or a list charter or list
+ 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
+ to frustrated users unsuccessful in their unsubscribe attempts;
+ 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
+ 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
+ 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
+ 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
+ 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''
+ section of digests.
+
+
+ 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-
+ g\bgo\boi\bin\bng\bg e\bez\bzm\bml\blm\bm m\bme\bes\bss\bsa\bag\bge\bes\bs.\b.
+
+ All ezmlm replies, except errors handled directly by qmail, can be
+ sent in any character set and optionally with quoted-printable or
+ base64 content-transfer-encoding. D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/ files are always 8-bit
+ files, but even though qmail has no problems with 8-bit mail, other
+ MTAs and MUAs do. Problems due to this can be avoided by assuring
+ that outgoing ezmlm messages are 7bit by using the appropriate
+ content-transfer-encoding.
+
+ To specify a character set, put the name in D\bDI\bIR\bR/\b/c\bch\bha\bar\brs\bse\bet\bt (default: us-
+ ascii). To specify quoted-printable or base64 content-transfer-
+ encoding, add ``:Q'' or ``:B'' after the character set name in
+ D\bDI\bIR\bR/\b/c\bch\bha\bar\brs\bse\bet\bt.
+
+
+ 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.
+
+
+ 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.
+
+ Add a format (f) specifier after the archive retrieval command:
+
+
+
+ list-getf@host
+
+
+
+
+ where ``f'' is ``r'' for rfc1153 format, ``m'' (mime; default) for
+ MIME multipart/digest with subset of ordered headers, and ``v'' (vir-
+ gin) MIME multipart/digest, i.e. with all headers retained from the
+ archive, and ``n'' (native) the same as ``v'' except that no threading
+ is performed and messages are returned in numerical order. Under some
+ circumstances, it may be preferable to have a digest in ``multi-
+ part/mixed''. The ``x'' (mixed) format is identical to ``m'' except
+ for this header.
+
+ For ezmlm-cron(1), just suffix the format code to the digest code.
+
+
+ 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
+ r\bre\bet\btr\bri\bie\bev\bva\bal\bl.\b.
+
+ The ezmlm-get(1) ``-f'' switch can be used to change the default
+ format (MIME with removal of less relevant headers) to other formats.
+ The format specifiers are the same as for individual archive
+ retrievals (see ``Specifying the format for retrieved messages'').
+
+
+ 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.
+
+ By default, a single -get request returns a maximum of 100 messages,
+ and a single -index request 2000 subjects entries (20 files of 100
+ subjects entries each). This can be changed by editing MAXGET, and
+ 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,
+ 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
+ users won't get confused.
+
+
+ 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.
+
+
+ 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.
+
+ If you use ezmlm-get(1), archive retrieval can be restricted by using
+ the ezmlm-make(1) ``-g'' (guard archive) switch. This in turn sets
+ ezmlm-get(1) up with its ``-s'' switch, allowing access only to
+ addresses that are subscribers of the list, or of the digest list, or
+ that are present in an extra address database stored in D\bDI\bIR\bR/\b/a\bal\bll\blo\bow\bw/\b/.
+ Addresses can be added remotely by mailing list-allow-
+ useralias=userhost@listhost. Other commands, such as ``subscribe''
+ work as expected. As you can see, the different programs have many
+ options and ezmlm-make(1) organizes most of them into the most useful
+ sets to make it easier. Don't hesitate to look at the ezmlmrc(5) man
+ page and man pages for individual commands. There are many useful
+ options to more finely tune your lists to your taste. Via modification
+ of ezmlmrc(5) you can make your favorite options the default!
+
+ Since ezmlm-get always sends the reply to SENDER, this assures that
+ only subscribers can get archive excerpts. Since SENDER is easily
+ faked, anyone can still request archive info (and drain system
+ resources), but replies go only to subscriber E-mail addresses. The
+ D\bDI\bIR\bR/\b/a\bal\bll\blo\bow\bw/\b/ database can be used to manually add addresses that should
+ be given archive access, but are not subscribers. This may be an
+ address of a subscriber who posts from an address other than his or
+ her subscription address.
+
+
+ 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.
+
+ If you want to disable all archive retrieval except digest creation,
+ simply add the ``-C'' command line switch to the ezmlm-get(1) line in
+ D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. If you don't want digest creation via trigger messages
+ and D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br, but use other means to created digests, you can
+ remove the ezmlm-get(1) line from D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br.
+
+
+ 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.
+
+ If D\bDI\bIR\bR/\b/p\bpu\bub\bbl\bli\bic\bc does not exist, ezmlm-manage(1) and ezmlm-get(1) modify
+ their behavior. They disallow user requests, but for remote
+ administration lists, honor moderator requests. Thus, for a remote
+ admin list without D\bDI\bIR\bR/\b/p\bpu\bub\bbl\bli\bic\bc, only subscription moderators or remote
+ administrators can receive archive retrievals and only remote
+ administrators can subscribe and unsubscribe user addresses.
+
+ If you'd like this restriction of archive retrieval with maintained
+ user-initiated ezmlm-manage(1) subscription functions, use the ezmlm-
+ get(1) ``-P'' (not public) switch, and retain D\bDI\bIR\bR/\b/p\bpu\bub\bbl\bli\bic\bc. Also, look
+ at the ezmlm-make ``-b'' switch.
+
+
+ 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.
+
+ A non-public list lacks D\bDI\bIR\bR/\b/p\bpu\bub\bbl\bli\bic\bc. ezmlm-manage(1) will reject user
+ requests for (un) subscription and for archive retrieval. The
+ restriction on archive retrieval can be removed with the ezmlm-get(1)
+ ``-p'' (public) switch.
+
+
+ 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.
+
+
+ 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.
+
+ Digests are integrated with normal ezmlm lists if you use ezmlm-
+ idx>=0.30. Just add the ezmlm-make(1) ``-d'' switch to your list
+ setup. To add digests to an existing list created with ezmlm-idx>=0.23
+ use:
+
+
+ % ezmlm-make -+d DIR
+
+
+
+
+ For ezmlm-0.53 or older lists, you just need to re-specify also other
+ switches and the other ezmlm-make(1) arguments.
+
+
+ 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.
+
+ The easiest way to generate trigger messages is to use crond(8) and
+ execute ezmlm-get(1) daily. To do this, create the list with:
+
+
+ ezmlm-make -d dir dot local host
+
+
+
+
+ and add a line to your crontab file:
+
+
+ 30 04 * * * ezmlm-get dir
+
+
+
+
+ and execute crontab(1). This will generate a digest each day at 04:30
+ am. In addition, a digest will be generated at any time when the lat-
+ est post makes it more than 30 messages or more than 64 kbytes of mes-
+ sage body since the latest digest. If you do not want these extra
+ digests, edit D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br and remove the ezmlm-tstdig(1) and ezmlm-
+ get(1) lines.
+
+ If you do not need the digests to go out at a particular time, use the
+ standard setup, but edit D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br to put ``-t 24'' on the ezmlm-
+ tstdig(1) line instead of the default ``-t 48'' for 48 hours. This is
+ even easier. You can modify all parameters by editing e\bez\bzm\bml\blm\bmr\brc\bc or by
+ using the ezmlm-make(1) ``-4'' argument when creating/editing the
+ list. This is described in the ezmlm-make(1) man page, and the options
+ etc, are described in the ezmlm-tstdig(1) man page.
+
+
+
+
+
+ 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.
+
+ If you want the first digest to start with issue 1 and the first
+ message in your archive, no special action is required.
+
+ If you want the first digest to start at message 123 and you have
+ shell access, put '122' into D\bDI\bIR\bR/\b/d\bdi\big\bgn\bnu\bum\bm.
+
+ If you want the next digest to start at message 456, you can always
+ edit D\bDI\bIR\bR/\b/d\bdi\big\bgn\bnu\bum\bm to contain '455'. If you want the next digest to be
+ named issue 678, put '677' into D\bDI\bIR\bR/\b/d\bdi\big\bgi\bis\bss\bsu\bue\be.
+
+
+ 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.
+
+ 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''
+ section of the digest. This information can be customized on a
+ 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
+ editing ~\b~/\b/.\b.e\bez\bzm\bml\blm\bmr\brc\bc, or for the list by directly editing the
+ 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
+ via e-mail, if the list has been set up using the ezmlm-make(1)
+ ``-nr'' switches (see ``How text file editing works'').
+
+
+ 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.
+
+ You can control the default format that ezmlm-get(1) uses for its
+ output by using the ``-f x'' switch. For individual digests triggered
+ by mail or other archive access, add a format specifier after the
+ digestcode:
+
+
+
+ list-dig.codef@host
+
+
+
+
+ For example:
+
+
+
+ joe-sos-dig.gagax@id.com
+
+
+
+
+ where ``x'' is ``r'' for rfc1153 format, ``m'' (default) for MIME mul-
+ tipart/digest with a subset of headers, ``v'' for virgin MIME multi-
+ part/digest, i.e. with all headers retained from the archive, ``n''
+ produces format similar to ``v'', without threading and with messages
+ in numerical order. The ``x'' format is identical to the default ``m''
+ format, but the digest content-type is ``multipart/alternative''
+ rather than ``multipart/digest''. This helps with a pine bug if you
+ are using quoted-printable/base64 encoding of ezmlm messages.
+
+ With digests triggered directly from crond(8), just use the ``-f''
+ format specifier:
+
+
+ ezmlm-get -fx DIR
+
+
+
+
+ The same switch can also be used for standard digest triggering from
+ D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br. Just add the ``-fx'' switch to the ezmlm-get(1) command
+ line there. Edit ~\b~/\b/e\bez\bzm\bml\blm\bmr\brc\bc to assure that such customizations will be
+ used for future list creations/edits.
+
+
+ 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.
+
+ The time out for bounce messages is normally 11.6 days. This means
+ that a bad address will take longer that 3 weeks to be removed.
+ Usually, this delay is desirable. After all, it is much worse to
+ remove a subscriber just because the address had temporary problems
+ that to send a few extra messages and receive a few extra bounces.
+
+ However, for large lists, bounce handling can consume a considerable
+ amount of resources. To decrease the load, remove all ezmlm-warn(1)
+ 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:
+
+
+ /path/ezmlm-warn DIR
+ /path/ezmlm-warn -d DIR
+
+
+
+
+ daily during off-peak hours via a cron script. The second line can be
+ omitted if you are not using the digest capability of the list.
+
+ This should not be necessary for ezmlm-idx>=0.32. That version adds
+ much more efficient bounce handling, making this type of modification
+ usable only for extremely large lists with many bad addresses (unusual
+ for ezmlm lists) and for hosts that are working near the limit of
+ their capacity (where shifting some qmail load to off-peak hours is
+ worth the effort).
+
+ In addition, you may want to reduce the time out for bounces from 11.6
+ to a lower number of days, e.g. 5. To do so, add ``-t 5'' to the
+ ezmlm-warn(1) command line.
+
+ If you start with a list from a list manager that does not have bounce
+ handling, chances are that you have many bad addresses in your list.
+ You can always execute:
+
+
+ /path/ezmlm-warn -t0 DIR
+ /path/ezmlm-warn -d -t0 DIR
+
+
+
+
+ to move bounce handling one step forward per execution. Users whose
+ mail has bounced will be sent a warning. Users for whom the warning
+ message has bounced will be sent a probe.
+
+
+ 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.
+
+
+ 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?
+
+ On any list, the D\bDI\bIR\bR/\b/a\bal\bll\blo\bow\bw/\b/ database can be manipulated remotely via
+ mail to list-allow-subscribe@listhost, etc. The rules for
+ adding/removing/listing addresses to this database are the same as for
+ the main list. Thus, if a user on an open list wants to be able to
+ post from alias@al.host.com s/he can send a message to list-allow-
+ subscribe-alias=al.host.com@listhost and reply to the confirmation
+ request. Now, s/he can post from this address even on a subscriber-
+ only list and even though the address is not a real subscriber.
+
+ It can be confusing to some users that you use ``subscribe'' here, but
+ you don't get any messages. If you explain to them that this is just
+ another collection of addresses they will understand. You can also
+ send the initial message on their behalf. If you are a remote admin,
+ you can even complete the transaction adding the alias without
+ subscriber participation.
+
+ Addresses can also be unsubscribed from the ``allow'' database.
+ However, there is usually no good reason to do so.
+
+ If configured, the D\bDI\bIR\bR/\b/d\bde\ben\bny\by/\b/ database can be manipulated, but only by
+ remote administrators, by mail to e.g. list-deny-
+ baduser=badhost@listhost. Normal users cannot access this database.
+
+ To remotely administrate the D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/ databases (i.e., without shell
+ access), you need to set up a non-public, remotely administered list
+ 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
+ _\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
+ _\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.
+
+ After setting up your list with the specific functionality you need,
+ use the following command for D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/:
+
+
+ % ezmlm-make -ePrIAl ~/list/mod ~/.qmail-list-mod joe-list-mod host
+
+
+
+
+ The '-l' flag is not necessary, but makes it easier to administrate
+ your moderator database by permitting the ``supermoderator'' to see
+ who is on the list.
+
+ The new list does not have a key. Using the key from the main list is
+ inadvisable. Instead, create a dummy list, copy the key from this list
+ to your ``moderator'' list:
+
+
+ % cp ~/DUMMY/key ~/DIR/mod/key
+
+
+
+
+ Erase the dummy list. Also, posts to this list should not be allowed.
+ 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
+ administrator of the ``moderator'' list:
+
+
+ % ezmlm-sub ~/list/mod/mod supermod@superhost
+
+
+
+
+ The ``supermoderator'' can now remotely administrate the moderators of
+ the main list.
+
+
+ 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.
+
+ Request for moderation of posts can be forwarded to any address and
+ acted on from that address. By default, all post moderation requests
+ have subjects starting with ``MODERATE for'' followed by the list
+ name.
+
+ 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.
+
+ Requests for moderator approval of user subscribe requests can be
+ forwarded to any address and acted on from that address. All
+ subscription moderation requests have subjects starting with
+ ``CONFIRM'' (or ``CONFIRM subscribe to listname'', since ``CONFIRM
+ unsubscribe from listname'' is sent to the moderator only in reply to
+ a moderator-initiated request on a list with remote admin).
+
+ Remote administration (initiation by the moderator of (un)subscribe
+ requests on behalf of a user) CANNOT be initiated from an account that
+ is not listed in the moderator database. If such attempts are made,
+ these will be treated as regular requests, resulting in a confirm
+ request to the user (which includes a copy of the initial request,
+ revealing the moderator's address to the user). The user reply to a
+ confirm request will on a non-moderated list result in the addition of
+ the user address to the subscriber list, and in a moderated list a
+ CONFIRM request to all the moderators. Replies to unsubscribe confirm
+ requests always result in the removal of the address, without
+ moderator intervention (except in some cases when the ezmlm-manage -U
+ switch is used (see below)). With this caveat, moderation and remote
+ administration can be done from a secondary address.
+
+ For the subscription moderator to temporarily use a different address,
+ s/he needs to forward all ``CONFIRM'' messages to the new address. For
+ a permanent move, it is better to remove the old moderator address and
+ add the new SENDER address to allow moderator-initiated (un)subscribes
+ without user intervention from the new address (of course, the list
+ has to be configured for remote administration with D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be).
+
+
+ 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.
+
+ Sometimes, it may be desirable for the moderator to automatically
+ approve all moderation requests. This may be appropriate for a single
+ moderator of a ``civilized'' list when away for the week.
+
+ Set up your client to auto-reply to the ``Reply-To:'' address for all
+ messages with subjects ``CONFIRM subscribe to listname'' or ``MODERATE
+ for listname''. Beware that this can be used by malicious people to
+ trick your account to send mail anywhere. In practice, this should
+ not be a problem. If you are worried, forward the messages to a
+ (trusted) friend and ask him/her to appropriately reply to the
+ requests.
+
+
+ 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.
+
+ Access to the subscriber list is sensitive. Thus, this option is
+ disabled by default. The ezmlm-manage(1) ``-l'' command line switch
+ enables this option, but will send a subscriber list only to a
+ moderator's address. This allows a moderator to also initiate a
+ subscriber list retrieval from a secondary account (i.e. one to which
+ the moderator's mail is delivered, but for which SENDER is not a
+ moderator). The latter option does not decrease security, as it is
+ trivial to fake SENDER (see ``Ezmlm-idx security'' for a discussion of
+ ezmlm-idx security aspects).
+
+ For maximum subscriber list security, do not enable this feature. To
+ enable this feature by default, just modify e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) (see
+ ``Customizing ezmlm-make operation'').
+
+
+
+
+
+ 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-
+ s\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn l\blo\bog\bg.\b.
+
+ This is restricted and works as the subscriber list, since it contains
+ information of equal sensitivity. To receive the entire log, mail
+ list-log@listhost. See ``Howto get a subscription log'' for more
+ details on the reply format. As of ezmlm-idx-0.32, the subscription
+ log also contains the From: line contents from the user's subscribe
+ confirmation. This usually contains the user's name and can be helpful
+ if the user cannot recall or determine the subscription address. To
+ make life easier for the remote admin, ezmlm-idx-0.32 also supports
+ searching the log, using exact matches for alphanumerics and ``_'' as
+ a wild card character. Thus, to find records matching ``Keith John*'',
+ the remote admin can mail list-log.Keith_John. See ``Howto get a
+ subscription log'' for more information.
+
+
+ 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.
+
+ If you want any user to be able to get a subscriber list, you can set
+ up a separate link to D\bDI\bIR\bR/\b/l\bli\bis\bst\bt and then put in a script using ezmlm-
+ list (See ``adding your own commands'' for more info.) . The authors
+ strongly urge against this, since a common method for spammers to get
+ valid E-mail addresses from mailing lists is to exploit unrestricted
+ -list commands. A subscriber with questions about who is on the list
+ should contact the list-owner@host. A subscriber wishing to confirm
+ that they are still on the list can just send a message to list-
+ subscribe@listhost, and reply to the confirm request. The following
+ message will be a ``ezmlm response'' if the user was already a
+ subscriber, and a ``WELCOME to listname'' if s/he was not.
+
+
+ 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.
+
+ Put the time, in hours, into D\bDI\bIR\bR/\b/m\bmo\bod\bdt\bti\bim\bme\be. This value may not exceed
+ the range of 24-120 h set at compile time by the defines in i\bid\bdx\bx.\b.h\bh.
+
+
+ 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.
+
+
+
+ % ls -l DIR/mod/pending
+
+
+
+
+ and count lines with the owner execute bit set (rwx------). Others
+ are remnants from failed ezmlm-store runs (ignore - ezmlm-clean(1)
+ will remove them).
+
+ There is currently no way to see this remotely, although you could
+ easily install a script mailing the 'ls' output in response to a
+ 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
+ your own commands'' for examples.)
+
+
+ 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.
+
+ Set up a moderator dir:
+
+
+
+
+
+
+ % mkdir /path/moddir /path/moddir/subscribers
+ % touch /path/moddir/lock
+ % chown -R user /path/moddir
+
+
+
+
+ For alias:
+
+
+
+ # chown -R alias /path/moddir
+
+
+
+
+ For example:
+
+
+
+ % mkdir ~joe/mods ~joe/mods/subscribers
+ % touch ~joe/mods/lock
+
+
+
+
+ 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
+ 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
+ exist), and D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt (for moderation of messages).
+
+ For example:
+
+
+
+ % echo "/home/joe/mods" > ~joe/DIR/modsub
+
+
+
+
+ _\bN_\bO_\bT_\bE_\b: The path must start with a '/'.
+
+
+ 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-
+ a\bat\bti\bio\bon\bn.\b.
+
+ Proceed as in the previous point, but set up two different moddirs.
+ Naturally, one of these can be D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/ (preferably the one for posts,
+ to keep it cleaner). Then modify the appropriate files (D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt
+ and D\bDI\bIR\bR/\b/m\bmo\bod\bds\bsu\bub\bb) to contain absolute paths to the correct moddir.
+
+
+ 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
+ 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
+
+ This is done by crating a list that has D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/ as it's main list
+ directory, then adding the ``super moderator'' to D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/m\bmo\bod\bd/\b/ (see
+ ``remotely adding moderators'').
+
+ If this is a common setup for you, you can write a simple script
+ creating both lists (plus a digest list, if desired) with one simple
+ action (see ezmlm-both(1) for an example).
+
+
+
+
+
+ 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.
+
+ Subject lines, and other ezmlm output for moderation are controlled by
+ 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
+ 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
+ ``Customizing ezmlm-make operation'').
+
+ You can also configure the list to allow remote administrators to edit
+ files in D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/ via E-mail (see ``How text file editing works'').
+
+
+ 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.
+
+ All you have to do is to pipe the corresponding message to ``ezmlm-
+ 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/.
+ To find a particular file, grep the contents. Thus, to find a file
+ from user@host.dom, try:
+
+
+
+ % grep 'user@host\.dom' DIR/mod/pending/*
+
+
+
+
+ (Depending on your setup, you may not have to escape the period.)
+ Check the files for the owner execute (``x'') bit. It is set on all
+ messages queued successfully. Ignore other files!
+
+ To then accept the message (change the ezmlm-send(1) path if you've
+ installed in a non-default directory):
+
+
+
+ % cat DIR/mod/pending/filename \
+ % /usr/local/bin/ezmlm/ezmlm-send DIR
+
+
+
+
+ Alternatively, use ezmlm-accept(1). It checks the 'x' bit, ezmlm-
+ send(1) return codes, removes the file, etc.
+
+ For example:
+
+
+
+ % ezmlm-accept ~joe/SOS ~joe/SOS/pending/*
+
+
+
+
+ will accept all messages in the queue of the list in ~\b~j\bjo\boe\be/\b/S\bSO\bOS\bS/\b/.
+
+
+ 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.
+
+ 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
+ to notify the sender, just send him/her an E-mail. There is an easy
+ way to get ezmlm-idx programs to do it for you: just wait and let
+ ezmlm-clean(1) take care of it for you, once the message has timed out
+ (number of hours settable within 24-240 in D\bDI\bIR\bR/\b/m\bmo\bod\bdt\bti\bim\bme\be; default 120).
+
+
+
+
+ 1\b14\b4.\b. S\bSu\bub\bbl\bli\bis\bst\bts\bs.\b.
+
+ A sublist is a list that receives its input from another mailing list,
+ rather than from users directly. The sublist is just a regular
+ subscriber of the main list. A sublist in e.g. Tasmania is very useful
+ since only one message is sent from the main list and then the
+ sublists servers all subscribers in Tasmania. Bounces and all
+ administration is handled locally. The local sublist can have a
+ digest, even though the main list may not. (See ``How sublists work''
+ for more info on how sublists work).
+
+
+ 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.
+
+ To set up a sublist to an ezmlm list, just use the ezmlm-make ``-5
+ mainlist@mainhost'' switch. This will configure your list as a sublist
+ to the mainlist@mainhost mailing list.
+
+
+ 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.
+
+ To set up a sublist to an ezmlm list, just use the ezmlm-make ``-5
+ mainlist@mainhost'' switch. This will configure your list as a sublist
+ to the mainlist@mainhost mailing list. Since the main list may not use
+ the ``Mailing-List'' header, you must identify another header that the
+ main list adds to all messages. See the ezmlm-reject(1) man page for
+ examples. Next, edit D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br of your sublist and add a ``-h
+ _\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
+ 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.
+
+ Now your list will accept only messages from mainlist@mainhost and
+ with the header specified.
+
+
+ 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
+ d\bda\bat\bta\bab\bba\bas\bse\bes\bs.\b.
+
+ ezmlm-0.53 allows sublists. The difference between a sublist and a
+ main list is that the sublist requires that the SENDER of the message
+ is the main list and that the message has a ``Mailing-List:'' header.
+ Sublist messages have their own subscriber database and subscription
+ mechanism, and use their own message number. This is very convenient
+ if you want to create a private sublist. Since the subscribers have
+ to interact with the appropriate sublist, it is difficult to
+ administrate if you want to use it to distribute the load of a very
+ large list, since users will have to address administrative requests
+ such as unsubscribe to the correct sublist. Also, bounce messages
+ refer to the sublist archive with sublist message numbers.
+
+ ezmlm-idx modifies this in several ways: First, the message number of
+ the incoming message is used also for the outgoing message so that
+ subscribers see the same message number no matter which sublist they
+ get it from. For security reasons, this is enabled only if the sublist
+ is NOT ARCHIVED. With this feature, bounce messages can refer the user
+ to the main list archive instead, obviating multiple archives.
+
+ Second, ezmlm-split(1) can be used to forward administrative requests
+ sent to the main list, to the appropriate sublist. Thus, subscribers
+ interact only with the main list, and do not need to know which
+ sublist that servers them. With bounce and administrative messages
+ referring them to the main list, subscribers will usually be unaware
+ of the sublisting.
+
+ To set this up:
+
+
+ +\bo
+
+ c\bcr\bre\bea\bat\bte\be t\bth\bhe\be m\bma\bai\bin\bn l\bli\bis\bst\bt
+
+
+ ezmlm-make dir dot local host
+
+
+
+
+ +\bo
+
+ 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
+ Before the ezmlm-manage(1) line in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br add:
+
+
+ |/path/ezmlm-split dir
+
+
+
+
+ +\bo
+
+ 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
+ The main list sends to sublists and to any addresses not covered
+ by the split table. You can split the load by domain
+ (``geographically''), and any domain (including '') can be
+ subdivided by ``hash'' by using different parts of the 0-52
+ range. Of course, you can also use hash alone. The request will
+ go to the first row that matches, so although overlaps are not
+ advisable (in case you later want to add sublists of switch to
+ an SQL server-based system (see ``'')), they have no negative
+ effects. The domain for ezmlm-split can be the last TWO parts,
+ i.e. ``edu.wustl'' to handle all *.wustl.edu subscribers. This
+ is useful, but remember that the SQL version supports only one
+ level.
+
+ An example:
+
+
+ domain:hash_lo:hash_hi:sublistname
+ edu:0:52:sub1@here.edu
+ com:0:26:sub2@there.net
+ com:27:52:sub3@some.com
+ :0:13:sub4@what.org
+ :14:39:sub5@what.org
+
+
+
+
+ As you can see, the entire ``edu'' domain is handled by
+ sub1@here.edu. The ``com'' domain is about evenly split between
+ sub2@there.net and sub3@some.com. Everything else is split so that
+ approximately 1/4 goes to sub4@what.org, 1/2 to sub5@what.org and
+ the rest falls through, i.e. is handled by the main list.
+
+ Why are there 2 sublists on the same host? This is in preparation
+ of adding a host. It easy to just move the entire sub5@what.org
+ list to a new host. All we have to do it to set up the new list,
+ copy over the subscribers, and change the name in the split table
+ entry.
+
+ To split the split the sub5@what.org load onto 2 lists requires a
+ little more work. First, create a dummy split table in a directory
+ ``temp'':
+
+ :14:26:new1@new.net
+ :27:39:new1@other.net
+
+
+
+
+ Next, split the subscribers of sub5@what.org into these 2 groups,
+ as detailed in the ezmlm-split(1) man page. Create the two new
+ lists, add the respective subscribers, and replace the
+ sub5@what.org line with the two lines above.
+
+ To add a totally new domain, e.g. jp:0:52:sub6@niko.jp requires
+ collection or subscribers from all lists that currently handle
+ these subscribers, (the ones with blank domain in the example), re-
+ splitting them, and adjusting the subscribers. Easiest here is to
+ just unsubscribe the sub6@niko.jp subscribers to be from the other
+ list with ezmlm-sub(1). Since that program will silently ignore
+ any addresses that are not on the respective list, it will work
+ fine.
+
+ +\bo
+
+ C\bCr\bre\bea\bat\bte\be t\bth\bhe\be s\bsu\bub\bbl\bli\bis\bst\bts\bs
+ Use ezmlmsubrc which sets up a minimal non-archived sublist with
+ bounce texts pointing to the main list:
+
+
+
+ % ezmlm-make -Cezmlmsubrc -3mainlocal -4mainhost \
+ DIR dot sub1local sub1host
+
+
+
+
+ +\bo
+
+ 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
+ If you forget, the sublist will not get any messages to
+ distribute. Add these addresses with ezmlm-sub(1) as subscribers
+ to the main list.
+
+ A strong point of this system is that it is relatively simple and that
+ only a fraction of the addresses are available to any given sublist.
+ Thus, compromised security at a sublist threatens only the addresses
+ and functions handled by that sublist.
+
+ As you can see, this works quite well, but it's not trivial to change
+ the setup. If you modify it while the list is running, some
+ subscribers may get duplicate messages or miss messages. Therefore,
+ you should disable deliveries to the main list before the final step
+ of the changes (removal of subscribers from old lists and adding new
+ lists as subscribers to the main list). For most lists, this should
+ work flawlessly, and some minimal planning and extra lines in
+ ``split'' can markedly facilitate future expansion.
+
+ Another weak point is the authentication of messages between list and
+ sublist. The requirements the sublist places on the message can be
+ easily faked. This allows injection of messages at the sublist level
+ as a way to circumvent moderation or other access control.
+
+ An associated disadvantage is that not even the main list has access
+ to all the addresses. Thus, SENDER checks for archive access
+ (relatively secure) and posts (relatively insecure) cannot directly be
+ used. Also, sublist cooperation is required to determine the number of
+ subscribers, or to access subscriber addresses for a purpose other
+ than distribution of list messages.
+ 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.
+
+ This section describes differences and similarities between ezmlm and
+ other mailing list managers. It also details functions of ezmlm-idx
+ that allow you to configure ezmlm to respond to commands utilized by
+ such other mailing list managers so the command syntax will be
+ familiar to such users. Contributions to complete this sections are
+ welcome.
+
+
+ 1\b15\b5.\b.1\b1.\b. B\bBa\bas\bsi\bic\bc C\bCo\bon\bnc\bce\bep\bpt\bts\bs.\b.
+
+ Ezmlm is different from other mailing list managers in that it is
+ _\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,
+ you address the list directly with administrative commands. With
+ ezmlm, the command is embedded in the list address thus becoming part
+ of it (i.e., the ``command address''.) With smartlist, again you
+ address the list, but send all administrative commands to the list-
+ request address. Ezmlm lists can support this if you use the ezmlm-
+ make(1) ``-q'' switch to configure ezmlm-request(1) in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br.
+
+ Other mailing list managers are _\bh_\bo_\bs_\bt_\b-_\bc_\be_\bn_\bt_\br_\bi_\bc, i.e. administrative
+ commands for any list on that particular host are addressed to a
+ central address such as majordomo@host, listserv@host, or
+ listproc@host. Then the user is required to place the command in
+ either the subject header or more commonly in the body text of the
+ message. The listname has to be included with the command. [_\bN_\bo_\bt_\be_\b: The
+ above concept is not universally applicable to all host-centric
+ mailing lists. While intended to to used in a host-centric manner,
+ many such mailing list managers also support listname-request@host
+ addressing. See the applicable list manger documentation for details.
+ Coverage of this aspect of other mailing list manager functionality is
+ beyond the scope of this FAQ.] To make the migration to ezmlm easier,
+ support for a _\bh_\bo_\bs_\bt_\b-_\bc_\be_\bn_\bt_\br_\bi_\bc style mailing list manger is available.
+ This is based on the use of ezmlm-request(1) with the ``-f
+ c\bco\bon\bnf\bfi\big\bg_\b_f\bfi\bil\ble\be'' switch.
+
+
+ 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.
+
+ ezmlm-request(1) can be used a a ``majordomo/listserv-emulator''. You
+ can create the necessary accessory files manually. However, ezmlm-
+ idx>=0.32 contains ezmlmglrc(5) which makes is very easy for you:
+
+
+ % su
+ # su alias
+ # ezmlm-make -C/usr/local/bin/ezmlmglrc dir dot local host
+
+
+
+
+ where ``local'' may be e.g. ``majordomo''. Even easier is to set it up
+ under a virtual domain ``host'' controlled by a user ``user''. Just
+ put ``user'' in place of ``alias'' in the example.
+
+ If you use a character set other than US-ASCII, put it's name,
+ optionally followed by ``:'' and the desired content-transfer-encoding
+ character (``Q'' for quoted-printable and ``B'' for base64) into
+ e\bez\bzd\bdo\bom\bmo\bo/\b/c\bch\bha\bar\brs\bse\bet\bt.
+
+ 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
+ lists (local and/or remote) that you want to make accessible via this
+ interface. Another script, ezmlm-glconf(1) can help you with this for
+ your local lists. To configure for all your lists:
+
+ ezmlm-glmake ~/ > ~/dir/ezdomo.cf
+
+
+
+
+ See man page for details. Alternatively, do it manually:
+
+ 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
+ ``majordomo'' (in this case) can provide information about in the
+ following syntax:
+
+
+ list@host:listdir:description
+
+
+
+
+ To show a list in ``lists'', but not include it in a ``which'' search,
+ simply omit the ``listdir'' for that line:
+
+
+ list@host::description
+
+
+
+
+ For the ``which'' command to work, the D\bDI\bIR\bR/\b/, which contains the
+ subscriber database, must be readable by the user under which mail is
+ delivered. This means that ``which'' is usually limited to lists owned
+ by the user or virtual domain under which the ``ezdomo'' interface is
+ set up.
+
+
+ 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.
+
+
+ 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.
+
+ When set up as above, substituting ``listproc'' or ``listserv'' for
+ ``majordomo'' as appropriate, ezmlm will recognize and respond to the
+ following commands placed in the body of the e-mail with the syntax
+ 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.
+
+ 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]
+
+
+ S\bSu\bup\bpp\bpo\bor\brt\bte\bed\bd c\bco\bom\bmm\bma\ban\bnd\bds\bs
+ subscribe, sub, unsubscribe, unsub, list, help, review.
+
+ 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
+ All ezmlm commands, such as ``thread'', ``index'' and ``get'' as
+ well as the list owner's commands.
+
+ This interfaced makes information available via command messages to
+ the appropriate mailing list. Thus, ``list'' and ``review'' will send
+ a subscriber list only to remote administrators and only if
+ specifically allowed by the list owner.
+
+
+ 1\b15\b5.\b.3\b3.\b.2\b2.\b. M\bMa\baj\bjo\bor\brd\bdo\bom\bmo\bo.\b.
+
+ 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]
+
+
+ S\bSu\bup\bpp\bpo\bor\brt\bte\bed\bd c\bco\bom\bmm\bma\ban\bnd\bds\bs
+ lists, subscribe, unsubscribe, help, which, who.
+ 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
+ All ezmlm user and ezmlm owner commands.
+
+ This interfaced makes information available via command messages to
+ the appropriate mailing list. Thus, ``who'' will send a subscriber
+ list only to remote administrators and only if specifically allowed by
+ the list owner.
+
+
+ 1\b15\b5.\b.3\b3.\b.3\b3.\b. S\bSm\bma\bar\brt\btl\bli\bis\bst\bt.\b.
+
+ Unlike ``listproc/listserv'' or ``majordomo'', ``smart-list'' does not
+ provide ``host-centric'' services. Rather, commands are addressed to
+ listname-request@host and the command placed on the ``Subject:'' line:
+
+
+ To: listname-request@host
+ Subject: command [subscriber@host]
+
+
+
+
+ The body of the message is normally ignored. If the subject is empty,
+ the first body line that starts with a letter is interpreted.
+
+
+ S\bSu\bup\bpp\bpo\bor\brt\bte\bed\bd c\bco\bom\bmm\bma\ban\bnd\bds\bs
+ subscribe, unsubscribe.
+
+ 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
+ All ezmlm user and ezmlm owner commands.
+
+
+ 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.
+
+ Ezmlm-idx is designed to make it as easy as possible to set up mailing
+ lists. The default setup works well for small and medium-sized lists.
+ For large lists, the lists can be made more efficient with a few
+ simple changes.
+
+
+ 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.
+
+ With the default setup, ezmlm-tstdig(1) in D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br tests if a
+ digest should be sent out. On lists with a lot of traffic this is
+ inefficient. Also, you may want digests to be delivered as a specific
+ time. To do this, use crond(8) to execute ezmlm-get(1) directly, as
+ described elsewhere.
+
+
+ 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.
+
+ ezmlm-idx>=0.32 comes with much improved bounce handling. Modification
+ as described below should be considered only when you expect thousands
+ of bouncing addresses (virtually never). The description remains, for
+ users of ezmlm-0.53 or earlier versions of ezmlm-idx. For users of
+ ezmlm-0.53 alone, we recommend a patch (
+ <ftp://ftp.id.wustl.edu/pub/patches/ezmlm-return.diff> which fixes a
+ bug in ezmlm-0.53 bounce handling. The patch is superseded by ezmlm-
+ idx.
+
+ To redistribute the load of bounce warning and probe addresses to off-
+ peak hours, you may want to set up the list without ezmlm-warn(1) by
+ using the ezmlm-make ``-w'' switch, and instead execute ``ezmlm-warn
+ DIR'' via crond(8). You also need to run ``ezmlm-warn -d DIR'' for
+ digest bounces if your list is configured with digests. Normal ezmlm
+ list with ezmlm-idx>=0.32 will have an insignificant bounce load,
+ except if you bulk add addresses, e.g. from a MLM without bounce
+ handling. In the latter case, the load will be higher for the first
+ 2-4 weeks, then decrease drastically. If you feel you need to run
+ ezmlm-warn(1) from crond(8), you should seriously consider sublisting
+ your lists.
+
+ _\bN_\bo_\bt_\be_\b: the ezmlm-make(1) ``-w'' switch has a special meaning if used at
+ the same time as enabling SQL-support (``-6''; see man pages).
+
+
+ 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.
+
+ With ezmlm-idx, you may alter the ezmlm-warn(1) timeout to a number of
+ seconds with the ``-t seconds'' switch. The default is 1,000,000
+ seconds or about 11.6 days. This is the time from the first bounce
+ until ezmlm-warn(1) sends a warning message and the time from the
+ warning message bounce until ezmlm-warn(1) sends a probe (which if
+ bounced leads to removal of the address from the subscriber list). If
+ you have a digest list, remember to execute ezmlm-warn(1) with the
+ ``-d'' switch as well.
+
+ Decreasing the default to e.g. 5 days will cut in half the average
+ number of files in the bounce directory and the number of messages
+ sent at each crond(8)-directed invocation of ezmlm-warn(1). The trade-
+ off is that worst case, a subscriber may be unsubscribed if his/her
+ mail path is defective for more than twice the timeout. Removing a
+ subscriber after 10 days seems reasonable on a busy list. Do this by
+ adding the ``-t'' switch to all the ezmlm-warn(1) invocations. This
+ timeout should be larger than the interval between ezmlm-warn(1)
+ invocation.
+
+ To be aggressive, use ``ezmlm-warn -t0''. This will minimize the time
+ your lists spends servicing bounces, but will for some errors lead to
+ subscribers to be also lead to subscribers being removed if messages
+ to them bounce for two consecutive ezmlm-warn(1) runs. This is useful
+ to rapidly clean up a low quality address collection.
+
+
+ 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.
+
+ ezmlm-idx adds a number of functions to ezmlm. It indexes the archive,
+ and adds an index entry for each message, it can remove MIME parts, it
+ can add a subject prefix and message trailer, decode rfc2047-encoded
+ subjects, etc. Although designed to impact minimally on performance,
+ these options when used take time. Even when they are not used, time
+ is spent looking for e.g. the prefix. However, the performance penalty
+ is small, as the absolutely dominating cost of a mailing list is the
+ work qmail does to deliver the messages to subscribers.
+
+ In bench marking, we have not found a significant difference in
+ performance between ezmlm-0.53 and ezmlm-0.53+ezmlm-idx-0.32 when
+ ezmlm-idx features are not used. Thus, a non-indexed list with ezmlm-
+ idx-0.32 performs the same as the corresponding ezmlm-0.53 list.
+ Adding an index adds the overhead of another safe write (the index
+ file). Use of other features adds very marginally to execution time.
+ For virtually all lists, the ezmlm execution time is negligible
+ compared to the resources needed by qmail to disseminate the message
+ to the subscribers.
+
+
+ 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.
+
+ An archived list needs to write the message to the archive. If you
+ don't need an archive, don't archive. However, the archive is very
+ useful to allow users to catch up on messages that they didn't receive
+ due to delivery problems.
+
+
+ 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.
+
+ Consider splitting your list into sublists, ideally geographically.
+ The main list deals only with a subset of subscribers (or only the
+ sublists), and each sublist deals with a subset of subscribers,
+ bounces, etc. This is the most rational way to scale ezmlm to large
+ lists (see ``How sublists work'' for more info on how sublists work
+ and ``Sublists'' on how to set up sublists).
+
+
+ 1\b17\b7.\b. M\bMi\bis\bsc\bce\bel\bll\bla\ban\bne\beo\bou\bus\bs.\b.
+
+
+ 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?
+
+
+
+ ezmlm-make -+ [changed_switches] dir
+
+
+
+
+ ezmlm-make(1) stores configuration info in D\bDI\bIR\bR/\b/c\bco\bon\bnf\bfi\big\bg and uses that
+ info as the default when you use the ``-+'' switch. If the list was
+ created with a very old version or ezmlm-0.53 ezmlm-make(1) you have
+ to restate all arguments the first time you edit the list.
+
+ The ``-e'' switch works the same, without stickiness for switches.
+
+ A message arriving during reconfiguration may be handled incorrectly.
+ The prudent user will set the sticky bit on the home directory to
+ prevent delivery, then clear it after the list has been changed.
+
+
+ 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.
+
+ This is the default setup. The main list generates digests in response
+ to a mailed request or when a message arrives and the amount of
+ messages since the last digest exceeds set limits (see ezmlm-
+ tstdig(1)). Alternatively, ezmlm-get(1) can be invoked from the
+ command line. In both cases, the generated digest message is
+ 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/,
+ i.e. the subscriber database with the base directory D\bDI\bIR\bR/\b/d\bdi\big\bge\bes\bst\bt/\b/.
+
+ +\bo See ``setting up a digest list'' on how to set up the lists.
+
+
+ 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
+
+ You can set up lists with combinations of message moderation,
+ subscription moderation, and remote administration, easiest by
+ combining ezmlm-make(1) ``-m'' ,``-s'', and ``-r'' switches. You can
+ use a non-default moderator db, by specifying a directory starting
+ 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
+ subscription moderation - always the same db for both functions) or in
+ D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt for message moderation. You can point several lists to the
+ same moderator db, thus using the same moderators for several lists.
+ _\bN_\bO_\bT_\bE_\b: The user controlling the list must have read/write access to the
+ files (specifically, must be able to write the lock file).
+
+ Some of these setups are not trivial. However, you can make them
+ trivial by modifying ezmlmrc(5) so that ezmlm-make(1) can set up the
+ desired lists by default or when the user uses e.g. the ``-y'' or
+ ``-z'' switches (see ``Customizing ezmlm-make operation'').
+
+
+ 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-
+ 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.
+
+ Create a regular remote admin list, but remove D\bDI\bIR\bR/\b/p\bpu\bub\bbl\bli\bic\bc. This
+ allows moderators to (un)subscribe users and have archive access, but
+ rejects all user requests. Posts work as usual. Naturally, this can
+ be combined with message moderation or ezmlm-issub SENDER checks (see
+ ``Restricting message posting to the list'').
+
+
+ 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
+ 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.
+
+ Create a regular remote admin list, remove D\bDI\bIR\bR/\b/p\bpu\bub\bbl\bli\bic\bc, and add the
+ ``-p'' [public] switch to the ezmlm-get(1) command line in
+ 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-
+ get(1) and archive retrieval, allowing full archive access to anyone,
+ but rejecting user -help and subscription commands. It is assumed
+ that the users know archive retrieval commands without help. If you
+ 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
+ D\bDI\bIR\bR/\b/h\bhe\bel\blp\bp, and invoke a script that copies help info from there. See
+ ezmlm-check(1) for an example.
+
+
+ 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.
+
+ Use a standard list, but add the ezmlm-get(1) ``-s'' command line
+ switch in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. Only subscribers can receive archive excerpts.
+ Digests work as usual. This can be set up using the ezmlm-make(1)
+ ``-g'' switch.
+
+
+ 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.
+
+ Use a standard list, but add the ``-C'' switch to both the ezmlm-
+ get(1) and ezmlm-manage(1) command lines in D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. No archive
+ retrieval commands will be honored. Digest can be created as usual
+ (See ``Restricting archive retrieval'').
+
+
+ 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
+ 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.
+
+ For maximal archive security, set up a normal indexed and archived
+ 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
+ ``-C'' switch to the ezmlm-manage(1) command line. You can still
+ create digests by direct invocation of ezmlm-get(1) from a script or
+ crontab entry.
+
+
+ 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
+ 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.
+
+ Create a normal remote admin (+ subscription moderated) list, and add
+ the ``-P'' (not public) switch to the ezmlm-get(1) command line in
+ D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br. Subscription will not be affected, but ezmlm-get(1) will
+ send archive excerpts only to moderators. Digests are unaffected.
+
+
+ 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-
+ t\bti\bio\bon\bn.\b.
+
+
+ The need for a user handshake can be eliminated by the ezmlm-manage(1)
+ ``-S'' (subscribe) and/or ``-U'' (unsubscribe) switches. Alone, this
+ is very insecure. However, there may be some use for it in local lists
+ with subscription moderation, or alone for notifications where ease of
+ use is more important than preventing users from (un)subscribing
+ others. If the list has subscription moderation or remote
+ administration, any user subscribe or unsubscribe request is forwarded
+ to the moderators if the SENDER and target address do not match, even
+ if the ``-U/-S'' switches are specified. This is put in place to make
+ a ``-U/-S'' list similar to other list managers, not for security
+ (it's not secure, since a malicious outsider can easily fake the
+ SENDER address). Unsubscribe confirmations are sent also to the target
+ in this case, to avoid situations where the user needs moderator
+ ``permission'' to get off the list.
+
+
+ 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
+
+ Set up the list with ezmlm-make ``-om'' and add the ``trusted E-mail
+ addresses'' to D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/ with
+
+
+ % ezmlm-sub DIR/mod address@host
+
+
+
+
+ A post from a ``trusted address'' is sent back to that address for
+ approval, assuring that the user at that address really sent the post.
+ Posts from other e-mail addresses are rejected.
+
+
+ 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.
+
+ This is useful in many circumstances. A list announcing new programs
+ for a system, where both the main developers and other users may have
+ contributed programs.
+
+ Set up the list with ezmlm-make ``-m'' and the main developers as
+ moderators. When any of these posts, that user alone is asked to
+ confirm. Posts from other E-mail addresses are sent to all
+ moderators/developers. To use a different set of E-mail addresses as
+ ``trusted e-mail addresses'' and moderators for other posts, use the
+ ezmlm-store(1) ``-S'' switch and make a separate address database for
+ the ``trusted E-mail addresses''. Put the name of the basedir for the
+ ``trusted e-mail addresses'' database in D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt (needs leading
+ ``/''), and add the post moderator(s) to D\bDI\bIR\bR/\b/m\bmo\bod\bd/\b/ using ezmlm-sub(1)
+ as shown above.
+
+
+ 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.
+
+ A general solution for SENDER checking is to configure list with
+ ezmlm-gate(1). ezmlm-gate(1) takes as arguments any number of
+ basedirs for subscriber lists. Posts from SENDERs that are found are
+ posted. For others ezmlm-store(1) is invoked. If D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt exists,
+ ezmlm-store(1) will send out other messages for moderation. To bounce
+ such messages, create D\bDI\bIR\bR/\b/m\bmo\bod\bdp\bpo\bos\bst\bt, and use the ezmlm-gate(1) ``-P''
+ switch (will be passed on to ezmlm-store(1) to bounce any posts not
+ from a moderator).
+
+ By default, ezmlm-gate(1) accepts messages from subscribers. However,
+ this is overridden if any ``basedirs'' are put on the ezmlm-gate(1)
+ command line. Common would be to create a address list and put its
+ ``basedir'' on the ezmlm-gate(1) command line. Trusted E-mail
+ addresses can then be added with:
+ % ezmlm-sub basedir trusted@host
+
+
+
+
+ As this relies on SENDER checks it is less secure than the ezmlm-store
+ based confirmation-requiring setup.
+
+
+ 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.
+
+
+ 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.
+
+ This is configured via c\bco\bon\bnf\bf-\b-b\bbi\bin\bn as for other ezmlm programs. The
+ 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.
+
+
+ 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.
+
+ This is configured via c\bco\bon\bnf\bf-\b-m\bma\ban\bn as for other ezmlm programs. The
+ default is /\b/u\bus\bsr\br/\b/l\blo\boc\bca\bal\bl/\b/m\bma\ban\bn.
+
+
+ 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.
+
+ This is configured via c\bco\bon\bnf\bf-\b-q\bqm\bma\bai\bil\bl as for other ezmlm programs. The
+ default is /\b/v\bva\bar\br/\b/q\bqm\bma\bai\bil\bl.
+
+
+ 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.
+
+ Ezmlm-idx text (short lines, such as ``Administrivia'' for digests),
+ command names, etc, are defined in i\bid\bdx\bx.\b.h\bh, used at compile time. You
+ can change them by changing the defines in this file.
+
+
+ 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.
+
+ i\bid\bdx\bx.\b.h\bh contains defines for some ezmlm-idx arbitrary limits, such as
+ the maximum number of messages per ``-get'' request. They can be
+ changed here.
+
+
+ 1\b18\b8.\b.6\b6.\b. C\bCo\bom\bmm\bma\ban\bnd\bd n\bna\bam\bme\bes\bs.\b.
+
+ There is support for one alias per user command for
+ internationalization. (See ``Multiple language support''.)
+
+
+ 1\b18\b8.\b.7\b7.\b. E\bEr\brr\bro\bor\br m\bme\bes\bss\bsa\bag\bge\bes\bs.\b.
+
+ All ezmlm-idx error messages are defines in e\ber\brr\brt\btx\bxt\bt.\b.h\bh, used at compile
+ time. These can be changed for special situations, but we would advise
+ against doing so. If you do for some reason produce such a translated
+ file, we would appreciate if you sent a copy to the authors. NOTE:
+ These do not affect error messages from programs that are not part of
+ the ezmlm-idx package, nor of some subroutines used by ezmlm-idx
+ programs (getconf_line.c comes to mind).
+
+ Hopefully, the error messages for all parts will be synchronized in
+ later versions of ezmlm, and possibly handled from a run-time
+ changeable separate file (maybe as a .cdb database).
+
+
+
+ 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.
+
+ idx.h also has defines for /\b/e\bet\btc\bc/\b/e\bez\bzm\bml\blm\bmr\brc\bc, default formats for
+ moderation enclosures, default character set, default digest format,
+ etc. Since most of these items are easily changed at run time, there
+ is usually no need to change the compiled-in defaults. If you do need
+ to, this is where they are.
+
+
+ 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.
+
+
+ 1\b19\b9.\b.1\b1.\b. C\bCo\bom\bmm\bma\ban\bnd\bd n\bna\bam\bme\bes\bs.\b.
+
+ ezmlm commands can have aliases for use in translations for non-
+ English use. Due to the use of commands in mail e-mail addresses, the
+ character set is limited by rfc822 to us-ascii. To enable the command
+ aliases, remove the comment marks around the INTL_CMDS define in
+ idx.h. Also, remove the comments from the define corresponding to one
+ language (currently, only LANG_FR - French) available.
+
+ The INTL_CMDS define results in the compilation of all ezmlm programs
+ with support for alias commands for those commands listed in the INTL
+ section (all that are used directly by users). All aliases MUST be
+ defined, but should be the normal English commands. The language-
+ specific sections un-define and redefine the commands for which
+ alternative names should be used. This allows use of e.g.
+ ``inscription'' as an alias in addition to the standard ``subscribe''.
+
+
+ 1\b19\b9.\b.2\b2.\b. T\bTe\bex\bxt\bt f\bfi\bil\ble\bes\bs.\b.
+
+ Most ezmlm responses are made from text files in D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/. These are
+ created from the template file ``ezmlmrc''. Thanks to Frank Denis, and
+ Masashi Fujita, Wanderlei Antonio Cavassin, Sergiusz Pawlowicz, Frank
+ Tegtmeyer, Torben Fjerdingstad, Jan Kasprzak, and Sebastian Andersson,
+ French, Japanese, Portuguese (var. Brazil), Polish, German, Danish,
+ Czech, and Swedish versions are available. Just:
+
+
+ % make jp
+
+
+
+
+ before
+
+
+ # make setup
+
+
+
+
+ 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
+ copy installed in the ezmlm binary directory. For rpm packages, the
+ en_US version is installed, but the other versions are available in
+ the /\b/u\bus\bsr\br/\b/d\bdo\boc\bc/\b/ hierarchy.
+
+ If you have made an e\bez\bzm\bml\blm\bmr\brc\bc(\b(5\b5)\b) version for another language, please
+ make it public domain and E-mail it as an attachment to
+ lindberg@id.wustl.edu. It will then be put into the e\bez\bzm\bml\blm\bmr\brc\bc directory
+ of the distribution site. Please take advantage of the ``Content-
+ transfer-encoding'' capability of ezmlm-idx>=0.30, if needed, as this
+ avoids problems when messages are sent via non-8-bit MUAs.
+
+
+ Other ezmlm responses, such as words in subject lines, are defines in
+ i\bid\bdx\bx.\b.h\bh and can be changed there. Error messages should ideally not be
+ altered. However, it may make sense to change a few of them which are
+ used as messages to e.g. remote administrators. The defines for all
+ error messages are in e\ber\brr\brt\btx\bxt\bt.\b.h\bh.
+
+
+ 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.
+
+ ezmlm, as far as we know, places no restrictions on character sets.
+ The configurable default character set allows you to use other
+ character sets for out going ezmlm messages. ezmlm-make does not _\bp_\be_\br
+ _\bs_\be support other character sets. However, any single-byte character
+ set is supported, as long as the us-ascii character sequence ``</''
+ does not occur anywhere as the first characters of the line, and the
+ character sequence ``<#x#>'' (where ``x'' is any number, or A, B, C,
+ D, F, H, L, R, T) does not occur anywhere is text (if it does, it
+ risks being substituted). Also, any occurrence or ``<#A#>'' and
+ ``<#R#>'' that is the first on any text line will be substituted by
+ ezmlm-manage and ezmlm-store. Any occurrence of ``!A'' and ``!R'' as
+ the first characters on a line will be substituted by ezmlm-manage and
+ ezmlm-store.
+
+ For multi-byte character codes, the same restrictions apply. Thus,
+ ``</'' at the start of a line will confuse ezmlm-make, and any
+ ``<#x#>'' sequence within the text risks substitution. In practice,
+ both of these should be very rare and easily avoidable when setting up
+ an ezmlmrc(5).
+
+
+ 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.
+
+
+ 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.
+
+ This is a collection of the authors opinions and an explanation of
+ ezmlm-idx moderation design, which you may or may not agree with.
+
+
+ 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.
+
+ List subscribers should be informed that subscriptions to the list are
+ controlled by a moderator. ezmlm-idx in its default setup handles
+ this notification during and after the subscribe handshake. Most of
+ this can be disabled by manipulation of the D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt/\b/ files.
+
+
+ 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.
+
+ List subscribers should be informed that posts to the list are
+ moderated. ezmlm-idx does this by adding the ``Delivered-To: moderator
+ for ...'' header, but IOHO, the list owner should make the fact of
+ list moderation plain in introductory messages, or other means, to the
+ list subscribers.
+
+
+ 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.
+
+ With normal use of ezmlm-idx, the sender of a rejected post is
+ notified that the post has been rejected and if the moderators chooses
+ to comment, the sender receives this comment, usually describing why
+ the post was rejected. This ezmlm behavior cannot be disabled at run
+ time.
+
+ If post are neither accepted or rejected, they time out. ezmlm-
+ clean(1) notifies the sender when this happens. This behavior can be
+ disabled with the ezmlm-clean(1) ``-R'' (not return) switch, which has
+ to be placed on the command line of all invocations of ezmlm-clean(1)
+ (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
+ not wish to inform the sender of your editorial decision, you can use
+ this switch and let undesirable posts time out, rather than actively
+ rejecting them. IOHO, it is better to be "above board" and use the
+ normal notification mechanisms, together with active rejection and
+ informative rejection comments.
+
+ The ezmlm-make(1) ``-u'' switch uses moderation in a slightly
+ different way. Here, posts are restricted to subscribers, but posts
+ from non-subscribers are sent to the moderator(s) rather that being
+ ignored. This to help the subscriber that posts from an alias of the
+ subscribed address, or the occasional non-subscriber. In this case it
+ is perfectly acceptable to just ignore non-accepted posts. Thus, using
+ the ezmlm-make(1) ``-u'' switch configures the ezmlm-clean(1)
+ invocations with the ``-R'' switch.
+
+
+ 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.
+
+
+ 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.
+
+ This document discusses security aspects of ezmlm-idx addition to the
+ ezmlm-0.53 mailing list manager. This is the authors' understanding of
+ security aspects of ezmlm-idx functions and not to be taken as a
+ warranty. If you find any errors in this document or the ezmlm-idx
+ package in general, please inform the authors.
+
+ In general, ezmlm with or without the ezmlm-idx package is more secure
+ and less resource hungry than most other mailing list managers. Better
+ security than afforded by ezmlm +/- ezmlm-idx would require encryption
+ or PGP/digital signatures. Such an addition would make it difficult,
+ if not impossible, to run the mailing list from a standard MUA. The
+ ezmlm-idx package adds a number of functions and options, which under
+ some conditions may decrease security. The purpose of this document is
+ to discuss security aspects of using/enabling these different
+ functions.
+
+
+ 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.
+
+ We assume that the cost of manipulating/falsifying the SENDER address
+ of a message is zero. Thus, any mechanism relying on SENDER alone is
+ insecure. However, such a mechanism may help in case of simple mailer
+ or user errors. We also assume that the "cookies" used by ezmlm are
+ secure, i.e. that it is very hard for someone to generate a valid
+ cookie for a given address. SENDER is used to identify a moderator for
+ remote administration of subscriptions. The result of the action or
+ the confirmation request are sent back to that moderator address.
+ Thus, providing a false SENDER is useless, unless the attacker can
+ also read that moderator's mail.
+
+
+ 2\b21\b1.\b.3\b3.\b. e\bez\bzm\bml\blm\bm c\bco\boo\bok\bki\bie\bes\bs.\b.
+
+ Since ezmlm doesn't rely on the SENDER, the security lies entirely
+ within the action-time-cookie-address combination. Anyone obtaining a
+ valid "combination" can do whatever the combination is meant to do,
+ but nothing else. Also, the cookie times out 1000000 seconds
+ (approximately 11.6 days) after it was issued. Since the
+ "combinations" are specific for a particular action and address, they
+ can only be reused for that particular purpose, and within 11.6 days.
+ Ezmlm (un)subscriptions for a given address are usually pointless to
+ repeat. Message moderation "combinations" are useless after they've
+ been used, since the message is no longer in the moderation queue.
+
+
+ 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.
+
+ Maliciously (un)subscribing an address with ezmlm-0.53 requires that
+ the attacker is able to read mail sent to the subscription address.
+
+ With the ezmlm-idx add-on, a non-moderated list works exactly the same
+ way. Ezmlm-idx introduces the moderator for moderated and remote admin
+ lists. For any moderator functions, an attacker needs to be able to
+ read mail sent to a moderator's address. If s/he can do this, the
+ attacker can affect anything the moderator is allowed to do (since
+ falsifying SENDER is trivial). To minimize risks, give moderators only
+ the power they need, do not use more moderators than necessary, and
+ use moderators whose mail is hard to intercept (on the same
+ machine/same internal/secure network or by encryption via e.g. ssh).
+
+
+ 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.
+
+ A basic message moderated list keeps ezmlm subscriber security, but
+ interpolates the moderator(s) between the address of the list and the
+ list itself. An attacker able to read moderator mail can accept/reject
+ a post, if s/he can do it before a regular moderator has taken action.
+ The potential for abuse can be minimized by using few and local
+ moderators. Mail logs are needed to trace which moderator address was
+ misused.
+
+
+ 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.
+
+ A basic subscription moderated list retains ezmlm subscriber security,
+ but adds a moderator handshake. An attacker would need to be able to
+ both read mail to the subscriber address and to at least one
+ moderator.
+
+
+ 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.
+
+ A remote admin (-r) list adds the ability of the moderator to
+ (un)subscribe any address. The price of this is that an attacker able
+ to read moderator mail can (un)subscribe any address. The moderator
+ handshake message will be delivered to the abused moderator address,
+ which will alert that moderator and reveal the compromise. Another
+ basic assumption is that action-date-cookie-address combinations are
+ only sent to the target address or a moderator and that moderator
+ action "combinations" are never sent to non-moderators.
+
+
+ 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.
+
+ ezmlm-manage(1) can allow remote administrators to edit files in
+ D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt. First, this option is disabled by default. Second, the
+ ``-edit'' command is accepted only when the target (the recipient) is
+ a remote administrator. Third, only existing files within D\bDI\bIR\bR/\b/t\bte\bex\bxt\bt
+ are editable. It is not possible to create files.
+
+ ezmlm replies to a valid request with an informative message and the
+ contents of the file. In addition, the ``Reply-To:'' address contains
+ a cookie based on the file name and contents, as well as the current
+ time. Anyone possessing this cookie can save a new version of the
+ text file. As with other ezmlm security, the security of this process
+ depends on only the remote administrator receiving remote
+ administrator mail. If this is not sufficiently secure for you, do not
+ enable this option. As always, an increase in accessibility results
+ results in a decrease in security.
+
+ Cookies for editing expire in approximately 27 hours. Also, as soon as
+ a file is changed, the cookie is invalidated since the file contents
+ change. This also means that an outstanding edit request cannot be
+ completed if the files has been updated in the interim.
+
+ A potential attacker obtaining a valid cookie has a window of
+ opportunity while you edit the file, or for at most 27 hours. S/he can
+ overwrite and existing text file with potentially offensive material.
+ Usually, this can be achieved more easily by posting to the list. S/he
+ can also potentially fill your disk with a large amount of data (up to
+ two times 10240 bytes (limited by MAXEDIT in i\bid\bdx\bx.\b.h\bh)) and could put
+ part of this data onto messages leaving the list. Again, this is much
+ more easily achieved by e.g. sending the equivalently sized message to
+ your list.
+
+
+ 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.
+
+ The archive retrieval functions added by ezmlm-idx are digests
+ (protected by a "code") and other functions. Anyone who knows the
+ digest code (through reading mail logs, reading D\bDI\bIR\bR/\b/m\bma\ban\bna\bag\bge\ber\br of the
+ list, or reading any scripts used to send digest triggering messages)
+ can trigger a digest. Protect these locations accordingly! For
+ default lists with digests triggered from D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br via ezmlm-
+ tstdig(1) and ezmlm-get(1), you do not need the digest code and can
+ thus disable the possibility to trigger digest by mail. For other
+ functions, the output is sent to SENDER and can be restricted to
+ subscribers (the ``-s'' switch). ezmlm-get(1) functions (apart from
+ digest) can be entirely disabled with the i``-C'' switch, or
+ restricted to moderators with the ``-P'' switch or by removing
+ D\bDI\bIR\bR/\b/p\bpu\bub\bbl\bli\bic\bc. Other sections of this document discuss several other
+ options. All switches are documented in the man pages.
+
+ The moderator support functions added by the ezmlm-idx package
+ (extended help and subscriber list) are sent only to a moderator
+ address, i.e. an attacker again needs to be able to read moderator
+ 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
+ contain secrets. The ``-list'' function is normally disabled, but can
+ be enabled with the ezmlm-manage -l switch to aid the remote
+ administrator(s).
+
+
+ 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'
+ s\bsw\bwi\bit\btc\bch\bhe\bes\bs.\b.
+
+ ezmlm-manage(1) functions can be made more convenient, at the expense
+ of security. There have been many requests for these options, so they
+ have been added, although we recommend against using them:
+
+ The ezmlm-manage(1) ``-S'' switch eliminates the subscriber handshake
+ from subscribe requests. Thus, it is no longer necessary for the
+ subscriber to confirm the subscription. This is not secure, but may be
+ convenient for some moderated lists. Use only with extreme caution.
+ The ezmlm-manage(1) ``-U'' switch similarly eliminates subscriber
+ confirmation from unsubscribe requests. Again, this is insecure and
+ useful only under special circumstances. If the list has any
+ moderators (remote or modsub), requests to (un)subscribe an address
+ other than sender are still routed to a moderator. This is similar to
+ how some other lists work. Naturally, this is insecure because it
+ relies on SENDER. Unsubscribe requests are always non-moderated,
+ since, IOHO, it seems un-ethical to force a subscriber to remain on a
+ list. Where an unsubscribe confirm request is sent out it is (also)
+ sent to the target, except when the request was initiated by a
+ moderator on a list with remote administration (D\bDI\bIR\bR/\b/r\bre\bem\bmo\bot\bte\be exists).
+ The (un)subscription target is always informed about completed
+ (un)subscribe request, whether initiated by that address, another
+ address, or by a moderator. Thus, attempts of a user or moderator to
+ subscribe an address will be brought to the attention of the user
+ receiving mail at that address.
+
+
+ 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.
+
+ ezmlm-get(1) archive retrieval functions can be used to deplete system
+ resources. However, this can also be done by posting messages to
+ lists, mail bombing, etc. If you are worried about this, you can use a
+ combination of ezmlm-manage/ezmlm-get ``-C'', ``-s'', and ``-P''
+ switches, removal of D\bDI\bIR\bR/\b/p\bpu\bub\bbl\bli\bic\bc, and removal of the mail-triggered
+ digest function (by removing the digest code from the ezmlm-get(1)
+ command line) to decrease availability of these functions (see man
+ pages). Digest can also be triggered by direct execution of ezmlm-get
+ from within a script from D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br as in the default setup with the
+ ezmlm-make(1) ``-d'' switch.
+
+
+ 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.
+
+ Anyone getting messages from the list can see the ``Delivered-To:
+ Moderator for ...'' header and realize that the list is moderated. In
+ the authors opinion, this is fair and appropriate. If this bothers
+ you, edit the source of e\bez\bzm\bml\blm\bm-\b-s\bst\bto\bor\bre\be.\b.c\bc.
+
+ While the fact that the list is moderated will be disclosed by the
+ headers, the moderator(s)' identity will not be disclosed by the
+ header. Moderators are anonymous to anyone who cannot directly read
+ the mail log, the moderator list, or monitor your outgoing and
+ incoming mail. Anyone intercepting the acting moderators' mail or able
+ to read the mail log can determine who took a particular action.
+
+ Moderator E-mail addresses are not (to our knowledge) disclosed by any
+ ezmlm mechanism. Thus, the poster does not know who rejected/accepted
+ the message. Other moderators can find out that the message was
+ accepted (by seeing it on the list or by themselves committing to a
+ reject/accept reply) or rejected (by being informed by the poster or
+ by themselves committing to a reject/accept reply). If no moderator
+ takes any action for a given time (120 h - configurable to anything
+ 24-240 h via D\bDI\bIR\bR/\b/m\bmo\bod\bdt\bti\bim\bme\be - and the parameters are likewise
+ configurable at compile time via i\bid\bdx\bx.\b.h\bh) the message times out, an act
+ for which no particular moderator can be held accountable.
+
+ Subscription requests are acted upon only if a moderator completes the
+ transaction by approving the requests. Requests can not be directly
+ disapproved, but the associated cookie becomes invalid after
+ approximately 11.6 days. Neither the subscriber nor the other
+ moderators know which moderator accepted the subscription request.
+ Requests to unsubscribe from the list are never moderated or otherwise
+ controlled, except by requiring confirmation from the subscriber
+ (normal unsubscribe) or the moderator that initiated the request
+ (remote administration). If several moderators approve the same
+ subscribe request, the user gets multiple notifications.
+
+ The triggering message (the moderation approval or the moderator's
+ completion of the subscription request) are not returned or logged.
+ This protects moderator anonymity, but makes it harder to track down
+ the offender in case of abuse. Only a good mail log will help. IOHO,
+ abuse of these mechanisms requires considerably more effort that it is
+ worth to (un)subscribe someone to a list. Also, IOHO, moderator
+ anonymity is more important. If this increased difficulty in tracking
+ down abusive behavior bothers you, don't use the remote administration
+ and moderated subscription features.
+ 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.
+
+ The optional ``-list'' command enabled by the ``-l'' ezmlm-manage(1)
+ command line switch returns a subscriber list to the moderator. Again,
+ anyone who can intercept a moderators' mail can fake SENDER and use
+ this command to obtain a subscriber list. The use of local moderators
+ minimize the risk. If the risk of subscriber disclosure is not worth
+ this convenience, do not enable this feature.
+
+
+ 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.
+
+ 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
+ reply to messages to list-help@host if the target address is a
+ 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
+ confidential information.
+
+
+ 2\b21\b1.\b.1\b15\b5.\b. S\bSu\bub\bbl\bli\bis\bst\bts\bs.\b.
+
+ ezmlm sublists require that the message envelope sender is the main
+ list, and that the message has a ``Mailing-List:'' header. Both are
+ easy to fake, allowing an attacker to inject messages at the sublist
+ level. Other than the possible ramifications of only a subset of
+ subscribers seeing the message, this is of no concern for open lists.
+ For a ``subscriber-only'' list based on SENDER checks, it is no harder
+ to set SENDER to the address of a subscriber than to fake the headers
+ required by the sublist. However, for a moderated list the mainlist to
+ sublist communication becomes the weakest link. Sublists using a SQL
+ database also use better authentication in this step (see ``SQL-
+ enabled ezmlm lists'').
+
+ A sublist user can unsubscribe a normal ezmlm sublist from the main
+ list. To guard against this, you need to prevent propagation of
+ unsubscribe confirm requests by the sublist. Easiest is to add a line
+ to D\bDI\bIR\bR/\b/e\bed\bdi\bit\bto\bor\br before the ezmlm-send(1) line:
+
+
+ |grep -i '^Subject: CONFIRM' >/dev/null 2>&1 && exit 99; exit 0
+
+
+
+
+ Another option would be to take advantage of the fact that D\bDI\bIR\bR/\b/h\bhe\bea\bad\bde\ber\br-\b-
+ a\bad\bdd\bd headers at the main list are added to normal messages, but not to
+ administrative messages. Thus, one could discard messages that lack
+ the default ``Precedence: bulk'' header:
+
+
+ |grep -i '^Precedence: bulk' >/dev/null 2>&1 || exit 99; exit 0
+
+
+
+
+ For lists with SQL-support, users cannot unsubscribe sublists (see
+ ``SQL-enabled ezmlm lists'').
+
+ Break-in at a sublist host for normal ezmlm lists leads to
+ loss/compromise of the addresses handled by the sublist. For MySQL-
+ enabled lists, the sublist access credentials give DELETE and SELECT
+ access to all addresses serviced by the list. Thus, a successful
+ sublist attacker can completely disable the list. The MySQL log (if
+ used) will reveal from which host the attack was done. Although the
+ potential damage to a SQL-enabled list is greater, the results are of
+ the same order of magnitude. The risk in minimized by keeping control
+ over all sublist hosts. A successful sublist attacker cannot normally
+ add addresses, since the sublist users by default are set up without
+ INSERT privileges to the address database.
+
+
+ 2\b21\b1.\b.1\b16\b6.\b. S\bSQ\bQL\bL d\bda\bat\bta\bab\bba\bas\bse\bes\bs.\b.
+
+ For SQL-enabled lists, the database contains all list information.
+ Subversion of your database server allows an attacker to add/remove
+ addresses at will. This is also true for normal ezmlm lists. In
+ addition, modification of the ``*_name'', ``*_cookie'', and ``*_mlog''
+ tables can cause the list to misbehave in a manner that doesn't
+ immediately suggest a security breach. Keep your ezmlm list and
+ database servers secure.
+
+
+ 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.
+
+ Please send private E-mail about any security problems with the ezmlm-
+ idx additions to Fred Lindberg, lindberg@id.wustl.edu. For ezmlm,
+ please send them via private E-mail to Dan J. Bernstein, the author of
+ ezmlm proper.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+