LINUX:Postfix

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

retour au menu de concernant la messagerie


But

Postfix est un serveur de messagerie partie SMTP et MTA. Nous nous limiterons à une configuration de base sans ajouter des fonctionnalités de relevés de type POP, IMAP (Dovecot, Sieve) ou WebMail (RoundCubeMail, Horde), ni des fonctionnalités avancées tels le multi-domaine, anti-virus (Clamav), anti-spam (Spamassassin), SPF, DKIM, DMARC ou utilisation de base de données (Mysql, Postfixadmin). Il existe de nombreux sites bien faits qui décrivent cette mise en place.

Le but final est de transmettre les messages générés dans le cadre de la gestion du système à un autre serveur de mail ayant les fonctionnalités décrites ci-dessus. Cette approche sera progressive afin de comprendre les différentes fonctionnalités ajoutées et que vous puissiez mettre en oeuvre ce qui vous intéresse.

Nous aborderons seulement les trois premiers protocoles: SMTP, SMTPS et submission.


SMTP et ses contraintes

SMTP a ses contraintes actuellement, ce qui complique notre tâche.


Postfix-Résumé

Postfix est un serveur de messagerie libre pour Unix dont le noyau de base couvre la réception et l'envoi de mails (SMTP), le traitement de mail reçu et décision de sa distribution (MTA) distante (SMTP) ou locale. Ce programme est très modulaire à la base et peut s'adjoindre nombre d'autres modules tiers.


LINUX:Postfix.architecture.png


Les rectangles bleus désignent les tables, les rectangles jaunes les files d'attente et les ellipses les programmes. Le grand rectangle à cadre rouge désigne le noyau de base de Postfix regroupant ses différents programmes. On remarque la grande complexité de ce logiciel. A cela, on peut greffer des modules comme Cyrus-sasl, Clamav, Spamassassin, Seive, Dovecot, Mysql, OpenDKIM, OpenDMARC, AMAVIS, RoundCubeMail, Postfixadmin,... A gauche, nous avons les entrées en local ou via Internet et à droite, la sortie en local ("mailbox") ou vers Internet. Nous n'allons pas décortiquer et expliquer toutes ces cases; il existe de nombreux sites qui font bien cela.

Les fichiers de configuration sont dans le répertoire "/etc/postfix". Le journal par défaut se nomme "/var/log/maillog". Les files d'attente et de gestion se trouvent dans le répertoire "/var/spool/postfix". Parmi les files d'attente, si vous trouvez des fichiers dans les répertoires "deferred" et "defer", ce sont les mails qui ont des problèmes de traitement. Dans la configuration par défaut, la "mailbox" est le répertoire "/var/mail"; dans ce répertoire, on trouvera un fichier par utilisateur local contenant les différents mails arrivés l'un en dessous de l'autre.

Dans ce schéma, remarquez deux processus fondamentaux:

  • A gauche, l'arrivée des mails vers le processus "smtpd"
  • A droite, le départ des mails à partir du processus "smtp"

Nous aurons à faire à eux dans le fichier de configuration "/etc/postfix/master.cf".


Installation

Pour installer Postfix, avant toute chose, il faut s'assurer qu'il n'y a pas d'autre serveur de messagerie tel "sendmail" ou "ssmtp". Il reste à lancer la commande d'installation du package:

dnf install postfix


Activer et lancer le service

Le service à lancer est POSTFIX. La première commande active le service pour qu'à chaque démarrage du serveur, le service se lance. La seconde lance directement le service. La troisième relance le service.

systemctl enable postfix.service
systemctl start postfix.service
systemctl restart postfix.service


Configurer le mur de feu ou FireWall

Vous avez sûrement activé le FireWall du serveur. Dans l'exemple, l'adressage de notre LAN est 192.168.1.0 avec un masque de 255.255.255.0 ou de 24 bits. Comme c'est un service proposé, il faut ouvrir diverses portes. Tout dépend des services proposés et des services distants souhaités.

