Suite à l'hébergement d'un nouveau domaine pour le site Web de mon petit frère Thomas pour le BDE de son école, j'ai reçu un mail destiné à webmaster@domaine.com mais qui, vu la configuration sommaire de ma messagerie.. a fini dans ma boîte aux lettres... :( Heureusement il n'y en a eu qu'un, mais ceci m'a conforté dans le fait qu'il fallait que je fasse quelque chose !

J'ai donc fait quelques recherches sur la toile et après avoir laissé de côté les diverses solutions à base de MySQL et autres LDAP que je trouvais un peu lourdes dans le cadre d'un serveur personnel... Je suis tombé sur le Howto qui va bien : hébergement de sites virtuels avec Postfix.

Grosso modo, la problématique est simple... J'héberge 3 domaines sur ma machine : toto.com, titi.com, tata.com et dans la configuration qui était en place, quelque soit le domaine, un mail envoyé à un utilisateur user@toto.com arrivait dans la même boîte aux lettres que user@titi.com ou user@tata.com. Mon but étant bien entendu de distinguer ces 3 adresses pour qu'un mail envoyé à ces trois adresses arrive dans trois boîtes aux lettres différentes... !

Dans un premier temps j'ai donc modifié le fichier /etc/postfix/main.cf en remplaçant la ligne

mydestination = $mydomain, $myhostname, localhost.$mydomain, $myhostname.toto.com titi.com tata.com

par

mydestination = $mydomain, $myhostname, localhost.$mydomain, $myhostname.toto.com

ou $mydomain=toto.com

j'ai ensuite créé les deux domaines virtuels titi.com et tata.com en ajoutant les lignes suivantes :

virtual_mailbox_domains = titi.com tata.com
virtual_mailbox_base = /virtual
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = hash:/etc/postfix/virtual

Le domaine toto.com n'est pas impacté par l'ensemble de ces manipulations.

Une fois ces lignes ajoutées, les messages à destination des domaines titi.com et tata.com seront délivrés en toute indépendance des utilisateurs Unix du serveur.

Lorsqu'un mail va arriver à destination de user@titi.com, Postfix va aller consulter ces deux maps /etc/postfix/vmailbox et /etc/postfix/virtual afin de savoir ce qu'il faut faire.

on renseigne donc ces deux fichiers :

cat /etc/postfix/vmailbox
webmaster@titi.com   titi.com/webmaster/Maildir/
admin@titi.com  titi.com/admin/Maildir/
webmaster@tata.com   tata.com/webmaster/Maildir/
admin@tata.com  tata.com/admin/Maildir/
         
cat /etc/postfix/virtual
@tata.com  user@tutu.com
mailing@titi.com user1@domain1.com, user2@domain2.com, user3@domain3.com

on crée l'arobrescence /virtual/titi.com ...

mkdir -p /virtual/titi.com/webmaster /virtual/tata.com/webmaster /virtual/titi.com/admin /virtual/tata.com/admin

puis les Maildir pour chaque utilisateur virtuel (dans le cas de Mailbox, seul /virtual/titi.com/ /virtual/tata.com/ sont à créer à priori)

maildirmake /virtual/tata.com/webmaster/Maildir/ ...

L'utilisateur Unix propriétaire de ces répertoires est alors créé

groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /virtual -m

Et enfin Postfix est redémarré :

/etc/init.d/postfix restart

A la suite de ça, si tout a été fait correctement, les comportements vont être les suivants :

  • les mails à destination de user@toto.com seront délivrés comme ils l'étaient avant.
  • Les mails à destination de webmaster@titi.com, admin@titi.com, webmaster@tata.com et admin@tata.com seront déposées dans les boîtes aux lettres virtuelles correspondantes
  • Tous les autres mails à destination du domaine tata.com seront reroutés vers l'adresse user@tutu.com
  • Les mails à destination de mailing@titi.com seront reroutés vers user1@domain1.com, user2@domain2.com et user3@domain3.com
  • Tous les autres mails à destination de titi.com seront notifiés "User Unknown" par le système de messagerie.

En ce qui me concerne, j'ai pour l'instant laissé de côté la partie boîtes virtuelles, il faut en effet que je potasse la configuration du serveur IMAP que j'utilise : Courier-Imap. Donc pour le moment, c'est uniquement un systèe de redirections que j'utilise. Vu que la majorité des mails sont pour moi, je vais pas non plus multiplier les compte de messageries...! Par contre, c'est pratique car ça permet de multiplier les adresses mail afin de savoir d'où provient le mail et de pouvoir faire du tri et du filtrage facilement :

Par exemple, pour chaque site où je rentre mon mail, je mets le nom du site en lieu et place de ma véritable adresse, cela permet de déceler par quel intermédiaire mon adresse a pu être spammée (par exemple) ou de classer mes mails en fonction du destinataire... Et bien d'autres choses encore... :-)