The Courier mail server's support for the address alias file is similar to sendmail's, but with some notable differences. Aliasing addresses to programs is not allowed, the alias list is strictly a list of E-mail addresses. Mail addressed to a name of the alias is delivered to the list of E-mail addresses defined for that alias. The name of an alias has no corresponding mailbox, with one exception. The alias may include an E-mail address that is the same as the alias name, in which case the mail gets delivered to this mailbox in addition to being sent to all the other addresses defined for that alias. Otherwise, if a mailbox with the same name as an alias exists, it will not receive any mail, as any mail addressed to it will be forwarded to the alias members instead.
The alias file is called aliases.dat
. The
Courier mail server looks for aliases.dat
first in
the ${COURIER_HOME}/$ARCH/lib/modules/MODULE
directory. If not found, the Courier mail server looks for
aliases.dat
in ${COURIER_HOME}/lib
.
This lets you define aliases that can be mailed to only locally,
or define system wide aliases.
Please note that if
lib/modules/MODULE/aliases.dat
exists, and the
E-mail address is not found there, the Courier mail server wll
try again using lib/aliases.dat
.
makealiases
aliases.dat
file is created using the makealiases
program. The
syntax makealiases
is as follows:
makealiases -src=srcfile -tmp=tmpfile -auxtmp=auxtmpfile \ [ -alias=aliasfile ] [-dump] [module]The
src
, tmp
, and
auxtmp
parameters must be specified. Either the
alias
parameter or the dump
flag must be
specified.
srcfile is a text file with alias definitions.
makealiases
uses two temporary files to create the
aliases.dat
file. You must specify the names of
those files using the tmp
and auxtmp
parameters. aliasfile is the complete pathname to the final
aliases.dat
file, which should be either in the
lib
directory, or in the MODULE
directory. tmpfile and auxtmpfile must be on the
same filesystem as aliasfile.
You may not have more than one instance of
makealiases
running at the same time, using the same
temporary files. makealiases
automatically removes
the temporary files when done.
It is safe to run makealiases
while the Courier
mail server is running. The new aliases.dat
file
takes effect immediately.
All E-mail addresses in srcfile are rewritten to the
canonical format. The optional module
parameter
specifies the module whose rewriting functions are used. If not
specified, it defaults to local
, so that you can
specify addresses in srcfile without your local domain name.
The -dump
flag prevents the alias file from being
created. Instead, makealiases
just rewrites all the
addresses, removes the duplicates, and displays the final alias
list on standard output.
srcfile can be set to "-". makealiases
will read alias specifications from standard input.
An alias specification takes the form of:
alias: address1, address2, address3 ...
This specifies an alias whose name is alias. Mail that's sent to alias will be delivered to the specified list of addresses instead.
Instead of specifying an address, another alias can be used in its place, inserting the contents of the second alias list into the first alias list.
An alias specification may use mutiple lines. Start the second line with a tab character, or a space. For example:
everyone: john, steve, mary, alice, tom, harry, geneFor example, here's a three person organization. Gloria is in Sales, Steve is a system administrator, John does both sales and system administrators:
sales: john, gloria
sysadmin: steve, john
everyone: sales, sysadmin
This alias file specifies that mail addressed to
'sales
', will be delivered to the john and gloria
accounts. Mail sent to 'sysadmin
' will be delivered to
to the steve
and john
accounts. Mail sent
to 'everyone
' will be delievered to
steve
, john
, and gloria
.
Although john
is listed twice in the
everyone
alias - once in the sales
alias,
and the second time in the sysadmin
alias -
john
will receive only one copy of the message. The
makealiases
command (and the submit
command also), automatically eliminates duplicates. Running
makealiases with the -dump flag results in the following output.
everyone@example.com: john@example.com, gloria@example.com, steve@example.com
sysadmin@example.com: steve@example.com, john@example.com
sales@example.com: john@example.com, gloria@example.com
In this example, the local domain is
'@example.com
'. The makealiases commands automatically
converts all addresses to the canonical format.
The company grows in size, and it is now necessary for someone to be available 24 hours a day. Steve volunteers, and the following change is made:
sales: john, gloria
sysadmin: steve, john
everyone: sales, sysadmin
steve: steve, steve@domain.com
All mail sent to steve
will now have a second
copy mailed to steve@domain.com
, IN ADDITION to being
delivered to the local mailbox. steve@domain.com
is
Steve's Internet account at home. This changes affects all mail
sent to steve
, not just to mail sent to one of the
defined aliases. Running makealiases
with
-dump
now results in the following output:
everyone@example.com: john@example.com, gloria@example.com, steve@example.com, steve@domain.com steve@example.com: steve@example.com, steve@domain.com sysadmin@example.com: steve@example.com, john@example.com, steve@domain.com sales@example.com: john@example.com, gloria@example.comThis kind of forwarding should really be implemented in the
.courier
delivery specification file in Steve's
account. Although allowed, aliases should never have the same name
as a local account. Typically, you should define aliases for
postmaster
, and mailer-daemon
.
-dump
flag-dump
flag's output give an indication of what
makealiases
does:
RW_RECIPIENT
).makealiases
consists of all alias references resolved, so the contents of
all the defined aliases is just the end list of addresses.-dump
flag can be reread by
makealiases (it's pretty safe
to assume that if addresses are already in canonical format,
the rewrite function does nothing). Note that some
information is lost - namely if a list of addresses in an alias
actually came from another alias.-dump
flag is completely random.-dump
may
list the alias in parts.aliases.dat
filealiases.dat
file is a GDBM (or a DB) database.
Unless the list of addresses in a single alias is large, the
layout is pretty basic. The GDBM/DB database is keyed by the
alias name, and the contents of the record are the addresses
defined by the alias. Each address is followed by a newline
character.
In order to prevent the GDBM/DB library from consuming excessive amounts of memory, if an alias defines a large list of addresses, the list is saved in multiple records. The key of the second record is the alias name, followed by a newline, followed by "1". If a third record is necessary, it's name is the alias name, followed by a newline, followed by a "2". And so on.
/etc/aliases
fileAlthough the Courier mail server's implementation of
aliases.dat
may seem very similar to sendmail's
/etc/aliases
file, there are some important
differences:
aliases.dat
file. To
deliver mail to a command, or append it to a file, set aside a
system mailbox, or a Qmail-style alias account, then create an
appropriate .courier
file.foo: \foo, bar
" syntax is made redundant.
Just use "foo: foo, bar
".makealiases
in order for the address
rewriting changes to become effective.