aliascheck - check for existence of mail alias
aliascheck [--nopwd] name
aliascheck --map [--case] name map-file
aliascheck --qmail [--nopwd] name
aliascheck checks whether name
is a valid email alias or a user in the
password file. It converts name
to lower-case before performing any of
the checks. If the alias or user exists, aliascheck exits with status 0 and
outputs what the address resolves to. If the alias does not exist, aliascheck
exits with status 1. If aliascheck cannot determine the validity of
because of some system error, it exits with status 2.
aliascheck can run in three different modes--sendmail alias mode (the default),
sendmail map mode, and qmail mode. In sendmail alias mode the second argument,
, is the name of the sendmail alias file, typically
. If no second argument is supplied, aliascheck
first checks for the existence of /etc/mail/aliases.db
, then for the
existence of /etc/aliases.db
, then finally exits with status 2 if
neither file exists. When an alias is found, aliascheck outputs the value of
that alias in the alias database.
When aliascheck is invoked with --map
, it looks up name
, which should be a database created with sendmail's
(8) utility. Note that maps have a slightly different and
incompatible format from that of alias files. Use the --case
to prevent name
from being folded to lower-case before it is looked up
in the database. Note that --map
implies the --nopwd
When aliascheck is given the argument --qmail
, it runs in qmail mode. In
this case, the second argument, alias-user
, specifies the user under
which qmail processes mail aliases. aliascheck will check this user's home
directory for files named .qmail-XXX
for various appropriate suffixes
. On success, it outputs the full pathname of the appropriate file.
If aliascheck cannot find an alias, it also checks the password file, and exits
0 if it can find name
there. If name
is found, aliascheck also
(in lower-case) to standard output before exiting. (This
is useful for Mail Avenger, because asmtpd does not recognize users with
invalid shells or UID 0, while MTAs typically do.) To suppress password file
checking, supply the --nopwd
argument to aliascheck.
If you are using Mail Avenger in conjunction with a sendmail installation, you
might want to put the following code in your /etc/avenger/unknown
to reject mail for unknown users who do not show up in the alias file.
aliascheck "$RECIPIENT_LOCAL" /etc/mail/aliases.db > /dev/null
case "$?" in
# Fall through to default checks
reject unknown user
# Probably safest to do nothing, but could also
# defer the mail with the following command:
#defer Temporary error processing alias file
If you have qmail instead of sendmail, assuming the qmail alias
called "alias", you would change the first line in the previous
aliascheck --qmail "$RECIPIENT_LOCAL" alias > /dev/null
- Mail Avenger rules for local email addresses that do not
correspond to local users, or correspond to local users without valid
shells, or local users with uid 0 (i.e., root). Note the location may be
different if you set EtcDir in your asmtpd.conf file.
- Default locations of sendmail alias file
- Default location of the sendmail virtual user table map,
when this feature is in use.
- Default locations of qmail alias files
- System password file. (Note, however, that aliascheck uses
the getpwnam function, and will thus be compatible with schemes
such as NIS that do not keep all users in the local password file.)
The Mail Avenger home page: <http://www.mailavenger.org/>.
aliascheck doesn't necessarily know how to parse the particular database format
your sendmail installation uses for aliases. Make sure you test it before
using it in an avenger script.
In some sendmail installations, the alias database is not world readable, which
can obviously prevent aliascheck from working properly if run under the wrong
user identity (such as the AvengerUser
It is quite possible for aliascheck to return a system error (exit code 2),
particularly if you run it while you are rebuilding a large alias database.
(aliascheck checks for the existence of special key "@" in the
database.) Make sure you differentiate between error code 1 (no user) and
error code 2 (system error).
aliascheck may not do the right thing if you installed qmail with
set to a character other than "-".
Remember that aliascheck does not read your qmail users/assign
files--it only checks for .qmail
files in the alias
user's home directory.