Documentation complémentaire sur Postfix

en cours de rédaction...



Documentation Française :

Une excellente traduction de la documentation officiel maintenu par X.guimard@ existe déja à l'adresse http://postfix.traduc.org. Je vous conseille de vous y référer, en particulier, la page de référence de tous les paramètres qu'il est possible d'utiliser dans Postfix : http://postfix.traduc.org/index.php/postconf.5.html.


Quelques astuces et conseils :

  • Dans les moments ou votre serveur Postfix sature parce que les queues contiennent trop de mail, n'utilisez pas mailq mais plutôt la commande find pour connaitre le nombre de mail. Exemples :
[root@linux /]$ find /var/spool/postfix/active -type f | wc -l

[root@linux /]$ find /var/spool/postfix/active /var/spool/postfix/deferred -type f | wc -l
  • Pour /var/spool/postfix, utilisez un FS dédié et un type de FS adapté.

Les files d'attentes (queues) :

  • ACTIVE :
Queue des mails en cours de traitement.
Le répertoire de stockage est en général /var/spool/postfix/active

  • DEFERRED :
Queue des mails en attente de re-traitement.
Une ou plusieurs tentatives de livraisons ont échoués.
Postfix y place le mail pour gérer en priorité les mails que la queue ACTIVE.
Le répertoire de stockage est en général /var/spool/postfix/deferred
  • HOLD :
Queue des mails dont le traitement est désactivé.
Seul une intervention de l'administrateur peut sortir le mail de cette queue
à l'aide de la commande '''postconf -H'''
Le répertoire de stockage est en général /var/spool/postfix/hold

Quelques commandes en ligne pour Postfix :


postconf :

Commande de gestion de la configuration. Principalement des paramètres de main.cf

  • Liste de tous les paramètres en cours (par ordre alphabétique) :
[root@linux /]$ postconf | sort | less
  • Liste de tous les paramètres modifiés par rapport à la version par défaut :
[root@linux /]$ postconf -n
  • Liste de tous les paramètres avec leur valeur par défaut :
[root@linux /]$ postconf -d | sort | less
  • Affiche la valeur actuelle du paramètre mynetworks :
[root@linux /]$ postconf mynetworks
  • Affiche la valeur par défaut du paramètre mynetworks :
[root@linux /]$ postconf -d mynetworks
  • Modifie le paramètre mynetworks et rechargement de postfix :
[root@linux /]$ postconf -e 'mynetworks = 127.0.0.1'
[root@linux /]$ postfix reload
  • Affiche les types supportés pour les recherches de correspondances. (Exemple : l'annuaire des utilisateur) :
[root@linux /]$ postconf -m
  • Affiche au format brut les templates personnalisables pour les notifications de Postfix :
[root@linux /]$ postconf -t
  • Exporte les templates dans un fichier pour personnalisation et utilisation :
[root@linux /]$ postconf -t > /etc/postfix/bounce_template.cf
[root@linux /]$ postconf -e 'bounce_template_file = /etc/postfix/bounce_template.cf'
[root@linux /]$ postfix reload

  • Affiche le résultat final des notifications de Postfix. Si vous avez personnalisé le template, les modifications apparaitrons :
[root@linux /]$ postconf -b

postcat :

  • Affiche le contenu formaté d'un mail actuellement dans la queue en utilisant son QUEUE_ID :
[root@linux /]$ postcat -q 75062179A8 | more

postsuper :

Commande de gestion des files d'attente. S'utilise avec un numéro d'ID de queue ou avec le mot clé ALL

  • Efface définitivement un mail actuellement dans une des queues :
[root@linux /]$ postsuper -d 75062179A8
  • Efface LA TOTALITE des mails dans TOUTES les queues :
[root@linux /]$ postsuper -d ALL
  • Place un mail dans la queue HOLD pour traitement ultérieur :
[root@linux /]$ postsuper -h 75062179A8
  • Sort un mail dans la queue HOLD et le replace dans une queue active :
[root@linux /]$ postsuper -H 75062179A8
[root@linux /]$ postfix flush

postfix :

  • Recharge la configuration de Postfix (attention pour les modifications dans master.cf, il faut relancer le serveur postfix) :
[root@linux /]$ postfix reload
  • Force Postfix à traiter tous les mails qui sont actuellement en queue DEFERRED :
[root@linux /]$ postfix flush

mailq :

  • Affiche la liste des tous les mails - Toutes queues confondus :
[root@linux /]$ mailq
  • Explication sur les signes particuliers qui se trouvent au début de l'ID pour chaque mail affichés avec mailq :
*     : Le mail est dans la queue ACTIVE
!     : Le mail est dans la queue HOLD
Aucun : Le mail est dans la queue DEFERRED
  • Utilisation de mailq pour générer des traitements automatiques à partir du QUEUE_ID :
- Affichage du QUEUE_ID de chaque mail
for QUEUE_ID in `mailq | grep -E '^[0-9A-F].* ' | awk '{ print $1}' | cut -d '*' -f1`; do echo $QUEUE_ID; done

- Destruction définitive des mails de notification avec expéditeur MAILER-DAEMON :
for QUEUE_ID in `mailq | grep -E '^[0-9A-F].* ' | grep ' MAILER-DAEMON' | awk '{ print $1}' | cut -d '*' -f1`; do
   postsuper -d $QUEUE_ID
done

Exemple de configuration sécurisé :

ATTENTION rédaction en cours : Ces règles doivent encore être testés avant d'être utilisé en production !!'''''

