Adminstration de Postfix

Postfix est très utilisé pour l’envoi de mail via le protocole SMTP. Il joue le rôle de MTA (Mail Transfer Agent). Plutôt que sa configuration, nous allons ici lister des commandes qui se révèleront utiles dans l’administration au quotidien.

Modification de la configuration

Tout d’abord, en cas de souci sur une instance Postfix et avant de procéder à une quelconque modification, il peut être utile d’afficher sa configuration. Pour cela, nous utiliserons la commande : postconf. Contrairement à la consultation des fichiers de configuration, cette commande présente l’avantage d’afficher également les valeurs par défaut des paramètres qui n’ont pas été surchargés dans les fichiers.

Au cours de la vie d’une plateforme mail, il pourra être utile de modifier sa configuration, pour changer le routage des mails, espacer les envois vers un même destinataire (GMail, Outlook, …) afin de ne pas être considéré comme spammeur, … Il faudra donc être vigilent à la configuration de Postfix. Certains éléments seront récupérés dans une base de données, certains issus d’un LDAP et d’autres issus du hash d’un fichier plat. Dans ce dernier cas, il faut impérativement penser à recréer un hash après chaque modification du fichier source. Pour cela, nous utilisons la commande : postmap /etc/postfix/transport.map.

Consultation des différentes queues mail

Postfix dipose de plusieurs queues qui vont pouvoir acqueillir les mails en attendant qu’ils puissent être acheminés ou supprimés (si l’envoi est impossible). Les queues les plus utilisées sont : Incoming, Active, Deferred et Hold.

Pour consulter le contenu d’une queue, nous pouvons utiliser la commande qshape deferred (replacer ‘deferred’ par le nom de queue souhaitée). Par défaut, cette commande regroupe les mails par le domaine du destinataire. On peut donc utiliser l’option -s pour voir le domaine d’emission au lieu de celui de reception.

S’il y a plusieurs instances, la commande est qshape -c /etc/postfix-in deferred.

Pour afficher la liste des mails en queue, nous pouvons également utiliser la commande postqueue -p. Cette commande ne produit pas un tableau comme qshape, mais liste les mails individuellement. Les deux commandes sont donc complémentaires. Autre différence avec qshape, cette commande affiche, également, les mails présents dans l’ensemble des queues. Les messages dont l’ID se termine par une “*” sont dans la queue active et ceux avec un “!” sont dans la queue hold. Les autres sont dans la queue deferred.

Interaction avec les mails : la commande postsuper

La commande postsuper nous permet de réaliser plusieurs tâches d’adinistration. Elle permet de supprimer des mails soit par ID, soit par queue, ou enfin l’ensemble des mails :

  • Pour supprimer un mail via son ID, on utilisera postsuper -d ID_MAIL.
  • Pour supprimer tous les mails de la queue deferred postsuper -d ALL deferred.
  • Enfin, pour supprimer l’ensemble des mails en queue postsuper -d ALL.

Si l’envoi de mail a échoué pour une raison ou une autre, il est très probable qu’il ait été transféré de la queue active vers la queue deferred. Puis, plus le nombre d’échec sera important, plus le délais entre deux tentatives d’envoi augmentera. Il peut alors être interessant, pour tester une modification de configuration, de forcer l’envoie des messages en queue. Pour cela, nous utiliserons la commande postqueue -f ou postsuper -r ALL.

En revanche, si nous ne souhaitons remettre qu’un seul message en queue, nous pouvons utiliser la commande postsuper -r ID_MAIL.

Enfin, cette commande postsuper permet également de déplacer les mails dans la queue hold et de les rebasculer dans la queue deferred :

  • Pour passer les mails dans queue hold : postsuper -h ID_MAIL
  • Pour les remettre dans la queue deferred : postsuper -H ID_MAIL

Autres commandes

Il existe d’autres opération utile qui peuvent être réalisées sur Postfix, notamment afficher le contenu d’un mail en queue. Pour cela, il faut utiliser la commande postcat : postcat -q ID_MAIL.

Et la commande bonus : postconf -q toto@test.com -c /etc/postfix/main.cf ldap://qsgs