Comment installer un serveur de messagerie avec ISPConfig sur Debian 10

Ce tutoriel utilise une configuration de serveur unique à titre d’exemple. ISPConfig 3.1 est installé sur Debian 10.0, Buster (voir le tutoriel d’installation d’ISPConfig Perfect Server pour l’installation réelle du serveur), le but de ce guide est de te montrer les étapes après avoir installé le serveur initial pour configurer un système de messagerie fonctionnel pour ton propre nom de domaine. J’ai mis à niveau ISPConfig vers la version 3.1.15 pendant le test de ce tutoriel.

Ce qui est nécessaire

Pour utiliser ce tutoriel avec succès pour un serveur de messagerie fonctionnant correctement, tu as besoin de

  • un hôte où tu installes ISPConfig (et un système d’exploitation)
  • Je recommande 2 Go de mémoire avec 4 Go de swap, cela devrait être suffisant pour le serveur de messagerie.
  • l’hôte doit avoir une connexion Internet avec le port 25 ouvert dans les deux sens
  • L’hôte doit avoir une adresse IP fixe
  • l’hôte doit avoir un enregistrement A pour son adresse IP (ou AAAA si tu utilises IPv6)
  • Tu dois créer un enregistrement MX pour le service de nom DNS de l’hôte.
  • Tu dois obtenir l’enregistrement PTR du service de nom DNS inverse de l’hôte qui correspond au FQDN de l’hôte.

La mémoire requise est pour les filtres anti-spam. Tu peux te débrouiller avec 1 Go de mémoire même si les filtres SPAM sont en cours d’exécution si les 4 Go de swap sont présents pour éviter les situations de manque de mémoire.

Ports ouverts

Le serveur de messagerie doit avoir le port 25 ouvert en entrée et en sortie. Assure-toi que ton hôte a bien ce port ouvert avant de configurer le serveur de messagerie sur cet hôte.

Il existe des moyens de faire fonctionner le courrier électronique même lorsque le port 25 n’est pas ouvert, mais cela implique d’envoyer des courriers électroniques via un autre hôte qui a le port 25 ouvert. Il est peut-être plus judicieux d’installer le serveur de messagerie sur cet autre hôte et d’oublier complètement le premier pour ce qui est de la messagerie.

Entrées du service de nom DNS

Le serveur de messagerie a besoin d’un FQDN, Fully Qualified Domain name (nom de domaine entièrement qualifié) (voir Wikipedia : FQDN). Dans cet exemple, le nom de domaine est taleman.ovh. Pour montrer que le nom d’hôte du serveur de messagerie ne doit pas nécessairement être mail, nous utilisons posti comme nom d’hôte. Le FQDN est donc posti.taleman.ovh.

Cet hôte est installé sur le système d’un fournisseur de services, qui propose l’enregistrement de domaines, un service de noms et un service de noms inversés. Je les ai utilisés.

L’adresse IP est 178.33.154.66. J’ai fait ce qui suit :

  • enregistré le domaine taleman.ovh
  • J’ai ajouté cette adresse IP comme enregistrement A au service de nom DNS avec le nom posti.taleman.ovh.
  • J’ai ajouté un enregistrement MX pour le domaine taleman.ovh avec la valeur posti.taleman.ovh.
  • a ajouté l’enregistrement PTR du service de nom inversé pour cette adresse IP, pointant vers posti.taleman.ovh.

L’enregistrement MX est créé pour le domaine e-mail. Je le crée donc pour taleman.ovh, et il pointe vers posti.taleman.ovh, le serveur de messagerie qui reçoit les e-mails de ce domaine.

Service de nom inversé

Lis ce qui concerne le service de nom inversé dans le tutoriel Service de nom. Dans cet exemple de cas, le service de nom inversé doit renvoyer posti.taleman.ovh.

Mon fournisseur de services a vérifié l’existence de l’enregistrement A avant d’ajouter le PTR correspondant, j’ai eu un petit problème avant de comprendre pourquoi l’ajout a échoué.

Tester le service de nom

Il est préférable de tester le service de nom maintenant, car l’envoi et la réception d’e-mails ne fonctionneront pas si le service de nom n’est pas configuré correctement. Si ton poste de travail est sous Windows au lieu de Linux ou Unix, utilise la commande nslookup au lieu de host.

