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