Configurer votre propre serveur de messagerie sur Linux à partir de zéro est un processus long et fastidieux, si vous n'êtes pas un utilisateur avancé. Ce didacticiel vous montrera comment utiliser iRedMail pour configurer rapidement un serveur de messagerie complet sur Ubuntu 20.04, ce qui vous fera gagner beaucoup de temps.

Qu'est-ce que iRedMail?

iRedMail est un script shell qui installe et configure automatiquement tous les composants de serveur de messagerie nécessaires sur votre serveur Linux / BSD, éliminant ainsi l'installation et la configuration manuelles. Avec iRedMail, vous pouvez facilement créer des boîtes aux lettres illimitées et des domaines de messagerie illimités dans un panneau d'administration Web. Les boîtes aux lettres peuvent être stockées dans MariaDB/MySQL, PostgreSQL ou OpenLDAP.

Voici une liste de logiciels open source qui seront automatiquement installés et configurés par iRedMail :

  • Serveur SMTP de Postfix
  • Serveur IMAP Dovecot
  • Serveur Web Nginx pour servir le panneau d'administration et le webmail
  • OpenLDAP, MySQL / MariaDB ou PostgreSQL pour stocker les informations utilisateur
  • Amavised-new pour la signature et la vérification DKIM
  • SpamAssassin pour l'anti-spam
  • ClamAV pour anti-virus
  • Webmail Roundcube
  • Fail2ban pour protéger l'accès SSH
  • Surveillance du serveur avec Netdata

Choisissez un fournisseur d'hébergement

Pour configurer un serveur de messagerie complet avec iRedMail, vous avez besoin d'un serveur avec au moins 2 Go de RAM, car après l'installation, votre serveur utilisera plus de 1 Go de RAM.

Pour vous connecter à votre serveur, vous utilisez un client SSH. Remplacez 12.34.56.78 par l'adresse IP de votre serveur.

ssh root@12.34.56.78

Il est fortement recommandé de suivre les instructions ci-dessous pour une nouvelle installation du système Ubuntu 20.04 . L'installation d'un logiciel serveur complexe comme iRedMail sur un Ubuntu non LTS est déconseillée car vous rencontrerez probablement des problèmes lors de la mise à niveau de votre système d'exploitation tous les 9 mois. L'auteur du logiciel n'a pas le temps de prendre en charge toutes les versions d'Ubuntu. Il est de loin préférable que votre serveur de messagerie reste stable pendant 2 ou 5 ans.

Vous avez également besoin d'un nom de domaine.

Création d'un enregistrement DNS MX

L'enregistrement MX spécifie l'hôte ou les hôtes qui gèrent les e-mails pour un nom de domaine particulier. Par exemple, l'hôte qui gère les e-mails pour example.com est mail.example.com. Si quelqu'un avec un compte Gmail envoie un e-mail à somebody@example.com, le serveur Gmail interrogera l'enregistrement MX de linuxbabe.com. Lorsqu'il découvre qu'il mail.example.com est responsable de l'acceptation des e-mails, il interroge ensuite l'enregistrement A de mail.example.com pour obtenir l'adresse IP, ainsi l'e-mail peut être livré.

Vous devez vous rendre sur votre service d'hébergement DNS pour créer des enregistrements DNS. Dans votre gestionnaire DNS, créez un enregistrement MX pour votre nom de domaine. Entrez @dans le champ Nom pour représenter le nom de domaine principal, puis entrez mail.example.com dans le champ Valeur.

Configuration du nom d'hôte

Connectez-vous à votre serveur via SSH , puis exécutez la commande suivante pour mettre à jour les packages logiciels existants.

apt-get update && apt-get upgrade -y

Ensuite, définissez un nom de domaine complet (FQDN) pour votre serveur avec la commande suivante.

hostnamectl set-hostname mail.example.com

Nous devons également mettre à jour le fichier /etc/hosts avec un éditeur de texte en ligne de commande comme Nano.

nano /etc/hosts

Modifiez-le comme ci-dessous :

127.0.0.1 mail.example.com localhost

Enregistrez et fermez le fichier.

Pour enregistrer un fichier dans l'éditeur de texte Nano, appuyez sur Ctrl+O, puis appuyez sur Enter pour confirmer. Pour fermer le fichier, appuyez sur Ctrl+X.

