PostfixDans mon 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é.

Installation

Tout comme sur une machine publique, nous avons besoin des paquets postfix et mailx :

# rpm -q postfix mailx
postfix-3.5.8-4.el8.x86_64
mailx-12.5-29.el8.x86_64

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

# rpm -qa | grep cyrus-sasl
cyrus-sasl-gssapi-2.1.27-6.el8_5.x86_64
cyrus-sasl-plain-2.1.27-6.el8_5.x86_64
cyrus-sasl-lib-2.1.27-6.el8_5.x86_64

Configuration initiale

Nous avons abordé 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 LAN servers

# Disable backwards compatibility
compatibility_level = 2

# 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.0/8

# 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

# Command paths
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix

# Documentation
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix/samples
readme_directory = /usr/share/doc/postfix/README_FILES

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.
  • Certains fournisseurs de messagerie vous font sauter à travers des cerceaux en feu avant de pouvoir être utilisés comme relais SMTP.
  • Les directives smtp* définissent une connexion sécurisée au relais SMTP.

Je crée un fichier /etc/postfix/sasl_passwd pour renseigner les paramètres de connexion :

mail.microlinux.fr:465 login:password

ImportantBien é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 :

<fournisseur>:<port> <identifiant>:<mot_de_passe>

Générez le fichier sasl_passwd.db :

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

# rm -f sasl_passwd
# chmod 0400 sasl_passwd.db

J’édite la table de correspondance :

# /etc/aliases
...
# Person who should get root's mail
root: info@microlinux.fr

Je construis le fichier indexé :

# newaliases

Mise en service

Activer et démarrer Postfix :

# systemctl enable postfix --now

Vérifier si Postfix tourne correctement :

# systemctl status postfix
 postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/usr/lib/systemd/system/postfix.service; 
           enabled; vendor preset: disabled)
   Active: active (running) since Sun 2022-12-04 11:19:04 CET; 35s ago
...
# cat /var/log/maillog
... starting the Postfix mail system
... daemon started -- version 3.5.8, configuration /etc/postfix

J’envoie un mail de test vers un compte auquel j’ai accès, en l’occurrence mon adresse principale. Un point . sur une ligne à part marque la fin du message :

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

Je me connecte au compte mail externe et je vérifie si le message a bien été envoyé.

À partir de là, Postfix pourra être utilisé par les applications locales comme DNF Automatic, Rsnapshot, etc.


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.

 


2 commentaires

dClauzel · 5 décembre 2022 à 17 h 55 min

Mais… mais… pourquoi désactiver l’IPv6 ? ?

On est bientôt en 2023, cela fait plus de 10 ans que l’IPv4 est déclarée obsolète et qu’on est sur une approche « IPv6 prioritaire ».

    kikinovak · 5 décembre 2022 à 18 h 04 min

    Quand je n’en ai pas besoin (comme c’est le cas ici), je le désactive. Aussi simple que cela.

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *