Configurer votre propre serveur de messagerie sur Linux à partir de zéro est une douleur dans le cul, si vous n'êtes pas un administrateur de serveur qualifié. Ce didacticiel vous montrera comment utiliser iRedMail pour configurer rapidement un serveur de messagerie complet sur Debian 10, vous évitant ainsi beaucoup de temps et de maux de tête.
Qu'est-ce qu'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, la base de données PostreSQL ou OpenLDAP. Voici une liste de logiciels open source qui seront automatiquement installés et configurés par iRedMail.
- Serveur SMTP Postfix
- Serveur IMAP Dovecot
- Nginx serveur Web pour servir le panneau d'administration et le webmail
- OpenLDAP, MySQL/MariaDB ou PostgreSQL pour le stockage des informations utilisateur
- Amavised-nouveau pour la signature et la vérification DKIM
- SpamAssassin pour l'anti-spam
- ClamAV pour l'antivirus
- Webmail Roundcube
- Groupware SOGo, fournissant des services de messagerie Web, d'agenda (CalDAV), de contacts (CardDAV), de tâches et d'ActiveSync.
- Fail2ban pour protéger SSH
- gestionnaire de liste de diffusion mlmmj
- Surveillance du serveur Netdata
- Serveur de politique iRedAPD Postfix pour la liste grise
Étape 1 :Choisissez le bon fournisseur d'hébergement et achetez un nom de domaine
Pour configurer un serveur de messagerie complet avec iRedMail, vous avez besoin d'un serveur avec au moins 3 Go de RAM, car après l'installation, votre serveur utilisera plus de 2 Go de RAM.
Il est fortement recommandé d'installer iRedMail sur une installation propre de Debian 10 serveur.
Ce tutoriel est réalisé sur un Kamatera VPS (serveur privé virtuel) à 9 $/mois avec 1 CPU et 3 Go de RAM. Ils offrent un essai gratuit de 30 jours.
Kamatera est une très bonne option pour exécuter un serveur de messagerie car
- Ils ne bloquent pas le port 25 , vous pouvez ainsi envoyer un nombre illimité d'e-mails (e-mails transactionnels et newsletters) sans dépenser d'argent pour le service de relais SMTP. Kamatera n'a pas de limites SMTP. Vous pouvez envoyer un million d'e-mails par jour.
- L'adresse IP ne figure sur aucune liste noire d'e-mails . (Au moins, c'est vrai dans mon cas. J'ai choisi le centre de données de Dallas.) Vous ne voulez certainement pas figurer sur la redoutable liste noire des adresses IP de Microsoft Outlook ou sur la liste noire des spamrats. Certaines listes noires bloquent toute une plage d'adresses IP et vous n'avez aucun moyen de supprimer votre adresse IP de ce type de liste noire.
- Vous pouvez modifier l'enregistrement PTR pour améliorer la délivrabilité des e-mails.
- Ils vous permettent d'envoyer des newsletters à vos abonnés par e-mail avec non limites horaires ou limites quotidiennes, quelles qu'elles soient.
- Vous pouvez commander plusieurs adresses IP pour un seul serveur. Ceci est très utile pour les personnes qui doivent envoyer un grand nombre d'e-mails. Vous pouvez répartir le trafic des e-mails sur plusieurs adresses IP pour améliorer la délivrabilité des e-mails.
D'autres fournisseurs de VPS comme DigitalOcean bloquent le port 25. DigitalOcean ne débloquerait pas le port 25, vous devrez donc configurer un relais SMTP pour contourner le blocage, ce qui peut vous coûter de l'argent supplémentaire. Si vous utilisez Vultr VPS, le port 25 est bloqué par défaut. Ils peuvent le débloquer si vous ouvrez un ticket d'assistance, mais ils peuvent le bloquer à nouveau à tout moment s'ils décident que votre activité d'envoi d'e-mails n'est pas autorisée. Vultr peut en fait le rebloquer si vous utilisez leurs serveurs pour envoyer des newsletters.
Accédez au site Web de Kamatera pour créer un compte, puis créez votre serveur dans le tableau de bord de votre compte.
Je recommande de suivre le tutoriel lié ci-dessous pour configurer correctement votre serveur Linux VPS sur Kamatera.
- Comment créer un serveur VPS Linux sur Kamatera
Une fois que vous avez créé un serveur, Kamatera vous enverra un e-mail avec les informations de connexion SSH du serveur. Pour vous connecter à votre serveur, vous utilisez un client SSH. Si vous utilisez Linux ou macOS sur votre ordinateur, ouvrez simplement une fenêtre de terminal et exécutez la commande suivante pour vous connecter à votre serveur. Remplacez 12.34.56.78 par l'adresse IP de votre serveur.
ssh [email protected]
Il vous sera demandé d'entrer le mot de passe.
Vous avez également besoin d'un nom de domaine. J'ai enregistré mon nom de domaine auprès de NameCheap car le prix est bas et ils offrent une protection de la confidentialité whois gratuite à vie.
Étape 2 :Création d'un enregistrement MX DNS
L'enregistrement MX spécifie quel hôte ou quels hôtes gèrent les e-mails pour un nom de domaine particulier. Par exemple, l'hôte qui gère les e-mails pour linuxbabe.com
est mail.linuxbabe.com
. Si quelqu'un avec un compte Gmail envoie un e-mail à [email protected]
, le serveur Gmail interrogera l'enregistrement MX de linuxbabe.com. Quand il découvre que mail.linuxbabe.com
est responsable de l'acceptation des e-mails, il interroge ensuite l'enregistrement A de mail.linuxbabe.com
pour obtenir l'adresse IP, ainsi l'e-mail peut être livré.
Vous pouvez vous connecter au site Web de votre bureau d'enregistrement de domaine (tel que NameCheap) pour créer des enregistrements DNS.
Dans votre gestionnaire DNS, créez un enregistrement MX pour votre nom de domaine. Saisissez @
dans le champ Nom pour représenter le nom de domaine principal, puis saisissez mail.your-domain.com
dans le champ Valeur.
Remarque :Le nom d'hôte pour l'enregistrement MX ne peut pas être un alias vers un autre nom. De plus, il est fortement recommandé d'utiliser des noms d'hôte plutôt que des adresses IP nues pour l'enregistrement MX.
Votre gestionnaire DNS peut vous demander d'entrer une valeur de préférence (c'est-à-dire une valeur de priorité). Il peut s'agir de n'importe quel nombre compris entre 0 et 65 356. Un petit nombre a une priorité plus élevée qu'un grand nombre. Il est recommandé de définir la valeur sur 0, afin que ce serveur de messagerie ait la priorité la plus élevée pour la réception des e-mails. Après avoir créé l'enregistrement MX, vous devez également créer un enregistrement A pour mail.your-domain.com
, afin qu'il puisse être résolu en une adresse IP. Si votre serveur utilise une adresse IPv6, assurez-vous d'ajouter un enregistrement AAAA.
Astuce :Si vous utilisez le service DNS Cloudflare, vous ne devez pas activer la fonctionnalité CDN lors de la création d'un enregistrement A pour mail.your-domain.com
. Cloudflare ne prend pas en charge le proxy SMTP.
Étape 3 :Configurer le nom d'hôte
Connectez-vous à votre serveur via SSH, puis exécutez la commande suivante pour mettre à jour les packages logiciels existants.
sudo apt update;sudo apt upgrade
Je recommande fortement de créer un sudo
utilisateur pour gérer votre serveur plutôt que d'utiliser la root
par défaut utilisateur. Exécutez la commande suivante pour créer un utilisateur. Remplacer username
avec votre nom d'utilisateur préféré.
adduser username
Ajoutez ensuite l'utilisateur au sudo
groupe.
adduser username sudo
Passez ensuite au nouvel utilisateur.
su - username
Ensuite, définissez un nom de domaine complet (FQDN) pour votre serveur avec la commande suivante.
sudo hostnamectl set-hostname mail.your-domain.com
Nous devons également mettre à jour /etc/hosts
fichier avec un éditeur de texte en ligne de commande comme Nano.
sudo nano /etc/hosts
Modifiez-le comme ci-dessous. (Utilisez les touches fléchées pour déplacer le curseur dans le fichier.)
127.0.0.1 mail.your-domain.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
confirmer. Pour fermer le fichier, appuyez sur Ctrl+X
.)
Pour voir les modifications, déconnectez-vous et reconnectez-vous, puis exécutez la commande suivante pour voir votre nom d'hôte.
hostname -f
Étape 4 :Configurer le serveur de messagerie sur Debian 10 avec iRedMail
Exécutez les commandes suivantes pour télécharger la dernière version du programme d'installation du script iRedMail à partir de son référentiel Github.
wget https://github.com/iredmail/iRedMail/archive/1.5.1.tar.gz
Extrayez le fichier archivé.
tar xvf 1.5.1.tar.gz
Puis cd dans le répertoire nouvellement créé.
cd iRedMail-1.5.1/
Ajouter une autorisation exécutable à iRedMail.sh
script.
chmod +x iRedMail.sh
Ensuite, exécutez le script Bash avec le privilège sudo.
sudo bash iRedMail.sh
L'assistant de configuration du serveur de messagerie apparaît. Utilisez la touche de tabulation 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 celui par défaut /var/vmail
, alors appuyez simplement sur Entrée.
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. Il vous permet également d'accéder au webmail Roundcube. Par défaut, le serveur Web Nginx est sélectionné, vous pouvez donc simplement appuyer sur Entrée. (Un astérisque indique que l'élément est sélectionné.)
Sélectionnez ensuite le backend de stockage pour les comptes de messagerie. Choisissez-en un avec lequel vous êtes familier. Ce tutoriel a choisi MariaDB. 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 souhaitez un compte de messagerie tel que [email protected] . Dans ce cas, vous devez entrer votre-domaine.com ici, sans sous-domaine. N'appuyez pas sur la barre d'espace après votre nom de domaine. Je pense qu'iRedMail copiera le caractère espace avec votre nom de domaine, ce qui peut entraîner un échec de l'installation.
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. Si vous souhaitez avoir le groupware SOGo, sélectionnez-le et appuyez sur Entrée.
Vous pouvez maintenant revoir vos configurations. Tapez Y
pour commencer l'installation de tous les composants du serveur de messagerie.
A la fin de l'installation, choisissez y
pour utiliser les règles de pare-feu fournies par iRedMail et redémarrer le pare-feu.
L'installation d'iRedMail est maintenant terminée. Vous serez informé de l'URL du webmail, du groupware SOGo et du panneau d'administration Web ainsi que des identifiants de connexion. Les iRedMail.tips
Le fichier contient des informations importantes sur votre serveur iRedMail.
Redémarrez votre serveur Debian 10.
sudo shutdown -r now
Une fois que votre serveur est de nouveau en ligne, vous pouvez visiter le panneau d'administration Web.
https://mail.your-domain.com/iredadmin/
Remarque que dans l'URL ci-dessus, le sous-répertoire pour accéder au panneau d'administration 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.
Étape 5 :Installer le certificat Let's Encrypt TLS
É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 Let's Encrypt TLS gratuit.
Obtenir le certificat
Tout d'abord, reconnectez-vous à votre serveur via SSH et exécutez la commande suivante pour installer le client Let's Encrypt (certbot) sur Debian 10.
sudo apt install certbot
iRedMail a déjà configuré les paramètres TLS dans l'hôte virtuel Nginx par défaut, donc ici, je recommande d'utiliser le plugin webroot, au lieu du plugin nginx, pour obtenir un certificat. Exécutez la commande suivante. Remplacez le texte rouge par vos données réelles.
sudo certbot certonly --webroot --agree-tos --email [email protected] -d mail.your-domain.com -w /var/www/html/
Lorsqu'il vous demande si vous souhaitez recevoir des communications d'EFF, vous pouvez choisir Non.
Si tout s'est bien passé, vous verrez le texte suivant indiquant que vous avez réussi à obtenir un certificat TLS. Votre certificat et votre chaîne ont été enregistrés dans /etc/letsencrypt/live/mail.your-domain.com/
répertoire.
É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 bureau d'enregistrement 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.your-domain.com
) pour vérifier la propagation DNS.
Si certbot n'a pas réussi à obtenir un certificat et que vous avez vu le message suivant,
Failed authorization procedure. mail.linuxbabe.com (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching https://mail.linuxbabe.com/.well-known/acme-challenge/IZ7hMmRE4ZlGW7cXYoq2Lc_VrFzVFyfW6E0pzNlhiOA: Timeout during connect (likely firewall problem)
Il se peut que vous ayez défini un enregistrement AAAA pour mail.your-domain.com
, mais le serveur Web Nginx n'écoute pas l'adresse IPv6. Pour corriger cette erreur, modifiez le /etc/nginx/sites-enabled/00-default.conf
fichier
sudo nano /etc/nginx/sites-enabled/00-default.conf
Trouvez la ligne suivante.
#listen [::]:80;
Supprimez le #
caractère pour activer IPv6 pour cet hôte virtuel Nginx.
listen [::]:80;
Enregistrez et fermez le fichier. Modifiez ensuite l'hôte virtuel SSL /etc/nginx/sites-enabled/00-default-ssl.conf
.
sudo nano /etc/nginx/sites-enabled/00-default-ssl.conf
Ajoutez la ligne suivante.
listen [::]:443 ssl http2;
Enregistrez et fermez le fichier. Testez ensuite la configuration de Nginx.
sudo nginx -t
Si le test réussit, rechargez Nginx pour que la modification prenne effet.
sudo systemctl reload nginx
Exécutez à nouveau la commande suivante pour obtenir le certificat TLS. Remplacez le texte rouge par vos données réelles.
sudo certbot certonly --webroot --agree-tos --email [email protected] -d mail.your-domain.com -w /var/www/html/
Vous devriez maintenant être en mesure d'obtenir avec succès le certificat TLS.
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.
sudo 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.your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mail.your-domain.com/privkey.pem;
Enregistrez et fermez le fichier. Testez ensuite la configuration de nginx et rechargez.
sudo nginx -t sudo systemctl reload nginx
Visitez à nouveau le panneau d'administration d'iRedMail (https://mail.your-domain.com/iredadmin/
), votre navigateur Web ne vous avertira plus, car Nginx utilise désormais un certificat TLS valide.
Installation du certificat TLS dans Postfix et Dovecot
Nous devons également configurer le serveur SMTP 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é. Modifiez le fichier de configuration principal de Postfix.
sudo 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.your-domain.com/privkey.pem smtpd_tls_cert_file = /etc/letsencrypt/live/mail.your-domain.com/cert.pem smtpd_tls_CAfile = /etc/letsencrypt/live/mail.your-domain.com/chain.pem
Enregistrez et fermez le fichier. Puis rechargez Postfix.
sudo systemctl reload postfix
Ensuite, modifiez le fichier de configuration principal de Dovecot.
sudo nano /etc/dovecot/dovecot.conf
Fine 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. Puis rechargez le pigeonnier.
sudo systemctl reload dovecot
À partir de maintenant, les utilisateurs de messagerie de bureau ne verront plus les avertissements de sécurité.
Étape 6 :Envoi d'e-mails de test
Connectez-vous au panneau iredadmin avec le compte de messagerie postmaster ([email protected]). Dans le Add
, vous pouvez ajouter des domaines ou des adresses e-mail supplémentaires.
Si vous voyez l'erreur "aucun domaine sous contrôle", veuillez vous référer à cet article.
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.your-domain.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 active par défaut la liste grise, 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 de messagerie /var/log/mail.log
indique que la liste grise est activée.
Recipient address rejected: Intentional policy rejection, please try again later;
Ajout d'un espace d'échange
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 sur votre serveur. (Notez que l'utilisation de l'espace d'échange sur le serveur dégradera les performances du serveur. Si vous voulez de meilleures performances, vous devez mettre à niveau la RAM physique au lieu d'utiliser l'espace d'échange.)
Pour ajouter de l'espace d'échange sur le serveur, utilisez d'abord le fallocate
commande pour créer un fichier. Par exemple, créez un fichier nommé swapfile avec une capacité de 1 Go dans le système de fichiers racine :
sudo fallocate -l 1G /swapfile
Assurez-vous ensuite que seul root peut lire et écrire dessus.
sudo chmod 600 /swapfile
Formatez-le pour échanger :
sudo mkswap /swapfile
Sortie :
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=0aab5886-4dfb-40d4-920d-fb1115c67433
Activer le fichier d'échange
sudo swapon /swapfile
Pour monter l'espace d'échange au démarrage du système, modifiez le /etc/fstab
fichier.
sudo nano /etc/fstab
Ajoutez la ligne suivante au bas de ce fichier.
/swapfile swap swap defaults 0 0
Enregistrez et fermez le fichier. Ensuite, rechargez systemd et redémarrez ClamAV.
sudo systemctl daemon-reload sudo systemctl restart clamav-daemon
Étape 7 :Vérifier si le port 25 (sortant) est bloqué
Votre FAI ou 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. (Astuce :saisissez quit
et appuyez sur Entrée pour fermer la connexion.)
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, votre serveur SMTP Postfix ne peut pas envoyer d'emails à d'autres serveurs SMTP. Demandez à votre FAI/fournisseur d'hébergement de l'ouvrir pour vous. S'ils refusent votre demande, vous devez configurer un relais SMTP pour contourner le blocage du port 25.
Vous ne pouvez toujours pas envoyer d'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
).
sudo 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 vous rendre dans votre gestionnaire DNS, définir AAAA
record pour mail.your-domain.com
, alors vous devez définir PTR
enregistrer pour votre adresse IPv6, qui est abordée à l'étape 9.
Étape 8 :Utiliser les clients de messagerie sur votre ordinateur ou votre appareil mobile
Lancez votre client de messagerie de bureau tel que Mozilla Thunderbird et ajoutez un compte de messagerie.
- Dans la section serveur entrant, sélectionnez le protocole IMAP, saisissez
mail.your-domain.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, saisissez
mail.your-domain.com
comme nom de serveur, choisissez le port 587 et STARTTLS. Choisisseznormal password
comme méthode d'authentification.
Fail2ban bloque votre propre adresse IP
Si vous avez fait une erreur et que vous ne vous êtes pas connecté plusieurs fois au serveur de messagerie, le service Fail2ban sur le serveur de messagerie peut bloquer votre adresse IP. Vous pouvez ajouter votre adresse IP à la liste blanche en modifiant le jail.local
fichier.
sudo nano /etc/fail2ban/jail.local
Ajoutez votre propre adresse IP à la liste des ignorés comme ci-dessous. Remplacez 12.34.56.78 par votre véritable adresse IP.
ignoreip = 12.34.56.78 127.0.0.1 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
Enregistrez et fermez le fichier. Redémarrez ensuite Fail2ban.
sudo systemctl restart fail2ban
Étape 9 :Améliorer la délivrabilité des e-mails
Pour éviter que vos e-mails ne soient signalés comme spam, vous devez définir PTR
, SPF
, DKIM
et DMARC
enregistrements.
Enregistrement PTR
Un enregistrement de pointeur, ou enregistrement PTR, mappe une adresse IP à un FQDN (nom de domaine complet). C'est l'équivalent de l'enregistrement A et est utilisé pour le DNS inversé recherche, 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 d'une adresse IP, exécutez cette commande :
dig -x IP-address +short
ou
host IP-address
L'enregistrement PTR n'est pas géré par votre bureau d'enregistrement de domaine. Il est géré par l'organisation qui vous donne une adresse IP. 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 configuration 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.your-domain.com
. Si votre serveur utilise une adresse IPv6, assurez-vous d'ajouter également un enregistrement PTR pour votre adresse IPv6.
Pour modifier l'enregistrement DNS inverse de votre VPS Kamatera, connectez-vous à l'espace client Kamatera, puis ouvrez un ticket d'assistance et dites-leur d'ajouter un enregistrement PTR pour les adresses IP de votre serveur afin de faire pointer l'adresse IP vers mail.your-domain.com
. Ce n'est pas pratique, vous pourriez penser, mais c'est pour éloigner les spammeurs de la plate-forme, donc les expéditeurs légitimes d'e-mails comme nous auront une excellente réputation IP.
Enregistrement SPF
FPS (Sender Policy Framework) spécifie quels hôtes ou adresses IP sont autorisés à envoyer des e-mails au nom d'un domaine. Vous devez autoriser uniquement 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 du 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 sont interdits.
- ~tous 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 signalés comme falsifiés.
Pour vérifier si votre enregistrement SPF est propagé sur l'Internet public, vous pouvez utiliser l'utilitaire dig sur votre machine Linux comme ci-dessous :
dig your-domain.com txt
Le txt
l'option indique dig
que nous voulons uniquement interroger les enregistrements TXT.
Enregistrement DKIM
DKIM (DomainKeys 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é la signature et la vérification 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.
sudo 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 entre parenthèses et collez dans le champ de valeur. Supprimez tous les guillemets doubles et les sauts de ligne.
Après avoir enregistré vos modifications, exécutez la commande suivante pour tester si votre enregistrement DKIM est correct.
sudo amavisd-new testkeys
Si l'enregistrement DKIM est correct, le test réussira. Notez que votre enregistrement DKIM peut avoir besoin d'un certain temps pour se propager sur Internet. Selon le bureau d'enregistrement 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://www.dmarcanalyzer.com/dkim/dkim-check/, entrez dkim
en tant que sélecteur et entrez votre nom de domaine pour vérifier la propagation des enregistrements DKIM.
TESTING#1 linuxbabe.com: dkim._domainkey.linuxbabe.com => pass
Enregistrement DMARC
DMARC signifie 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 l'utilisation de votre nom de domaine par l'usurpation d'e-mails.
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. (Vous devez créer l'adresse e-mail [email protected].)
v=DMARC1; p=none; pct=100; rua=mailto:[email protected]
L'enregistrement DMARC ci-dessus est un point de départ sûr. Pour voir l'explication complète 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 10 :Tester le score et l'emplacement des e-mails
Après avoir créé l'enregistrement PTR, SPF, DKIM, accédez à https://www.mail-tester.com . Vous verrez une adresse e-mail unique. Envoyez un e-mail depuis 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 sont valides.
Mail-tester.com ne peut vous montrer qu'un score d'expéditeur. Il existe un autre service appelé GlockApps qui vous permet de vérifier si votre e-mail est arrivé dans la boîte de réception ou le dossier spam du destinataire, ou s'il a été rejeté. Il prend en charge de nombreux fournisseurs de messagerie populaires tels que Gmail, Outlook, Hotmail, YahooMail, iCloud mail, etc.
Que se passe-t-il si votre e-mail est rejeté par Microsoft Mailbox ?
Microsoft semble utiliser une liste noire interne qui bloque de nombreuses adresses IP légitimes. Si vos e-mails sont rejetés par Outlook ou Hotmail, vous devez soumettre le formulaire d'informations sur l'expéditeur. Après cela, votre e-mail sera accepté par Outlook/Hotmail.
Que se passe-t-il si vos e-mails sont toujours marqués comme spam ?
J'ai plus de conseils pour vous dans cet article :Comment empêcher que vos e-mails soient marqués comme spam. Bien que cela prenne 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.
Ajout de plusieurs domaines de messagerie
J'ai écrit cet article pour vous montrer comment ajouter plusieurs domaines de messagerie dans iRedMail.
Comment désactiver la liste grise
Par défaut, iRedMail a activé la liste grise, 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.
Ajouter une autorisation d'écriture au /opt/iredapd/settings.py
fichier.
sudo chmod 600 /opt/iredapd/settings.py
Modifiez ensuite le fichier de configuration.
sudo 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. Redémarrez ensuite iredapd.
sudo systemctl restart iredapd
Remettez le fichier de configuration en mode lecture seule.
sudo chmod 400 /opt/iredapd/settings.py
Activation du port SMTPS 465
Si vous comptez utiliser le client Microsoft Outlook, vous devez activer le port SMTPS 465 sur le serveur SMTP de Postfix.
Dépannage
Tout d'abord, veuillez utiliser un VPS avec au moins 4 Go de RAM. L'exécution d'iRedMail sur un VPS de 1 Go de RAM entraînera la suppression de la base de données, de SpamAssassin ou de ClamAV en raison d'un problème de mémoire insuffisante. Si vous insistez pour utiliser un VPS de 1 Go de RAM, vous allez perdre les e-mails entrants et avoir d'autres résultats indésirables.
Si l'interface Web iRedMail n'est pas accessible, comme une erreur de passerelle 502, vous devez vérifier les journaux Nginx dans /var/log/nginx/
directory to find clues. You may also want to check the mail log /var/log/mail.log
.
Check if the various services are running.
systemctl status postfix systemctl status dovecot systemctl status nginx systemctl status mariadb systemctl status clamav-daemon systemctl status amavis systemctl status php7.3-fpm systemctl status iredadmin
If you enabled the firewall, you should open the following ports in the firewall.
HTTP port: 80 HTTPS port: 443 SMTP port: 25 Submission port: 587 (and 465 if you are going to use Microsoft Outlook mail client) IMAP port: 143 and 993
If you would like to use the UFW firewall, check my guide here:Getting started with UFW firewall on Debian and Debian.
How to Renew TLS Certificate
Let’s Encrypt issued TLS certificate is valid for 90 days only and it’s important that you set up a Cron job to automatically renew the certificate. You can run the following command to renew certificate.
sudo certbot renew -w /var/www/html
You can use the --dry-run
option to test the renewal process, instead of doing a real renewal.
sudo certbot renew -w /var/www/html --dry-run
If you see the following error when renewing TLS certificate.
The client lacks sufficient authorization :: Invalid response
Then you need to create the hidden directory.
sudo mkdir -p /var/www/html/.well-known/acme-challenge
And set www-data
as the owner of the webroot.
sudo chown www-data:www-data /var/www/html/ -R
Also, edit the SSL virtual host /etc/nginx/sites-enabled/00-default-ssl.conf
. Ajoutez les lignes suivantes.
location ~ /.well-known/acme-challenge { root /var/www/html/; allow all; }
Enregistrez et fermez le fichier. Test Nginx configuration and reload.
sudo nginx -t sudo systemctl reload nginx
Create Cron Job
If now the dry run is successful, you can create Cron job to automatically renew certificate. Simply open root user’s crontab file.
sudo crontab -e
Then add the following line at the bottom of the file.
@daily certbot renew -w /var/www/html --quiet && systemctl reload postfix dovecot nginx
Reloading Postfix, Dovecot and Nginx is necessary to make these programs pick up the new certificate and private key.
For Advanced Users
You may want to customize the SpamAssassin content filter to better detect spam.
- Block Email Spam By Checking Header and Body in Postfix/SpamAssassin
If your website and mail server are running on two different VPS (virtual private server), you can set up SMTP relay between your website and mail server, so that your website can send emails through your mail server. See the following article. (It’s written for Ubuntu, but also works on Debian).
- How to set up SMTP relay between 2 Postfix SMTP servers on Ubuntu