$ host taleman.ovh
taleman.ovh has address 188.165.143.5
taleman.ovh mail is handled by 10 posti.taleman.ovh.

Le résultat ci-dessus montre que le nom de domaine est associé à un numéro IP (qui dans ce cas est différent du numéro IP du serveur de messagerie, mais cela n’affecte pas les e-mails), et qu’il existe un enregistrement MX qui pointe vers posti.taleman.ovh. La partie « le courrier est traité par » provient de l’enregistrement MX. Cet enregistrement MX est nécessaire si les courriels envoyés aux adresses @taleman.ovh doivent être reçus à posti.taleman.ovh.

Vérifie ensuite que l’entrée du service de nom pour le FQDN du serveur de messagerie (dans ce cas posti.taleman.fi) est un enregistrement A et pointe vers le bon numéro IP.

$ dig posti.taleman.ovh |grep "ANSWER SECTION" --after-context=3 
;; ANSWER SECTION:
posti.taleman.ovh. 3600 IN A 178.33.154.66
;; Query time: 56 msec

Enfin, vérifie que le service de noms inversés résout le numéro IP en le renvoyant au FQDN du serveur de messagerie.

$ host 178.33.154.66
66.154.33.178.in-addr.arpa domain name pointer posti.taleman.ovh.

Au lieu de commander host et dig, tu peux utiliser des pages Web qui testent le service de nom. Je connais intoDNS et MXToolbox.

Si tu ne parviens pas à réussir les tests ci-dessus, tu peux essayer ce tutoriel Configurer le service de nom.

Installation du système d’exploitation

J’utilise la version 10 Buster de Debian, je suis donc ce tutoriel :

https://www.howtoforge.com/tutorial/debian-10-buster-minimal-server/

Remplace le numéro IP, le nom d’hôte et le nom de domaine par tes valeurs.

Comme j’écris ce tutoriel en anglais, j’ai choisi l’anglais comme langue, mais la Finlande comme pays et United_Kingdom en_GB.UTF-8 comme paramètres linguistiques.

[email protected]:/tmp# cat /etc/debian_version 10.0
[email protected]:~# locale
LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=
[email protected]:~# cat /etc/timezone
Europe/Helsinki

Vérifie que tu as configuré le nom d’hôte correctement. La configuration du système de messagerie d’ISPConfig ne fonctionnera pas si le nom d’hôte est incorrect.

[email protected]:~# hostname posti
[email protected]:~# hostname -f posti.taleman.ovh
[email protected]:~#

Installation d’ISPConfig

J’ai choisi d’installer Apache comme serveur Web, donc pour Debian Buster, je suis ce Guide du serveur parfait.

J’ai installé openssh-server sur l’hôte et configuré la connexion root à l’aide d’une clé ssh, afin de pouvoir accéder à l’hôte en tant que root directement. Logins sans mot de passe avec OpenSSH ou Logins sécurisés sans mot de passe avec SSH.

[email protected]:/tmp# free -h

Résultat de la commande libre

Je préfère les éditeurs de style Emacs à nano, alors j’installe maintenant jed pour rendre l’édition des fichiers plus agréable.

J’avais correctement configuré /etc/host et /etc/hostname après l’installation du système d’exploitation, alors j’ai simplement vérifié qu’ils étaient corrects en suivant le Guide du serveur parfait. Fais attention au nom d’hôte et au FQDN, si tu les mélanges, tu découvriras à la fin que ton serveur de messagerie ne fonctionne pas. Les dégâts peuvent être réparés, mais il est plus facile de les corriger dès le début.

[email protected]:/tmp# hostname
posti
[email protected]:/tmp# hostname -f
posti.taleman.ovh

Pour le reste, je me contente de suivre le Guide du serveur parfait. Note que tu peux surtout couper et coller les commandes du guide dans la ligne de commande.

Je n’ai pas installé Mailman, je ne prévois pas d’utiliser Mailman sur cet hôte. De même, j’ai omis d’installer BIND DNS Server, Webalizer, AWStats. J’ai installé Roundcube Webmail puisque cet hôte devient un serveur de messagerie.

