Ce didacticiel vous montrera comment configurer plusieurs domaines de messagerie (hébergement virtuel) sur le serveur CentOS/RHEL avec PostfixAdmin, qui est une interface Web open source permettant de configurer et de gérer un serveur de messagerie basé sur Postfix pour de nombreux domaines et utilisateurs.
Prérequis
Pour suivre ce tutoriel, il faut que
- Vous avez configuré PostfixAdmin avec un domaine de messagerie.
- Vous avez suivi la partie 4 pour configurer SPF et DKIM.
- Vous avez installé Roundcube Webmail.
Une fois les conditions ci-dessus remplies, suivez les instructions ci-dessous.
Ce que vous devez faire
Si vous souhaitez héberger plusieurs domaines de messagerie, vous devez
- Ajouter un nouveau domaine de messagerie et un nouvel utilisateur dans le panneau Web PostfixAdmin.
- Créez un enregistrement MX, A et SPF pour le nouveau domaine de messagerie.
- Configurez la signature DKIM pour le nouveau domaine.
- Créer un enregistrement DMARC pour le nouveau domaine.
- Configurer RoundCube Webmail, Postfix et Dovecot pour plusieurs domaines
Étape 1 :Ajouter des domaines supplémentaires dans le panneau d'administration de Postfix
Connectez-vous au panneau PostfixAdmin avec le compte postmaster. (https://postfixadmin.your-domain.com/
) Ensuite, allez dans Domain List
-> New Domain
pour ajouter un nouveau domaine.
Notez que le nouveau domaine doit avoir un enregistrement DNS A, sinon PostfixAdmin lancerait le message d'erreur suivant. Vous pouvez vérifier l'état de propagation DNS sur dnsmap.io.
Invalid domain domain2.com, and/or not discoverable in DNS
Ensuite, ajoutez un utilisateur sous le nouveau domaine.
Étape 2 :Création d'un enregistrement MX, A et SPF pour le nouveau domaine de messagerie
Dans votre gestionnaire DNS, ajoutez un enregistrement MX pour le nouveau domaine comme ci-dessous.
Record Type Name Value MX @ mail.domain2.com
L'enregistrement A pointe vers l'adresse IP de votre serveur de messagerie.
Record Type Name Value A mail IP-address-of-mail-server
Si votre serveur utilise une adresse IPv6, assurez-vous d'ajouter un enregistrement AAAA.
Créez ensuite un enregistrement SPF pour permettre à l'hôte MX d'envoyer des e-mails pour le nouveau domaine de messagerie.
Record Type Name Value TXT @ v=spf1 mx ~all
Étape 3 :Configurer la signature DKIM pour le nouveau domaine
Nous avons installé et configuré OpenDKIM pour un seul domaine dans la partie 4 de cette série de tutoriels. Nous devons maintenant dire à OpenDKIM de signer chaque e-mail sortant pour le nouveau domaine de messagerie.
Modifiez le fichier de table de signature OpenDKIM.
sudo nano /etc/opendkim/SigningTable
Ajoutez le deuxième domaine comme ci-dessous.
*@domain1.com 20200308._domainkey.domain1.com *@domain2.com 20200308._domainkey.domain2.com
Modifiez le fichier de table de clés.
sudo nano /etc/opendkim/KeyTable
Ajoutez le deuxième domaine comme ci-dessous.
20200308._domainkey.domain1.com domain1.com:20200308:/etc/opendkim/keys/domain1.com/20200308.private 20200308._domainkey.domain2.com domain2.com:20200308:/etc/opendkim/keys/domain2.com/20200308.private
Modifiez le fichier des hôtes de confiance.
sudo nano /etc/opendkim/TrustedHosts
Ajoutez le deuxième domaine comme ci-dessous.
127.0.0.1 localhost *.domain1.com *.domain2.com
Ensuite, nous devons générer une paire de clés privée/publique pour le deuxième domaine. Créez un dossier séparé pour le deuxième domaine.
sudo mkdir /etc/opendkim/keys/domain2.com
Générer des clés en utilisant opendkim-genkey
outil.
sudo opendkim-genkey -b 2048 -d domain2.com -D /etc/opendkim/keys/domain2.com -s 20200308 -v
La commande ci-dessus créera des clés de 2048 bits. -d (domain)
spécifie le domaine. -D (directory)
spécifie le répertoire où les clés seront stockées et nous utilisons 20200308
(date du jour) comme selector (-s)
. Une fois la commande exécutée, la clé privée sera écrite dans 20200308.private
fichier et la clé publique seront écrites dans 20200308.txt
fichier.
Faire opendkim
en tant que propriétaire de la clé privée.
sudo chown opendkim:opendkim /etc/opendkim/keys/domain2.com/20200308.private
Afficher la clé publique
sudo cat /etc/opendkim/keys/domain2.com/20200308.txt
La chaîne après le p
paramètre est la clé publique.
Dans votre gestionnaire DNS, créez un enregistrement TXT pour le deuxième domaine. Entrez 20200308._domainkey
dans le champ Nom. Copiez tout entre parenthèses et collez dans le champ de valeur. Supprimez tous les guillemets doubles. (Vous pouvez d'abord le coller dans un éditeur de texte, supprimer tous les guillemets doubles, puis le copier dans votre gestionnaire DNS. Votre gestionnaire DNS peut vous demander de supprimer d'autres caractères non valides, tels que le retour chariot.)
Après avoir enregistré vos modifications. Vérifiez l'enregistrement TXT avec cette commande.
dig TXT 20203008._domainkey.domain2.com
Vous pouvez maintenant exécuter la commande suivante pour tester si votre enregistrement DNS DKIM est correct.
sudo opendkim-testkey -d domain2.com -s 20200308 -vvv
Si tout est OK, vous verrez
opendkim-testkey: using default configfile /etc/opendkim.conf opendkim-testkey: checking key '20203008._domainkey.domain2.com' opendkim-testkey: key secure opendkim-testkey: key OK
Si vous voyez "Clé non sécurisée", ne paniquez pas. C'est parce que DNSSEC n'est pas activé sur votre nom de domaine. DNSSEC est une norme de sécurité pour les requêtes DNS sécurisées. La plupart des noms de domaine n'ont pas activé DNSSEC. Vous pouvez continuer à suivre ce guide.
Redémarrez OpenDKIM afin qu'il commence à signer les e-mails pour le deuxième domaine.
sudo systemctl restart opendkim
Étape 4 :Création d'un enregistrement DMARC pour le nouveau domaine
Pour créer un enregistrement DMARC, accédez à votre gestionnaire DNS et ajoutez un TXT record. Dans le champ du nom, saisissez _dmarc
. Dans le champ de valeur, entrez ce qui suit. Notez que vous devez créer le [email protected]
adresse e-mail.
v=DMARC1; p=none; pct=100; rua=mailto:[email protected]
L'enregistrement DMARC ci-dessus est un point de départ sûr. Si vous souhaitez lire une explication détaillée de DMARC, veuillez consulter l'article suivant.
- Création d'un enregistrement DMARC pour protéger votre nom de domaine contre l'usurpation d'e-mails
Étape 5 :Configurer RoundCube, Postfix et Dovecot pour plusieurs domaines
Je suppose que vous avez installé Roundcube Webmail pour le premier domaine de messagerie.
Il est logique de laisser les utilisateurs du premier domaine utiliser mail.domain1.com
et les utilisateurs du deuxième domaine utilisent mail.domain2.com
lors de l'utilisation de la messagerie Web RoundCube. Je vais vous montrer comment le faire avec Apache et Nginx.
Apache
Si Roundcube est servi par le serveur Web Apache, créez un hôte virtuel pour le deuxième domaine.
sudo nano /etc/httpd/conf.d/mail.domain2.com.conf
Mettez le texte suivant dans le fichier.
<VirtualHost *:80> ServerName mail.domain2.com DocumentRoot /var/www/roundcube/ ErrorLog /var/log/httpd/mail.domain2.com_error.log CustomLog /var/log/httpd/mail.domain2.com_access.log combined <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /var/www/roundcube/> Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost>
Enregistrez et fermez le fichier. Rechargez Apache pour que les modifications prennent effet.
sudo systemctl reload httpd
Nginx
Si Roundcube est servi par le serveur Web Nginx, créez un hôte virtuel pour le deuxième domaine.
sudo nano /etc/nginx/conf.d/mail.domain2.com.conf
Mettez le texte suivant dans le fichier.
server { listen 80; server_name mail.domain2.com; root /var/www/roundcube/; index index.php index.html index.htm; error_log /var/log/nginx/roundcube.error; access_log /var/log/nginx/roundcube.access; location / { try_files $uri $uri/ /index.php; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /.well-known/acme-challenge { allow all; } location ~ ^/(README|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ { deny all; } location ~ ^/(bin|SQL)/ { deny all; } # A long browser cache lifetime can speed up repeat visits to your page location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ { access_log off; log_not_found off; expires 360d; } }
Enregistrez et fermez le fichier. Testez ensuite les configurations Nginx.
sudo nginx -t
Si le test réussit, rechargez Nginx pour que les modifications prennent effet.
sudo systemctl reload nginx
Obtention du certificat TLS
Utilisez maintenant Certbot pour obtenir un certificat TLS pour tous vos domaines de messagerie, de sorte que vous aurez un seul certificat TLS avec plusieurs noms de domaine dessus et que les clients de messagerie ne lanceront pas d'avertissements de sécurité.
Apache
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp -d mail.domain1.com,mail.domain2.com --cert-name mail.domain1.com --email [email protected]
Nginx
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp -d mail.domain1.com,mail.domain2.com --cert-name mail.domain1.com --email [email protected]
Notez que dans la commande ci-dessus, nous avons spécifié le nom du certificat en utilisant le premier domaine de messagerie, qui sera utilisé dans le chemin du fichier, vous n'avez donc pas à modifier le chemin du fichier dans le fichier de configuration Postfix ou Dovecot.
Lorsqu'il vous demande si vous souhaitez mettre à jour le certificat existant pour inclure le nouveau domaine, répondez U
et appuyez sur Entrée.
Vous devriez maintenant voir le message suivant, qui indique que le certificat multi-domaine a été obtenu avec succès.
Rechargez Apache ou Nginx pour récupérer le nouveau certificat.
sudo systemctl reload httpd sudo systemctl reload nginx
Vous devriez maintenant pouvoir utiliser différents domaines pour accéder au webmail RoundCube. De plus, vous devez recharger le serveur SMTP Postfix et le serveur IMAP Dovecot afin de leur permettre de récupérer le nouveau certificat. C'est tout ce que vous avez à faire pour que Postfix et Dovecot servent plusieurs domaines.
sudo systemctl reload postfix dovecot
Utilisation du client de messagerie sur votre ordinateur ou appareil mobile
Lancez votre client de messagerie de bureau tel que Mozilla Thunderbird et ajoutez un compte de messagerie du deuxième domaine.
- Dans la section serveur entrant, sélectionnez le protocole IMAP, entrez
mail.domain2.com
comme nom de serveur, choisissez le port 143 et STARTTLS. Choisisseznormal password
comme méthode d'authentification. - Dans la section sortant, sélectionnez le protocole SMTP, entrez
mail.domain2.com
comme nom de serveur, choisissez le port 587 et STARTTLS. Choisisseznormal password
comme méthode d'authentification.
Astuce :Vous pouvez également utiliser le port 993 avec le cryptage SSL/TLS pour IMAP et le port 465 avec le cryptage SSL/TLS pour SMTP. Vous ne devriez pas utilisez le port 25 comme port SMTP pour envoyer les e-mails sortants.
Bien que le serveur SMTP de Postfix et le serveur IMAP Dovecot utilisent le nom d'hôte du premier domaine de messagerie (mail.domain1.com) lorsqu'ils communiquent avec d'autres, ils utilisent maintenant un certificat multi-domaine, de sorte que le client de messagerie n'affichera pas les avertissements de certificat.
Vérification SPF et DKIM
Vous pouvez désormais utiliser votre client de messagerie de bureau ou votre client de messagerie Web pour envoyer un e-mail de test à [email protected]
et obtenez un rapport d'authentification de messagerie gratuit. Voici le rapport que j'ai reçu de port25.com
N'oubliez pas de tester votre score d'e-mail sur https://www.mail-tester.com et également de tester le placement des e-mails avec GlockApps.
Si la vérification DKIM échoue, vous pouvez vous rendre sur https://www.dmarcanalyzer.com/dkim/dkim-check/ pour voir s'il y a des erreurs avec votre enregistrement DKIM.
Que se passe-t-il si vos e-mails sont toujours marqués comme spam ?
J'ai d'autres astuces pour vous dans cet article : 7 astuces efficaces pour éviter que vos e-mails ne soient marqués comme spam. Bien que cela demande du temps et des efforts, vos e-mails finiront par être placés dans la boîte de réception après avoir appliqué ces conseils.
rDNS pour plusieurs domaines de messagerie ?
Le DNS inverse (rDNS), également appelé enregistrement PTR, est utilisé pour vérifier si l'adresse IP de l'expéditeur correspond au nom d'hôte HELO. Vous n'avez pas besoin d'ajouter un autre enregistrement PTR lors de l'ajout d'un nouveau domaine de messagerie. Votre rDNS doit être défini sur un seul nom d'hôte, c'est-à-dire le nom d'hôte défini dans Postfix, qui peut être affiché avec la commande suivante.
postconf myhostname
rDNS est un enregistrement pour les adresses IP. Ce n'est pas un enregistrement de nom de domaine. Si vous n'avez qu'une seule adresse IP, vous n'avez besoin que d'un seul enregistrement rDNS pointant vers un nom d'hôte. La vérification DNS inversée ne vérifie pas d'où From:
domaine est dans votre e-mail, tant que votre adresse IP a un enregistrement rDNS et que le nom d'hôte peut revenir à la même adresse IP, vous pouvez passer la vérification DNS inversée.
De plus, vous n'avez pas besoin de modifier les paramètres suivants dans Postfix lorsque vous hébergez plusieurs domaines sur un même serveur.
- monnom d'hôte
- monorigine
- madestination
Services de messagerie hébergés tels que G Suite et Microsoft Exchange Online utilisent tous un nom d'hôte pour qu'un serveur envoie un e-mail à leurs clients. Les e-mails envoyés par les utilisateurs de G Suite utilisent tous google.com
dans le nom d'hôte et les e-mails envoyés par les utilisateurs de Microsoft Exchange Online utilisent tous outlook.com
dans le nom d'hôte. Cela est également vrai pour d'autres fournisseurs de services de messagerie tels que Mailchimp, SendinBlue, SendPluse, etc. Ils utilisent tous un nom d'hôte pour un seul serveur et une adresse IP n'a qu'un seul enregistrement rDNS.