Pour voir les modifications, reconnectez-vous, puis exécutez la commande suivante pour voir votre nom d'hôte.

hostname -f

Configuration du serveur de messagerie sur Ubuntu 20.04 avec iRedMail

Exécutez les commandes suivantes pour télécharger la dernière version du programme d'installation de script iRedMail à partir de son référentiel Github.

wget https://github.com/iredmail/iRedMail/releases/download/1.3.1/iRedMail-1.3.1.tar.gz

Extrayez le fichier archivé.

tar xvf iRedMail-1.3.1.tar.gz

Puis cd dans le répertoire nouvellement créé.

cd iRedMail-1.3.1/

Ajoutez une autorisation exécutable au script.

chmod + x iRedMail.sh

Ensuite, exécutez le script Bash.

bash iRedMail.sh

L'assistant de configuration du serveur de messagerie apparaît. Utilisez la touche Tab pour sélectionner Oui et appuyez sur Entrée.

L'écran suivant vous demandera de sélectionner le chemin de stockage du courrier. Vous pouvez utiliser le chemin par défaut:, /var/vmail alors appuyez simplement sur Enter.

Choisissez ensuite si vous souhaitez exécuter un serveur Web. Il est fortement recommandé de choisir d'exécuter un serveur Web, car vous avez besoin du panneau d'administration Web pour ajouter des comptes de messagerie.

En outre, il vous permet d'accéder au webmail Roundcube.

Par défaut, le serveur Web Nginx est sélectionné, vous pouvez donc simplement appuyer sur Enter.

Sélectionnez ensuite le backend de stockage pour les comptes de messagerie. Choisissez celui que vous connaissez. Appuyez sur les flèches haut et bas et appuyez sur la barre d'espace pour sélectionner.

Si vous avez sélectionné MariaDB ou MySQL, vous devrez définir le mot de passe root MySQL.

Ensuite, entrez votre premier domaine de messagerie. Vous pouvez ajouter des domaines de messagerie supplémentaires ultérieurement dans le panneau d'administration Web. Ce didacticiel suppose que vous souhaitiez un compte de messagerie comme contact@example.com . Dans ce cas, vous devez saisir ici example.com , sans sous-domaine.

Ensuite, définissez un mot de passe pour l'administrateur du domaine de messagerie.

Choisissez des composants optionnels. Par défaut, 4 éléments sont sélectionnés.

Vous pouvez maintenant revoir vos configurations. Tapez Y pour commencer l'installation de tous les composants du serveur de messagerie.

À la fin de l'installation, choisissez d'utiliser les règles de pare-feu fournies par iRedMail et redémarrez le pare-feu.

L'installation d'iRedMail est maintenant terminée. Vous serez informé de l'URL de la messagerie Web, du panneau d'administration Web et des informations de connexion.

Redémarrez votre serveur Ubuntu 20.04.

reboot

Une fois que votre serveur est de nouveau en ligne, vous pouvez visiter le panneau d'administration Web.

https://mail.example.com/iredadmin/

Notez que dans l'URL ci-dessus, le sous-répertoire pour accéder au panneau d'administration n'est /iredadmin/pas /iredmail/. Et comme il utilise un certificat TLS auto-signé, vous devez ajouter une exception de sécurité dans votre navigateur Web.

Installation du certificat Let's Encrypt

Étant donné que le serveur de messagerie utilise un certificat TLS auto-signé, les utilisateurs du client de messagerie de bureau et les utilisateurs du client de messagerie Web verront un avertissement. Pour résoudre ce problème, nous pouvons obtenir et installer un certificat TLS gratuit Let's Encrypt.

Obtention du certificat

Tout d'abord, connectez-vous à nouveau à votre serveur via SSH et exécutez la commande suivante pour installer le client Let's Encrypt (certbot) sur Ubuntu 20.04.

apt-get install certbot -y

iRedMail a déjà configuré les paramètres TLS dans l'hôte virtuel Nginx par défaut, je recommande donc ici d'utiliser le plugin webroot, au lieu du plugin nginx, pour obtenir un certificat. Exécutez la commande suivante.

certbot certonly --webroot --agree-tos --email you@example.com -d mail.your-domain.com -w /var/www/html/

