The AliasFile option must be declared for
sendmail to do aliasing. If you omit this
option, sendmail might silently assume that you
do not want to do aliasing at all. There is no default compiled into
sendmail for the location of the
aliases file. For
mc configurations, an appropriate default will
be defined based on your operating system.
If you specify a file that doesn't exist (such as
/et/mail/aliases if you really meant
/etc/mail/aliases) or one that is unreadable,
sendmail complains with, for example:
Can't open /et/mail/aliases
This is a nonfatal error. The sendmail program
prints it and continues to run but assumes that it
shouldn't do aliasing.
The forms of the AliasFile option are as follows:
O AliasFile=location configuration file (V8.7 and later)
-OAliasFile=location command line (V8.7 and later)
define(`ALIAS_FILE',`location') mc configuration (V8.7 and later)
OAlocation configuration file (deprecated)
-oAlocation command line (deprecated)
The location is an argument of type
string and can be an absolute or a relative
pathname. A relative path (such as ../aliases)
can be used for testing but should never be used
in the production version of your sendmail.cf
file. To do so opens a security hole. Such a path is interpreted by
sendmail as relative to the queue directory.
This option can be used to change the name of the
aliases file (a possible consideration for
security). If you change the location or name of the
aliases file, be aware that other programs (such
as emacs and Sun's
nis services) might cease to work properly.
Note that with the mc technique the only way to
eliminate the default alias file declaration is to
undefine ALIAS_FILE like this:
undefine(`ALIAS_FILE')
If you need to turn off all aliasing, you must instead turn off alias
support at the delivery-agent flag level by removing the
F=A flag (F=A) from all
local delivery agents, as, for example:
MODIFY_MAILER_FLAGS(`LOCAL', `-A')
MODIFY_MAILER_FLAGS(`CYRUS', `-A')
MODIFY_MAILER_FLAGS(`CYRUSV2', `-A')
The sendmail program also allows you to use
several alias databases simultaneously. They are listed with the
AliasFile option as, for example:
O AliasFile=/etc/aliases/users,/etc/aliases/maillists
In this case, sendmail will look up an alias
first in the database /etc/aliases/users. If it
is not found, sendmail will then look in
/etc/aliases/maillists. The number of
simultaneous alias files is limited to MAXALIASDB (MAX...) as defined in conf.h (by
default 12). The -bi command-line switch will
rebuild all alias databases in the order listed in this
AliasFile option. Multiple declaration lines can
appear in the file, each adding an alias database to the list:
O AliasFile=/etc/aliases/users # aliases local users first
O AliasFile=/etc/aliases/maillists # then mailing lists
O AliasFile=/etc/aliases/retired # then retired accounts
Duplicates are not detected. Therefore, the following causes
/etc/aliases to be searched and rebuilt twice
each time:
O AliasFile=/etc/aliases
O AliasFile=/etc/aliases
Multiple alias files can similarly be specified on the command line
with the -O switch. But be aware that any alias
files declared in the command line cause all the configuration file
alias declarations to be ignored.
In addition to the name of alias databases,
sendmail also allows you to specify the type of
each. The type is the same as the types that are available for the
K configuration command (Section 23.2). The type prefixes the name, and the two are
separated by a colon:
O AliasFile=nis:mail.aliases
This example tells sendmail to look up aliases
in the nis type (the nis)
database called mail.aliases. The type can include
command-line-style switches that mean the same thing as those allowed
for the K configuration command.
For example:
O AliasFile=nis:-N mail.aliases
Here, the -N database-map switch causes lookups to
include a trailing null byte with each key.
The types that are reasonable to use with this option are shown in
Table 24-12. But note that it is generally better to
use the service-switch file to select services because it is less
confusing.
Table 24-12. Database-map types reasonable for aliases
btree
|
btree
|
V8.1 and above
|
A db(3) form of database
|
dbm
|
dbm
|
V8.1 and above
|
Really ndbm supplied with most versions of Unix
|
hash
|
hash
|
V8.1 and above
|
A db(3) form of database
|
hesiod
|
hesiod
|
V8.7 and above
|
MIT network user authentication services
|
ldap
|
ldap (was ldapx)
|
V8.8 and above
|
The Lightweight Directory Access Protocol
|
netinfo
|
netinfo
|
V8.7 and above
|
NeXT, Darwin, and Mac OS X NetInfo
|
nis
|
nis
|
V8.1 and above
|
Sun's NIS
|
nisplus
|
nisplus
|
V8.7 and above
|
Sun's newer version of NIS
|
nsd
|
nsd
|
V8.10 and above
|
Irix nsd database maps
|
program
|
program
|
V8.7 and above
|
Run an external program to look up the key
|
text
|
text
|
V8.7 and above
|
Look up in flat text files
|
userdb
|
userdb
|
V8.7 and above
|
Look up in the User Database
|
If a type is not known (that is, completely unknown, rather than one
that is not in this shortened table) and if the
-d27 command-line switch (-d27.1) is specified, sendmail
prints:
Unknown alias class bad type here
If the type cannot support aliasing (as defined by MCF_ALIASOK in
conf.c) and if the -d27
command-line switch is specified, sendmail
prints:
setalias: map class bad type can't handle aliases
In both cases the bad type is the offending map
type. Both errors cause the AliasFile
option's alias file declaration to be ignored.
Beginning with V8.7 sendmail, the declaration
and use of alias files is further complicated by the
introduction of switched-services files (ServiceSwitchFile). If the file defined by the
ServiceSwitchFile option exists, and if it defines
the type and location of alias information, each alias definition is
used just as if it were included in the configuration file (although
the syntax differs). On Solaris, Ultrix, and OSF systems,
switched-service files are supplied by the operating system. With
these you should beware the silent introduction of unexpected alias
services. On other operating systems you can set up a V8.7
switched-service file that can be used for aliases if you wish.
The AliasFile option is not safe. If specified
from the command line, it can cause sendmail to
relinquish its special privileges.