Aller au contenu

Postfix minimal sur un serveur local Debian 13

Postfix

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 :

$ 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

Pour l'authentification, nous utiliserons Cyrus SASL (Simple Authentication and Security Layer), c'est-à-dire « couche d'authentification et de sécurité simple » :

$ sudo apt install --no-install-recommends sasl2-bin libsasl2-modules

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
# /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 myhostname et mydomain seront adaptées en fonction du FQDN du serveur.

  • La directive relayhost permet de définir un relais SMTP.

  • J'utilise mon propre serveur mail.microlinux.fr auquel 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 :

/etc/postfix/sasl_passwd
mail.microlinux.fr:465 login:password

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 :

/etc/postfix/sasl_passwd
<fournisseur>:<port> <identifiant>:<mot_de_passe>

Générez le fichier sasl_passwd.db :

$ sudo postmap sasl_passwd

É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 :

$ sudo rm -f sasl_passwd
$ sudo chmod 0400 sasl_passwd.db

J'édite la table de correspondance :

/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.

Je construis le fichier indexé :

$ sudo newaliases

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 :

$ sudo systemctl restart 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-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 :

$ 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.