Rsyslog pour le duo Postfix / Dovecot
J’ai rencontré un problème assez contraignant pour les maniaques comme moi, j’ai mon serveur de messagerie qui héberge les duo Postfix et Dovecot. Les logs sont respectivements répartis dans /var/log/mail.log pour Postfix et dans /var/log/mail.log pour Dovecot. Problème, lors de l’envoi par Rsyslog de ceux-ci, sur le serveurs recevant ces logs, je me suis retrouvé avec une concaténation des deux fichiers dans un seul. Découvrons la solution à ce problème ensemble !
On commence par vérifier la configuration des logs de Dovecot sur le serveur de messagerie
root@CT-mail:~# cat /etc/dovecot/dovecot.conf | grep log_path
log_path = /var/log/dovecot.log
Si le résultat n’est pas log_path = /var/log/dovecot.log
alors il faudra modifier le fichier dovecot.conf
en conséquence
Maintenant il faut configurer Rsyslog
on édite donc le fichier de configuration
root@CT-mail:~# nano /etc/rsyslog.conf
Et on ajoute les directives suivantes
$ModLoad imfile
$InputFileName /var/log/dovecot.log
$InputFileTag dovecot:
$InputFileStateFile dovecot-log
$InputFileSeverity info
$InputFileFacility local7
$InputRunFileMonitor
Explication :
- $ModLoad imfile
Charge le moduleimfile
pour permettre à rsyslog de lire des fichiers texte arbitraires. - $InputFileName /var/log/dovecot.log
Spécifie le fichier de journal à surveiller, en l’occurrence/var/log/dovecot.log.
- $InputFileTag dovecot:
Définit le tag qui sera utilisé pour identifier les messages du journal. Dans ce cas, le tag seradovecot
. - $InputFileStateFile dovecot-log
Définit un fichier d’état qui sera utilisé pour suivre la position dans le fichier de journal. Cela permet à rsyslog de reprendre la lecture du fichier de journal là où il s’est arrêté lors du dernier arrêt ou redémarrage. - $InputFileSeverity info
Définit le niveau de gravité pour les messages provenant de ce fichier de journal. Dans ce cas, le niveau estinfo
. - $InputFileFacility local7
Définit la facilité de journalisation syslog à utiliser.local7
est une des valeurs de facilité personnalisées disponibles. - $InputRunFileMonitor
Déclenche le suivi du fichier spécifié.
Puis on redémarre le service Rsyslog
root@CT-mail:~# systemctl restart rsyslog.service
Maintenant il faut configurer le serveur Rsyslog pour qu’il puisse trier tout ça
On édite le fichier de configuration
root@CT-rsyslog:~# nano /etc/rsyslog.conf
Puis on ajoute les lignes suivantes dans la partie « Rules » du fichier en faisant bien attention à remplacer « IPDUSEVEURMAIL » par la bonne adresse !
$template DynamicFile,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* -?DynamicFile
if $fromhost-ip=='IPDUSERVEURMAIL' and $programname startswith 'postfix' then /var/log/CT-mail/mail.log
& stop
if $fromhost-ip=='IPDUSERVEURMAIL' and $programname startswith 'dovecot' then /var/log/CT-mail/dovecot.log
& stop
Un petit redémarrage du service Rsyslog
et le tour est joué 🙂
root@CT-rsyslog:~# systemctl restart rsyslog.service
0 Commentaires