ezmlm(5)

NAME
ezmlm - format of ezmlm directory

OVERVIEW
An ezmlm directory, dir, stores information about an ezmlm mailing list. ezmlm-make creates dir; ezmlm-sub and ezmlm-unsub manipulate the subscriber list stored under dir; ezmlm-manage handles administrative requests automatically; ezmlm-send sends a message to all subscribers listed in dir.

SUBSCRIBERS
dir/subscribers is a directory containing the subscriber list. ezmlm-manage allows automatic subscription if dir/public exists. The list is hashed into 53 files, named @ through t in ASCII. A nonexistent file is treated as an empty file. Each file contains a series of addresses. An address can be any string of non-NUL characters up to 400 bytes long. Each address is preceded by the letter T and followed by a NUL. For reliability, when an address is added to or removed from the mailing list, the relevant file is recreated under a temporary name inside dir/subscribers and then moved into place. dir/key is a binary file. ezmlm-manage uses dir/key to create confirmation numbers. Anyone who can guess the contents of dir/key can forge subscription requests. ezmlm-make does not put much effort into making dir/key difficult to guess; for better security, you should add some random garbage to dir/key.

ARCHIVE
dir/archive is a directory containing messages previously sent to subscribers. ezmlm-send archives all new messages if dir/archived exists. Messages sent to the mailing list are numbered from 1 upwards, whether or not they are archived. dir/num is the number of messages sent so far. dir/archive has subdirectories, each subdirectory storing up to 100 messages. Message number 100m+n, with n between 0 and 99, is stored in dir/archive/m/n. For example, message number 15307 is stored in dir/archive/153/07. ezmlm-manage will ignore message files without the owner-execute bit set. ezmlm-send turns on the owner-execute bit after safely writing the message to disk.

BOUNCES
dir/bounce is a directory containing bounce messages. ezmlm-return stores several types of files here.

DELIVERY INSTRUCTIONS
ezmlm-make sets up four files to control mailing list deliveries. Each file is a series of delivery instructions in dot-qmail format. dir/editor handles incoming mailing list submissions. ezmlm-make sets up dir/editor to invoke ezmlm-send to immediately forward each message to all subscribers and then to run ezmlm-warn. dir/owner handles incoming messages for the mailing list's owner. ezmlm-make sets up dir/owner to store messages in dir/Mailbox and then to run ezmlm-warn. dir/bouncer handles incoming bounce messages. ezmlm-make sets up dir/bouncer to invoke ezmlm-return and then ezmlm-warn. dir/manager handles incoming administrative requests. ezmlm-make sets up dir/manager to invoke ezmlm-manage and then ezmlm-warn.

TEXT
dir/text is a directory containing files sent out by ezmlm-manage in response to administrative requests:

top Introducing ezmlm. This is placed at the top of each response.

bottom
    Explaining how to use ezmlm. This is placed at the bottom of each response.

sub-confirm
    Explaining how to confirm a subscription request.

sub-ok
    Acknowledging successful subscription.

sub-nop
    Acknowledging a subscription request for an address already on the mailing list.

sub-bad
    Rejecting a bad subscription confirmation number.

unsub-confirm
    Explaining how to confirm an unsubscription request, and explaining how to figure out the subscription address.

unsub-ok
    Acknowledging successful unsubscription.

unsub-nop
    Acknowledging an unsubscription request for an address not on the mailing list.

unsub-bad
    Rejecting a bad unsubscription confirmation number.

get-bad
    Rejecting a bad archive retrieval request.

bounce-warn
    Pointing out that messages have bounced.

bounce-probe
    Pointing out that a warning message has bounced.

bounce-num
    Explaining that ezmlm-return has kept a list of bounced message numbers.

bounce-bottom
    Separating the bounce message.

ezmlm-manage replaces the line !A in any of these files with the name of the subscription address. It replaces the line !R in sub-confirm and unsub-confirm with the address that the subscriber must reply to.

OUTGOING MESSAGE EDITING
dir/headerremove is a list of bad header field names, one per line. ezmlm-send removes these header fields from all outgoing messages. ezmlm-make sets up dir/headerremove to remove Return-Path, Return-Receipt-To, and Return-Path fields. dir/headeradd is a list of new header fields. ezmlm-send adds these fields to every outgoing message. ezmlm-make sets up dir/headeradd with no new fields.

MISCELLANY
The first line of dir/mailinglist is a line of text. ezmlm-send creates a new Mailing-List field, showing the contents of dir/mailinglist, in every outgoing message. The first lines of dir/outlocal and dir/outhost give the outgoing name of the mailing list. These are used by ezmlm-manage and ezmlm-send to construct sender addresses for outgoing messages. The first lines of dir/inlocal and dir/inhost give the incoming name of the mailing list. These are used by ezmlm-manage to parse incoming envelopes. Normally inlocal and inhost are the same as outlocal and outhost, but sometimes they are different, with outlocal@outhost forwarded to inlocal@inhost. If dir/sublist exists, this mailing list is a sublist, redistributing messages from a parent mailing list. The first line of dir/sublist is the name of the parent list. This affects the behavior of ezmlm-send. dir/lock is an empty file. Any program that reads or writes the subscriber list, or adds messages to the archive, locks dir/lock. dir/Log is an advisory log of subscription and unsubscription actions. WARNING: Log is not protected against system crashes. Log entries may be missing or corrupted if the system goes down.

SEE ALSO
ezmlm-list(1), ezmlm-make(1), ezmlm-manage(1), ezmlm-return(1), ezmlm-send(1), ezmlm-sub(1), ezmlm-unsub(1), ezmlm-warn(1), dot-qmail(5)