Sendmail : domaines virtuels
Un serveur de courrier, disons mailhost.real.domain
, qui gère le courrier de real.domain
, doit aussi gérer le courrier du domaine virtual.domain
.
Sur ce serveur, on veut que l'utilisateur user@
ait pour adresse user@virtual.domain
, on utiliser donc la fonctionnalité d'utilisateurs virtuels virtusertable
.
Évidemment, on utilise Sendmail.
En entrée
Il faut ajouter la FEATURE
virtusertable
au fichier de configuration m4(1)
.
Sendmail attend alors un fichier /etc/mail/virtuser.db
(format Berkeley DB), géneré avec la commande :
$ sudo makemap hash virtuser < virtuser
Le fichier à partir duquel on génère virtuser.db
à la syntaxe suivante :
user1@virtual.domain user2@real.domain
Ici, on va donc avoir :
user@virtual.domain user
On peut insérer des commentaires avec #
en début de ligne. On peut aussi en profiter pour triturer un peu les adresses : par exemple,
user@virtual.domain %1+virtual
Attention :
La syntaxe est différente de /etc/mail/aliases
: ici, il n'y pas de :
entre les parties gauche et droite du fichier.
Sous NetBSD, vous pouvez voir le contenu des fichiers avec :
$ db -N hash virtuser.db
Si la FEATURE
mailertable
est présente dans le fichier de configuration m4(1)
, il faut avoir les lignes :
real.domain local: virtual.domain local:
et génerer /etc/mail/mailertable.db
comme ci-dessus. Même remarque que ci-dessus, pas de :
, pas comme le fichier d'alias.
En sortie
Tout d'abord, si user@
travaille sur host.virtual.domain
, vérifier (il est temps !) que la FEATURE
access_db
est bien présente dans le fichier de configuration m4(1)
.
Remplir le fichier /etc/mail/access
avec :
localhost.localdomain OK localhost OK 127.0.0.1 OK mailhost OK .real.domain OK .virtual.domain RELAY
Ici aussi, il faut générer /etc/mail/access.db
. Même remarque que ci-dessus, pas de :
, pas comme le fichier d'alias.
À ce stade, si user@
envoie un email, le destinataire verra :
From: user@real.domain
Pour éviter ce mélange entre les domaines, dans le fichier de configuration m4(1)
, activer la FEATURE
genericstable
. Sendmail attend alors un fichier /etc/mail/genericstable.db
. Pour changer le nom du fichier en revaliases
par exemple, il suffit de le spécifier :
FEATURE(`genericstable',`hash /etc/mail/revaliases')dnl
Ajoutons notre utilisateur :
user: user@virtual.domain
Ici, le caractère :
est bien là, comme pour les alias. Reste à génerer le haché comme ci-dessus.
Nota
Les FEATURE
suivantes vous intéressent probablement aussi :
genericstable_entire_domain
virtuser_entire_domain
De même, on peut stocker toutes ces informations dans un annuaire LDAP.
Enfin, suivant les volumes gérés, il peut etre utile d'avoir plusieurs queues ; avec des domaines virtuels, on peut donc avoir une queue par domaine, ce qui peut être utile pour des raisons comptables par exemple.
Le lecteur attendant que j'évoque d'éventuelles modifications DNS restera sur sa faim, le routage du courrier est un autre problème.