Il y'a de ça quelques temps, j'ai décidé de monter sur mon VPS un serveur de mail en utilisant Postfix, Dovecot et Spamassassin. Comme je n'avais pas pour autant l'envie de me casser trop les pieds avec des configurations que je ne connaissais pas, j'ai utilisé l'excellent script de Luke Smith qui permet de génerer automatique toute la configuration permettant à cet ensemble logiciel (qui inclut également la génération des clés DKIM).
J'étais bien content avec mon domaine, qui était utilisé pour mes différents services, et puis m'est venue l'idée de transférer ce blog (auparavant chez Google) pour une solution auto-hebergée plus respectueuse de la vie privée et me permettant de gérer ma configuration comme je le désirais. Et c'est avec ce blog qu'est né le domaine nicolaslang.fr et forcément l'idée d'avoir mon nom de domaine pour la messagerie m'apparut comme une évidence.
Seulement voilà, j'ai utilisé un script pour monter mon mail server, mais sans infos de comment faire pour ajouter un second domaine... Alors après un peu d'observation de ce que fait le script, quelques recherches sur les configurations possibles et nous voila partis pour nos modifications.
Nous allons déjà supposer que vous avez déjà créé les entrées DNS pour votre nouveau mail domain.
Tout d'abord, puisque vous ajoutez un domaine, vous devez avoir également un certificat pour ce domaine. Or Postfix et Dovecot ne prennent en compte qu'un seul certificat, qui ne couvrira qu'un domaine sur les deux. Il faut donc leur ajouter un certificat ayant plusieurs common name qui couvrira l'ensemble de vos domaines (ici nommés mail.domaine1.fr et mail.domaine2.fr, à remplacer bien entendu par le nom DNS de votre serveur de messagerie).
sudo certbot certonly -d mail.domaine1.fr -d mail.domaine2.fr
Votre nouveau certificat généré, allez éditer /etc/postfix/main.cf et modifier les lignes suivantes pour :
Ces lignes ci pour le nouveau cert :
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.domaine1.fr-0001/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.domaine1.fr-0001/privkey.pem
Ajouter ces lignes ci en fin de fichier conf pour le vdomain et le mappage des utilisateurs :
# Domaine virtuel
virtual_alias_domains = domaine2.fr
virtual_alias_maps = hash:/etc/postfix/virtual
Une fois ces points ci fait, nous allons créer le fichier /etc/postfix/virtual et y renseigner les différents utilisateurs qui seront dans le domaine2 sous ce format
newuser@domaine2.fr newuser
Comme le script utilise les utilisateurs UNIX pour l'authentification, vous devrez avoir un utilisateur nommé "newuser" existant.
Dovecot n'aura besoin comme modification uniquement que du nouveau certificat
ssl_cert = </etc/letsencrypt/live/mail.domaine1.fr-0001/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.domaine1.fr-0001/privkey.pem
Pour fonctionner, les informations de clé DKIM doivent être fournies pour le nouveau domaine. Vous n'avez pas besoin d'en regénérer une, juste de dire que vous voulez utiliser la même clé DKIM que pour domaine1.fr.
Une analyse de /etc/opendkim.conf nous montre que les informations de tables de clés et de tables de signature sont situées ici :
KeyTable file:/etc/postfix/dkim/keytable
SigningTable refile:/etc/postfix/dkim/signingtable
InternalHosts refile:/etc/postfix/dkim/trustedhosts
Nous allons donc d'abord modifier la keytable pour lui indiquer quelle clé privée utiliser pour votre nouveau mail domain. Entrez dans le fichier de KeyTable et modifiez le en conséquence :
mail._domainkey.domaine1.fr domaine1.fr:mail:/etc/postfix/dkim/mail.private
mail._domainkey.domaine2.fr domaine2.fr:mail:/etc/postfix/dkim/mail.private
Modifiez ensuite le fichier signingtable pour préciser qui doit signer avec quoi.
*@domaine1.fr mail._domainkey.domaine1.fr
*@domaine2.fr mail._domainkey.domaine2.fr
Désormais, vous aurez besoin l'éntrée DKIM mail._domainkey.domaine2.fr soit renseignée dans votre DNS avec la même clé que celle de domaine1.fr.
On redémarre les services! Mais après avoir attendu que le champ DNS soit répliqué sur les différents serveurs!
Redémarrez opendkim, dovecot et postfix.
Vous avez désormais un mailserver qui accepte domaine1.fr et domaine2.fr ! Félicitations!