Aller au contenu

Messages recommandés

Posté(e)

Postfix

Postfix est un serveur mail, et plus exactement un MTA (Mail Transfer Agent). Il gère l'envoi et la réception de mails par Internet en utilisant le protocole SMTP. Le monde de l'Open Source offre toute une panoplie de MTA, parmi lesquels on trouve Postfix, Exim, Qmail et Sendmail.

Dans ce premier article sur les serveurs de messagerie, nous allons configurer Postfix sur une machine publique tournant sous Debian 13 Trixie. Notre premier objectif, ce sera l'envoi des messages du système comme par exemple les notifications du système de sauvegardes automatiques Rsnapshot.

Prérequis

Avant de mettre la main à la pâte, je vérifie si le serveur n'est pas blacklisté quelque part :

MX Toolbox

Installation

Postfix est fourni par les dépôts officiels de la distribution :

$ sudo apt update
$ sudo apt install --no-install-recommends postfix

Choisissez No configuration dans la fenêtre de configuration post-installation :

Postfix

On installera également la commande mail (paquet bsd-mailx) pour pouvoir tester et gérer les mails en ligne de commande directement sur le serveur :

$ sudo apt install bsd-mailx

 

Configurer Postfix

Les fichiers de configuration utilisés par Postfix se situent dans /etc/postfix :

  • Le fichier master.cf gère la configuration du démon master de Postfix. Dans la plupart des configurations de base, on n'aura pas à intervenir sur ce fichier.

  • Le fichier main.cf contient les paramètres de contrôle des démons de Postfix. C'est celui que l'on modifiera le plus souvent.

Étant donné que nous avons opté pour No configuration lors de l'installation, nous disposons uniquement d'un fichier main.cf.proto censé servir de base pour une configuration personnalisée.

Le fichier /etc/postfix/main.cf.proto est une copie exacte du fichier /usr/share/postfix/main.cf.debian.

En dehors de cela, le répertoire /usr/share/postfix/ fournit un fichier main.cf.dist amplement documenté qui décrit en détail le rôle de chacune des directives de configuration de Postfix.

Si un paramètre n'est pas présent dans main.cf, Postfix utilisera sa valeur par défaut. Pour la plupart, ces valeurs sont définies en dur dans le code source de Postfix, tandis que certaines sont initialisées à la compilation et quelques-unes au moment du lancement du programme.

Voici une configuration de mon cru pour envoyer des e-mails depuis une machine publique avec une ouverture frontale sur Internet :

/etc/postfix/main.cf

# /etc/postfix/main.cf
#
# Minimal Postfix configuration for Internet-facing servers

# Disable backwards compatibility
compatibility_level = 3.10

# Dedicated Postfix user
mail_owner = postfix

# Disable IPv6
inet_protocols = ipv4

# Outbound mail only
inet_interfaces = localhost
mailbox_size_limit = 0

# Host
myhostname = sd-150204.dedibox.fr

# Domain
mydomain = dedibox.fr

# Authorize local machine only
mynetworks = 127.0.0.1/32

# Local aliasing
alias_maps = hash:/etc/aliases

# Debugging
debugger_command =
   PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
   ddd $daemon_directory/$process_name $process_id & sleep 5
 

Le programme postconf est très utile pour examiner les valeurs courantes et par défaut du fichier main.cf. Pour afficher la valeurs de certains paramètres de configuration, il suffit de les fournir en argument :

$ sudo postconf inet_interfaces
inet_interfaces = localhost

L'option -d affichera la valeur par défaut des paramètres demandés :

$ sudo postconf -d inet_interfaces
inet_interfaces = all

Servez-vous de postconf à tire-larigot

N'hésitez pas à tester chacune des directives de main.cf avec postconf pour retenir les directives qui ne vont pas correspondre à la valeur définie par défaut :

$ sudo postconf inet_protocols
inet_protocols = ipv4
$ sudo postconf -d inet_protocols
inet_protocols = all

