ezmlm-request(1) Process subject line and body ezmlm commands

SYNOPSIS

ezmlm-request [ -f config ] dir

DESCRIPTION

ezmlm-request processes ezmlm commands in the subject line or message body. ezmlm-request enables these uses to send the message to list-request@host with the complete command address line in the subject field, or with commands and arguments separated by white space. ezmlm-request uses the text to construct a ezmlm command message to the list. If the subject does not start with a letter, ezmlm-request instead uses the first body line that starts with a letter. Processing terminates if a line with a hyphen in the first position is encountered.

All commands are expected to be in ezmlm command address format or formatted as:

command [list@listhost [user@userhost]]

ezmlm-request when invoked with the -f switch and a configuration file (see below), ignores the subject and processes the first body line (per rules above) in conjunction with the configuration file. It also services the lists and which commands. This can be used to construct a global list interface, similar to that used by some other mailing list managers.

Messages at the list-request@host are restricted to the local list. When ezmlm-request is invoked with the -f config switch, command messages are limited to lists in config or at the local host.

Invalid requests for an existing ezmlm list will lead to a ``help'' message from ezmlm-manage(1).

ezmlm-request reads dir/copylines to determine how many lines of the original message to copy into the outgoing message. If this file is empty or not present, a value of 0 is presumed, meaning that only the header is copied.

If dir/qmqpservers exists, ezmlm-request will use qmail-qmqp(1) to send messages.

OPTIONS

-f config
Function as a global interface to ezmlm lists in accordance with config. This file consists of lines starting in the first position with ``list@host:listdir:description''. Lines that are blank or start
 with ``#'' are ignored. ``listdir'' and ``description'' are optional. If only ``list@host'' is given, the list is used to restrict commands (see below), but not listed. To allow the list to be shown by a ``list'' command, use ``list@host:''. To specify only the list name and description, use ``list@host::description''. If ``listdir'' is present, the which command attempts to determine if the user is a subscriber of the list. NOTE: this will work only if the user running ezmlm-request has read access to the lists subscriber database.

If ``listhost'' is not specified, ezmlm-request will use the ``listhost'' from the first config entry matching ``listlocal''. If ``listhost'' is specified, but not found in config, it is set to the contents of dir/outhost.

USAGE

Place an invocation of ezmlm-request in dir/manager anywhere before the ezmlm-manage(1) line.

Alternatively, set up dir/request with an invocation of ezmlm-request. Make a link from ~/.qmail-list-request to this file.

For the global interface, place /path/ezmlm-request -f config dir into a file. Link ~/.qmail-ezmlm and ~/.qmail-ezmlm-default to this file. The latter allows ezmlm-request to handle its own bounces as well as to reply to messages to e.g. ``user-ezmlm-lists@listhost''. Create dir/outlocal with ``user-ezmlm'', dir/outhost with ``listhost'', dir/headerkeep with headers to keep or dir/headerremove with headers to be stripped (copy from a list), dir/text/help, dir/text/top, and dir/text/bottom with the appropriate texts. Also, create config with the appropriate contents.

Mail to ``user-ezmlm@listhost'' will now be answered by ezmlm-request.

RECOGNIZED COMMANDS

Any command not recognized by ezmlm-request is assumed to be valid, as long as it consists of only letters, numbers, hyphen, underscore, period, and ``+''. This allows ezmlm-request to correctly handle commands added by the list owner.

A number of commands are recognized by ezmlm-request but not processed. Instead they are mapped to help without arguments. These are: system, put, and set.

ezmlm-request also handles a number of aliases for ezmlm commands. Since ezmlm-request only passes on requests to the list, local restrictions apply. For commands that have aliases, accepted aliases are listed:

subscribe
sub
unsubscribe
unsub, signoff, remove.
index
ind.
list
recipients, showdist, review, rev, who.
Some commands are handled differently when used without arguments:
query
Treated like ``which''.
list
Treated like ``lists''.

BUGS

ezmlm-request places stricter requirements on addresses than rfc822. Thus, some addresses that are rfc822-compliant cannot be used as ezmlm-request command arguments. If you fix this, please send a patch to [email protected]. I think qmail has the same restriction, though.

ezmlm-request uses NUL as a line terminator internally. Thus, if will fail if NUL is found within the line it tries to interpret as a command. It is harmless, other than that the remainder of the line will be ignored.

The ezmlm-request ``which'' command does not differentiate between a list for which the command is not available, a list for which the subscriber db is not accessible, and a list for which the address is not a subscriber. This should be considered a feature.

BUGS

ezmlm-request when used as a global interface and receiving multipart messages assumes that the first line of the fist part is the command. Further, it assumes that the first line starting``--'' is the first MIME boundary. This is virtually always true, but it is easy to construct legal messages that do not fit these assumptions. ezmlm-request in the global interface role will fail if this first part or the entire message is base64 encoded.