--- /dev/null
+$Id: CHANGES.idx,v 1.66 1999/12/24 04:33:03 lindberg Exp $
+$Name: ezmlm-idx-040 $
+
+BUGS: -ezmlm-idx does not implement a full rfc822 parser. Comments can be
+ inserted to defeat the MIME parsing mechanism, such as:
+ Content-Type: (comment) test/plain
+ This type of comment, while legal, does not occur in normal messages.
+ Guiding info past ezmlm-idx MIME parsing is easier done by enclosing
+ a message within a message. The mechanism isn't intended as a
+ "secure" way of preventing e.g. "application/ms-tnef" from being
+ disseminated.
+ If you think this is a problem, E-mail lindberg@id.wustl.edu.
+ Mimeremove/reject work only at the outer MIME layer.
+ -ezmlm-request requires addresses to be user@host. While rfc822
+ compliant, addresses like ``"the man" @ host'' are not accepted.
+ -ezmlm-cgi doesn't deal optimally with holes in the archive.
+ -ezmlm-cgi seems not to work with Chinese. The problem has been to
+ find someone willing/able to participate in debugging.
+
+TODO:
+-ezmlm-cgi to run directly under tcpserver.
+
+Acknowledgements, some are missing. Please write lindberg@id.wustl.edu
+if you're missing.
+
+Some ezmlmrc are not updated and won't work right:
+cn_GB,cs,pl,ru,da,pt_BR,pt
+
+If you fix them, please send them to lindberg@id.wustl.edu for inclusion
+in the next version.
+
+ezmlm-idx-0.40, 19991220
+========================
+-Fixed bug in sub_mysql/issub.c that caused return of undef pointer for
+ non-subs. Security problem for sender checks, but not for moderation. Of
+ course only mysql version affected.
+-Updated ezmlmrc translations. Thanks all who worked on this.
+-added ezmlmrc.es. Thanks Vicent Mas/Francesc Alted/Sonia Lorente/Cyndy DePoy.
+-added ezmlmrc.cn_GB. Thanks HG.
+-ezmlm-weed: Groupwise garbage filter added. Thanks, SA.
+-mysql: include files now don't have a dir. This is so that one can have
+ them in e.g. /usr/include. conf-sqlcc adjusted.
+-Removed utils/. Not updated - add when done.
+-Full PostgresSQL support. Thanks, MS.
+-Corrected ordering of searchlog output for MySQL version to match default.
+ Thanks, MS.
+-ezmlm-moderate/store: Fork /bin/sh ... instead of sh for people with unset
+ PATH. Thanks, TM.
+-ezmlm-manage: rfc2369 headers added where possible also to admin
+ messages. Main finesse is that the WELCOME message has a custom
+ List-Unsubscribe header. -U/-S logic deconvoluted. -nN added.
+-ezmlm-store: -B to send only header of message to moderate, rather than
+ the entire message. Used for send-only list with very large posts.
+-ezmlm-reject: -b to reject messages with body or subject starting with
+ ``subscribe'' or ``unsubscribe''.
+-support for List-ID (draft). Added to all list messages if DIR/listid is
+ present. The first line of that file is added after "List-ID: ".
+-ezmlmrc: Added List-Subscribe header. Rewrite some texts, move some info
+ from bottom to help. Add ezmlm-archive (-i), add some switches to make
+ announcement lists easier.
+-ezmlm-make: Modifed to make -I default since -i now controls ezmlm-archive
+ with all lists configured with ezmlm-get. Also, ezmlm-make will not overwrite
+ files tagged with #E in ezmlmrc when in edit mode (-+ or -e). This preserves
+ manual customization. The behavior can be overridden with -++ or -ee to
+ reset the list texts (old behavior). Added version check for ezmlmrc Tx, SA.
+-ezmlm-archive and ezmlm-cgi added: Very easy to set up WWW access to list
+ archive. Support for various charsets incl iso-2022-*. For Russian,
+ one would need to do substitutions when making entries in archive/n/index.
+ This is not supported yet, so summary view entries may be incorrect if
+ the messages use Russian text in a charset different from the one the list
+ uses. Probably doesn't work for Chinese - lack of willing/able testers.
+-qmail-qmqp support via idx.h and DIR/qmqpservers. If your bandwidth is
+ limited, look at this (see ezmlm-send(1)/ezmlm-get(1)/ezmlm(5)). If you
+ have large lists, sublist them locally and specify different QMQP servers
+ for each sublist via DIR/qmqpservers. Added qmail-qmqpc.tar.gz patch to
+ allow specifying QMQP server on command line. With this, DIR/qmqpservers can
+ be used to specify different servers for different lists for busy servers.
+-ezmlm-gate: added -q file. Each line in "file" is processed as per
+ dot-qmail(5). 111 => temp_err, 99 => post, 100 => moderate, 0 => check sub.
+ Any other exit code will result in a bounce.
+ NOTE: This changes the behavior of ezmlm-gate used with only one DIR
+ argument (not used in any std listsetup for previous versions). Before,
+ this tested for subscriber status, now messages will
+ be moderated. This use is not set up by any ezmlm-make option and should
+ be _extremely_ rate. To obtain the old behavior, simply specify the
+ list directory twice.
+-Made conf-sqlcc and conf-sqlld to support both phases of the build. Adjusted
+ mysql includes to not assume they're in a "mysql" subdir.
+
+
+ezmlm-idx-0.324, 19990905 (PostgresSQL)
+=======================================
+-Minor typo in ezmlmrc.fr fixed.
+-Added [partial] PostgresSQL interface by Magnus Stalaker. See INSTALL.idx.
+-Added ezmlm-store Cc: docs mistakenly missed in 0.323.
+-Fixed problem with "it/itall" target (Thanks MW).
+
+
+ezmlm-idx-0.323, 19990815 (bug fix)
+===================================
+-ezmlm-store: Cc: list-accept-subscribe remote admin conf added to mod
+ requests. For lists using ezmlm-gate, this allows adding poster as allowed
+ alias. Thanks RVI for suggesting.
+-Added qmail-verh.tar.gz (0.03). This is the 0.02 qmail patch and a patch
+ to change ezmlmrc to take advantage of it. See docs inside.
+-conf-sqlcc/conf-sqlld instead of conf-sql to allow include file additions
+ (conf-cc) and libraries (conf-ld) for RDBMS interfaces.
+-Added ezmlmrc.id and ezmlmrc.it. Thanks APN and RDC.
+-ezmlm-manage: Mime boundary was missing for subscribe notifications for
+ moderated lists using QP/base64 encoding. Thanks TF.
+-ezmlm-get: Logic to prevent digest triggering from list-@host.
+-ezmlm-get: Digest parts have file names list_msgnum.txt instead of
+ list.msgnum to work around a MS Outlook bug. Thanks, MH.
+-ezmlm-request: Support for multipart MIME when used as a majordomo emulator.
+ Thanks, Johannes Ehrfeldt for reporting the bug.
+-ezmlm-send: trailer was added to mutipart/non-alternative. Problems with
+ multipart/signed. Now, trailer for multipart is added only to mixed,
+ digest, and parallel. Thanks BPF.
+-ezmlm-reject.1: typo.
+-ezmlm-test.sh multiple minor changes to work on more platforms. Still, if
+ it doesn't work, the problem is most likely here, and not in ezmlm(idx)
+ itself. Thanks RM DM and others.
+-ezmlm-moderate: added missing newline at beginning of MIME reject message.
+ Thanks, XXX.
+-idx.h fixed ALT_XX alternative command names which erroneously started '-'.
+ Looks bad, but was of no consequence.
+
+
+ezmlm-idx-0.322, 19990505 (bug fix)
+===================================
+-ezmlmrc.*: Added x-confirm-reading-to and x-pmrqc. Thanks JK.
+-ezmlmrc.ru: Added Russian version contributed by RVI. Thanks.
+-ezmlmrc: Czech version of ezmlmrc is ezmlmrc.cz. Should be ezmlmrc.cs. Fixed.
+-searchlog.c: Made the MySQL version also match in address field to make
+ the records returned the same as for std version.
+-ezmlm-store: -allow-subscribe confirm address in Cc: header to make it easier
+ for the moderator to add the poster to the allow database. (Thanks, RVI.)
+-ezmlm-manage: -query from remote admin for subscriber failed due to use of
+ static storage within issub(). Fixed.
+-ezmlm-manage: Made remote admin unsub failure return error. For sub it's
+ important to be silent for multi-moderator setups, but since unsub is never
+ moderated, it's ok to return negative feedback, since it may be needed by
+ remote admins. As a consequence it was trivial to add -Q[Q] not quiet to
+ provide [un]subscribe feedback to the owner.
+-ezmlm-send/reject: "boundary" in Content-type can be delimited by ';'.
+ Without, some messages could be erroneously rejected when using mimeremove.
+ New error text added to errtxt.h.
+
+
+ezmlm-idx-0.321, 19990322 (bug fix)
+===================================
+-added ezmlm-limit to limit list traffic. As this is a bug fix release,
+ ezmlm-limit should be considered experimental and is not built/installed
+ by default. (Thanks, TM for suggesting.)
+-subscribe.c: in some cases a ``T'' was incorrectly added before the address
+ in the DIR/Log subscription log. Corrected (Thanks, PH.).
+-ezmlm-test: reordered some tests to avoid timing problems on some
+ platforms. Tested hostname output since it may return a non-FQDN host name.
+ Added tests for most of the fixed bugs.
+-ezmlm-tstdig: improved DEFAULT logic. Failed with existing incorrect inlocal
+ in virtual domains.
+-ezmlm-manage bug: deny access control fixed.
+-ezmlm-request/ezmlm-tstdig: qmail>=1.02 doesn't set DEFAULT when there is
+ nothing matching. Unable to detect qmail version here. Changed logic to
+ always be correct with qmail>=1.02 and virtually always for earlier versions.
+ Missing inlocal is taken as meaning qmail>=1.02.
+-ezmlm-request: mdomo emulator: Corrected address listed for WHICH.
+-ezmlm-request: Silent exit on bounces (NULL sender). Fake SENDER spam to the
+ majordomo address otherwise causes double bounces to postmaster who has
+ better things to do.
+-ezmlmrc: corrected missing ezmlm-return in bouncer for normal (^6W) lists.
+ (Thanks Matt McGlynn.)
+-opensql.c: psql needs to be destroyed for ezmlm-reqest WHICH which may open
+ connections to several servers.
+-searchlog.c: made inbuf/ssin static. Was incorrect and generated linker
+ warning on some systems, but had no functional consequences. Thanks, SOH.
+-ezmlm-test: converted "export ENVIRON=value" to "ENVIRON=value; export ENVIRON"
+ to work with Solaris sh. Also, moved final ezmlm-warn section to the end
+ to avoid timing issue on some systems. "ps" test for qmail made non-fatal,
+ as differing options on different ps make it more likely that ps use is
+ the problem than that qmail is not running. (Thanks, SOH.)
+
+
+ezmlm-idx-0.32, 19990222
+========================
+-updated ezmlm-test. It tests most functions, and for important new features
+ or bugs discovered we'll add new tests in future. Thanks ME for patient
+ testing, suggestions, and "de-bashing".
+-added a rfc2369 headers for list-help, list-post, and list-unsubscribe.
+ It takes little space, and may promote support in MUAs.
+-ezmlm-get: list-get.9999999_x now always returns at least HISTGET messages
+ (default 30) provided that "9999999" is larger that the latest message number.
+ This allows embedding of an address for new subscribers to get at least what
+ has transpired since the latest digest and usually 30 messages before that,
+ to quickly see what's going on.
+-ezmlm-get: list-get for non-digested lists now returns the latest HISTGET
+ (default 30) messages instead of the latest message. To get the latest message,
+ mail list-get-9999999, where "9999999" is larger than the latest message
+ number.
+-Added ezmlm-manage/get -B switch to suppress text/bottom + request addition to
+ ezmlm-manage messages (except of course -help).
+-ezmlm-send uses copy() for trailer and headeradd. <#h#>, <#l#>, and <#n#>
+ in these texts are substituted with outhost, outlocal, and message number,
+ respectively. Now you can add ``To receive this thread, mail
+ <#l#>-get.<#n#>@<#h#>'' to the trailer. Removed dir/sequence feature, since
+ this can now be done with headeradd. copy() modified to suppress blank
+ lines when copying headers. extern decl in copy.h fixed. A consequence
+ is that headeradd isn't added to the archive copy which is good. <#n#>
+ for ezmlm-get is the latest message processed, except for the digest, where
+ it is the first message in the digest (which is also the digest msg #).
+-Added ezmlm-split (previously separate). Modified to use the same split
+ mechanisms as the SQL routines. -D switch to support easier reorganisation,
+ with extensive docs in man page. Interconversion between ezmlm-split and SQL
+ use is now relatively easy.
+-Reorganized files. The subscriber db sources are now in sub_std/ for the
+ standard ezmlm db, sub_mysql/ for the mysql version. Normally, there are
+ symlinks to the std version. ``make mysql'' changes the symlinks to sub_mysql
+ and ``make std'' can be used to set them back.
+-Replaced ezmlm-glmake with ``ezmlm-make -Cezmlmglrc''. See ezmlmglrc.5.
+-Added status.pl for status monitoring of ``list trees'' via httpd. In utils/.
+-Added feedback logging support with ezmlm-receipt and ezmlm-make -w. ezmlm-send
+ and ezmlm-get for the SQL version log info to the db.
+-Added support for setting up a minimal (SQL-enabled) sublist:
+ ezmlm-make -Cezmlmsubrc. See ezmlmsubrc.5.
+-Added ezmlm-make -w to remove ezmlm-warn invocation and if used with -6 to
+ configure ezmlm-receipt in place of ezmlm-return. Used for main list in
+ SQL-enabled list clusters for feedback and bounce logging.
+-Added MySQL support. ezmlm-make -6. This is a _major_ change and makes it
+ trivial to do sublisting and dynamically redistribute load. see ezmlm.5.
+-Modified ezmlm-return to add -dD switches. Previous design decision to have
+ ezmlm-return autodetect digest vs normal bounces cause problems when
+ sublisting a digest list. -dD force non-digest vs digest function and we'll
+ set uyp new lists with that, but keep autodetection for compatibility with
+ existing lists. ezmlmrc files modified appropriately. German version
+ updated and improved by Frank Tegtmeyer. Thanks!
+-Modified ezmlm-warn/return bounce handling. DIR/bounce now has a ``h''
+ subdir, further subdivided a-p for storage of h... files, where the first
+ character of the hash is used for the subdir, and a ``d'' subdir, containing
+ subdirs, each holding bounce (d... files) for a 10,000 s interval. This way,
+ only ``ripe'' bounce files are processed by ezmlm-warn. Also, ``lastd'' to
+ prevent unnecessary reparsing of bounces and ``lasth'' to keep track for
+ ``h'' subdir cleaning of remaining files older than 3x time out.
+-Modified all programs to use DEFAULT if available. With qmail>=1.02, this
+ allows one to ignore inhost/inlocal so that special adjustment for virtual
+ domain lists is no longer required. Works the old way with qmail<1.02.
+-DIR/extra and DIR/blacklist for extra allowed SENDERs and SENDER blacklisting
+ have been renamed DIR/allow and DIR/deny. This is used sparingly and the old
+ nomenclature was confusing. ``mkdir DIR/allow; mv DIR/extra/* DIR/allow''
+ and the corresponding move for DIR/deny will take care of it.
+-Extended the remote admin -log command. Now, -log.xxx will return only
+ Log lines matching 'xxx'. '.' matches '.' and '_' matches any character.
+-The ``From:'' line of subscribers confirmation message will be logged to
+ ``Log''. This allows the administrator to use the Log to by name locate the
+ subscription address of a user.
+
+
+ezmlm-idx-0.316, 19990815 (bug fixes only)
+==========================================
+-Migrated back fixes for 0.322 -> 0.323 that are applicable to 0.31x:
+-ezmlm-get: Made filename extension constant for digest parts to work around
+ Outlook bug.
+-ezmlm-manage: Mime boundary added for mod-sub-ok message when QP/base64 is
+ used.
+-ezmlm-manage.1: Typo.
+-ezmlm-moderate: Missing newline for non-MIME reject message.
+-ezmlm-request: Support by global interface of multipart/alternative messages.
+-ezmlm-send: Trailer only for some types of multipart messages.
+-ezmlm-reject.1: Typo.
+
+
+ezmlm-idx-0.315, 19990505 (bug fixes only)
+==========================================
+-Bug fixes fed back from up to 0.322.
+-ezmlm-send/reject: "boundary" in Content-type can be delimited by ';'.
+ Without, some messages could be erroneously rejected when using mimeremove.
+ New error text added to errtxt.h.
+-ezmlm-manage: -query from remote admin for subscriber failed due to use of
+ static storage within issub(). Fixed.
+-ezmlm-manage bug: deny access control fixed.
+
+
+ezmlm-idx-0.314, 19990216 (bug fixes only)
+==========================================
+-Added ezmlm-test, a script that tests [most] ezmlm + idx program functions.
+-added ezmlmrc.cz (Thanks, Jan Kasprzak).
+-ezmlm-make -e failed if DIR/config didn't exist. Fixed. (Thanks, SOH.)
+-ezmlm-make man page bug for virtual domain (Thanks, XX).
+-ezmlm-get segfaulted when run from the command line with LOCAL undefined.
+ Fixed. (Thanks, ME.)
+
+ezmlm-idx-0.313, 19981121 (bug fixes almost only)
+=================================================
+-ezmlm-get returns 0 for success in editor and command line use, rather than
+ 99. No impact on current lists, but makes more sense.
+-ezmlm-warn tests >= for timeout rather than >. No impact other than easier
+ use with future test script.
+-ezmlm-manage -get function was broken - fixed. Needed for backwards compat
+ with ezmlm-0.53. (Thanks, KS.)
+-Reorganized INSTALL.idx, UPGRADE.idx, README.idx and introduced FILES.idx
+ to simplify. Made corrections to FAQ.idx, but no additions.
+-ezmlm-send no longer adds trailer to multipart/mixed messages. Also, multipart
+ messages consisting of only "mimeremove" parts will be bounced. (Thanks, BE.)
+ The trailer is suppressed for base64-encoded messages. In both cases,
+ trailer addition might corrupt the message. Default charset is added if none
+ specified (was left empty).
+-The US version of ezmlmrc is now ``ezmlmrc.en_US'' and ``make'' by default
+ copies it to ezmlmrc. Added support to Makefile and docs to copy in other
+ versions via e.g. ``make jp''. Target ezmlmrc is there to not overwrite with
+ ezmlmrc.en_US on ``make setup''.
+-Changed ezmlmrc so that headeradd/headerremove/sub-ok/mod-sub are not rewritten
+ when editing lists. (Thanks, GS.)
+-In ezmlm-idx and ezmlm-send, made dirs without trailing slash (mkdir with
+ it bombs on Ultrix). (Thanks, BW.)
+-added check for NULL sender is zapnosub() in ezmlm-get. Fixed NULL pointer
+ use when the command is -dig- and no digest code was given on the command
+ line.
+-added 'x' to FORMATS in idx.h. (Thanks, MMcL.)
+-ezmlm-reject changed to honor subject continuation lines. Eudora likes to
+ break right after "Subject:" which caused rejection for empty subject.
+ (Thanks, SOH.) Same for To:. Also deals with quoted content types. Error
+ message now always states the offending MIME type.
+-Added "(null)", "(none)", and "(no subject)" to rejected subjects. What are
+ these MUA authors thinking??
+-ezmlm-reject bug fixed to reject commands in subjects. (Thanks, JH.)
+-ezmlm-request bug fixed to allow correct processing of complete command
+ addresses in the subject, even for virtual domains. (Thanks, EC.)
+-ezmlmrc.de corrected (Thanks, FT).
+-Made local check in ezmlm-tstdig case-insensitive (Thanks, Rick Myers).
+-Fixed ezmlm-glconf to work with 'sh', not only 'bash' (missing ';' before '}')
+ (Thanks, MS).
+-ezmlm-manage: text/bottom added also when moderated subscription is
+ completed (Thanks, SOH). Added -log command to ezmlm-manage. Allows remote
+ admins to retrieve Log if -l switch is set. Added -log into to mod-help via
+ ezmlmrc.
+-Made character defines sun4 cc compliant in decode{Q|B}.c and unfoldHDR.c.
+-Added support for "Sv:" and "Rv:" reply indicators (Nordic, Spanish).
+-Improved/expanded ezmlm-check.
+-Added -+ switch to ezmlm-make. Makes letter switches sticky (not -cC).
+ <#F#> is all letter switches, not only the ones set. (Thanks, SOH). Also,
+ added virtual domain info to ezmlm-make.1.
+
+ezmlm-idx-0.312, 19980805 (bug fixes only and support scripts added)
+====================================================================
+-Fixed declaration of char16table[] in decodeQ.c to get clean mips64 compile
+ (Thanks, MF).
+-Fixed ezmlm-request so that <#l#> and <#h#> are substituted correctly.
+-Added ezmlm-glmake to create a global list setup. Left ezdomo.tar.gz since that
+ is what's documented in the FAQ.
+-Fixed inconsistencies/errors in the ezdomo.tar.gz example files (Thanks, PN).
+-Changed ezmlm-return.c to understand qmail preVERP error messages even if
+ qmail is patched to use MIME error messages.
+-Added ezmlm-glconf and man page to the package. The program creates a config
+ file for the "majordomo-style" interface from a user's existing lists.
+-Updated ezmlmrc and translations to not overwrite text/faq|info when editing
+ the list and add a note on -faq/-info to text/bottom and on -list/-edit
+ to text/mod-help. Thanks to the "usual suspects" for the translations!
+-Corrected small bug in ezmlmrc.de and ezmlmrc.da.
+-Corrected small bug in ezmlm-check -s switch handling (Thanks, DS).
+-Fixed bug in unfoldHDR.c affecting handling of subject prefixes without
+ message number (Thanks, LL).
+
+ezmlm-idx-0.311, 19980701 (bug fix only)
+========================================
+-Restored the mistakenly amputated ezmlmrc (English only, others were ok).
+-Fixed ezmlm-gate to tolerate unset $SENDER (Thanks, AP).
+
+ezmlm-idx-0.31, 19980630
+========================
+-Added ezmlm-manage -m switch for moderated unsubscription, pre request.
+ (Thanks, FT).
+-made cookie for accept/reject the same: ezmlm-moderate/ezmlm-store.
+-ezmlmrc.da (Thanks, TF). Other ezmlmrc updated (Thanks: see README.idx).
+-copy.c modified to allow NUL, multiple tags per line, and <#h#> => outhost.
+ (Thanks, TM).
+-ezmlm-manage sends replies to "-help" from "list-return-@". This will break
+ all autoresponder loops for admin messages after 1 round. Otherwise,
+ ezmlm-warn and a broken responder can start an endless manage<->responder
+ exchange. (Thanks, MM.)
+-Simplified tosubs(). Slightly less efficient with qmail, but avoids a lot
+ of problems.
+-Added umask(022) to ezmlm-unsub.c and ezmlm-sub.c, in case they
+ are the ones to create dir/lock.
+-ezmlm-moderate and ezmlm-gate changed to pass on switches for exec'd
+ programs. ezmlm-moderate sets sender for ezmlm-send so that -C switch
+ works also for moderated lists.
+-ezmlm-accept now autoconfigured with ezmlm bin path and installed.
+-ezmlm-manage allows remote access to the ``extra'' db (-allow-subscribe)
+ with same restrictions as for the main list. Access to the ``blacklist''
+ db for remote admins only (-deny-subscribe).
+-ezmlmrc changed to skip ezmlm-reject in editor of sublists.
+-ezmlm-reject now rejects messages that do not contain the list
+ address in To:/Cc: (Thanks, DJB). ezmlmrc modified, since it requires
+ the ezmlm-reject line to have the list dir on the command line. Not full
+ rfc822 parser (see BUGS in ezmlm-reject.1!).
+-made missing file in copy.c a permanent error. This way, it's discovered
+ sooner, as the list owner may not have access to maillog.
+-docs updates, including adding terminal '/' to directories to make them
+ clearly distinct from files.
+-Safer storage of return-path by ezmlm-store.
+-ezmlm-send now adds a "Return-Path:" header to the archive copy. This way,
+ listowners without maillog access can get all the info (together with
+ "received:" and "delivered-to: lines).
+-ezmlm-send -R switch to remove "Received:" headers that cause bounces to users
+ (due to too low sendmail hopcount) that can subscribe and are reached by
+ probes just fine. "received:" headers still go to the archive (Thanks, TM).
+-Fixed minor bug in "reply-indicator" trimming (unfoldHDR.c).
+-Make default behavior of -get command to send the messages that have arrived
+ since the last digest (up to MAXGET) if there has ever been a digest (only
+ last message otherwise).
+-"prefix" number substitution changed to LAST '#'. Support for rfc2047 encoded
+ prefix. With iso-2022-* this will work only if characters after '#' are
+ ascii only, due to the removal of redundant ESC sequences from subjects before
+ comparison, and the need for any line to end in ascii. Improved robustness
+ of unfoldHDR.c (could be crashed with some illegal encoded words).
+-Make reject messages come From: list-owner@listhost in ezmlm-moderate. A
+ "Reply-To: address" is added if "-t address" is on the command
+ line (Thanks, YG).
+-ezmlm-get digesting now orders headers only for rfc1153 (mandated), otherwise
+ displays them as they come. The default headers included are the same, but
+ this can be overridden with dir/digheaders containing a list of the headers
+ to include.
+-ezmlm-request takes the first line starting with a letter and interprets it
+ as a command, if the subject is empty or does not start with a letter.
+ Only one line is interpreted.
+-ezmlm-request if used with "-f config" interprets "config" as a config file
+ of lists and list info. When used with this switch, it ignores the subject and
+ expects a command on the first body line. This is to service e.g. the
+ majordomo@host address. See man page.
+-ezmlm-request understands a number of command synonyms to make it easier for
+ users familiar to other MLMs. These are just translated into regular ezmlm
+ commands for use with the list.
+-ezmlm-manage services -faq, -info, and -query commands (see man page). Stubs
+for faq/info added to ezmlmrc and to edit-list via ezmlmrc.
+-ezmlm-check fixes for grep not understanding '-q' and a ezmlm-check -S switch
+ to avoid subscriber listing (Thanks, TEE).
+
+ezmlm-idx-0.302, 19980617 (bug fixes only)
+==========================================
+-Removed args from copy_insertsubject() call in ezmlm-send.c
+-made ezmlm-make enforce absolute "dot".
+-Fixed MIME newline bug in ezmlm-moderate/store/clean. (Thanks, JS).
+-Fixed missing arg in postmsg() call from previous fix (Thanks, MF).
+
+ezmlm-idx-0.301, 19980508 (bug fixes only)
+==========================================
+-Digest format is multipart/digest again. The new format MIXED/'x' is
+ identical, except that it is multipart/mixed. The former works well for
+ most MUA. The latter is better for Pine when ezmlm texts are content-
+ transfer-encoded.
+-RFC1153 format ignores content-transfer-encoding. This works fine with
+ us-ascii. For non-us-ascii it works if the mail path is 8-bit clean. RFC1153
+ is really a us-ascii format, since the messages are dependent on the
+ encoding of the main message. This way is as good as it can get.
+-Added many content-types to mimeremove in ezmlmrc (Thanks, SP).
+-Removed most of the -x stuff in ezmlmrc. Now, -x only adds MIME content-type
+ stripping (extensive) and limits message body size to 2-40000 bytes. If you
+ want "Reply-To:" munging, edit ezmlmrc. The "mailto:" stuff was bad, and
+ the references to list-owner@host for intractable problems are now standard.
+-Changed ezmlmrc extensions to iso 639: SV - Swedish.
+-Added ezmlmrc files for DE, PL (Thanks, FT, SP).
+-Fixed ezmlm-get: -index reply lacked MIME end boundary (Thanks, KI).
+-Fixed bug in ezmlm-get: outformat error when using digest trigger messages
+ in dir/editor. (Thanks YG).
+-Fixed bug in ezmlm-clean: cp_setlocal wasn't called.
+-Improved ezmlmrc files so that digest links and dirs are not created for
+ on-digested lists. Decreases number of .qmail files.
+-Fixed bug in ezmlm-get: Headers from trigger message are no longer copied
+ to digest (but are still copied to -index/-get/-thread reply). (Thanks STH.)
+-Fixed ezmlm-0.53 bug in ezmlm-return. The "d..." file was the same for all
+ addresses of a pre-VERP bounce, resulting in only the first one being
+ processed correctly (sent to DJB).
+-Changed ezmlm-get to include dir/headeradd headers for digest. (Thanks PH.)
+-Changed ezmlm-get to send digest "To: list@list" from "list-digest@host".
+ This way, the list address is one of the "reply-to-all" addresses, just
+ as for list messages. (Thanks PH.)
+-Corrected ezmlmrc: in some places "d" was used for "n" switch resuling in
+ missing dir/text files for editing if editing was enabled and digest
+ were not. (Thanks JS.)
+-Corrected ezmlmrc/se/jp to add terminal ';' to list in ezmlm-issubn
+ lines. Caused trouble with strict /bin/sh as on FreeBSD. (Thanks STH.)
+-Corrected ezmlm-make man page to show that "digestcode" is optional.
+
+
+ezmlm-idx-0.30, 19980325
+========================
+-Fixed bug in continuation line handling for digest. In some circumstances,
+ continuations ended up with the wrong header. (Thanks SA).
+-Changed digest format to multipart/mixed as pine has trouble with an
+ encoded text/plain part first in multipart/digest (although this is
+ rfc2046-ok). (Thanks SA).
+-Updated FAQ, *.idx, and man pages for new functionality.
+-Changed subdb.a folding qputsubs.c into putsubs.c and passing a pointer
+ to the write function. Better and necessary to allow QP/base64 output by
+ the ezmlm-manage -list command.
+-Added ezmlm-warn -t switch to modify bounce time-out as well as moved the
+ compile-time default to idx.h (Thanks Mark Delany).
+-Added note on "make clean" to INSTALL/UPGRADE.idx (Thanks Peter Hunter).
+-Added support for message numbers in the prefix. This violates mail standards,
+ but is very popular in Japan. (Thanks KI for inspiring this.) ezmlm-idx-0.30
+ does prefix differently, so that it modifies the subject as little as possible
+ for compliance with IETF recs and rfcs. ezmlm-idx-0.23 when prefix was used,
+ used a processed and unfolded subject, which was less correct, and could cause
+ problems with very long subjects.
+-Changed MAXEDIT to 10k. This should accomodate all reasonable dir/text files.
+ A limit _is_ required (see FAQ: SECURITY).
+-Made any _user-generated_ commands case-insensitive throughout (ezmlm-get,
+ -manage, -request). Note: ezmlm-generated ones, such as "list-accept" are
+ still case-sensitive. (Thanks GS for reminding me.)
+-Separated ezmlm-make switches for SENDER checks. -u for posts, -g for archive.
+ Also changed names of other switches. -n for text file editing, -d for
+ digest list. ezmlm-manage edit is now -eE, but the old -dD is still accepted.
+-Modified most programs to service requests for both list and digest list,
+ depending on LOCAL. For ezmlm-warn a command line -d switch is used to
+ process digest bounces. Created copy.h/c as a general routine that
+ does encoding and on-the-fly substitution of <#l#> to the name of the list
+ being serviced. ezmlmrc modified to set up list appropriately and create
+ a digest list for switch -d. The very rudimentary digest list is always
+ called 'list-digest' for the list 'list' and lives as a subscriber and a
+ bounce dir in dir/digest. log.c modified to take the dir as an argument.
+ copy.c introduced. Can deal with encoding and substitution for <#l#>,
+ <#B#>, <#R#>.
+-Made dir/extra standard. All subscriber restriction (ezmlm-make -u) is
+ to accept addresses that are subscribers of either list or in dir/extra.
+-Added REMOVE as a forbidden subject in ezmlm-reject.
+-Added support for rejection based on message and message part MIME
+ Content-type. ezmlm-send can from composite MIME messages filter out
+ body parts based on content-type. Trailers are added as MIME parts
+ to composite MIME messages and in the Content-transfer-encoding of the
+ message for single body messages.
+-min and max message size restrictions moved from ezmlm-send/store to
+ ezmlm-reject.
+-Added support for optional base64 and quoted-printable encoding of trailer
+ and all outgoing ezmlm messages. The same encodings are accepted as input
+ for moderator comments and edited text files.
+-Added hash for threading due to inconsistent/incorrect handling of LWSP
+ by iso-2022-jp MUAs. Now threading works for rfc2047 encoded subjects.
+-Added support for rfc2047 encoded From: lines and continuation for From:
+ lines.
+-Moved relevant parts of idxsub.c into ezmlm-send and ezmlm-idx.
+-Added MIME en/decoding routines to support rfc2047 encoded subject lines.
+ Also, added code to remove redundant ESC sequences when unfolding headers
+ in iso-2022-jp* and iso-2022-cn* and iso-2022-kr. Only iso-2022-jp has been
+ tested.
+-Added ezmlm-idx -d switch to use date from 'Date:' header instead of the
+ qmail received line. For old archives processed through ezmlm-send to
+ re-archive. Remove (GMT), (PST), and DOW, and make 2-digit years xx where
+ xx >= 70 19xx and others 20xx.
+
+
+ezmlm-idx-0.231, 19980302
+=========================
+-ezmlm-check.sh elsif -> elif.
+-Allowed ezmlm-make -a switch (was missing; Thanks MF).
+-Removed subject truncation for index: for prefixed lists it is used and
+rfc2047-encoded subjects are often longer.
+-Fixed idxsub.c bug (subject continuation lines skipped by ezmlm-idx if
+ 'Subject:' is after 'From:'). (Thanks, SOH.)
+
+
+ezmlm-idx-0.23, 19980120
+========================
+-ezmlm-check fixed to remove bash-specific pattern matching. (Thanks, VV).
+-ezmlm-both now makes completely functional list & digest list with digest
+ creation from dir/editor. If address is given, it becomes the owner, remote
+ admin, and a subscriber of both lists. By default, the remote admin is allowed
+ to get a subscriber list.
+-updated ezmlmrc.fr.
+-ezmlm commands now have alternates defined via idx.h, allowing aliases, rather
+ than replacement of command names in non-English domain.
+-Modified ezmlm-tstdig to run easily from within dir/editor and dir/manager.
+ Had to add dir/tstdig timestamp when run from dir/editor, to prevent triggering
+ a new digest while one is being made. Now no new request is issued within one
+ hour after the last one.
+ Changed ezmlmrc to make this default for digested lists.
+-New switches for ezmlm-make.
+-Added ezmlm-get -f and -t switches for easier use on the command line and
+ in dir/editor. Made it "context-sensitive" by testing LOCAL.
+-Via ezmlmrc added -q switch for processing commands to list-request,
+ a -3 hrs switch to configure ezmlm-tstdig in dir/manager, and some cleanup
+ in texts.
+-Modified ezmlm-make to fall back to system ezmlmrc files (with warning)
+ if the -c switch is used by no custom ezmlmrc file is found. This makes
+ it possible for a GUI to rely more on ezmlm-make.
+-Added ezmlm-request to redirect 'Subject:' line requests.
+-Added ezmlm-cron, a very restrictive crond interface enabling users
+ without direct cron access to generate digest trigger messages. Suitable
+ to be run from scripts for non-shell users as well. See ezmlm-cron.1.
+-modified ezmlmrc to set up sublists (-0 sublist@subhost), directories in
+ dir/modpost|modsub|remote with -789, and SENDER restriction on posts and
+ archive retrieval (-6 digest_dir). Doc'd in ezmlm-make.1.
+-modified ezmlm-make to allow </file#^5/> meaning -5 not defined/empty.
+-ezmlm-issubn -n[egate] switch to make 'blacklisting' of SENDERs easier.
+-ezmlm-get TOC loop starts at first message with the given subject, rather
+ than first message in range.
+-Added time and author to the subject index. The TOC now has author info.
+ Changes made so that the programs run fine with old or mixed old/new subject
+ index files.
+-removed == n == from rfc1153 digest messages.
+-Allowed for -dig.code[range]-targetlocal=targethost in ezmlm-get. Makes
+ it easier to trigger digests since SENDER "faking" is no longer required.
+-ezmlmrc changed to add 'Precedence: bulk' to dir/headeradd. For "vacation".
+-Added ezmlm-manage -edit and -edit.file actions. If the -d switch is
+ used, they allow remote admins to edit dir/text files.
+-Modified ezmlm-send to use the main list message number if the message
+ sender has the correct format and if the list is a non-archived sublist.
+-Added tosubs.c, putsubs.c, qputsubs.c for subscriber address output,
+ modified issub.c and subscribe.c, and put all into subdb.a. subscribe.h
+ modified to become the general header file for subscriber database interface.
+ issub() returns (char *)matching_address for compatibility with later packages.
+ Modified all programs interfacing with subscriber databases to use these
+ routines. In all a consistent interface. Using ezmlm with a different
+ subscriber database manager requires changes to these routines only.
+-Modified ezmlm-make and ezmlmrc to store all config info in dir/config, and
+ also read it from there if ezmlm-make is invoked in edit mode with the
+ 'dir' argument only.
+-Fixed ezmlm-manage to make all output MIME using dir/charset (Thanks, SK).
+
+
+ezmlm-idx-0.221, 19980101
+=========================
+-Fixed ezmlm-send bug causing problems with undefined SENDER.
+ (Thanks, Sadhu, TR).
+-Fixed ezmlm-make lock file name bug (Thanks, SOH).
+
+
+ezmlm-idx-0.22, 19971210
+========================
+-Added 'make clean' and TARGETS. (Thanks, TF).
+-man page and FAQ updates. Some of FAQ info moved into a 'USAGE' section
+ of the man pages.
+-Bug fixed: caused ezmlm-make to ignore the -c switch.
+-Added -34567890 switches to ezmlm-make. They take a command line argument
+ and substitute it for <#3#>, <#4#>, etc, in ezmlmrc.
+-Added code to ezmlm-gate to enable it to pass switches to both ezmlm-send
+ and ezmlm-store (which have and need to keep non-overlapping switches).
+-Added multi-moddir capability to ezmlm-gate, which now becomes the
+ standard tool for SENDER-restricting posts. ezmlm-store does this the
+ slightly more involved but much more secure way.
+-Added -C no copy to sender switch to ezmlm-send. Useful for small lists.
+-Added -d digdir switch to ezmlm-get. When specified, SENDER is accepted
+ for -get/thread/index only if a subscriber of the main list or the list
+ based in digdir.
+-ezmlm-manage sends help in reply to a specific list-help request, even if
+ the list is not public.
+-Added ezmlm-send -cC switches controlling post to self (Thanks TF, JS).
+-Modified ezmlmrc to add a few switches: -t (trailer), -f (prefix),
+ -l (subscriber list to remote admins, if any).
+-Added ezmlm-tstdig which tests if a specified number of messages, message
+ body bytes, or time have passed since the last digest creation. Added
+ support for this in ezmlm-send and ezmlm-get.
+-Added ezmlm-issub, and ezmlm-issubn (tests if SENDER is in any of a number
+ of subscriber databases). Thanks Mark Delany for the original ezmlm-issub.
+-Modified issub.c and subscribe.c to make subscriber database storage
+ and comparisons case-insensitive (backwards compatible).
+-Removed ezmlm-warn from ezmlmrc setup of DIR/bouncer. This helps big
+ lists with lots of bounces.
+-Added locking of list dir to ezmlm-make when used in -e [edit] mode.
+-Bug: ezmlm-send would make all subjects 'Re: something' even if they were
+ not replies for non-indexed lists with a subject prefix. Thanks, Ximenes
+ Zalteca (ximenes@mythic.net) for reporting this.
+
+
+ezmlm-idx-0.21, 19971115
+========================
+-Slightly improved ezmlm-both (now works even for non-remote admin setups).
+ It's still very pedestrian.
+-Added a few rfc1893 error codes.
+-Added -rR option to ezmlm-clean to control sender notification of time-out.
+-Bug: in ezmlm-idx missing message->continue (was break). Caused abort if
+ archive messages are missing (uncommon, but possible if user decides to
+ delete a few). (Tanks MF).
+-More strict on Re[...]: in idxsub: '...' has to be digits and ']' is
+ required. ':' is optional for broken MUAs. Swedish 'Ang:' accommodated.
+-Added 'Content-Disposition:' header to digest messages from ezmlm-get per
+ rfc2183 (Thanks, SK). Removed Content-Type: message/rfc822 txt, since it
+ is the default.
+-Updated man pages and FAQ for new features.
+-ezmlm-send no longer requires DIR/num. If it's not there, it's assumed to
+ be zero and created. This helps ezmlm-make -e.
+-Added ezmlm-make '-e' 'edit' switch. Modified ezmlmrc accordingly.
+-Added ezmlm-check script to help diagnose ezmlm list setup errors. Need to
+ add checks for DIR/text messages.
+-ezmlm-store now pipes the message to ezmlm-send if DIR/modpost is not present.
+ Removing DIR/modpost will make a message moderated list non-moderated.
+-Added ezmlm-gate which pipes to ezmlm-send/ezmlm-mode depending on membership
+ in an address database. This is now a installed C program.
+-ezmlm-get no longer requires index to be executable. Also, improved handling
+ of missing index files in indexed archive (no FATAL error, except for master
+ subject in 'thread' and that should be fixable ...). Added new format specifier
+ 'n' for 'not threaded'. Affects -get and -dig.
+-Bug: Fixed ezmlm-idx to create index via temp file (indexn) and chmod to 700.
+ (Thanks Toshinori Maeno).
+-Removed charset from multipart/digest header (Thanks SK).
+-Bug: Added <#D#> to ezmlm-warn line under </owner/> in ezmlmrc.
+
+
+ezmlm-idx-0.20, 19971030
+========================
+-Requests to ezmlm-moderate to accept/reject already processed messages
+ returns an error ONLY if the requested action is different from the actual
+ fate of the message. Keeps moderators happier in multi-moderator lists,
+ without info loss, with less traffic.
+-A moderator's (un)subscribe CONFIRM reply results in target notification,
+ only if the target's status changed. Multiple moderators confirming no
+ longer yields multiple messages to target.
+-ezmlm-manage copy() takes 2 arguments, the file name and a fall-back file
+ name in case the first file does not exist. CONFIRM requests to moderators
+ use text/mod-(un)sub-confirm (fall back: text/(un)sub-confirm). ezmlmrc
+ changed to set these up.
+-Added MIME header to ezmlm-get -index response (to get DIR/charset effect).
+-Updated docs and FAQ.idx.
+-Pre-release compile testing on several platforms. (Thanks YG, ARB, MF, SK).
+-Added DIR/msgsize. If it exists and is not 0, ezmlm-send and ezmlm-store will
+ bounce posts in excess of 'msgsize' bytes body size.
+-Fixed ezmlm-clean to that when multiple messages time out, the message-id:s
+ are different.
+-ezmlm-clean and ezmlm-moderate now by default return the post as a
+ MIME attachment. Use '-M' for old format.
+-Rewrote ezmlm-make to work from the ezmlmrc template file for better
+ and easier customization. Changed moderator rejection comment tag to '%%%'
+ from '###' to support '#' as a comment character in ezmlmrc. '###' still
+ works.
+-Added DIR/sequence for optional message number header, and DIR/charset for
+ character set. Thanks, SK. Default Compiled is now US-ASCII, as per rfc2046.
+-Added TEST.idx, SECURITY.idx.
+-ezmlm-get allows remote admins archive access even for non-public lists. The
+ ezmlm-get -pP switches override DIR/public effects.
+-ezmlm-manage still does moderator-initiated (un)sub when DIR/public is absent.
+-Fixed bug: Updated MIME to rfc2046. With this the ezmlm-get 'm' format is no
+ longer rfc1153-like. 'r' still gives rfc1153. Moderation attachments are now
+ message/rfc822. Hopefully, the pine attachment viewer will catch up.
+ Thanks, YG [and Mutt developers] for teaching me the errors of my ways. Also,
+ see ezmlm-get.1(BUGS).
+-ezmlm-manage gives moderator help and does list if target is moderator,
+ rather than sender. Allows moderator to access from secondary account (to
+ which mail sent to the primary account is forwarded).
+-ezmlm-store checks DIR/modpost for leading '/' and if found assumes that the
+ first line is the base directory for message moderators.
+-ezmlm-manage checks DIR/modsub and DIR/remote contents for a leading '/'.
+ If found, it is assumed to be the base-dir for moderators. NB: if both
+ DIR/modsub and DIR/remote have entries, only DIR/modsub is used, i.e. it
+ is not possible to have different dbs for remote admin and (un)sub mods.
+-Modified ezmlm-manage to add separate moderator confirm commands (tc/vc)
+ to allow also subscription moderator via forwarded mail. This is essentially
+ a total rewrite of ezmlm-manage. Also, the -S and -U switches were added to
+ allow optional omission of the user confirm phase for (un)subscribe.
+ USE OF THESE SWITCHES DRASTICALLY DECREASES SECURITY, except for
+ moderated lists. Since there have been many request for this (and it
+ seems reasonable in some circumstances) these options have been added.
+ Make sure you understand the consequences if you use them.
+-Fixed bug: Added exit code to ezmlm-moderate. Thanks BG.
+-Added include for sys/types.h to ezmlm-clean.c and ezmlm-store.c, changed
+ ulong/uint to unsigned long/int, removed void from empty parameter lists for
+ two functions, all to compile on BSDI 2.1 and Sun. Thanks, ARB and TE.
+-Combined ezmlm-mod with ezmlm-idx and fused mod.h into idx.h.
+
+ezmlm-idx-0.12, 19970910
+========================
+-Cleanups to allow compile on SGI. Thanks MF.
+
+ezmlm-idx-0.11, 19970907
+========================
+-Fixed bug: ezmlm-idx failed to check for error return from issub.c.
+-Fixed bug: ezmlm-idx would crash on empty subjects.
+-Moved out command names and lengths to idx.h making changing to other
+ languages easier. Please use this only for totally local lists.
+-Added -cC switches to ezmlm-get to disable all but -dig. Useful for secret
+ lists that are archived and digested.
+-Fixed bug: -dig would give "nothing to digest" with only 1 new message. Now
+ it sends that message out (previously, this message would have been in the
+ next digest as soon as more messages had arrived).
+-Added DIR/prefix. If it exists, it is prefixed to outgoing subjects. Not
+ added to archive/index. ezmlm-idx deals with it. 'Re: ' is prefixed for
+ replies, since we use reply-parsed subject in ezmlm-send. A lot of pain for
+ little gain, but for some reason this seems to be a 'must'.
+-Changed idxsub routines to return 1 if reply indicators were fund, 0 else.
+-Changed idxthread routines from int to void (don't return anything).
+-Split out errtxt.h from idx.h in anticipation of ezmlm-mod.
+-changed ezmlm-send to honor 'mailing-list' in headerremove.
+-fixed ezmlm-make to deal with non-archived and non-indexed lists and to
+ point out that -index works in sets of 100.
+-ezmlm-get error msg on non-sub -thread request fixed.
+-Added DIR/text/trailer. If it exists, it is added to all messages, as
+ suggested by Fred B. Ringel. It is not copied to the archive.
+-ezmlm-make changed to adapt text/bottom to archived/indexed status of list.
+-Fixed usage text for ezmlm-send.
+-'Reply-To:' header from messages is included in standard MIME digests
+ (after reading Dan's comments on Reply-To munging). rfc1153 doesn't allow it.
+-Changed ezmlm-get.c default to NOT restrict get/index/thread to subscribers.
+-Fixed ezmlm-get.1 to correctly reflect effect of -s/-S switches.
+-Fixed FAQ and added more info.
+
+ezmlm-idx-0.10, 19970801
+========================
+-Added several items to FAQ.
+-Made digestcode case-insensitive.
+-Fixed format bugs causing trouble with PINE (Thanks Fred B. Ringel).
+-Improved handling of missing index file in indexed archives.
+-Added info on -get and -index restrictions to text/bottom.
+-Added FAQ.idx (a little silly at the moment ;-).
+-Added CHANGES.idx.
+ Updated README.idx, UPDATE.idx, ezmlm.5 and other man pages.
+-Added text/digest to allow standard info to be added to the list. A place
+ holder is put in by ezmlm-manage, since the exact info depends on the
+ digest list.
+-Moved all error messages into defines in idx.h to support alternative
+ languages.
+-folded subject indexing into ezmlm-send.
+-ezmlm-get.c: Added -s (default) restricting -get, -index, -thread to
+ subscribers. -S on the command line removes this restriction.
+-Added support for the horrid German 'Aw:' and 'Aw[..]:' replies.
+-All linear white space is converted to a single ' ' in subject indexing.
+ Existing archives should be re-indexed using the new ezmlm-idx. Probably rarely
+ needed, but it's more correct.
+-Added support for subject continuation lines (rfc822). Probably very rarely
+ needed.
+-Limited '-thread' to +/- 2000 messages (defines in ezmlm-get.c) from the
+ "master message" to limit resource use on large archives.
+-Changed limit for '-get' to 50 messages, '-index' to 20 sets (2000 subjects).
+-Added digestcode support to ezmlm-make as a 5th argument. Default=blank.
+-Added arguments to digest option. If one is given, digesting starts with that
+ message and dignum/digissue are used/updated. If both are given, dignum and
+ digissue are not updated and the issue number is the number of the first
+ message in the archive.
+-Added digest support. Enabled by specifying a 'digestcode'last on the
+ ezmlm-get command line.
+-Removed the now redundant -fF (filter) and -qQ (quote) options.
+-Changed message format for returned messages allowing rfc1153, MIME
+ multipart/digest, or MIME multipart/digest ordering and retaining only headers
+ as per rfc1153, with the addition of 'Content-Type:' to better support
+ alternative character sets. The latter format is the default.
+-Fixed bug in -thread: search for messages was set to start at the beginning
+ of the index containing the "master message", rather than at the beginning of
+ the archive.
+-Fixed bug: A few stralloc* were incorrectly stdio* in sindex.c.
+
+ezmlm-idx-0.02, 19970702
+========================
+-Adapted to changes in ezmlm-0.52 => ezmlm-0.53.
+
+ezmlm-idx-0.01, 19970615
+========================
--- /dev/null
+ 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_\b<