Les exemples ci-après, ont les mêmes pré-requis :

  • 2 Adresse IP sur le serveur linux (2 physique ou 1 physique/1 virtuelle) :
    • 1 Adresse IP dédié au mail en provenance et à destination du LAN.
    • 1 Adresse IP dédié au mail en provenance et à destination d'Internet.
  • Le Postfix est en frontal sur internet avec ou sans Firewall et Nat. Il est le premier à recevoir des mails en provenance d'internet et le dernier dans la chaine à en envoyer.
  • L'adresse IP publique du Postfix est déclaré comme MX d'au moins 1 domaine internet
  • La résolution DNS du serveur sur lequel se trouve Postfix fonctionne parfaitement


La configuration décrite dans ce chapitre, permet de fournir une méthode qui devrait s'adapter à la majorité des besoins.
Scénario et architecture d'exemple :

  • Votre domaine internet est : exemple.net
  • Ce domaine à comme MX principal : mx1.exemple.net
  • Votre serveur de messagerie contenant les comptes utilisateur se trouve à l'adresse 192.168.1.50 et est joignable par le protocole SMTP.
  • Aucun utilisateur de votre entreprise n'utilise ce serveur SMTP à partir de l'extérieur pour envoyer des mails.
  • L'adresse IP dédié au WAN (internet) est : 192.168.1.1
  • L'adresse IP dédié au LAN est : 192.168.1.55


  • Fichier /etc/postfix/master.cf :
# Commentez la tâche SMTPD d'origine avec le signe dièse comme ci-dessous :
#smtp      inet  n       -       n       -       -       smtpd

# ETH0 : Interface dédié au WAN (internet)
192.168.1.1:smtp      inet    n       -       n       -       -       smtpd

# ETH1 : Interface dédié au LAN
192.168.1.55:smtp       inet  n       -       n       -       -       smtpd
 -o cleanup_service_name=cleanup-lan
 -o mynetworks=hash:/etc/postfix/local-mynetworks
 -o smtpd_reject_unlisted_sender=yes
 -o smtpd_reject_unlisted_recipient=no
 -o smtpd_client_restrictions=permit_mynetworks,reject
 -o smtpd_helo_restrictions=
 -o smtpd_sender_restrictions=reject_non_fqdn_sender,hash:/etc/postfix/local-relays,reject
 -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,permit_mynetworks,reject

# Localhost
127.0.0.1:smtp          inet  n       -       n       -       -       smtpd
 -o mynetworks=127.0.0.1
 -o relay_recipient_maps=
 -o smtpd_client_restrictions=permit_mynetworks,permit
 -o smtpd_helo_restrictions=
 -o smtpd_sender_restrictions=permit_mynetworks,permit
 -o smtpd_recipient_restrictions=permit_mynetworks,reject_unauth_destination,permit
 -o smtpd_end_of_data_restrictions=

cleanup-lan   unix  n       -       n       -       0       cleanup
 -o header_checks=regexp:/etc/postfix/local-header-checks-lan

  • Fichier /etc/postfix/local-mynetworks :
192.168.1.50   # Serveur de messagerie Domino1
  • Fichier /etc/postfix/local-relays :
exemple.net   OK
  • Fichier /etc/postfix/local-spoofing :
exemple.net   REJECT ANTI-SPOOFING
  • Fichier /etc/postfix/local-header-checks-lan :
/^Received:/                    IGNORE
/^X-Mailer:/                    IGNORE
/^X-MIMETrack:/                 IGNORE
  • Fichier /etc/mail/aliases :
Attention ce fichier peut se trouver à des endroits différents selon l'OS,
utilisez la commande postconf | grep -E '(alias_database|alias_maps)'
pour savoir lequel Postfix utilise vraiment.

La seule ligne importante de ce fichier est celle commençant par root:
Elle est souvent en commentaires avec un dièse : #root: ....

root:     notify-postfix@exemple.net

  • Fichier /etc/postfix/local-transport :
  • Fichier /etc/postfix/local-filters :
  • Fichier /etc/postfix/local-whitelist-clients :
  • Fichier /etc/postfix/local-blacklist-clients :
  • Fichier /etc/postfix/local-directory :
  • Fichier /etc/postfix/local-exceptions-helo :
  • Fichier /etc/postfix/local-blacklist-helo :
  • Fichier /etc/postfix/local-blacklist-recipients :
  • Fichier /etc/postfix/local-specifics-senders :
  • Fichier /etc/postfix/local-blacklist-senders :
  • Configuration générale :
transport_maps =                hash:/etc/postfix/local-transport

relay_domains = 		$mydestination,
				hash:/etc/postfix/local-relays

relay_recipient_maps = 		hash:/etc/postfix/local-directory

smtpd_client_restrictions = 	permit_mynetworks,
				check_client_access hash:/etc/postfix/local-whitelist-clients,
				check_client_access hash:/etc/postfix/local-blacklist-clients,
				reject_rbl_client sbl-xbl.spamhaus.org,
				reject_rbl_client list.dsbl.org,
				reject_rbl_client dnsbl.njabl.org

smtpd_helo_restrictions = 	check_helo_access hash:/etc/postfix/local-exceptions-helo,
				check_helo_access hash:/etc/postfix/local-blacklist-helo,
				check_helo_access hash:/etc/postfix/local-spoofing

smtpd_recipient_restrictions = 	check_recipient_access hash:/etc/postfix/local-blacklist-recipients,
				reject_non_fqdn_recipient,
				reject_unauth_destination,
				check_policy_service inet:127.0.0.1:10023,
				reject_unlisted_recipient,
				check_recipient_access hash:/etc/postfix/local-filters

smtpd_sender_restrictions = 	permit_mynetworks,
				check_sender_access hash:/etc/postfix/local-specifics-senders,
				reject_non_fqdn_sender,
				check_sender_access hash:/etc/postfix/local-spoofing,
				check_sender_access hash:/etc/postfix/local-blacklist-senders

smtpd_reject_unlisted_recipient = yes

smtpd_reject_unlisted_sender = no

smtpd_delay_reject = yes

smtpd_helo_required = yes

mynetworks = 127.0.0.0/8

 
Radical Spam - Solutions de filtrage Open Source