Au chapitre 18 (Installer l’outil d’administration de base de données PHPMyAdmin), j’ai utilisé la commande

/usr/bin/apg -m 32 -x 32

pour générer le secret blowfish de 32 caractères.

Utilisation du système

Créer un domaine et des boîtes aux lettres électroniques

Maintenant, je me connecte en tant qu’admin à ISPConfig et

  • Ajouter un nouveau client
  • Ajouter un nouveau domaine (domaine e-mail !), et remplir le formulaire
  • Ajouter une nouvelle boîte aux lettres

Crée les clés et l’enregistrement DKIM en cliquant sur les boutons dans l’ordre numéroté dans l’image. Tu peux lire des informations sur DKIM dans Wikipedia.

Créer un domaine de messagerie dans ISPConfig

Figure 1 : Créer un domaine de messagerie

Ensuite, attends deux minutes ou jusqu’à ce que la boule rouge avec le numéro dans la partie supérieure du panneau ISPConfig disparaisse.

Comme premier test, connecte-toi à Roundcube Webmail avec la boîte aux lettres créée ci-dessus et envoie un e-mail à cette même adresse. ISPConfig envoie un message de bienvenue à chaque boîte aux lettres créée, il devrait donc déjà y avoir un message. Utilise le bouton Composer et écris un court message de test.

Connexion RoundCube

Figure 2 : Webmail Roundcube

Envoyer un email dans Roundcube

Figure 3 : Envoi à partir de Roundcube

Le message devrait bientôt apparaître dans la boîte aux lettres.

Essaie ensuite d’envoyer un e-mail à une autre boîte aux lettres que tu as et tu pourras vérifier si le message y arrive. Essaie ensuite d’envoyer un message depuis un autre endroit vers la boîte aux lettres créée ci-dessus.

Remarque : si tu as activé le greylisting pour la boîte aux lettres, le courriel envoyé depuis l’extérieur de ton serveur n’arrive pas immédiatement dans la boîte aux lettres. Cependant, tu devrais voir dans les entrées du journal des courriels des tentatives de livraison immédiates, ce qui te montre que le courrier peut atteindre ton serveur. L’entrée de greylisting dans le fichier /var/log/mail.log ressemble à ceci :

Aug 29 19:08:42 posti postfix/smtpd[16911]: NOQUEUE: reject: 
  RCPT from mta-out1.inet.fi[62.71.2.194]: 450 4.2.0 
  <[email protected]>: Recipient address rejected: Greylisted, 
  see http://postgrey.schweikert.ch/help/taleman.ovh.html; 
  from=<****@*****.***> to=<[email protected]> proto=ESMTP 
  helo=<******.****.***>

Tu peux surveiller le journal du courrier dans une fenêtre de terminal comme ceci, par exemple :

tail -f /var/log/mail.log

Ou en utilisant ces commandes, si tu es uniquement intéressé par les entrées de greylisting :

tail -f /var/log/mail.log | grep Greylisted

ou

grep Greylisted /var/log/mail.log

Le Greylisting ne retarde que le premier e-mail du même expéditeur au même destinataire. Une fois que ce premier e-mail est reçu, les e-mails suivants arrivent sans délai supplémentaire.

Dans mon cas, tout a fonctionné du premier coup. Cela montre que le Guide du serveur parfait d’ISPConfig fonctionne vraiment.

Connecter le client de messagerie

J’utilise Thunderbird comme exemple de client de messagerie. Les autres applications de client de messagerie fonctionnent de manière similaire.

ISPConfig fait en sorte que le nom du compte soit l’adresse e-mail.

Paramètres du compte Thunderbird

Figure 4 : Paramètres du compte Thunderbird

Paramètres du serveur Thunderbird

Figure 5 : Paramètres du serveur Thunderbird

Sécurité de la connexion STARTTLS signifie que la connexion commence sans protection et passe ensuite en mode crypté si les deux parties prennent en charge le cryptage. SSL/TSL signifie que la session est cryptée dès le début. SSL/TSL est probablement légèrement plus sûr, alors essaie si ton client fonctionne avec cela.

Serveur de courrier sortant Thunderbird

