En passant de Free à Orange pour la fibre, mon serveur Postfix a cessé d'envoyer du courrier — sauf vers les adresses des domaines qu'il héberge lui-même. Le débit était au rendez-vous, l'envoi de mail beaucoup moins.
La cause : le port 25 sortant est bloqué
Orange filtre le port 25 en sortie sur ses accès résidentiels. Un serveur qui tente de livrer directement en SMTP vers un serveur distant n'obtient donc jamais de réponse, alors que la livraison locale — vers un domaine que la machine héberge — continue de fonctionner parfaitement.
C'est ce qui rend le diagnostic trompeur : le service marche, il ne sort simplement pas.
Passer par le relais de l'opérateur
La parade est de relayer par le serveur d'envoi d'Orange, sur un port qui n'est pas filtré, avec authentification :
# ---------------------------------
# Relai Orange
# ---------------------------------
smtp_sasl_auth_enable = yes
smtp_use_tls = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
relayhost = [smtp.orange.fr]:587
# ---------------------------------
Les identifiants vivent dans un fichier séparé, qui doit être compilé en base de données — Postfix ne lit pas le fichier texte :
cat /etc/postfix/sasl_passwd
[smtp.orange.fr]:587 prenom.nom@orange.fr:motdepasse
postmap hash:/etc/postfix/sasl_passwd
Le paquet qui manque et qu'on ne devine pas
Avec cette seule configuration, l'authentification échoue toujours : les modules SASL ne sont pas installés par défaut avec Postfix.
apt install libsasl2-modules
C'est le genre de dépendance dont l'absence ne produit pas un message clair — Postfix signale un échec d'authentification, ce qui oriente vers les identifiants plutôt que vers un paquet manquant.