mmdftailor(F)


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

Format

keyword  parameter[, parameter...]

Description

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.


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

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

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

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

public
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

AUTHLOG
controls authorization information. See MCHANLOG and MLOGDIR.

AUTHREQUEST
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.

DEADLETTER
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 "".

MADDID
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.

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

MCHANLOG
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,
		stat=SOME
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:


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

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

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

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

timed
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.


MCHN
defines a channel. The following parameters can be used:

name
the name of the channel.

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

que
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.

tbl
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).

pgm
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.

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

reg
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.

host
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.

bak
channel can be invoked only by the background deliver daemon.

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

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

pick
channel can pick up mail from the remote host.

send
channel can send mail to the remote host.


ap
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:

same
does not reformat headers

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

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

nodots
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.

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

ldomain
a name overriding the default MLDOMAIN value for this channel.

host
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).

poll
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.

insrc
a table of hosts controlling message flow.

outsrc
see insrc

indest
see insrc

outdest
see insrc

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

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

auth
specifies the authorization tests that are made on this channel:

free
default, no checking takes place

inlog
log information for incoming messages

outlog
log information for outgoing messages

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

outwarn
as inwarn, but for outgoing messages

inblock
reject incoming messages that have inadequate authorization

outblock
as inblock, but for outgoing messages

hau
host and user authorizations are required

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

ttl
(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)

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

level
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.

MCHNDIR
is where the channel programs are to be found.

MCMDDIR
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.

MDBM
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.

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

MDFLCHAN
sets the default channel to something other than local.

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

MDLVRDIR
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.

MDMN
defines a domain. The following parameters can be used:

name
an abbreviated name for the domain

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

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

table
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",
	table=rootdomain
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.

MFAILTIME
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.

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

MLCKTYPE
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


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

MLISTSIZE
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.

MLNAME
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.

MLOCHOST
is a synonym for MLNAME.

MLOCMACHINE
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.

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

MLOGIN
is the user who owns the MMDF transport system.

MMAILID
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.

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

MMAXSORT
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.

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

MMBXPREF
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.


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

MMBXSUFF
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.

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

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

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

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

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

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

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

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

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

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

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

file
the file from which the contents of the table are built

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

flags
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:


file
comes from a sequentially read file (default).

dbm
is in the MMDF hashed database built with dbmbuild.

ns
the table data obtained by making queries on a nameserver.

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

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

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

abort
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).

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

partial
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"

MTBLDIR
is the default directory for the table files.

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

MXUSENS
defines nameserver lookup behavior with MX records.

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

1
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.

MWARNTIME
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.

ORPHANAGE
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 "".

TAGCHARS
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.


UUname
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.

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

Files


/usr/mmdf/mmdftailor
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.
© 2007 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 -- 05 June 2007