Échec de l'obtention du certificat TLS

Si Certbot n'a pas réussi à obtenir le certificat TLS, c'est peut-être parce que vos enregistrements DNS ne sont pas propagés sur Internet. Selon le registrar de domaine que vous utilisez, votre enregistrement DNS peut être propagé instantanément ou sa propagation peut prendre jusqu'à 24 heures. Vous pouvez aller sur https://dnsmap.io , entrer le nom d'hôte de votre serveur de messagerie   ( mail.example.com) pour vérifier la propagation DNS.

Installation du certificat dans Nginx

Après avoir obtenu un certificat TLS, configurons le serveur Web Nginx pour l'utiliser. Modifiez le fichier de modèle SSL.

nano /etc/nginx/templates/ssl.tmpl

Trouvez les 2 lignes suivantes.

ssl_certificate /etc/ssl/certs/iRedMail.crt;
ssl_certificate_key /etc/ssl/private/iRedMail.key;

Remplacez-les par:

ssl_certificate /etc/letsencrypt/live/mail.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mail.example.com/privkey.pem;

Enregistrez et fermez le fichier. Ensuite, testez la configuration de nginx et rechargez.

nginx -t
systemctl reload nginx

Visitez à nouveau le panneau d'administration d'iRedMail, votre navigateur Web ne vous avertira plus car Nginx utilise maintenant un certificat TLS valide.

Installation du certificat TLS dans Postfix et Dovecot

Nous devons également configurer le serveur SMTP de Postfix et le serveur IMAP Dovecot pour utiliser le certificat émis par Let's Encrypt afin que le client de messagerie de bureau n'affiche pas d'avertissement de sécurité. Editez le fichier de configuration principal de Postfix.

nano /etc/postfix/main.cf

Trouvez les 3 lignes suivantes. (ligne 95, 96, 97).

smtpd_tls_key_file = /etc/ssl/private/iRedMail.key
smtpd_tls_cert_file = /etc/ssl/certs/iRedMail.crt
smtpd_tls_CAfile = /etc/ssl/certs/iRedMail.crt

Remplacez-les par:

smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/cert.pem
smtpd_tls_CAfile = /etc/letsencrypt/live/mail.example.com/chain.pem

Enregistrez et fermez le fichier. Puis rechargez Postfix.

systemctl reload postfix

Ensuite, éditez le fichier de configuration principal de Dovecot.

nano /etc/dovecot/dovecot.conf

Amende les 2 lignes suivantes. (ligne 47, 48)

ssl_cert = </etc/ssl/certs/iRedMail.crt
ssl_key = </etc/ssl/private/iRedMail.key

Remplacez-les par:

ssl_cert = </etc/letsencrypt/live/mail.your-domain.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.your-domain.com/privkey.pem

Enregistrez et fermez le fichier. Rechargez ensuite Dovecot.

systemctl reload dovecot

À partir de maintenant, les utilisateurs de messagerie de bureau ne verront plus les avertissements de sécurité.

Envoi d'un e-mail de test

Connectez-vous au panneau iredadmin avec le compte de messagerie postmaster (postmaster@example.com). Dans l'onglet Add, vous pouvez ajouter des domaines ou des adresses e-mail supplémentaires.

Après avoir créé un utilisateur, vous pouvez visiter l'adresse de messagerie Web Roundcube et vous connecter avec le nouveau compte d'utilisateur de messagerie.

https://mail.example.com/mail/

Vous pouvez maintenant tester l'envoi et la réception d'e-mails. Veuillez noter que vous devrez peut-être attendre quelques minutes pour recevoir des e-mails car iRedMail par défaut active la greylist, qui est un moyen de dire aux autres serveurs SMTP d'envoi de réessayer dans quelques minutes. La ligne suivante dans le fichier journal du courrier /var/log/mail.log indique que la greylist est activée.

Ajouter un espace de swap

ClamAV est utilisé pour analyser les virus dans les messages électroniques. ClamAV peut utiliser une bonne quantité de RAM. S'il n'y a pas assez de RAM sur votre serveur, ClamAV ne fonctionnera pas correctement, ce qui empêchera votre serveur de messagerie d'envoyer des e-mails. Vous pouvez ajouter un fichier d'échange à votre serveur pour augmenter la RAM totale de votre serveur.

