Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ maildel(F) — OpenDesktop 3.0.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

mmdftailor(F)

rcvalert(C)

rcvfile(C)

rcvprint(C)

rcvtrip(C)


 maildelivery(F)                 19 June 1992                 maildelivery(F)


 Name

    maildelivery - user delivery specification file

 Description

    The delivery of mail by the local channel can run through various
    courses, including using a user tailorable file.  The delivery follows
    the following strategy, giving up at any point it considers the message
    delivered.

    1.  If the address indicates a pipe or file default, then that is carried
        out.

    2.  The file .maildelivery in the home directory is read if it exists and
        the actions in it are followed.

    3.  If the message still hasn't been delivered, then it is put into the
        user's normal mailbox.

    The format of the .maildelivery file is

       field <FS> pattern <FS> action <FS> result <FS> string

    where:

    field     is name of a field that is to be searched for a pattern.  This
              is any header field that you might find in a message.  The most
              commonly used headers are: From, To, cc, Subject and Sender.
              As well as the standard headers, there are some pseudo-headers
              that can also be used. These are:

              source  the out-of-band sender information. This is the address
                      MMDF would use for reporting delivery problems with the
                      message.

              addr    the address that was used to mail to you, normally
                      yourname or yourname=string (see below).

              default if the message hasn't been delivered yet, this field is
                      matched.

              *       this case is always true regardless of any other
                      action.

    pattern   is some sequence of characters that may be matched in the above
              field.  Case is not significant.

    action    is one of the mail delivery actions supported by the local
              channel.  Currently the supported actions are file or ``>'',
              which appends the message to the given file, with delimiters;
              pipe or ``|'', which starts up a process with the message as
              the standard input; and destroy which throws the message away.

              For piped commands, the exit status of the command is signifi-
              cant.  An exit status of 0 implies that the command succeeded
              and everything went well. An exit status of octal 0300-0377
              indicates that a permanent failure occurred and the message
              should be rejected.  Any other exit status indicates a tem-
              porary failure and the delivery attempt will be aborted and
              restarted at a later time.

    result    is one of the letters A, R or ? which stand for Accept, Reject
              and ``Accept if not delivered yet''.  They have the following
              effects:

              A   If the result of this line's action is OK, then the message
                  can be considered delivered.

              R   The message is not to be considered delivered by this
                  action.

              ?   This is equivalent to A except that the action is not car-
                  ried out if the message has already been accepted.

    The file is always read completely so that several matches can be made,
    and several actions taken.  As a security check, the .maildelivery file
    must be owned by either the user or root, and must not have group or gen-
    eral write permission. In addition the system delivery file has the above
    restrictions but must also be owned by root.  If the field specified does
    not need a pattern, a dash (-), or similar symbol is usually inserted to
    show that the field is present but not used.  The field separator charac-
    ter can be a tab, space or comma (,).  These characters can be included
    within a field by quoting them with double quotes ("); double quotes can
    be included preceded by a backslash (\).

    MMDF treats local addresses which contain an equal sign (=) in a special
    manner.  Everything in a local address from an equal sign to the ``@'' is
    ignored and passed on to the local channel.  The local channel will make
    the entire string available for matching against the ``addr'' string of
    the MMDF file.  For example, if you were to subscribe to a digest as
    ``foo=digest@bar.NET'', submit(ADM) and the local channel will verify
    that it is legal to deliver to ``foo'', but then the entire string
    ``foo=digest'' will be available for string matching against the MMDF
    file for the ``addr'' field.

 Environment

    The environment in which piped programs are run contains a few standard
    features, specifically:

                    HOME is set to the user's home directory.
                    USER is set to the user's login name.
                    SHELL is set to the user's login shell
                    (defaults to /bin/sh).

    The default umask is set to 077 (a very protective creation mask).  A
    shell script can be run first to set up more complex environments.

    There are certain built-in variables that you can give to a piped pro-
    gram.  These are $(sender), $(address), $(size), $(reply-to) and $(info).
    $(sender) is set to the return address for the message.  $(address) is
    set to the address that was used to mail to you, normally `yourname' or
    `yourname=string'.  $(size) is set to the size in bytes of this message.
    $(reply-to) is set to the Reply-To: field (or the From: field if the
    former is missing) and so can be used for automatic replies.  $(info) is
    the info field from the internal mail header and is probably only of
    interest to the system administrators.

 Example

    Here is a rough idea of what a .maildelivery file looks like:

    # lines starting with a ``#'' are ignored.
    # as are blank lines
    # file mail with mmdf2 in the "To:" line into file mmdf2.log
    To    mmdf2    file    A    mmdf2.log
    # Messages from mmdf pipe to the program err-message-archive
    From    mmdf    pipe    A    err-message-archive
    # Anything with the "Sender:" address "uk-mmdf-workers"
    # file in mmdf2.log if not filed already
    Sender    uk-mmdf-workers    file    ?    mmdf2.log
    # "To:" unix - put in file unix-news
    To    Unix    >    A    unix-news
    # if the address is jpo=mmdf - pipe into mmdf-redist
    Addr    jpo=mmdf    |    A    mmdf-redist
    # if the address is jpo=ack - send an acknowledgement copy back
    Addr    jpo=ack    |    R    resend  -r  $(reply-to)
    # anything from steve - destroy!
    from    steve    destroy    A    -
    # anything not matched yet - put into mailbox
    default    -    >    ?    mailbox
    # always run rcvalert
    *    -    |    R    rcvalert

 File

    $HOME/.maildelivery     normal location

 See also

    mmdftailor(F), rcvalert(C), rcvfile(C), rcvprint(C), rcvtrip(C)

 Credit

    MMDF was developed at the University of Delaware and is used with permis-
    sion.


Typewritten Software • bear@typewritten.org • Edmonds, WA 98026