|
|
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?
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.