Dans ce quatrième article dédié à Postfix et Dovecot, nous allons aborder la gestion des logs de notre serveur mail. Nous disposons à présent d’un serveur fonctionnel avec une poignée d’utilisateurs. Avant d’aller plus loin dans le peaufinage de la configuration, il est important de garder à l’œil tout ce qui se passe sous le capot de Postfix.
Toutes les opérations de Postfix sont écrites dans le fichier /var/log/maillog
. Le problème avec ce fichier, c’est qu’il devient vite ingérable. À titre d’exemple, jetons un œil sur les logs d’un serveur mail de taille modeste hébergeant une petite vingtaine de comptes mail :
# sudo wc -l /var/log/maillog 190372 /var/log/maillog
En cinq jours, ce fichier contient plus de 190.000 entrées au total. Il nous faut donc trouver une solution pour gérer intelligemment tout ce fatras. Quelque chose qui permette de répondre rapidement à la question suivante :
« Qu’est-ce qui se passe sur mon serveur mail ? »
C’est là où Pflogsumm (Postfix Log Summary) entre en jeu. Pflogsumm est un outil écrit en Perl capable de générer des rapports détaillés depuis les logs de Postfix.
Red Hat Enterprise Linux et Rocky Linux fournissent Pflogsumm dans les dépôts officiels :
# dnf install -y postfix-perl-scripts
Pour tester le bon fonctionnement de Pflogsumm, commençons par générer un rapport à la volée pour la journée en cours :
# pflogsumm -d today /var/log/maillog | less Postfix log summaries for Jan 17 Grand Totals ------------ messages 41 received 46 delivered 0 forwarded 0 deferred 0 bounced 42 rejected (47%) 0 reject warnings 0 held 0 discarded (0%) 1944k bytes received 1953k bytes delivered 20 senders 20 sending hosts/domains 11 recipients 1 recipient hosts/domains
Faisons la même chose pour la veille :
# pflogsumm -d yesterday /var/log/maillog | less Postfix log summaries for Jan 16 Grand Totals ------------ messages 369 received 482 delivered 0 forwarded 5 deferred (11 deferrals) 0 bounced 75 rejected (13%) 0 reject warnings 0 held 0 discarded (0%) 85433k bytes received 95478k bytes delivered 134 senders 99 sending hosts/domains 63 recipients 26 recipient hosts/domains
Pflogsumm accepte une série d’options décrites en détails dans la page de manuel pflogsumm(1)
. Pour une aide plus succincte, invoquez pflogsumm
avec l’option --help
.
Dans l’exemple ci-dessous, je génère un rapport en commençant par les problèmes de traitement, notamment les rejets de messages :
# pflogsumm -d yesterday --problems_first --rej_add_from \ --verbose_msg_detail -q /var/log/maillog | less
À partir de là, je peux envisager la création d’une tâche automatique pour la génération d’un rapport quotidien par mail. Pour éviter de me retrouver avec une commande à rallonge dans mon fichier crontab
, je commence par éditer un petit script shell maillogs.sh
comme ceci :
#!/bin/bash # # maillogs.sh SERVER="sd-155842.dedibox.fr" PFLOG="/usr/sbin/pflogsumm" EMAIL="info@microlinux.fr" # Check if Pflogsumm is installed if [[ ! -x ${PFLOG} ]] then echo 'Pflogsumm is not installed on this system.' >&2 exit 1 fi # Generate daily report ${PFLOG} -d today -q /var/log/maillog \ --rej_add_from --verbose_msg_detail | mail -s "Postfix log summary for ${SERVER}" ${EMAIL} exit 0
Je range le script dans un endroit approprié comme ~/bin
, je définis les permissions appropriées et je le teste manuellement :
# ./maillogs.sh
Je jette un œil dans ma boîte mail pour vérifier si j’ai bien reçu le rapport généré :
Une fois que tout fonctionne comme prévu, il ne me reste plus qu’à définir une tâche automatique :
# crontab -e
# Postfix logs
59 23 * * * /root/bin/maillogs.sh 1> /dev/null
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.
0 commentaire