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.

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.

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.

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.

  • user/pc/sysadmin/sendmail-virtual-domains.txt
  • Dernière modification : 2011/07/24 11:34
  • de pc