Comprendre et configurer un serveur mail a et demeure aujourd’hui un projet professionnel de taille pour n’importe quel administrateur. Dans la plupart des cas, les tutoriels disponibles en ligne partent directement dans la configuration et commence par installer les paquets et editer les fichiers de configuration sans pour autant prendre le temps d’expliquer l’architecture.
Le problème qui se pose avec cette manière de faire est que quand il y a des problèmes à diagnostiquer, étudiant qui ne fait que copier coller se perd et entre les différentes versions des paquets, d’un tutoriels à un autre, les problèmes de compatibilité, se voit suberméger et se décourage.
Ce tutoriel suivra le plan suivant et pas à pas :
- Fonctionnement d’un email (SMTP, IMAP, POP3)
- DNS (A, MX, PTR)
- Installation de Postfix seul
- Maildir et stockage des mails
- Installation de Dovecot
- Authentification SASL Postfix ↔ Dovecot
- TLS/SSL
- SPF
- DKIM
- DMARC
- PostfixAdmin
- Anti-spam (Rspamd, SpamAssassin)
Les protocoles impliqués dans le transfert et la livraison des mails sont le smtp, le lmtp, imap ou pop3
| SMTP | LMTP |
|---|---|
| Transporte les e-mails entre serveurs. | Remet les e-mails au serveur de stockage des boîtes aux lettres. |
| Répond généralement une seule fois pour l’ensemble des destinataires. | Donne une réponse distincte pour chaque destinataire. |
| Utilisé sur Internet. | Utilisé principalement à l’intérieur d’une infrastructure de messagerie. |
Les ports à connaitre
| Ports | Protocol | Rôle |
| 25 | SMTP | Communication entre serveurs |
| 587 | SMTP Submission | Outlook -> Postfix |
| 993 | IMAPS | Outlook -> Dovecot |
Postfix
Fichier: /etc/postfix/main.cf
Fichier: /etc/postfix/master.cf
C’est le cerveau de postfix, il dit : quels services demarrés, sur quels ports et avec quel privilèges.
Notons que suivant la philosophie unix : 1 processus = 1 responsabilité
| Service | Rôle |
|---|---|
| smtpd | Reçoit les e-mails entrants via le protocole SMTP. C’est le serveur SMTP qui écoute généralement sur le port 25 (ou 587/465 selon la configuration). |
| pickup | Surveille le répertoire maildrop et récupère les nouveaux messages déposés localement (par exemple par la commande sendmail). |
| cleanup | Prépare les messages avant leur mise en file d’attente : ajoute les en-têtes manquants, réécrit les adresses si nécessaire et vérifie la syntaxe. |
| qmgr (Queue Manager) | Gère la file d’attente des messages. Il décide quand et comment chaque e-mail sera livré en fonction de la disponibilité des destinations et des tentatives précédentes. |
| local | Distribue les messages aux utilisateurs locaux de la machine (par exemple dans /var/mail/ ou via un agent de distribution local). |
| smtp | Envoie les messages vers d’autres serveurs SMTP sur Internet ou sur un réseau interne. C’est le client SMTP de Postfix. |
| lmtp | Similaire à smtp, mais utilise le protocole LMTP pour remettre les messages à un serveur local comme Dovecot ou Cyrus. |
| trivial-rewrite | Réécrit et résout les adresses e-mail (domaines, alias, routes) avant la livraison. |
| bounce | Génère les messages de non-remise (bounce) lorsqu’un e-mail ne peut pas être distribué. |
| defer | Gère les notifications lorsqu’un message est temporairement retardé. |
| verify | Vérifie si une adresse destinataire est valide avant d’accepter le message (si cette fonctionnalité est activée). |
| proxymap | Fournit un accès sécurisé aux bases de données (alias, tables de correspondance) pour les processus qui ne doivent pas y accéder directement. |
| anvil | Surveille les statistiques de connexion (nombre de connexions, taux de requêtes, etc.) afin d’appliquer des limites et prévenir les abus. |
| tlsmgr | Gère les informations liées à TLS, comme le cache des sessions TLS. |
| showq | Affiche le contenu de la file d’attente lorsque vous utilisez postqueue -p ou mailq. |
| scache | Met en cache les connexions SMTP afin de réutiliser une connexion existante et améliorer les performances. |
smtpd -> cleanup -> qmgr -> local
Dovecot
Folder: /etc/dovecot/
Installation
apt install dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd -y