Configuration postfix
| Fiche express | |
|---|---|
| Domaine | Configuration du MTA Postfix |
| Fichier | /etc/postfix/main.cf
|
| Application à chaud | postconf -e 'param = valeur' puis reload
|
| Logs | /var/log/mail.log
|
| Voir aussi | Postfix · Postconf |
Cette page détaille les directives les plus couramment modifiées dans
/etc/postfix/main.cf, avec leur rôle et leur justification — voir Postfix
pour la présentation générale du MTA et Postconf pour la commande d'inspection/édition.
Identité et réseau
# Bannière renvoyée au client lors de sa connexion sur le port 25
smtpd_banner = $myhostname ESMTP $mail_name
# Nom d'hôte du serveur (utilisé notamment pour la bannière et la génération de Message-Id)
myhostname = smtp1.exemple.local
# Domaine ajouté aux adresses des utilisateurs postant localement (cron, root...)
myorigin = exemple.tld
# Interfaces réseau sur lesquelles Postfix écoute
inet_interfaces = all
inet_protocols = ipv4
# Réseaux clients autorisés à relayer du courrier via ce serveur
mynetworks = 127.0.0.0/8 192.168.1.0/24
mynetworks définit la confiance réseau : tout hôte dans cette plage peut relayer
sans authentification. À ne jamais ouvrir au-delà du réseau interne légitime — c'est le
paramètre qui, mal réglé (typiquement 0.0.0.0/0), transforme un serveur en relais
ouvert exploitable par des spammeurs.
Serveur relais uniquement, sans boîtes locales
Un serveur qui ne fait que relayer/transmettre du courrier (passerelle SMTP) sans héberger de boîtes locales n'a pas besoin de livraison locale :
mydestination =
local_recipient_maps =
local_transport = error
Relais vers un domaine spécifique
Pour transmettre le courrier destiné à un domaine donné vers un serveur de messagerie interne
(par exemple une passerelle vers un serveur applicatif de messagerie), sans consulter le MX
public du domaine (les crochets [ ] désactivent la résolution MX) :
relay_domains = exemple.tld
relay_transport = smtp:[messagerie.exemple.local]
Si le DNS interne du domaine expose déjà un enregistrement MX correct pointant vers ce
serveur, il est plus simple et plus robuste de laisser Postfix le résoudre normalement
(relay_transport = smtp:exemple.local, sans les crochets) plutôt que de figer un
hôte en dur.
Pour gérer plusieurs domaines/serveurs de destination, une table de transport est plus propre qu'une suite de directives — voir la section dédiée sur la page Postfix.
Durcissement basique contre les abus
La commande VRFY permet à un client SMTP de vérifier l'existence d'une adresse
sans envoyer de message — un outil classique de reconnaissance pour un spammeur. À désactiver
systématiquement :
disable_vrfy_command = yes
smtpd_delay_reject = yes (comportement par défaut depuis longtemps) retarde le
rejet d'une commande invalide jusqu'à RCPT TO plutôt que de couper la connexion
dès la première erreur détectée (typiquement sur HELO ou MAIL FROM) :
cela permet aux règles de restriction portant sur le destinataire de s'appliquer correctement,
au prix d'un log un peu plus verbeux.
smtpd_delay_reject = yes
Limites anti-abus (throttling)
Ces paramètres bornent le comportement d'un client SMTP pour limiter l'impact d'un
spammeur ou d'un compte compromis. Les statistiques appliquées apparaissent dans
/var/log/mail.log sous forme de lignes postfix/anvil[...]: statistics:
... — à surveiller après mise en place pour vérifier qu'aucun usage légitime n'est
bridé par erreur (envois en masse internes, par exemple) :
# Unité de temps de référence pour les limites ci-dessous
anvil_rate_time_unit = 60s
# Nombre maxi de connexions simultanées d'un même client
smtpd_client_connection_count_limit = 5
# Nombre maxi de tentatives de connexion par unité de temps
smtpd_client_connection_rate_limit = 15
# Nombre maxi de messages envoyés par unité de temps
smtpd_client_message_rate_limit = 20
# Nombre maxi de destinataires par unité de temps
smtpd_client_recipient_rate_limit = 15
# Nombre maxi d'erreurs avant coupure de la session
smtpd_hard_error_limit = 5
# Nombre maxi de commandes "parasites" (NOOP, VRFY, ETRN, RSET) avant livraison d'un message
smtpd_junk_command_limit = 4
# Nombre maxi d'erreurs diverses tolérées avant livraison d'un message
smtpd_soft_error_limit = 8
# Délai de réponse imposé à un client ayant dépassé smtpd_soft_error_limit
smtpd_error_sleep_time = 30s
Durée de vie en file d'attente
maximal_queue_lifetime = 45m
bounce_queue_lifetime = 40m
Si un dispositif de greylisting est utilisé en amont (délai de rejet temporaire volontaire pour filtrer les spammeurs peu patients), la durée de vie en file doit rester supérieure au délai de greylisting appliqué, sous peine de voir des messages légitimes définitivement rejetés avant d'avoir pu être retentés.
Voir aussi
- Postfix — présentation générale, architecture, relais multi-domaines
- Postconf — commande d'inspection/édition de la configuration
- Postfix auth TLS — chiffrement de la session SMTP
- Configure Postfix to use SASL authentication with TLS security — authentification des clients