mmdftailor -- provide run-time tailoring for the MMDF mail router


keyword  parameter[, parameter...]


The MMDF mail router reads site-dependent information from the ASCII file /usr/mmdf/mmdftailor each time it starts up.

Keywords in the tailor file are not case-sensitive; however, case is important for filenames and similar values. Use quotation marks to delimit strings to prevent them from being parsed into separate words accidentally.

The following alphabetical list describes most of the information you can set in the mmdftailor file. For information about additional channel-specific settings, refer to the documentation about the particular channel.

defines an alias table. The following parameters can be used:

specifies the name of the table to be associated with this alias entry

allows the entries in the table to cause delivery to files and pipes

does not allow the ~address alias bypass mechanism to work on this file

specifies that aliases in the table are considered public information and may be expanded by the SMTP EXPN command.

Here is an example:

ALIAS table=sysaliases, trusted, nobypass

controls authorization information. See MCHANLOG and MLOGDIR.

is the address to which users should mail if they have questions about why a message was not authorized for delivery. It is also used as the sender of authorization warning messages. It is not used if authorization is not enabled on some channel. See the auth parameter under MCHN.

specifies the location of the dead letter mailbox. This is the file that messages are put in if they cannot be returned and cannot be sent to the orphanage address (because ORPHANAGE is set to "" or to a bad address). By default it is /usr/spool/mmdf/lock/home/DeadLetter. To cause messages that would otherwise be put in the deadletter mailbox to instead be discarded, use DEADLETTER "".

controls whether submit adds ``Message-ID:'' header lines if they are missing from messages. It takes a number as an argument. If the number is 0, no action is taken. If the number is non-zero, then submit adds ``Message-ID:'' header lines if they are missing from messages.

is the address files directory. If it is not a full pathname, it is taken relative to MQUEDIR.

controls MMDF logging, except for authorization information and information produced by deliver and submit. See also MMSGLOG, AUTHLOG, and MLOGDIR.

Logging files and levels can also be specified in the channel descriptions. The logging file, if specified there, overrides the MCHANLOG definition. The logging level for the channel is set to the maximum of the MCHANLOG level and the channel description's level. The MCHANLOG level can therefore be used to increase logging on all channels at once.

Here is an example:

MCHANLOG 	/tmp/mmdfchan.log, level=FST, size=40,
An argument without an equal sign is taken as the name of the log. Logging levels are:

FAT logs fatal errors only
TMP logs temporary errors and fatal errors
GEN saves the generally interesting diagnostics
BST shows some basic statistics
FST gives full statistics
PTR shows a program trace listing of what is happening
BTR shows more detailed tracing
FTR saves every possible diagnostic

The size parameter is the number of 25 1KB block units you will allow your log file to grow to. When a log file reaches that size, that logging either stops or cycles around overwriting old data (see cycle).

The stat parameter sets up various status flags for logging:

closes the log after each entry; this allows other processes to write to it as well.

if the log is busy, waits a while for it to free.

if the log is at the maximum length specified with the size parameter, then cycles to the beginning.

sets the values close and wait (the most common setting).

opens the log and, after the timeout period (for example, 5 minutes), closes the log and reopens it; this option overrides all other options (used to reduce the overhead of re-opening the log for every entry while still retaining the ability to move the log file out from under a running process and have the process begin logging in the new log file soon thereafter).

Tailoring of the log files is generally performed at the end of the tailor file to prevent logging the tailoring action itself, thereby needlessly filling the log files when higher tracing levels are enabled. If you have bugs in the tailoring, you can move the log-file tailoring closer to the top of the tailor file.

defines a channel. The following parameters can be used:

the name of the channel.

a descriptive name used by certain programs as a display line to explain the function of the channel.

the queue subdirectory of /usr/spool/mmdf/lock/home in which to queue messages for this channel; MMDF prefixes the name with q. to form the subdirectory name.

