Dans ce septiè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’oeil 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 oeil 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 CentOS fournissent Pflogsumm dans les dépôts officiels.
$ sudo yum install 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.
$ sudo pflogsumm -d today /var/log/maillog | less
Postfix log summaries for Jun 5
Grand Totals
------------
messages
108 received
127 delivered
0 forwarded
2 deferred (18 deferrals)
0 bounced
21 rejected (14%)
0 reject warnings
0 held
0 discarded (0%)
5634k bytes received
5687k bytes delivered
36 senders
33 sending hosts/domains
16 recipients
4 recipient hosts/domains
...
Faisons la même chose pour la veille.
$ sudo pflogsumm -d yesterday /var/log/maillog | less
Postfix log summaries for Jun 4
Grand Totals
------------
messages
486 received
521 delivered
0 forwarded
3 deferred (57 deferrals)
4 bounced
497 rejected (48%)
0 reject warnings
0 held
0 discarded (0%)
31152k bytes received
32372k bytes delivered
133 senders
102 sending hosts/domains
36 recipients
11 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.
$ sudo 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 postfix-logs.sh
comme ceci.
#!/bin/bash # # postfix-logs.sh # # Send daily Postfix log summary to the admin SERVER='alphajet.microlinux.fr' PFLOG='/usr/sbin/pflogsumm' EMAIL='info@microlinux.fr' # Make sure the script is being executed with superuser privileges if [[ "${UID}" -ne 0 ]] then echo 'Please run with sudo or as root.' >&2 exit 1 fi # 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 yesterday /var/log/maillog \ --rej_add_from \ --verbose_msg_detail \ -q \ | 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.
$ sudo ./postfix-logs.sh
Je jette un oeil dans ma boîte mail pour vérifier si j’ai bien reçu le rapport généré par Pflogsumm.
Une fois que tout fonctionne comme prévu, il ne me reste plus qu’à définir une tâche automatique.
$ sudo crontab -e
# Postfix logs
00 04 * * * /home/microlinux/bin/postfix-logs.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.
1 commentaire
Stéphane · 3 décembre 2020 à 6 h 54 min
Bonjour,
Merci pour cet article et le script. M’est super utile sur mon serveur de mail.
Bonne journée.
Les commentaires sont fermés.