3 ezmlm \- format of ezmlm directory
9 stores information about an
18 manipulate the subscriber list stored under
21 handles administrative requests automatically;
23 sends a message to all subscribers listed in
25 and also maintains a message archive and message subject index if the list
26 is configured to do so.
28 rejects messages that have an empty subject, or a subject consisting of
33 warns users for which messages bounce and eventually removes them from
36 can create a subject index from an existing list archive.
38 manages message, index, and thread retrieval from the archive, as well
39 as the generation of message digests;
41 provides a restricted interface to cron for the generation of
42 digest generation trigger messages;
44 queues messages of moderated lists and sends a moderation request to
47 processes moderation requests to accept the queued message to the list
50 or to return the message to the sender;
52 cleans up the moderation queue and returns to the sender
53 any messages that have timed-out;
55 posts messages that come from a SENDER in an address database, and sends
56 remaining messages out for moderation;
58 is used to diagnose problems with ezmlm mailing list configuration;
62 determine if a SENDER is a subscriber or a member of a
63 collection of addresses;
65 determines if it is time to create a new digest based on the number and
66 volume of messages and the amount of time that has passed since the last
71 commands in the subject line easing migration from other mailing list
72 managers. It can also function as a global interface mimicking
73 the interface of other mailing list manager.
75 can set up the global interface, and
77 can create a configuration file for the global interface from your lists.
80 is a directory containing the subscriber list.
82 allows automatic subscription if
86 The list is hashed into 53 files, named
91 A nonexistent file is treated as an empty file.
93 Each file contains a series of addresses.
94 An address can be any string of non-NUL characters up to 400 bytes long.
95 Each address is preceded by the letter T and followed by a NUL.
98 when an address is added to or removed from the mailing list,
99 the relevant file is recreated under a temporary name
101 .I dir\fB/subscribers
102 and then moved into place.
109 to create confirmation numbers.
110 Anyone who can guess the contents of
112 can forge subscription requests.
114 does not put much effort into making
117 for better security, you should add some random garbage to
121 is a directory containing messages previously sent to subscribers.
123 archives all new messages if
129 also maintains a message subject and author index.
131 Messages sent to the mailing list are numbered from 1 upwards,
132 whether or not they are archived.
134 is the number of messages sent so far followed by ':', followed by the
135 cumulative amount of message body that has passed
137 stored as kbytes * 4 (4 corresponds to 1kb).
141 each subdirectory storing up to 100 messages.
142 Message number 100m+n, with n between 0 and 99, is stored in
143 .IR dir\fB/archive/\fIm\fB/\fIn .
144 For example, message number 15307 is stored in
145 .IR dir\fB/archive/153/07 .
146 The message index is stored in the file
148 in the same subdirectory of
150 holding the corresponding messages.
151 Thus, the subject index contains up to 100 entries.
153 The subject index contains message subjects that are normalized so that
154 the original message and all replies have the same entry. The subject index
155 is used for advanced message retrieval functions. For safety, the subject
156 index is created under a temporary name
159 and then moved into place.
162 will ignore message files without the owner-execute bit set.
164 turns on the owner-execute bit after safely writing the message to disk.
179 command line argument, digest creation
180 is enabled by putting this argument on the
185 is a directory containing bounce messages.
187 stores several types of files here.
188 .SH "DELIVERY INSTRUCTIONS"
190 sets up four files to control mailing list deliveries.
191 Each file is a series of delivery instructions in
196 handles incoming mailing list submissions.
202 to immediately forward each message to all subscribers
207 handles incoming messages for the mailing list's owner.
217 handles incoming bounce messages.
224 is no longer invoked here due to the load it places on systems with many
225 large lists with many bounces.
228 handles incoming administrative requests.
239 handles incoming message
243 requests for moderated lists.
249 and .BR ezmlm-clean .
252 can create digests if it is invoked from the command line, from
256 The program functions in slightly different ways in these 3 settings (see
259 To enable automatic digests for a mailing list, use the
261 switch. To also enable the generation of digests at specific times dictated
262 by mailed trigger messages, a
264 should be specified on the
267 This can be done by specifying
269 as a fifth argument to
271 when setting up the list.
273 must be alphanumeric and is case-insensitive.
275 To generate trigger messages, use
284 contains the number of the last message processed, followed by ':' and a
285 number that is increased by 1 for each 256 bytes of message body text
286 processed. The latter number is used by
288 to determine if a new digest is due.
291 contains the contents of
293 at the time of the last regular digest creation, followed by a ':',
294 followed by a timestamp.
295 It is updated after each regular digest is sent.
298 contains the issue number of the last regular digest. It is incremented
299 for each regular digest sent.
301 The following user crontab entry (all on one line)
302 generates a digest of the list
307 00 16 * * * /var/qmail/bin/qmail-inject list-dig.digcode
315 % ezmlm-cron -t 16:00 list@host digcode
319 can also be run from the shell: To generate a digest to
321 from the list housed in
325 % ezmlm-get ~joe/list
330 replies, digest can be sent in several formats. See
334 There are three aspects of moderation: moderation of posts, moderation
335 of subscriptions, and "remote administration", i.e. giving the
336 moderator the right to (un)subscribe any user.
338 handles these three aspects separately. The two first aspects enhance
339 security, while the third decreases security, but makes list administration
340 considerably easier. By default, the moderator database is the same for all
341 three functions. While "remote administration" and subscription moderation
342 always use the same database, the moderators for message moderation can
345 Even with subscription moderation, the user has to verify the request. This
346 is to ensure that the user initiating the request really controls the address.
348 options exist to disable the user handshake, which may be useful in some
351 For moderation options, the moderators are by stored in a subscriber
353 .IR moddir\fB/subscribers .
359 Moderators can be added and removed with:
373 For subscription moderation, touch
375 after adding moderator(s).
376 For remote administration, touch
378 If the contents of these files start with a leading forward slash, it is
379 assumed to be the name of
382 moderation. If both files exist and start with a forward slash, the
384 contents are ignored. Moderators are stored in a subscriber list in the
388 If no directory names are specified,
394 subdirectory of the base directory must exists/be created.
396 Moderation of messages is achieved by
404 stores the message in
405 .IR dir\fB/mod/pending
406 and sends a moderation request to all moderators stored in
413 posts messages directly, and
419 contains a directory name starting with a forward slash,
420 this directory is used as
422 for message moderation.
423 Moderators are stored in a subscriber list in the
427 If no directory names are specified,
434 .IR dot\fB\-accept-default
436 .IR dot\fB\-reject-default .
437 It handles replies from the moderators.
439 In addition to a moderator list, the directories
440 .IR dir\fB/mod/pending ,
441 .IR dir\fB/mod/accepted ,
443 .IR dir\fB/mod/rejected
444 must exist. These directories contain the message moderation queue.
447 .IR dir\fB/mod/modtime
448 it determines the minimal time in hours that messages wait in the moderation
449 queue, before they are returned to sender with the message in
450 .IR dir\fB/text/mod-timeout .
454 command is send for a moderator and
458 exist, a more detailed help message stored in
459 .I dir\fB/text/mod-help
460 will be sent together with the regular help. This text should not contain
463 .I dir\fB/text/mod-help
470 command is sent for a moderator and
476 command line switch is specified, a subscriber list will be returned.
480 command is sent for a moderator and
484 command line switch is specified,
486 is returned together with an
488 cookie. The remote administrator may return an edited version of the
489 file, which will be stored, provided that the cookie is valid.
496 containing files sent out by
498 in response to administrative requests:
503 This is placed at the top of each response.
506 Explaining how to use
508 This is placed at the bottom of each response.
511 Explaining how to confirm a subscription request.
514 Acknowledging successful subscription.
517 Acknowledging a subscription request for an address already
521 Rejecting a bad subscription confirmation number.
524 Explaining how to confirm an unsubscription request,
525 and explaining how to figure out the subscription address.
528 Acknowledging successful unsubscription.
531 Acknowledging an unsubscription request for an address not
535 Rejecting a bad unsubscription confirmation number.
538 Rejecting a bad archive retrieval request.
543 section of the digest. Usually, this will contain subscription info
544 for the digest, as well as information on how to post to the list.
547 If this files exists, it is copied to the end of all messages to the list.
550 Sent in response to the
552 command. Usually contains frequently asked questions and answers specific
553 for the mailing list.
556 Sent in response to the
558 command. Usually contains a descripition, policy, etc, for the list. The
559 first line should in itself be a very brief description of the list.
562 Pointing out that messages have bounced.
565 Pointing out that a warning message has bounced.
570 has kept a list of bounced message numbers.
573 Explaining that digest messages have bounced. All other text files are used
574 for both the main list and the digest list.
577 Separating the bounce message.
580 is set to list moderators issuing a
582 command. It contains instructions for moderators, but it is relatively
583 trivial for a non-moderator to read it. Don't put secrets here.
586 is the returned to the sender of a rejected post.
589 is returned if the message timed-out without moderator action.
592 is added to the text confirming subscription and unsubscription
595 and the requesting message, for actions that were approved
596 by a moderator. Not copying the requesting message
597 hides the moderator identity
601 is the text sent to the moderators to request moderator action on
605 Requesting that the moderator confirm a request to subscribe.
606 If this file does not exist,
611 Requesting that the moderator confirm a request to unsubscribe.
612 If this file does not exist,
617 Instructions sent to the remote administrator together with a copy
620 file and editing instructions.
623 A list of editable files in
625 with a one-line description send to a remote administrator in response to a
630 Sent to the remote administrator after an edited
632 file has been successfully saved.
634 Several tags in the text files are replaced by ezmlm programs.
635 All programs replace the tag
637 with the name of the list or the list-digest, as appropriate for the request,
640 with the hostname for the list.
646 with the current message number in added headers from
650 does this for digest messages, where the current message is the number of
651 the first message in the digest.
655 anywhere on a line with the subscription address, and
658 with the address the subscriber must reply to. Only the first tag on any
661 For backwards compatibility,
665 in any of these files
666 with the name of the subscription address.
673 with the address that the subscriber must reply to.
678 anywhere on a line with the address for accepting the message, and
681 with the address for rejecting the message.
682 Only the first tag on any line is processed.
684 For backwards compatibility,
686 also replaces the line
688 with the address for accepting the message and the line
690 with the address for rejecting the message.
691 .SH "OUTGOING MESSAGE EDITING"
692 .I dir\fB/headerremove
693 is a list of bad header field names,
696 removes these header fields from all outgoing messages.
699 .I dir\fB/headerremove
702 .BR Return-Receipt-To ,
708 is a list of new header fields.
710 adds these fields to every outgoing message.
717 .BR Precedence: bulk .
723 removed parts with the corresponding content-types from composite MIME
727 argument is specified,
728 simple MIME messages of these content-types are rejected.
735 argument is specified,
736 simple MIME messages of these content-types, or
737 composite MIME messages with any body part of these content-types are rejected.
741 exists, the first line is added as a header to all outgoing messages, followed
742 by a space and the message number. The message number is useful for archive
743 retrievals, since some mail systems do not reveal the return-path to the user.
745 Sublists have their own message counter. Adding a sequence header from a
746 sublists will give you the sublist message number which is different from
747 the main list message number.
750 is a subject prefix. If this file exists, its contents are prefixed to the
751 subject of the post in the outgoing message. The archived message is not
752 processed. Attempts are made to not duplicate an existing prefix in replies.
753 Think twice before using this option.
754 A prefix takes unnecessary space on the subject line and most mail clients
755 can easily filter on other headers, such as 'Mailing-List:'. If
756 .I dir\fB/prefix contains a single '#', this will be replaced by the message
757 number. The use of this feature is inadvisable and violates internet mail
758 standards. However, it is very popular in e.g. Japan. If you must use this
759 feature, make sure you are aware that you may be causing problems to users,
762 .I dir\fB/text/trailer
763 is a message trailer. If this file exists, it's contents are copied to the
764 end of outgoing messages. Only lines terminated with new-line are copied.
765 No trailer is copied to the archived version of the message.
768 .I dir\fB/mailinglist
773 field, showing the contents of
774 .IR dir\fB/mailinglist ,
775 in every outgoing message.
780 ezmlm programs create a new
782 field, showing the contents of the first line of
784 in every outgoing message. The list-id should be unique and within name
785 space controlled by the owner. It should remain constant even if lists
786 move and be of the format
789 List-ID: optional_text <unique_id.domain>
792 This header would result from a
794 file containing ``optional_text <unique_id.domain>''. See
795 .I http://www.within.com/~chandhok/ietf/listid.shtml
802 give the outgoing name of the mailing list.
807 to construct sender addresses for outgoing messages.
813 give the incoming name of the mailing list.
816 to parse incoming envelopes.
825 but sometimes they are different,
827 .I outlocal\fB@\fIouthost
829 .IR inlocal\fB@\fIinhost .
834 this mailing list is a sublist,
835 redistributing messages from a parent mailing list.
838 is the name of the parent list.
839 This affects the behavior of
843 .I dir\fB/qmqpservers
850 to send posts and digests. Other mail will use the normal qmail mechanism.
853 is modified correctly, server IP addresses listed one per line in
855 will be tried in order, rather than the default servers specified in
856 .IR /var/qmail/control .
860 exists, it is assumed to contain ``max:min'', where ``max'' is the maximum
861 size in bytes of an acceptable message body, and ``min'' the corresponding
862 minimal size. Either will be ignored if zero or omitted. If the
864 command line specifies the list directory, messages not meeting the size
865 criteria are rejected.
869 exists, the first line is assumed to represent a valid MIME character set,
870 which is used for all outgoing MIME messages sent by
872 and the message moderation programs. The character set string may be suffixed
873 with ':' and 'Q' or 'B' to send all outgoing
874 text (ezmlm messages, digest table-of-contents, moderation requests, etc)
875 encoded in ``Quoted-Printable'' or ``base64'' encoding. By default, no encoding
876 is done, which may result in the transmission of characters with the high
877 bit set. When encoding is specified, trigger messages and other parts of the
878 reply that should not be encoded are sent as separate MIME parts.
882 Any program that reads or writes the subscriber list,
883 or adds messages to the archive,
888 is an advisory log of subscription and unsubscription actions.
891 is not protected against system crashes.
892 Log entries may be missing or corrupted if the system goes down. There is
893 Log for each of the accessory address databases as well. Thus, the log
894 for digest subscribers is
895 .IR dir\fB/digest/Log .
896 If enabled, these logs can be retrieved by remote administrators (see
897 .BR ezmlm-manage(1) ).
900 contains items specific for the digest list.
902 .I dir\fB/digest/subscribers
903 contains hash files of digest subscriber addresses.
905 .IR dir\fB/digest/Log ,
906 .IR dir\fB/digest/bounce ,
907 .IR dir\fB/digest/lockbounce ,
909 .I dir\fB/digest/lock
910 have functions for the digest list that mirror that of the corresponding
915 contains SQL server access information for list that are configured to
916 use an SQL database for storage.
919 is a timestamp used temporarily by
921 to coordinate digesting.