the abbreviated name (from MTBL) for the associated table that lists the hosts that are accessible on this channel. If the specified table has not been previously defined, it will be defined with the same name, file, and show parameters as for this channel (do not define two channels that process the same queue, but use different tables because it will cause queue structure problems).

the channel program (in /usr/mmdf/chans) to invoke for this channel. This program takes mail from deliver and carries it to its destination on the local machine or across the network to a remote machine.

the delivery mode for the channel; if several values are selected, they are cumulative:

regular mode (the default). This mode queues mail, but does not send it; you must run deliver (manually, with cron, or as a background program) to actually send mail through the regulated channel.

same as reg, but specifies that deliver sort by host after sorting by channel, which allows as many mail messages as possible to get sent to a particular host before the connection is broken.

channel can be invoked only by the background deliver daemon.

channel is passive; it is a pickup-type channel (for example, pobox).

channel can be invoked immediately; no need to batch up mail.

channel can pick up mail from the remote host.

channel can send mail to the remote host.

the type of address parsing to use for reformatting headers on messages going out on this channel; if several values are selected, they are cumulative:

does not reformat headers

converts to RFC 822-style source routes (for example, @A:B@C)

converts to RFC 733-style source routes (for example, B%C@A).

selects output of leftmost part of domain names (for example, A in A.B.C) for sites that cannot handle domains (usually used in conjunction with the known= parameter to hide domain names behind a smart relay).
If header rewriting encounters a nameserver timeout, the header is left unchanged and a warning is added to the header. In the absence of this flag, the message is held in the queue until header rewriting is completed.

a name overriding the default MLNAME value for this channel (used when the channel should have non-standard values for the local domain).

a name overriding the default MLDOMAIN value for this channel.

the name of the host that is being contacted by this channel, usually used in the phone and pobox channels, or the name of the relay host when all mail to hosts in this channel's table gets relayed to one host (this is required on the badusers and badhosts pseudo-channels; it must be set to the local host for the list channel).

the frequency of polling the remote machine (0 disables polling, -1 requests polling to be done every time the channel is started up, any other value is the number of 15-minute intervals to wait between polls); if any mail is waiting to be sent, this value is ignored because a connection is always attempted.

a table of hosts controlling message flow.

see insrc

see insrc

see insrc

a table of hosts that are known on this channel; be sure that the table contains your own fully specified host name.

a channel-specific configuration string. See the individual manual pages for the channel for more information.

specifies the authorization tests that are made on this channel:

default, no checking takes place

log information for incoming messages

log information for outgoing messages

warn sender of incoming message if authorization is inadequate (the message still goes through)

as inwarn, but for outgoing messages

reject incoming messages that have inadequate authorization

as inblock, but for outgoing messages

host and user authorizations are required

(direct host only) when applying host controls, the message must be associated with a user local to that host (that is, no source routes)

(time-to-live) specifies the number of minutes for which retries to a host are blocked when deliver detects a connection failure to that host; this value can be overridden on the deliver command line (default is 2 hours)

the name of the channel log file to be used instead of the default MCHANLOG

the logging level for this channel (see also MCHANLOG)

Here is a simple example:

MCHN	name=local, que=local, tbl=local,
	show="Local Delivery", pgm=local,
	poll=0, mod=imm, ap=822, level=BST
If the first argument does not have an equal sign, the values of the name, que, tbl, pgm, and show parameters take on this value.

is where the channel programs are to be found.

is the default commands directory where the various MMDF commands are located. Any command that does not have a full pathname is taken relative to this directory.

tells MMDF where to find the database file containing the associative store. DBM-style databases get their speed and flexibility by performing dynamic hashing on an associative store. This can get quite large. By default, the file is located in the MTBLDIR directory, but it might need to be relocated due to its size.

sets the path to the deliver program. The default is /usr/mmdf/bin/deliver.

sets the default channel to something other than local.

is the name of the file used for tailoring the delivery for each user.

is the directory in which to deliver mail. If this is null, then the user's home directory is used. See also MMBXNAME and MMBXPROT.