Suivez ce guide.

Vérifier si le port 25 (sortant) est bloqué

Votre FAI ou votre fournisseur d'hébergement ne bloquera pas la connexion entrante au port 25 de votre serveur, ce qui signifie que vous pouvez recevoir des e-mails d'autres serveurs de messagerie. Cependant, de nombreux FAI/fournisseurs d'hébergement bloquent la connexion sortante au port 25 d'autres serveurs de messagerie, ce qui signifie que vous ne pouvez pas envoyer d'e-mails.

Si votre e-mail n'est pas arrivé à votre autre adresse e-mail telle que Gmail, exécutez la commande suivante sur votre serveur de messagerie pour vérifier si le port 25 (sortant) est bloqué.

telnet gmail-smtp-in.l.google.com 25

S'il n'est pas bloqué, vous verrez des messages comme ci-dessous, qui indiquent qu'une connexion est établie avec succès.

Trying 74.125.68.26...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP y22si1641751pll.208 - gsmtp

Si le port 25 (sortant) est bloqué, vous verrez quelque chose comme:

Trying 2607:f8b0:400e:c06::1a...
Trying 74.125.195.27...
telnet: Unable to connect to remote host: Connection timed out

Dans ce cas, Postfix ne peut pas envoyer d'e-mails à d'autres serveurs SMTP. Demandez à votre FAI / fournisseur d'hébergement de l'ouvrir pour vous.

Vous n'arrivez toujours pas à envoyer un e-mail?

Si le port 25 (sortant) n'est pas bloqué, mais que vous ne pouvez toujours pas envoyer d'e-mails depuis votre propre serveur de messagerie vers votre autre adresse e-mail telle que Gmail, vous devez vérifier le journal des e-mails (/var/log/mail.log).

nano /var/log/mail.log

Par exemple, certaines personnes peuvent voir les lignes suivantes dans le fichier.

host gmail-smtp-in.l.google.com[2404:6800:4003:c03::1b] said: 550-5.7.1 [2a0d:7c40:3000:b8b::2] Our system has detected that 550-5.7.1 this message does not meet IPv6 sending guidelines regarding PTR 550-5.7.1 records and authentication. Please review 550-5.7.1 https://support.google.com/mail/?p=IPv6AuthError for more information

Cela signifie que votre serveur de messagerie utilise IPv6 pour envoyer l'e-mail, mais que vous n'avez pas configuré d'enregistrements IPv6. Vous devez aller sur votre gestionnaire DNS, définir un enregistrement pour AAAA mail.example.com, puis définir un enregistrement PTR pour votre adresse IPv6.

Amélioration de la délivrabilité des e-mails

Pour éviter que vos emails soient marqués comme spam, vous devez définir  des enregistrements PTR, SPF, DKIM et DMARC.

Enregistrement PTR

Un enregistrement PTR, mappe une adresse IP à un FQDN (nom de domaine complet). C'est l'équivalent de l'enregistrement A et est utilisé pour la recherche DNS inversée, ce qui peut aider à bloquer les spammeurs. De nombreux serveurs SMTP rejettent les e-mails si aucun enregistrement PTR n'est trouvé pour le serveur d'envoi.

Pour vérifier l'enregistrement PTR pour une adresse IP, exécutez cette commande:

dig -x IP-address +short

ou

host IP-address

Parce que vous obtenez l'adresse IP de votre fournisseur d'hébergement ou de votre FAI, et non de votre registraire de domaine, vous devez donc définir un enregistrement PTR pour votre IP dans le panneau de contrôle de votre fournisseur d'hébergement, ou demander à votre FAI.

Sa valeur doit être le nom d' hôte de votre serveur de messagerie: mail.example.com.

Enregistrement SPF

L'enregistrement SPF (Sender Policy Framework) spécifie les hôtes ou l'adresse IP autorisés à envoyer des e-mails au nom d'un domaine. Vous ne devez autoriser que votre propre serveur de messagerie ou le serveur de votre FAI à envoyer des e-mails pour votre domaine. Dans votre interface de gestion DNS, créez un nouvel enregistrement TXT comme ci-dessous.