Supposons que l'on propose seulement le service SMTP classique sur le réseau local (port 25).


-A INPUT -p tcp -m tcp --dport 25 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT

Par contre, si on ne le propose qu'en local, on le bloque:


-A INPUT -p tcp -m tcp --dport 25 -j DROP

Habituellement, les ports TCP 587 (submission) et 465 (SMTPS) sont aussi à l'écoute. On peut les rendre accessibles.


-A INPUT -p tcp -m tcp --dport 587 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 465 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT


D'autre part, on désire accéder à des services distants:

  • Envoyer des mails à un autre serveur de messagerie sur votre LAN (IP: 192.168.1.101) par le port SMTP classique (port 25)

-A OUTPUT -p tcp -m tcp --dport 25 -d 192.168.1.101 -j ACCEPT

  • On désire rediriger des mails vers un serveur de messagerie se trouvant sur Internet par submission avec authentification (port 587 (STARTTLS) ou 465 (SSL/TLS))

-A OUTPUT -p tcp -m tcp --dport 587 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 465 -j ACCEPT

  • Même type d'accès, mais via le port personnalisé 3587 (voir exemple dans les articles suivants)

-A OUTPUT -p tcp -m tcp --dport 3587 -j ACCEPT

On peut évidemment être plus restrictif en précisant l'adresse IP du serveur distant.

Ceci est un exemple. Adaptez en fonction de votre configuration en entrée et en sortie.

La commande suivante peut vous y aider pour ce qui est en entrée:

netstat -natp | grep LISTEN

Options:

- a : toutes liaisons réseaux
- t : filtrage sur tcp
- p : nom du processus
- n : affichage numérique de l'adresse IP

Vous aurez une liste des services TCP locaux disponibles en écoute avec le nom du processus et pour quel interface IP.


Services à l'écoute

Nous abordons les services classiques qui sont à l'écoute et lancés par Postfix. Ils concernent la réception de mails.


Description de quelques configurations

Dans cette article, nous allons présenter une configuration de base, complétée progressivement par ajout de notions diverse et atteindre notre but.


Journalisation

Le journal par défaut se nomme "/var/log/maillog". On peut le rendre plus verbeux.


Tester l'envoi de mails

Après la configuration de Postfix, il faut le tester. On peut aussi tester un serveur distant.


Gestion de file d'attente

Il arrive que des messages ne soient pas envoyés pour diverses raisons. Ils sont mis en attente dans la file d'attente "deferred". Cette queue se situe dans les arborescences: "/var/spool/postfix/deferred" et "/var/spool/postfix/defer". Les messages bloqués se retrouvent dans la queue "hold". Cette queue se situe dans l'arborescence: "/var/spool/postfix/hold".


Normalement Postfix essaye de les renvoyer suivant des intervalles de temps de plus en plus long avec un délais maximum.


Les commandes "postqueue" et "postsuper" permettent de gérer ces files.

  • La commande:
postqueue -p

permet d'afficher la liste des messages en attente d'envoi, en cours d'envoi ou bloqués. En première position, vous trouvez le n° de queue du message ou "Queue ID".

  • La commande:
postqueue -f

active l'envoi immédiat des messages en attente.

  • Par contre si vous désirez envoyer un message bien précis, exécutez la commande suivante en précisant son numéro:
postqueue -i <n° de queue>

Le <n° de queue> est donné par la commande "postqueue -p" vue plus haut.

  • Une autre commande permet de supprimer tous les messages de la queue "deferred":
postsuper -d ALL deferred
  • Par contre si vous désirez supprimer un message bien précis, exécutez la commande suivante en précisant son numéro:
postsuper -d <n° de queue>

Le <n° de queue> est donné par la commande "postqueue -p" vue plus haut.


D'autres options existent.





retour au menu de concernant la messagerie