defines a domain. The following parameters can be used:

an abbreviated name for the domain

a display line, which is used for formatting purposes to explain what the domain is all about

the full name (x.y.z...) of this domain

the associated table entry of known sites in this domain; if the specified table has not been previously defined, it will be defined with the same name, file, and show parameters as for this domain

Here is an example:

MDMN	name="Root", dmn="", show="Root Domain",
If the first argument does not have an equal sign, the values of the name, dmn, and show parameters take on this value. If no table parameter is specified, it defaults to the value of the name parameter.

is the time a message can remain in a queue before a failed-mail message is sent to the sender and the message is purged from the queue. See also MWARNTIME.

is the directory where the locking of files takes place: this is dependent on what style of locking you are doing.

specifies the locking protocol for MMDF to use when locking mailboxes. Use one or more of the following keywords with MLCKTYPE:

Keyword Lock file
advisory System V fcntl() kernel file locking
v7 Version 7 and System V Release 3, and earlier file locking
xenix XENIX file locking
all all known locking protocols

 Keyword    Lock file
 advisory   System V fcntl() kernel file locking
 v7         Version 7 and System V Release 3, and
            earlier file locking
 xenix      XENIX file locking
 all        all known locking protocols

If you specify more than one locking keyword, all locks must be successful before MMDF considers the mailbox locked. Here is an example MLCKTYPE setting:
MLCKTYPE advisory, xenix

gives your full local domain (this, combined with the MLNAME, and possibly the MLOCMACHINE, gives the full network address).

specifies the maximum number of addresses in a message before it is considered to have a ``big'' list. If there are more than the maximum number of addresses, then MMDF does not send a warning message for waiting mail and only returns a ``citation'' for failed mail. A citation consists of the entire header plus the first few lines of the message body.

is the name of your machine or site as you wish it to be known throughout the network, which can be a generic host name used to hide a number of local hosts. If it is a generic host name, internal hosts are differentiated by MLOCMACHINE. See also MLDOMAIN.

is a synonym for MLNAME.

is the local name of the machine. It is used by a site that has several machines, but wants the machines themselves to appear as one address. See also MLNAME and MLDOMAIN.

is the default directory in which the log files are kept. See also MMSGLOG, NAUTHLOG, and MCHANLOG.

is the user who owns the MMDF transport system.

is used to enable the use of the Mail-IDs facility of MMDF, which disassociates mail addresses from login names. Enable Mail-ID by setting MMAILID to 1. See tables(F) for more information.

specifies the maximum number of ``Received:'' or ``Via:'' lines in a message before it is considered to be looping and is rejected.

controls sorting of messages based on the number of messages in the queue. If the number of messages in the queue is less then MMAXSORT, the messages are sorted by arrival time and are dispatched in that order; otherwise, a message is dispatched as it is found during the directory search.

is the name of the mailbox. If this is null, then the user's login name is used. See also MDLVRDIR and MMBXPROT.

is a string written before the message is written into the mailbox. It is usually set to a sequence of <Ctrl>A characters. The default MMBXPREF value looks like this:
MMBXPREF "\001\001\001\001\n"
See also MMBXSUFF.

The values of MMBXPREF and MMBXSUFF should consist of non-printable characters only and must end in a newline.

gives the protection mode in octal for the user's mailbox. See also MDLVRDIR and MMBXNAME.

is a string written after the message is written into the mailbox. It is usually set to a sequence of <Ctrl>A characters. The default MMBXSUFF value looks like this:
MMBXSUFF "\001\001\001\001\n"
See also MMBXPREF.

controls the logging information produced by deliver and submit. See also MCHANLOG, AUTHLOG, and MLOGDIR.

is the directory for the files of message text. If it is not a full pathname, it is taken relative to MQUEDIR.

is the directory in which the timestamps for the channels are made, showing what phase of activity they are in.

is the parent directory for the various queues and address directories.