La configuration que je vous ai fournie en exemple mérite quelques remarques :

  • Si l'IPv6 est désactivé au niveau du système, il faudra également le faire ici grâce à la directive inet_protocols.

  • inet_interfaces = localhost limite l'utilisation de Postfix aux applications locales.

  • myhostname est censé contenir le nom d'hôte pleinement qualifié du serveur, c'est-à-dire le résultat de la commande hostname --fqdn.

  • mynetworks définit les adresses depuis lesquelles Postfix accepte les mails sans authentification via SMTP.

  • alias_maps définit l'emplacement de la table de correspondance. Certaines informations ne peuvent pas être facilement représentées dans main.cf. Les tables de correspondance permettent de les stocker dans des fichiers externes. Postfix n'utilise pas directement les fichiers texte, ce serait trop lent. Au lieu de cela, les tables de correspondance de type hash (ou « tables de hachage ») servent pour construire des fichiers indexés, grâce à la bibliothèque Berkeley DB. Le programme postmap est utilisé pour construire les fichiers indexés. Pour mettre à jour les alias, on utilisera la commande newaliases.

Créez la table de correspondance /etc/aliases :

/etc/aliases

# /etc/aliases
postmaster:  root
root:        info@microlinux.fr
Indiquez votre adresse e-mail

Je vous encourage fortement à utiliser votre adresse e-mail plutôt que la mienne. Ceci étant dit, la quantité de notifications que je reçois quotidiennement par e-mail me donne une vague idée de la popularité de mes articles sur l'administration des serveurs Linux.

Construisez le fichier indexé :

$ sudo newaliases

Cette commande va créer un fichier /etc/aliases.db exploitable par Postfix :

$ ls -l /etc/aliases*
-rw-r--r-- 1 root root    65 Jan 31 13:17 /etc/aliases
-rw-r--r-- 1 root root 12288 Jan 31 13:16 /etc/aliases.db

 

Mise en service

Le service postfix est activé dans la configuration par défaut. Il me suffit de le démarrer :

$ sudo systemctl start postfix

Je vérifie si Postfix tourne correctement :

$ systemctl status postfix
● postfix.service - Postfix Mail Transport Agent (main/default instance)
     Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; 
             preset: enabled)
     Active: active (running) since Sat 2026-01-31 13:21:00 CET; 1min 11s ago
 Invocation: 8f8863dec0434f72abd44f3d708923d7
       Docs: man:postfix(1)
    Process: 35329 ExecStartPre=postfix check (code=exited, status=0/SUCCESS)
    Process: 35487 ExecStart=postfix debian-systemd-start (code=exited, 
             status=0/SUCCESS)
   Main PID: 35496 (master)
      Tasks: 3 (limit: 4634)
     Memory: 3.4M (peak: 3.9M)
        CPU: 1.521s
     CGroup: /system.slice/postfix.service
             ├─35496 /usr/lib/postfix/sbin/master -w
             ├─35497 pickup -l -t unix -u -c
             └─35499 qmgr -l -t unix -u

Je peux également jeter un œil dans les logs de Postfix pour savoir si tout se passe comme prévu :

$ sudo tail /var/log/mail.log
2026-01-31T13:24:17.238808+01:00 sd-150204 postfix/master[35820]: daemon 
started -- version 3.10.5, configuration /etc/postfix

 

Envoi d'un e-mail de test

J'envoie un e-mail de test vers un compte auquel j'ai accès, en l'occurrence mon adresse principale :

$ mail info@microlinux.fr
Subject: Test Postfix
Ceci est un test.
.
Cc:

Un point c'est tout

Lorsque vous rédigez un e-mail en ligne de commande avec mail, un point . tout seul sur une ligne marque la fin du message.

Je me connecte à ma messagerie et je vois que le message a bien été reçu :

Postfix

À partir de là, Postfix pourra être utilisé par les applications locales pour l'envoi d'e-mails.


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

4VbZPSJoBSQfkKyU1QWkNa.jpg

Afficher l’article complet

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.