annotate doc/mh-alias.me @ 0:bce86c4163a3

Initial revision
author kono
date Mon, 18 Apr 2005 23:46:02 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
1 .\" This file is automatically generated. Do not edit!
bce86c4163a3 Initial revision
kono
parents:
diff changeset
2 .\" @(#)$Id$
bce86c4163a3 Initial revision
kono
parents:
diff changeset
3 .SC MH-ALIAS 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
4 .NA
bce86c4163a3 Initial revision
kono
parents:
diff changeset
5 mh-alias \- alias file for MH message system
bce86c4163a3 Initial revision
kono
parents:
diff changeset
6 .SY
bce86c4163a3 Initial revision
kono
parents:
diff changeset
7 any \fIMH\fR command
bce86c4163a3 Initial revision
kono
parents:
diff changeset
8 .DE
bce86c4163a3 Initial revision
kono
parents:
diff changeset
9 This describes both \fIMH\fR personal alias files and
bce86c4163a3 Initial revision
kono
parents:
diff changeset
10 the (primary) alias file for mail delivery, the file
bce86c4163a3 Initial revision
kono
parents:
diff changeset
11
bce86c4163a3 Initial revision
kono
parents:
diff changeset
12 /usr/local/mh/lib/MailAliases
bce86c4163a3 Initial revision
kono
parents:
diff changeset
13
bce86c4163a3 Initial revision
kono
parents:
diff changeset
14 It does \fBnot\fR describe aliases files used by the message transport system.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
15 Each line of the alias file has the format:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
16
bce86c4163a3 Initial revision
kono
parents:
diff changeset
17 alias : address\-group
bce86c4163a3 Initial revision
kono
parents:
diff changeset
18 .br
bce86c4163a3 Initial revision
kono
parents:
diff changeset
19 or
bce86c4163a3 Initial revision
kono
parents:
diff changeset
20 .br
bce86c4163a3 Initial revision
kono
parents:
diff changeset
21 alias ; address\-group
bce86c4163a3 Initial revision
kono
parents:
diff changeset
22 .br
bce86c4163a3 Initial revision
kono
parents:
diff changeset
23 or
bce86c4163a3 Initial revision
kono
parents:
diff changeset
24 .br
bce86c4163a3 Initial revision
kono
parents:
diff changeset
25 < alias\-file
bce86c4163a3 Initial revision
kono
parents:
diff changeset
26 .br
bce86c4163a3 Initial revision
kono
parents:
diff changeset
27 or
bce86c4163a3 Initial revision
kono
parents:
diff changeset
28 .br
bce86c4163a3 Initial revision
kono
parents:
diff changeset
29 ; comment
bce86c4163a3 Initial revision
kono
parents:
diff changeset
30 .br
bce86c4163a3 Initial revision
kono
parents:
diff changeset
31
bce86c4163a3 Initial revision
kono
parents:
diff changeset
32 where:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
33
bce86c4163a3 Initial revision
kono
parents:
diff changeset
34 address\-group := address\-list
bce86c4163a3 Initial revision
kono
parents:
diff changeset
35 .br
bce86c4163a3 Initial revision
kono
parents:
diff changeset
36 | \*(lq<\*(rq file
bce86c4163a3 Initial revision
kono
parents:
diff changeset
37 .br
bce86c4163a3 Initial revision
kono
parents:
diff changeset
38 | \*(lq=\*(rq UNIX\-group
bce86c4163a3 Initial revision
kono
parents:
diff changeset
39 .br
bce86c4163a3 Initial revision
kono
parents:
diff changeset
40 | \*(lq+\*(rq UNIX\-group
bce86c4163a3 Initial revision
kono
parents:
diff changeset
41 .br
bce86c4163a3 Initial revision
kono
parents:
diff changeset
42 | \*(lq*\*(rq
bce86c4163a3 Initial revision
kono
parents:
diff changeset
43
bce86c4163a3 Initial revision
kono
parents:
diff changeset
44 .br
bce86c4163a3 Initial revision
kono
parents:
diff changeset
45 address\-list := address
bce86c4163a3 Initial revision
kono
parents:
diff changeset
46 .br
bce86c4163a3 Initial revision
kono
parents:
diff changeset
47 | address\-list, address
bce86c4163a3 Initial revision
kono
parents:
diff changeset
48 .br
bce86c4163a3 Initial revision
kono
parents:
diff changeset
49
bce86c4163a3 Initial revision
kono
parents:
diff changeset
50 Continuation lines in alias files end with `\\' followed by the newline
bce86c4163a3 Initial revision
kono
parents:
diff changeset
51 character.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
52
bce86c4163a3 Initial revision
kono
parents:
diff changeset
53 Alias\-file and file are UNIX file names.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
54 UNIX\-group is a group name (or number) from \fI/etc/group\fR.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
55 An address is a \*(lqsimple\*(rq Internet\-style address.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
56 Througout this file, case is ignored, except for alias\-file names.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
57
bce86c4163a3 Initial revision
kono
parents:
diff changeset
58 If the line starts with a `<', then the file named after the `<' is
bce86c4163a3 Initial revision
kono
parents:
diff changeset
59 read for more alias definitions. The reading is done recursively, so a `<'
bce86c4163a3 Initial revision
kono
parents:
diff changeset
60 may occur in the beginning of an alias file with the expected results.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
61
bce86c4163a3 Initial revision
kono
parents:
diff changeset
62 If the address\-group starts with a `<',
bce86c4163a3 Initial revision
kono
parents:
diff changeset
63 then the file named after the `<' is read and its contents are added to
bce86c4163a3 Initial revision
kono
parents:
diff changeset
64 the address\-list for the alias.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
65
bce86c4163a3 Initial revision
kono
parents:
diff changeset
66 If the address\-group starts with an `=',
bce86c4163a3 Initial revision
kono
parents:
diff changeset
67 then the file \fI/etc/group\fR is consulted
bce86c4163a3 Initial revision
kono
parents:
diff changeset
68 for the UNIX\-group named after the `='.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
69 Each login name occurring as a member of the group is added to the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
70 address\-list for the alias.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
71
bce86c4163a3 Initial revision
kono
parents:
diff changeset
72 In contrast, if the address\-group starts with a `+',
bce86c4163a3 Initial revision
kono
parents:
diff changeset
73 then the file \fI/etc/group\fR is consulted
bce86c4163a3 Initial revision
kono
parents:
diff changeset
74 to determine the group\-id of the UNIX\-group named after the `+'.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
75 Each login name occurring in the \fI/etc/passwd\fR file whose group\-id
bce86c4163a3 Initial revision
kono
parents:
diff changeset
76 is indicated by this group is added to the address\-list for the alias.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
77
bce86c4163a3 Initial revision
kono
parents:
diff changeset
78 If the address\-group is simply `*',
bce86c4163a3 Initial revision
kono
parents:
diff changeset
79 then the file \fI/etc/passwd\fR is consulted
bce86c4163a3 Initial revision
kono
parents:
diff changeset
80 and all login names with a userid greater than some magic number
bce86c4163a3 Initial revision
kono
parents:
diff changeset
81 (usually 200) are added to the address\-list for the alias.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
82
bce86c4163a3 Initial revision
kono
parents:
diff changeset
83 In match, a trailing * on an alias will match just about anything appropriate.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
84 (See example below.)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
85
bce86c4163a3 Initial revision
kono
parents:
diff changeset
86 An approximation of the way aliases are resolved at posting time is
bce86c4163a3 Initial revision
kono
parents:
diff changeset
87 (it's not really done this way):
bce86c4163a3 Initial revision
kono
parents:
diff changeset
88
bce86c4163a3 Initial revision
kono
parents:
diff changeset
89 .in +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
90 1) Build a list of all addresses from the message to be
bce86c4163a3 Initial revision
kono
parents:
diff changeset
91 delivered, eliminating duplicate addresses.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
92
bce86c4163a3 Initial revision
kono
parents:
diff changeset
93 2) If this draft originated on the local host,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
94 then for those addresses in the message that have no host specified,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
95 perform alias resolution.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
96
bce86c4163a3 Initial revision
kono
parents:
diff changeset
97 3) For each line in the alias file,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
98 compare \*(lqalias\*(rq against all of the existing addresses.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
99 If a match, remove the matched \*(lqalias\*(rq from the address list,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
100 and add each new address in the address\-group to the address list
bce86c4163a3 Initial revision
kono
parents:
diff changeset
101 if it is not already on the list.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
102 The alias itself is not usually output,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
103 rather the address\-group that the alias maps to is output instead.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
104 If \*(lqalias\*(rq is terminated with a `;' instead of a `:',
bce86c4163a3 Initial revision
kono
parents:
diff changeset
105 then both the \*(lqalias\*(rq and the address are output
bce86c4163a3 Initial revision
kono
parents:
diff changeset
106 in the correct format.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
107 (This makes replies possible since \fIMH\fR aliases and
bce86c4163a3 Initial revision
kono
parents:
diff changeset
108 personal aliases are unknown to the mail transport system.)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
109 .in -.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
110
bce86c4163a3 Initial revision
kono
parents:
diff changeset
111 Since the alias file is read line by line, forward references
bce86c4163a3 Initial revision
kono
parents:
diff changeset
112 work, but backward references are not recognized, thus, there is
bce86c4163a3 Initial revision
kono
parents:
diff changeset
113 no recursion.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
114
bce86c4163a3 Initial revision
kono
parents:
diff changeset
115 .ne 10
bce86c4163a3 Initial revision
kono
parents:
diff changeset
116 \fBExample:\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
117 .nf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
118 .in +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
119 </usr/local/mh/lib/BBoardAliases
bce86c4163a3 Initial revision
kono
parents:
diff changeset
120 sgroup: fred, fear, freida
bce86c4163a3 Initial revision
kono
parents:
diff changeset
121 b-people: Blind List: bill, betty;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
122 fred: frated@UCI
bce86c4163a3 Initial revision
kono
parents:
diff changeset
123 UNIX\-committee: <unix.aliases
bce86c4163a3 Initial revision
kono
parents:
diff changeset
124 staff: =staff
bce86c4163a3 Initial revision
kono
parents:
diff changeset
125 wheels: +wheel
bce86c4163a3 Initial revision
kono
parents:
diff changeset
126 everyone: *
bce86c4163a3 Initial revision
kono
parents:
diff changeset
127 news.*: news
bce86c4163a3 Initial revision
kono
parents:
diff changeset
128 .in -.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
129 .fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
130
bce86c4163a3 Initial revision
kono
parents:
diff changeset
131 The first line says that more aliases should immediately be read from
bce86c4163a3 Initial revision
kono
parents:
diff changeset
132 the file \fI/usr/local/mh/lib/BBoardAliases\fR.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
133 Following this, \*(lqfred\*(rq is defined as an alias for
bce86c4163a3 Initial revision
kono
parents:
diff changeset
134 \*(lqfrated@UCI\*(rq,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
135 and \*(lqsgroup\*(rq is defined as an alias for
bce86c4163a3 Initial revision
kono
parents:
diff changeset
136 the three names \*(lqfrated@UCI\*(rq, \*(rqfear\*(rq, and \*(rqfreida\*(rq.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
137 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
138 The alias \*(lqb-people\*(rq is a blind list which includes the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
139 addresses \*(lqbill\*(rq and \*(lqbetty\*(rq; the message
bce86c4163a3 Initial revision
kono
parents:
diff changeset
140 will be delieved to those addresses, but the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
141 message header will show only \*(lqBlind List: ;\*(rq (not the addresses).
bce86c4163a3 Initial revision
kono
parents:
diff changeset
142 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
143 Next, the definition of \*(lqUNIX\-committee\*(rq is given by reading
bce86c4163a3 Initial revision
kono
parents:
diff changeset
144 the file \fIunix.aliases\fR in the users \fIMH\fR directory,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
145 \*(lqstaff\*(rq is defined as all users who are listed as members of
bce86c4163a3 Initial revision
kono
parents:
diff changeset
146 the group \*(lqstaff\*(rq in the \fI/etc/group\fR file,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
147 and \*(lqwheels\*(rq is defined as all users whose group\-id in
bce86c4163a3 Initial revision
kono
parents:
diff changeset
148 \fI/etc/passwd\fR is equivalent to the \*(lqwheel\*(rq group.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
149 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
150 Finally, \*(lqeveryone\*(rq is defined as all users with a user\-id in
bce86c4163a3 Initial revision
kono
parents:
diff changeset
151 \fI/etc/passwd\fR greater than 200,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
152 and all aliases of the form \*(lqnews.<anything>\*(rq are defined
bce86c4163a3 Initial revision
kono
parents:
diff changeset
153 to be \*(lqnews\*(rq.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
154
bce86c4163a3 Initial revision
kono
parents:
diff changeset
155 The key thing to understand about aliasing in \fIMH\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
156 is that aliases in \fIMH\fR alias files are expanded into the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
157 headers of messages posted.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
158 This aliasing occurs first,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
159 at posting time,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
160 without the knowledge of the message transport system.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
161 In contrast,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
162 once the message transport system is given a message to deliver
bce86c4163a3 Initial revision
kono
parents:
diff changeset
163 to a list of addresses,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
164 for each address that appears to be local,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
165 a system\-wide alias file is consulted.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
166 These aliases are \fBNOT\fR expanded into the headers of messages delivered.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
167 .Hh
bce86c4163a3 Initial revision
kono
parents:
diff changeset
168 To use aliasing in \fIMH\fR quickly, do the following:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
169
bce86c4163a3 Initial revision
kono
parents:
diff changeset
170 .in +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
171 First, in your \fI\&.mh\(ruprofile\fR,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
172 choose a name for your alias file, say \*(lqaliases\*(rq,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
173 and add the line:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
174
bce86c4163a3 Initial revision
kono
parents:
diff changeset
175 .nf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
176 .in +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
177 Aliasfile: aliases
bce86c4163a3 Initial revision
kono
parents:
diff changeset
178 .\" ali: \-alias aliases
bce86c4163a3 Initial revision
kono
parents:
diff changeset
179 .\" send: \-alias aliases
bce86c4163a3 Initial revision
kono
parents:
diff changeset
180 .\" whom: \-alias ailases
bce86c4163a3 Initial revision
kono
parents:
diff changeset
181 .in -.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
182 .fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
183
bce86c4163a3 Initial revision
kono
parents:
diff changeset
184 Second, create the file \*(lqaliases\*(rq in your \fIMH\fR directory.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
185
bce86c4163a3 Initial revision
kono
parents:
diff changeset
186 Third, start adding aliases to your \*(lqaliases\*(rq file as appropriate.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
187 .in -.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
188 .Fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
189 ^/usr/local/mh/lib/MailAliases~^Primary alias file
bce86c4163a3 Initial revision
kono
parents:
diff changeset
190 .Pr
bce86c4163a3 Initial revision
kono
parents:
diff changeset
191 ^Aliasfile:~^For a default alias file
bce86c4163a3 Initial revision
kono
parents:
diff changeset
192 .Sa
bce86c4163a3 Initial revision
kono
parents:
diff changeset
193 ali(1), send(1), whom(1), group(5), passwd(5), conflict(8), post(8)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
194 .De
bce86c4163a3 Initial revision
kono
parents:
diff changeset
195 None
bce86c4163a3 Initial revision
kono
parents:
diff changeset
196 .Co
bce86c4163a3 Initial revision
kono
parents:
diff changeset
197 None
bce86c4163a3 Initial revision
kono
parents:
diff changeset
198 .Hi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
199 In previous releases of \fIMH\fR,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
200 only a single, system\-wide mh\-alias file was supported.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
201 This led to a number of problems,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
202 since only mail\-system administrators were capable of (un)defining
bce86c4163a3 Initial revision
kono
parents:
diff changeset
203 aliases.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
204 Hence,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
205 the semantics of mh\-alias were extended to support personal alias files.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
206 Users of \fIMH\fR no longer need to bother mail\-system administrators for
bce86c4163a3 Initial revision
kono
parents:
diff changeset
207 keeping information in the system\-wide alias file,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
208 as each \fIMH\fR user can create/modify/remove aliases at will from any
bce86c4163a3 Initial revision
kono
parents:
diff changeset
209 number of personal files.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
210 .Bu
bce86c4163a3 Initial revision
kono
parents:
diff changeset
211 Although the forward-referencing semantics of \fImh\-alias\fR files prevent
bce86c4163a3 Initial revision
kono
parents:
diff changeset
212 recursion, the \*(lq<\ alias\-file\*(rq command may defeat this. Since the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
213 number of file descriptors is finite (and very limited), such infinite
bce86c4163a3 Initial revision
kono
parents:
diff changeset
214 recursion will terminate with a meaningless diagnostic when all the fds are
bce86c4163a3 Initial revision
kono
parents:
diff changeset
215 used up.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
216 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
217 Forward references do not work correctly inside blind lists.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
218 .En