Explication:

  • TXT indique qu'il s'agit d'un enregistrement TXT.
  • Entrez @ dans le champ de nom pour représenter le nom de domaine principal.
  • v = spf1 indique qu'il s'agit d'un enregistrement SPF et que la version est SPF1.
  • mx signifie que tous les hôtes répertoriés dans les enregistrements MX sont autorisés à envoyer des e-mails pour votre domaine et que tous les autres hôtes ne sont pas autorisés.
  • ~ all indique que les e-mails de votre domaine ne doivent provenir que des hôtes spécifiés dans l'enregistrement SPF. Les e-mails provenant d'autres hôtes seront marqués comme falsifiés.

Pour vérifier si votre enregistrement SPF est propagé sur Internet, vous pouvez utiliser l'utilitaire dig sur votre machine Linux comme ci-dessous :

dig example.com txt

L'option txt indique à dig que nous voulons uniquement interroger les enregistrements TXT.

Enregistrement DKIM

DKIM (Domain Keys Identified Mail) utilise une clé privée pour signer numériquement les e-mails envoyés depuis votre domaine. Les serveurs SMTP de réception vérifient la signature à l'aide de la clé publique, qui est publiée dans l'enregistrement DNS DKIM.

Le script iRedMail a automatiquement configuré DKIM pour votre serveur. La seule chose à faire est de créer un enregistrement DKIM dans le gestionnaire DNS. Exécutez la commande suivante pour afficher la clé publique DKIM.

amavisd-new showkeys

La clé publique DKIM est entre parenthèses.

Ensuite, dans votre gestionnaire DNS, créez un enregistrement TXT, entrez dkim._domainkey dans le champ du nom. Copiez tout ce qui se trouve entre parenthèses et collez-le dans le champ de valeur. Supprimez tous les guillemets et sauts de ligne.

Après avoir enregistré vos modifications, exécutez la commande suivante pour tester si votre enregistrement DKIM est correct.

amavisd-new testkeys

Si l'enregistrement DKIM est correct, le test réussira. Notez que votre enregistrement DNS peut nécessiter un certain temps pour se propager sur Internet.

Enregistrement DMARC

DMARC est l'acronyme de Domain-based Message Authentication, Reporting and Conformance.

DMARC peut aider à recevoir des serveurs de messagerie pour identifier les e-mails légitimes et empêcher que votre nom de domaine ne soit utilisé par de l'usurpation d'e-mails.

Pour créer un enregistrement DMARC, accédez à votre gestionnaire DNS et ajoutez un enregistrement TXT . Dans le champ du nom, saisissez _dmarc. Dans le champ de valeur, saisissez ce qui suit.

L'enregistrement DMARC ci-dessus est un point de départ sûr. Si vous souhaitez lire l'explication complète de DMARC, veuillez consulter l'article suivant. Notez que cela est facultatif.

v=DMARC1; p=none; pct=100; rua=mailto:dmarc@example.com

Test du score et de l'emplacement des e-mails

Après avoir créé un enregistrement PTR, SPF, DKIM, accédez à https://www.mail-tester.com . Vous verrez une adresse e-mail unique. Envoyez un e-mail de votre domaine à cette adresse, puis vérifiez votre score. Comme vous pouvez le voir, j'ai obtenu un score parfait. Dans le résultat du test, vous devez vérifier si votre enregistrement PTR, SPF et DKIM est valide.

Test du score et de l'emplacement des e-mails

Comment désactiver la greylist

Par défaut, iRedMail a activé la greylist, qui indique aux autres serveurs SMTP d'envoi de réessayer dans quelques minutes. Ceci est principalement utile pour bloquer le spam, mais cela dégrade également l'expérience utilisateur. Si vous préférez désactiver la liste grise, suivez les instructions ci-dessous.

Ajoutez une autorisation d'écriture au fichier /opt/iredapd/settings.py.

chmod 600 /opt/iredapd/settings.py

Modifiez ensuite le fichier de configuration.

nano /opt/iredapd/settings.py

Trouvez la ligne suivante.

plugins = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy"]

Supprimer "greylisting" de la liste. Enregistrez et fermez le fichier. Puis redémarrez iredapd.

systemctl restart iredapd

Remettez le fichier de configuration en mode lecture seule.

chmod 400 /opt/iredapd/settings.py