Dans 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
etmydomain
seront adaptées en fonction du FQDN du serveur. - La directive
relayhost
permet de définir un relais SMTP. J’utilise mon propre serveurmail.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
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 :
<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.