Figure 6 : Paramètres du serveur sortant de Thunderbird

Utiliser SPF

Lis ce qui concerne Sender Policy Framework sur Wikipedia. À l’origine, SPF signifiait Sender Permitted From, ce qui permet de se souvenir de sa signification. Après avoir lu ce qui concerne SPF, tu peux créer l’enregistrement toi-même, vérifier si ton fournisseur de services de noms peut générer un enregistrement SPF ou utiliser les moteurs de recherche Internet pour

SPF wizard

trouver un site Web qui crée l’enregistrement SPF du service de nom pour toi. Puis coupe et colle l’enregistrement à ton service de nom. Ajoute un enregistrement TXT, ou peut-être sur certains systèmes DNS un enregistrement SPF.

Regarde à quoi ressemble le SPF dans le service de nom, comme ceci

$ dig taleman.ovh -t TXT | grep spf
taleman.ovh. 3000 IN TXT "v=spf1 mx ~all"

Ou comme ceci :

$ dig +short taleman.ovh TXT
"v=spf1 mx ~all"
"1|www.taleman.ovh"

Utiliser DKIM

Lis ce qu’il en est de DomainKeys Identified Mail sur Wikipedia. ISPConfig a créé les clés DKIM pour toi lors de la création du domaine e-mail (si tu as pensé à cocher la case DKIM). Coupe et colle le DNS-Record qui est la clé publique à ton service de nom comme enregistrement TXT. Ton fournisseur de services de nom peut proposer un outil pour faciliter la création de l’enregistrement DKIM. Garde la clé privée DKIM secrète.

Vérifie à quoi ressemble le DKIM dans le service de noms, comme ceci :

$ host -t txt default._domainkey.taleman.ovh.
default._domainkey.taleman.ovh descriptive text "v=DKIM1;h=sha256;s=*;p=MIIB(I cut long string shorter)0rp" "sTGLXyK(cut shorter)B;t=s;"

Si c’est ISPConfig qui a créé les clés DKIM, la clé privée est copiée au bon endroit dans les paramètres amavis.

Il existe un site Web mail-tester.com qui est utile pour vérifier que SPF et DKIM fonctionnent. Va sur ce site, il donne une adresse e-mail et tu y envoies un e-mail depuis ton serveur. Ensuite, attends une minute et vérifie à nouveau le site Web.

Créer des certificats

ISPConfig peut créer des certificats auto-signés, ceux-ci sont créés pendant l’installation d’ISPConfig, sauf si tu as choisi de ne pas les créer. Même si tu as créé ces certificats auto-signés, c’est une bonne idée de créer des certificats appropriés auxquels les navigateurs, les programmes de messagerie et les autres serveurs de messagerie font confiance.

Il existe un excellent tutoriel : Sécuriser ISPConfig avec un certificat SSL Let’s Encrypt gratuit

En suivant ce tutoriel, j’ai remarqué que le site Web créé affichait la page Web par défaut de Debian, jusqu’à ce que je crée le certificat LE pour le site Web. De plus, le panneau ISPConfig était bizarre, je pense que c’est parce qu’il avait le certificat auto-signé et maintenant ce nouveau certificat ou pas de certificat du tout. Le fait de rafraîchir les pages dans le navigateur a réglé le problème.

Lorsque les certificats sont configurés, entre l’adresse https du serveur dans le navigateur. En cliquant sur l’icône à gauche de la barre d’adresse du navigateur avec l’autre bouton de la souris, tu obtiens des informations sur le certificat.

Va dans l’onglet Système du panneau ISPConfig, Configuration principale de l’interface et onglet Mail. Là, règle

Use SSL/TLS encrypted connection for SMTP

sur SSL.

Il est possible de tester davantage le certificat avec des outils sur les sites Web, utilise les moteurs de recherche Internet avec

ssl testing

comme mots de recherche. Ces outils testent généralement le site Web, lorsque tu testes les certificats du serveur de messagerie, cherche avec

ssl testing mail server

Plugins ISPConfig Roundcube

Ces plugins sont utiles pour les utilisateurs de webmail. Ils permettent de changer le mot de passe de l’e-mail dans Roundcube, par exemple. Certains autres paramètres peuvent aussi être modifiés dans Roundcube. Ils peuvent tous être modifiés dans le panneau ISPConfig, mais certains utilisateurs de messagerie ne veulent pas utiliser le panneau.

J’ai installé les plugins Rouncube d’ISPConfig en utilisant le tutoriel ISPConfig 3 Roundcube Plugin sur Debian 9. Le tutoriel a fonctionné exactement sur Debian 10 Buster, sauf que maintenant ispconfig3_account/config/config.inc.php a une ligne de plus :

$config['soap_validate_cert'] = true;

Cela peut rester à la valeur true, puisque le certificat est correctement configuré et testé dans le chapitre précédent de ce tutoriel. Si toutefois l’hôte ne possède pas de certificat valide, change ce paramètre en false.

J’ai eu un problème. Certains éléments de la section Compte ont fait apparaître un message d’erreur.

An error occurred.
Soap Error: The login is not allowed from <host ip-number>

J’ai résolu ce problème en cochant l’option Accès à distance et en écrivant posti.taleman.ovh pour l’utilisateur rcmail-remote que j’ai créé en suivant le Tutoriel. Il semble que le tutoriel se soit trompé en disant qu’il n’était pas nécessaire de cocher « Accès à distance ». Il me semble maintenant qu’il est nécessaire pour les installations à serveur unique et les installations multiserveurs d’ISPConfig avec un serveur de messagerie séparé.

Utilisation supplémentaire

Tu peux maintenant créer un autre domaine de messagerie. N’oublie pas de créer un enregistrement MX pour ce domaine et de le faire pointer vers ton serveur de messagerie. Tu peux utiliser le même serveur de messagerie pour tous les domaines de messagerie que tu crées. C’est ainsi que l’on procède généralement, car ce serait un véritable gaspillage de créer un serveur de messagerie distinct pour chaque domaine de messagerie.

Dépannage de

En suivant ce tutoriel, mon serveur de messagerie fraîchement configuré fonctionne. Si le tien ne fonctionne pas, vérifie que tu as bien suivi ce tutoriel et que tu n’as pas sauté des étapes.

En lisant le Forum, tu as constaté que les causes les plus fréquentes d’un serveur de messagerie qui ne fonctionne pas sont un mauvais paramétrage du nom d’hôte et du nom d’hôte -f et/ou des erreurs dans le fichier /etc/postfix/main.cf.

Si tu soupçonnes des problèmes avec le service de noms DNS, vérifie-les avec ISPConfig -tutorial. Il existe des outils web qui vérifient les DNS, comme intodns.com, dnschecker.com, mxtoolbox.com.

Si les e-mails ne sont pas reçus ou pas envoyés, c’est postfix qui s’occupe de ces fonctions et elles sont consignées dans /var/log/mail.log. Alors fais

tail -f /var/log/mail.log | grep postfix to see what happens when mail is being received or sent.

Si tu as des problèmes de connexion avec un client de messagerie (Thunderbird, par exemple), utilise ceci pour voir ce qui se passe :

tail -f /var/log/mail.log | grep dovecot

Si un e-mail particulier pose problème, tu peux trouver les entrées du journal des e-mails en utilisant l’ID de cet e-mail. Par exemple :

Sep 23 14:19:34 posti postfix/smtps/smtpd[10260]: A9F2880C76:
client=dsl-tkubng21-58c1ce-191.dhcp.inet.fi[99.99.99.99],
sasl_method=PLAIN, [email protected]

L’ID de cet e-mail est A9F2880C76. Tu peux trouver les entrées du journal pour cet e-mail en utilisant

# grep A9F2880C76 /var/log/mail.log

La commande mailq montre les e-mails qui sont dans la file d’attente différée de postfix. C’est-à-dire les e-mails qui n’ont pas encore été livrés. Il est normal d’y trouver des entrées récentes, les e-mails ne sont pas toujours livrés immédiatement. Tu peux voir le contenu de ces e-mails en utilisant l’ID de la file d’attente, comme ceci :

# postcat /var/spool/postfix/deferred/A/A9F2880C76

Howtoforge a des Forums ISPConfig, demande des conseils là-bas.

Vous aimerez aussi...