Annotation of 43BSD/contrib/mh/conf/doc/maildelivery.5, revision 1.1.1.1

1.1       root        1: .tr ~
                      2: .de NP
                      3: .IP "\fI\\$1\fP" 10
                      4: ..
                      5: .de II
                      6: .nr P- \\n()P   \" save the preceeding IP space
                      7: .nr )P 0       \" now set it to 0
                      8: .NP "\\$1\fP"
                      9: .nr )P \\n(P-   \" restore the preceeding IP space
                     10: ..
                     11: .ds M \fI.maildelivery\fP
                     12: .TH MAILDELIVERY 5 "1 October, 1985"
                     13: .SH NAME
                     14: maildelivery
                     15: .SH SYNOPSIS
                     16: User delivery specification file
                     17: .SH DESCRIPTION
                     18: The delivery of mail by the local channel can run through various
                     19: courses, including using a user tailorable file.
                     20: The delivery follows the following strategy, giving up at any point
                     21: it considers the message delivered.
                     22: .RS
                     23: .IP "1)" 4
                     24: If the address indicates a pipe or file default
                     25: then that is carried out.
                     26: .IP "2)" 4
                     27: The file \*M
                     28: (or something similar) in the home directory is read if it exists
                     29: and the actions in it are followed.
                     30: .IP "3)" 4
                     31: A system-wide file is consulted next, such as
                     32: .I /usr/lib/maildelivery
                     33: and the actions are similar to 2.
                     34: .IP "4)" 4
                     35: If the message still hasn't been delivered, then it is put into
                     36: the user's normal mailbox 
                     37: .RI ( .mail
                     38: or
                     39: .IR mailbox )
                     40: depending on the system.
                     41: .RE
                     42: .PP
                     43: The format of the \*M file is
                     44: .RS
                     45: .B field
                     46: .I <FS>
                     47: .B pattern
                     48: .I <FS>
                     49: .B action
                     50: .I <FS>
                     51: .B result
                     52: .I <FS>
                     53: .B string
                     54: .RE
                     55: where
                     56: .br
                     57: .NP field
                     58: is name of a field that is to be searched for a pattern.
                     59: This is any header field that you might find in a message.
                     60: The most commonly used headers are usually
                     61: From, to, cc, subject and sender.
                     62: As well as the standard headers, there are some psuedo-headers
                     63: that are can also be used. These are :-
                     64: .RS
                     65: .II source
                     66: The out of band sender information. This is the address MMDF would
                     67: use for reporting delivery problems with the message.
                     68: .II addr
                     69: the address that was used to mail to you, normally 'yourname' or 
                     70: 'yourname=string' (see below).
                     71: .II default
                     72: if the message hasn't been delivered yet, this field is matched.
                     73: .II *
                     74: this case is always true regardless of any other action.
                     75: .RE
                     76: .NP pattern
                     77: is some sequence of characters that may be matched in the
                     78: above
                     79: .IR field .
                     80: Case is not significant.
                     81: .IP \fIaction\fP 10
                     82: is one of the mail delivery actions supported by the
                     83: local channel.  Currently the supported actions are
                     84: .B file
                     85: or
                     86: .BR > ,
                     87: which
                     88: appends the message to the given file, with delimiters;
                     89: .B pipe
                     90: or
                     91: .BR | ,
                     92: which starts up a process with the message
                     93: as the standard input;
                     94: and
                     95: .B destroy
                     96: which throws the message away.
                     97: There is also
                     98: .B qpipe
                     99: or
                    100: .BR ^ ,
                    101: which fakes a pipe command and is quicker than the standard pipe,
                    102: but does not do header reformatting.
                    103: .br
                    104: For piped commands, the exit status of the command is significant.
                    105: An exit status of 0 implies that the command succeeded and everything
                    106: went well. An exit status of octal 0300-0377 indicates that a permanent
                    107: failure occured and the message should be rejected, these error codes
                    108: are given in mmdf.h. Any other exit
                    109: status indicates a temporary failure and the delivery attempt will
                    110: be aborted and restarted at a later time.
                    111: .NP result
                    112: is one of the letters A, R or ? which stand for
                    113: Accept, Reject and "Accept if not delivered yet".
                    114: They have the following effects:
                    115: .RS
                    116: .II A
                    117: If the result of this line's action is OK, then the message can be
                    118: considered delivered.
                    119: .II R
                    120: The message is not to be considered delivered by this action.
                    121: .II ?
                    122: This is equivalent to
                    123: .I A
                    124: except that the action is not carried
                    125: out if the message has already been accepted.
                    126: .RE
                    127: .PP
                    128: The file is always read completely so that several matches
                    129: can be made, and several actions taken.
                    130: As a security check, the \*M file must be owned by either
                    131: the user or root, and must not have group or general
                    132: write permission. In addition the system delivery file has the above
                    133: restrictions but must also be owned by root.
                    134: If the field specified does not need a pattern a dash (\-)
                    135: or similar symbol is usually inserted to show that the field is present
                    136: but not used.
                    137: The field separator character can be either a tab, space or comma (,).
                    138: These characters can be included in a string by quoting them with
                    139: double quotes (") (double quotes can be included with a backslash '\e').
                    140: .PP
                    141: MMDF treats local addresses which contain an equals sign ('=')
                    142: in a special manner.  Everything in a local address
                    143: from an equals sign to the '@' is ignored and passed on to the
                    144: local channel.  The local channel will make the entire string available
                    145: for matching against the
                    146: .I addr
                    147: string of the \*M file.
                    148: For example, if you were to
                    149: subscribe to a digest as "[email protected]",
                    150: .B submit
                    151: and the local channel will verify
                    152: that it is legal to deliver
                    153: to "foo", but then the entire string "foo=digest" will be available
                    154: for string matching against the \*M file for the
                    155: .B addr
                    156: field.
                    157: .SH ENVIRONMENT
                    158: The environment in which piped programs are run
                    159: contains a few standard features, specifically:
                    160: .ne 5
                    161: .sp
                    162: .nf
                    163: HOME is set to the user's home directory.
                    164: USER is set to the user's login name.
                    165: SHELL is set to the user's login shell (defaults to /bin/sh).
                    166: .sp
                    167: .fi
                    168: The default umask is set up to 077, this gives a very protective
                    169: creation mask.
                    170: Initgroups is called if 4.2 version of UNIX is running.
                    171: If further requirements are needed, then a shell script
                    172: can be run first to set up more complex environments.
                    173: .PP
                    174: There are certain built-in variables that you can give to
                    175: a piped program.  These are
                    176: .IR $(sender) ,
                    177: .IR $(address) ,
                    178: .IR $(size) ,
                    179: .I $(reply-to)
                    180: and
                    181: .IR $(info) .
                    182: .I $(sender)
                    183: is set to the return address for the message.
                    184: .I $(address)
                    185: is set to the address that was used to mail to you, normally `yourname'
                    186: or `yourname=string'.
                    187: .I $(size)
                    188: is set to the size in bytes of this message.
                    189: .I $(reply-to)
                    190: is set to the Reply-To: field (or the From: field if the former is
                    191: missing) and so can be used for automatic replies.
                    192: .I $(info)
                    193: is the info field from the internal mail header and is probably only
                    194: of interest to the system maintainers.
                    195: .SH EXAMPLE
                    196: .PP
                    197: Here is a rough idea of what a \*M file looks like:
                    198: .ne 12
                    199: .nf
                    200: .sp
                    201: # lines \fIstarting\fP with a '#' are ignored.
                    202: # as are blank lines
                    203: # file mail with mmdf2 in the "To:" line into file mmdf2.log
                    204: To~~~~mmdf2~~~~file~~~~A~~~~mmdf2.log
                    205: # Messages from mmdf pipe to the program err-message-archive
                    206: From~~~~mmdf~~~~pipe~~~~A~~~~err-message-archive
                    207: # Anything with the "Sender:" address "uk-mmdf-workers"
                    208: # file in mmdf2.log if not filed already
                    209: Sender~~~~uk-mmdf-workers~~~~file~~~~?~~~~mmdf2.log
                    210: # "To:" unix \- put in file unix-news
                    211: To~~~~Unix~~~~>~~~~A~~~~unix-news
                    212: # if the address is jpo=mmdf \- pipe into mmdf-redist
                    213: Addr~~~~jpo=mmdf~~~~|~~~~A~~~~mmdf-redist
                    214: # if the address is jpo=ack \- send an acknowledgement copy back
                    215: Addr~~~~jpo=ack~~~~|~~~~R~~~~resend~~\-r~~$(reply-to)
                    216: # anything from steve \- destroy!
                    217: from~~~~steve~~~~destroy~~~~A~~~~\-
                    218: # anything not matched yet \- put into mailbox
                    219: default~~~~\-~~~~>~~~~?~~~~mailbox
                    220: # always run rcvalert
                    221: *~~~~\-~~~~|~~~~R~~~~rcvalert
                    222: .sp
                    223: .fi
                    224: .SH FILES
                    225: $HOME/.maildelivery
                    226: \- the files normal location.
                    227: .br
                    228: /usr/lib/maildelivery \-
                    229: the system file. This should be protected against attack.  It
                    230: may contain contents such as:
                    231: .ne 4
                    232: .sp
                    233: .nf
                    234: default~~~~\-~~~~pipe~~~~A~~~~stdreceive
                    235: *~~~~\-~~~~|~~~~R~~~~ttynotify
                    236: .fi
                    237: .sp
                    238: This alows interfacing to non-standard mail systems,
                    239: ones that don't believe in delimiter-separated mailboxes
                    240: .SH "SEE ALSO"
                    241: rcvtrip(1)
                    242: .SH BUGS
                    243: And why not?

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.