gives the protection mode in octal that the parent of the MQUEDIR directory should have.

is the signature that MMDF uses when notifying senders of mail delivery problems.

is the length of time in seconds that the background delivery daemon sleeps between queue scans.

sets the path to the submit program. The default is /usr/mmdf/bin/submit.

is the address to which to send mail that MMDF cannot cope with (that is, that MMDF cannot deliver or return to its sender).

defines an alias, domain, or channel table. The following parameters can be used:

a short name by which the table can be referred to later in the file

the file from which the contents of the table are built

a display line, which is used for reporting purposes to explain what the table is all about

indicates additional properties about the table being defined. Use this to specify the source type, nameserver lookup parameters, and control of partial lookups table options.

The following are possible values for flags:

comes from a sequentially read file (default).

is in the MMDF hashed database built with dbmbuild.

the table data obtained by making queries on a nameserver.

specifies to look up the given address in the domain specified by dmn= parameter of the domain definition.

specifies to look up the given fully-qualified domain name to determine the address(es) to use in delivering via SMTP.

specifies to look up the given alias name in alias tables.

specifies that if MMDF encounters a problem when searching an ns-type domain table, MMDF does not search any other domain tables (because the ns-type domain table is the most reliable).

specifies to search for successive subdomains of the domain if no exact match exists.

specifies to search for the domain in other domain tables; this allows users to omit the full domain specification when referring to local machines.

Note that MMDF treats flags=file and flags=dbm the same. In the case of an ns-type table, the flags field specifies the type of nameserver lookup (either domain, channel, or alias).

A typical example might be:

MTBL	name=aliases, file=aliases,
	show="User & list aliases"

If the first argument does not have an equal sign, the values of the other parameters take on this value. The following example sets the name, file, and show parameters to the string ``aliases'', then resets the show parameter to the string ``Alias table''.

MTBL aliases, show="Alias table"

is the default directory for the table files.

is the temporary files directory. If it is not a full pathname, it is taken relative to MQUEDIR.

defines nameserver lookup behavior with MX records.

prevents the nameserver from looking for an A record when it finds a host with an MX record that points to the current host.

if a host that is being looked up has an MX record that points to the current host, the nameserver will proceed to look for an A record rather than giving up. (Previously, if a machine had an MX record that pointed to itself, it would be unable to accept SMPT connections from itself.) This is the default setting.

specifies the time in hours that a message can remain in a queue before a warning message about delayed delivery is sent to the sender. See also MFAILTIME.

specifies the orphanage address. This is the email address that non-returnable messages (messages that needed to be bounced, but could not be returned to the sender) are sent to. It previously was set to the same value as MSUPPORT. It now defaults to the address given for MSUPPORT but can be changed. To disable the orphanage address and cause such messages to be put in the dead letter mailbox (see DEADLETTER), use ORPHANAGE "".

specifies the set of characters that can be used to add a tag to a local address (see the description of ``local addresses that contain an equal sign'' in the maildelivery(ADM) man page). By default, it is set to =. To make + and - also be treated in the way that = is, use TAGCHARS "=+-".

Do not include any characters in TAGCHARS that are needed for the local part of email addresses. For example, if aliases of the form some-address@your.domain are in use, - should not be included in TAGCHARS, because it will cause mail to such an alias to be treated as though it were addressed to some@your.domain.

defines the UUCP sitename (short form, not full path) and is used only by the UUCP channel. See also MLNAME. This parameter must be explicitly set to use UUCP for mail.

specifies the uux command that is run to send UUCP mail. The default is ``uux - -r''.


full pathname of mmdftailor

See also

cron(C), dbmbuild(ADM), deliver(ADM), mmdf(ADM), queue(F), submit(ADM), tables(F) uux(C)

Mail and Messaging Guide

Standards conformance

MMDF is not part of any currently supported standard; it was developed at the University of Delaware and is used with permission.
© 2004 The SCO Group, Inc. All rights reserved.