makehosteddomains — Build a database of hosted domains
makehosteddomains
makehosteddomains rebuilds the contents of the
/etc/courier/hosteddomains.dat
database from the
contents of /etc/courier/hosteddomains
.
This can be either a file or a
directory. If it's a directory, the contents of all the files in this
directory are simply concatenated.
The makehosteddomains script
must be run in order for any changes to
/etc/courier/hosteddomains
to take effect.
The function of /etc/courier/hosteddomains
is very
similar to the one of /etc/courier/locals
.
Both configuration files specify
a list of domains that are considered to be local domains - domains whose
mailboxes are stored locally.
The difference is that domains listed in /etc/courier/locals
are removed from addresses before their mailbox is looked up. For example, if
the domain "example.com
" is listed in /etc/courier/locals
,
then the address <user@example.com>
is delivered to a local
mailbox named "user
". If this domain is listed, instead, in
/etc/courier/hosteddomains
, then the address
<user@example.com>
is delivered to a local mailbox named
"user@example.com
". Usually you would use
/etc/courier/locals
to specify domains that correspond to your
local system accounts, that are looked up in your system's password database.
The /etc/courier/hosteddomains
file is usually used when you have
database-based virtual domains, that are maintained via an LDAP or a MySQL
server.
The Courier mail server's LDAP and MySQL
authentication modules will use the full
E-mail address to query the LDAP or MySQL server for the location of the local
mailbox that correspond to the E-mail address.
The Courier mail server's
authuserdb
authentication module can also use full E-mail
addresses.
hosteddomains
The file /etc/courier/hosteddomains
simply contains a list of domains, one per line, for example:
domain.com example.org
Each domain can optionally be followed by a single tab character, in order to specify an alias for a domain, for example:
domain.com mail.domain.com<TAB>domain.com example.com<TAB>domain.com
First, we list the domain "domain.com
" as a hosted domain.
Then, we also list the domain "mail.domain.com
", which is
an alias for
domain.com
.
The Courier mail server will take any
address of the form
<address@mail.domain.com>
, rewrite it as
<address@domain.com>
, and attempt to deliver the
mail to a local mailbox for that name.
The third entry does the same for "example.com
"; mail
addressed to
<address@example.com>
is delivered to the local
mailbox <address@domain.com>
.
alias@hosteddomain
This is a special local mail delivery rule for
hosteddomain
-listed
domains. This rule allows the Courier
mail server accept mail to any
address@hosteddomain
, where "hosteddomain" is a domain listed in the
hosteddomains
file, but there is no corresponding account for
address@hosteddomain
. To provide delivery instructions for any
non-existing address in a hosteddomain
-listed
domain:
1) Create the local address alias@hosteddomain
. For example, if the
hosteddomains
file contains "example.com", create the local
account alias@example.com
. This should be a normal account, with its
own home directory, userid and groupid.
2) Create $HOME/.courier-default
file in this account,
containing the delivery instructions. See the
dot-courier(5)
manual page for available delivery instructions.
NOTE that alias@example.com
must be a real account, not a mail
alias. If you want to forward alias@example.com
to another address, put
forwarding instructions in the .courier-default
file. However,
alias@example.com
can be a clone of another account (with the same home
directory, userid, and groupid).
Wildcard DNS is supported for hosteddomains by placing a single period character before the domain name. For example, the hosted domain entry “.domain.com” will cause the Courier mail server to accept mail for “anything.domain.com”.
The Courier mail server will accept
mail for
<address@any.thing.domain.com
>
and attempt
to deliver it to the local mailbox
<address@any.thing.domain.com
>,
and if that fails then attempt to deliver the mail to the local
mailbox
<address@.thing.domain.com
>,
then finally
<address@.domain.com
>
There is a period after the '@' character. If you want all mail for “any.thing.domain.com” to be delivered as though it were sent to “domain.com”, you should define an alias for the domain, for example:
domain.com .domain.com<TAB>domain.com