Postfix minimal sur un serveur dédié Debian 13
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 :
Installation
Postfix est fourni par les dépôts officiels de la distribution :
Choisissez No configuration dans la fenêtre de configuration post-installation :
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 :
Configurer Postfix
Les fichiers de configuration utilisés par Postfix se situent dans
/etc/postfix :
-
Le fichier
master.cfgère la configuration du démonmasterde Postfix. Dans la plupart des configurations de base, on n'aura pas à intervenir sur ce fichier. -
Le fichier
main.cfcontient 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
#
# 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 :
L'option -d affichera la valeur par défaut des paramètres demandés :
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 :
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 = localhostlimite l'utilisation de Postfix aux applications locales. -
myhostnameest censé contenir le nom d'hôte pleinement qualifié du serveur, c'est-à-dire le résultat de la commandehostname --fqdn. -
mynetworksdéfinit les adresses depuis lesquelles Postfix accepte les mails sans authentification via SMTP. -
alias_mapsdéfinit l'emplacement de la table de correspondance. Certaines informations ne peuvent pas être facilement représentées dansmain.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 programmepostmapest utilisé pour construire les fichiers indexés. Pour mettre à jour les alias, on utilisera la commandenewaliases.
Créez la table de correspondance /etc/aliases :
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é :
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 :
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 :
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 :
À 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.




