Postfix minimal sur un serveur local Debian 13
Dans un précédent article, j'ai décrit la configuration de Postfix sur une machine publique pour la rendre capable d'envoyer par e-mail les notifications du système ainsi que les mails générés par les applications locales. Aujourd'hui, nous allons essayer d'obtenir un résultat semblable avec un serveur installé dans un réseau local, autrement dit une machine qui n'a pas d'ouverture frontale sur Internet. Pour ce faire, nous allons configurer Postfix comme relais SMTP authentifié.
L'alternative Nullmailer
Pour envoyer des e-mails depuis une machine locale derrière un routeur, certains admins utilisent l'alternative Nullmailer qui est assez simple à configurer. Pour ma part, je confie cette tâche à Postfix pour la simple raison que je suis raisonnablement familiarisé avec. Là encore, différents chemins mènent à Saint-Bauzille-de-Putois.
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 :
Pour l'authentification, nous utiliserons Cyrus SASL (Simple Authentication and Security Layer), c'est-à-dire « couche d'authentification et de sécurité simple » :
Configuration initiale
Nous avons abordé en détail la configuration de base du fichier
/etc/postfix/main.cf dans le précédent article. Cette configuration sera
adaptée à notre machine locale derrière un routeur :
# /etc/postfix/main.cf
#
# Minimal Postfix configuration for local 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 = sandbox.microlinux.lan
# Domain
mydomain = microlinux.lan
# Authorize local machine only
mynetworks = 127.0.0.1/32
# Deliver via Microlinux
relayhost = mail.microlinux.fr:465
smtp_sasl_auth_enable = yes
smtpd_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_use_tls = yes
smtp_tls_wrappermode = yes
smtp_tls_security_level = encrypt
smtp_tls_note_starttls_offer = yes
smtp_sasl_mechanism_filter = login, plain
# 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
Quelques remarques :
-
Les directives
myhostnameetmydomainseront adaptées en fonction du FQDN du serveur. -
La directive
relayhostpermet de définir un relais SMTP. -
J'utilise mon propre serveur
mail.microlinux.frauquel je me connecte via le port 465. Bien évidemment, vous définirez ici votre serveur mail à vous. -
Les directives
smtp*définissent une connexion sécurisée au relais SMTP.
Gare à la galère
Certains fournisseurs de messagerie comme Gmail vous font sauter à travers des cerceaux en feu avant de pouvoir être utilisés comme relais SMTP.
Je crée un fichier /etc/postfix/sasl_passwd pour renseigner les paramètres de
connexion :
Bien évidemment vous n'utiliserez pas mon serveur de messagerie. Il vous faudra donc renseigner vos propres paramètres de connexion auprès de votre fournisseur de messagerie en utilisant la syntaxe suivante :
Générez le fichier sasl_passwd.db :
Étant donné que l'identifiant et le mot de passe de connexion apparaissent en
clair dans le fichier sasl_passwd, la meilleure solution pour sécuriser la
configuration consiste à le supprimer et à restreindre les permissions du
fichier sasl_passwd.db :
J'édite la table de correspondance :
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.
Je construis le fichier indexé :
Mise en service
Le service postfix est activé dans la configuration par défaut. Il me suffit
de le relancer pour prendre en compte ma configuration :
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-04-18 12:41:11 CEST; 3h 35min ago
Invocation: 8bac67cbca994c3082133f3a2ee1cacd
Docs: man:postfix(1)
Main PID: 857 (master)
Tasks: 3 (limit: 9413)
Memory: 16M (peak: 16.5M)
CPU: 382ms
CGroup: /system.slice/postfix.service
├─ 857 /usr/lib/postfix/sbin/master -w
├─ 859 qmgr -l -t unix -u
└─4577 pickup -l -t unix -u -c
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.



