Récemment j’ai eut à trouver une solution propre pour surveiller des emails envoyé par postfix, et récupérer leur statue.
C’est alors que j’ai creusé en profondeur syslog
et que j’ai trouvé mon bonheur ! :D
Le but à atteindre
Donc postfix tourne sur une machine, mon projet sur une autre machine. Il faut envoyer un email par ce serveur postfix, et retrouver si l’email est bien arrivé chez le destinataire, ou si au contraire il s’est viandé lamentablement.
Le rôle de syslog
postfix, comme énormément d’application sous Linux, utilisent syslog
pour logger ce qui se passe. (créer un fichier de log dans /var/log/
)
Donc, syslog va, après avoir poster le log dans le fichier de log, transmettre cette ligne de log à la machine où tourne le projet.
Et pour faire ca, rien de plus simple !!! :-)
Configurer syslog sur la machine où tourne postfix
Il faut préciser à syslog qu’il doit émettre les logs à une machine, et surtout… quelle machine ! :-)
Pour faire ca, il faut juste modifier le fichier /etc/syslog.conf
et créer un régle:
(A faire n’importe où dans le fichier)
1
mail.* @machine_distante
Puis, pour finir, redémarrer syslog:
1
sudo /etc/init.d/syslog restart
Configurer syslog sur la machine distante
Là c’est encore plus simple ! ;-)
Il faut juste que syslog
démarre avec l’argument “-r” !
Pour faire ca, il faut modifier le fichier /etc/default/syslogd
:
1
2
3
4
5
6
7
8
9
10
11
12
13
#
# Top configuration file for syslogd
#
#
# Full documentation of possible arguments are found in the manpage
# syslogd(8).
#
#
# For remote UDP logging use SYSLOGD=”-r”
#
SYSLOGD=”-r”
Une fois de plus, il faut redémarrer syslog:
1
sudo /etc/init.d/syslog restart
Et voila !!! :-)
Résultat
Maintenant, quand un mail est traité, les logs mail seront écrit dans le /var/log/
de la machine où tourne l’application and elle peut donc les “lires” !!