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 !

Schéma représentant un transfert de logs postfix dovecot vers un serveur rsyslog

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 module imfile 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 sera dovecot.
  • $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 est info.
  • $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

Ecrire un commentaire

XHTML: Vous pouvez utiliser les balises : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Connexion