e29db4a9b375631cb6eb1bcc1a70077dc8a690f8
[mmh] / man / mh-alias.man
1 .\"
2 .\" %nmhwarning%
3 .\"
4 .TH MH-ALIAS %manext5% "%nmhdate%" MH.6.8 [%nmhversion%]
5 .SH NAME
6 mh-alias \- alias file for nmh message system
7 .SH SYNOPSIS
8 any
9 .B nmh
10 command
11 .SH DESCRIPTION
12 This describes both
13 .B nmh
14 personal alias files and
15 the global alias file for
16 .B nmh
17 mail delivery, the file
18 .PP
19 .RS 5
20 %etcdir%/MailAliases
21 .RE
22 .PP
23 It does
24 .B not
25 describe aliases files used by the message transport system.
26 Each line of the alias file has the format:
27 .PP
28 .RS 5
29 .I alias
30 .B :
31 .I address\-group
32 .RE
33 or
34 .RS 5
35 .I alias
36 .B ;
37 .I address\-group
38 .RE
39 or
40 .RS 5
41 .B <
42 .I alias\-file
43 .RE
44 or
45 .RS 5
46 .B ;
47 |
48 .B :
49 |
50 .B #
51 .I comment
52 .RE
53 .PP
54 where:
55 .PP
56 .RS 5
57 .nf
58 .IR address\-group "    := " address\-list
59 .RI "                   |  < " file
60 .RI "                   |  = " UNIX\-group
61 .RI "                   |  + " UNIX\-group
62                         |  *
63
64 .IR address\-list "     := " address
65 .RI "                   |  " address\-list ", " address
66 .fi
67 .RE
68 .PP
69 Continuation lines in alias files end with `\\' followed by the newline
70 character.  This applies to comment lines.  Thus, a line following a
71 comment line that ends with a `\\' will be treated as a continuation of
72 the comment.
73 .PP
74 .RI \*(lq  Alias\-file \*(rq
75 and
76 .RI \*(lq file \*(rq
77 are UNIX file names.
78 .I UNIX\-group
79 is a group name (or number) from
80 .IR /etc/group .
81 An address is a \*(lqsimple\*(rq
82 Internet\-style address.  Througout this file, case is ignored, except
83 for file names.
84 .PP
85 If the line starts with a `<', then the file named after the `<' is
86 read for more alias definitions.  The reading is done recursively, so a
87 `<' may occur in the beginning of an alias file with the expected results.
88 .PP
89 If the
90 .I address\-group
91 starts with a `<', then the file named after the
92 `<' is read and its contents are added to the
93 .I address\-list
94 for the alias.
95 .PP
96 If the
97 .I address\-group
98 starts with an `=', then the file
99 .I /etc/group
100 is consulted for the UNIX\-group named after the `='.  Each login name
101 occurring as a member of the group is added to the
102 .I address\-list
103 for the alias.
104 .PP
105 In contrast, if the
106 .I address\-group
107 starts with a `+', then the file
108 .I /etc/group
109 is consulted to determine the group\-id of the
110 UNIX\-group named after the `+'.  Each login name occurring in the
111 .I /etc/passwd
112 file whose group\-id is indicated by this group is
113 added to the
114 .I address\-list
115 for the alias.
116 .PP
117 If the
118 .I address\-group
119 is simply `*', then the file
120 .I /etc/passwd
121 is consulted and all login names with a userid
122 greater than some magic number (usually 200) are added to the
123 .I address\-list
124 for the alias.
125 .PP
126 In match, a trailing \*(lq*\*(rq on an alias will match just about anything
127 appropriate.  (See example below.)
128 .PP
129 An approximation of the way aliases are resolved at posting time is
130 (it's not really done this way):
131 .PP
132 .RS 2
133 .IP 1) 3
134 Build a list of all addresses from the message to be delivered,
135 eliminating duplicate addresses.
136 .PP
137 .IP 2) 3
138 If this draft originated on the local host, then for those addresses in
139 the message that have no host specified, perform alias resolution.
140 .PP
141 .IP 3) 3
142 For each line in the alias file, compare \*(lqalias\*(rq against all of
143 the existing addresses.  If a match, remove the matched \*(lqalias\*(rq
144 from the address list, and add each new address in the address\-group to
145 the address list if it is not already on the list.  The alias itself is
146 not usually output, rather the address\-group that the alias maps to is
147 output instead.  If \*(lqalias\*(rq is terminated with a `;' instead of
148 a `:', then both the \*(lqalias\*(rq and the address are output in the
149 correct format.  (This makes replies possible since
150 .B nmh
151 aliases
152 and personal aliases are unknown to the mail transport system.)
153 .RE
154 .PP
155 Since the alias file is read line by line, forward references work, but
156 backward references are not recognized, thus, there is no recursion.
157 .PP
158 Example Alias File:
159 .PP
160 .RS 5
161 .nf
162 <%etcdir%/BBoardAliases
163 sgroup: fred, fear, freida
164 b-people: Blind List: bill, betty;
165 fred: frated@UCI
166 UNIX\-committee: <unix.aliases
167 staff: =staff
168 wheels: +wheel
169 everyone: *
170 news.*: news
171 .fi
172 .RE
173 .PP
174 The first line says that more aliases should immediately be read from
175 the file
176 .IR %etcdir%/BBoardAliases .
177 Following this, \*(lqfred\*(rq
178 is defined as an alias for \*(lqfrated@UCI\*(rq, and \*(lqsgroup\*(rq
179 is defined as an alias for the three names \*(lqfrated@UCI\*(rq,
180 \*(rqfear\*(rq, and \*(rqfreida\*(rq.
181 .PP
182 The alias \*(lqb-people\*(rq is a blind list which includes the addresses
183 \*(lqbill\*(rq and \*(lqbetty\*(rq; the message will be delivered to those
184 addresses, but the message header will  show only \*(lqBlind List: ;\*(rq
185 (not the addresses).
186 .PP
187 Next, the definition of \*(lqUNIX\-committee\*(rq is given by
188 reading the file
189 .I unix.aliases
190 in the users
191 .B nmh
192 directory,
193 \*(lqstaff\*(rq is defined as all users who are listed as members of the
194 group \*(lqstaff\*(rq in the
195 .I /etc/group
196 file, and \*(lqwheels\*(rq
197 is defined as all users whose group\-id in
198 .I /etc/passwd
199 is equivalent to the \*(lqwheel\*(rq group.
200 .PP
201 Finally, \*(lqeveryone\*(rq is defined as all users with a user\-id
202 in
203 .I /etc/passwd
204 greater than 200, and all aliases of the form
205 \*(lqnews.<anything>\*(rq are defined to be \*(lqnews\*(rq.
206 .PP
207 The key thing to understand about aliasing in
208 .B nmh
209 is that aliases in
210 .B nmh
211 alias files are expanded into the headers of messages posted.
212 This aliasing occurs first, at posting time, without the knowledge of the
213 message transport system.  In contrast, once the message transport system
214 is given a message to deliver to a list of addresses, for each address
215 that appears to be local, a system\-wide alias file is consulted.  These
216 aliases are
217 .B NOT
218 expanded into the headers of messages delivered.
219
220 .SH "HELPFUL HINTS"
221 To use aliasing in
222 .B nmh
223 quickly, do the following:
224 .PP
225 .RS 2
226 .IP 1) 3
227 In your
228 .IR \&.mh\(ruprofile ,
229 choose a name for your alias file, say
230 .RI \*(lq aliases \*(rq,
231 and add the line:
232 .PP
233 .RS 5
234 .nf
235 Aliasfile: aliases
236 .\" ali: \-alias aliases
237 .\" send: \-alias aliases
238 .\" whom: \-alias aliases
239 .fi
240 .RE
241 .PP
242 .IP 2) 3
243 Create the file
244 .RI \*(lq aliases \*(rq
245 in your
246 .B nmh
247 directory.
248 .PP
249 .IP 3) 3
250 Start adding aliases to your
251 .RI \*(lq aliases \*(rq
252 file as appropriate.
253 .RE
254
255 .SH FILES
256 .fc ^ ~
257 .nf
258 .ta \w'%etcdir%/ExtraBigFileName  'u
259 ^%etcdir%/MailAliases~^global nmh alias file
260 .fi
261
262 .SH "PROFILE COMPONENTS"
263 .fc ^ ~
264 .nf
265 .ta 2.4i
266 .ta \w'ExtraBigProfileName  'u
267 ^Aliasfile:~^For a default alias file
268 .fi
269
270 .SH "SEE ALSO"
271 ali(1), send(1), whom(1), group(5), passwd(5), conflict(8), post(8)
272
273 .SH CONTEXT
274 None
275
276 .SH BUGS
277 Although the forward-referencing semantics of
278 .B mh\-alias
279 files prevent recursion, the
280 .RI \*(lq< " alias\-file" \*(rq
281 command may defeat this.
282 Since the number of file descriptors is finite (and very limited), such
283 infinite recursion will terminate with a meaningless diagnostic when
284 all the fds are used up.
285 .PP
286 Forward references do not work correctly inside blind lists.