J-chkmail est un moteur anti-spam développé par Jose-Marcio Martins da Cruz de l’école des Mines de Paris. Dans cet article, je vous propose un template pour l’outil de métrologie Cacti. Ce template vous permettra d’avoir les statistiques du filtre j-chkmail dans un unique graphique.
Pré-requis
Bien entendu pour utiliser ce template, il vous faut un serveur de messagerie utilisant le filtre j-chkmail. De plus, ce serveur devra disposer d’un démon SNMPd et celui ci doit être accessible par le serveur de métrologie. Pour récupérer les stats de j-chkmail, on utilise le binaire j-printstats, vérifiez qu’il est présent sur le système. Installation coté serveur anti-spam
Premièrement on va créer le script qui va mettre en forme et afficher les stats du filtre :
vim /usr/local/scripts/jchkmail-stats.pl
Copiez/collez le script suivant :
#!/usr/bin/perl
# On va multiplier les valeurs par x secondes
$ratio = "1";
open(PROCESS,"j-printstats -a |");
foreach (<PROCESS>) {
# Remplacement des longues suites d'espaces par un seul
$_ =~ s/(\ +)/ /g;
# On traite la sortie de la commande j-printstats
if ($_ =~ /^# (.*) : ([[:digit:]]*) ([[:digit:]]*)$/) {
$label = lc($1);
$value = $3*$ratio;
# On remplace les espaces par des tirets ds le label
$label =~ s/( )/-/g;
print "$label:$value ";
}
}
close(PROCESS);
On pense bien a mettre les droits d’exécutions :
chmod a+x /usr/local/scripts/jchkmail-stats.pl
Ensuite, on édite la configuration de snmpd :
vim /etc/snmp/snmpd.conf
A la fin du fichier de conf, on ajoute un “OID perso” :
exec .1.3.6.1.4.1.2021.8.1.101.1 jchkmail-stats /usr/local/scripts/jchkmail-stats.pl
Pour info, net-snmp sur Solaris ne prend pas en compte la déclaration de l’OID, sur Linux vous pouvez modifier l’OID si celui ci est déjà utilisé.
On redémarre le démon snmpd :
service snmpd restart
Installation coté serveur Cacti
On crée le script qui va interroger le serveur de messagerie. J’utilise un script plutôt qu’une requête snmp direct car on récupère un string contenant plusieurs valeurs numériques :
#!/bin/bash
if [[ $3 == "2" ]]
then
version="2c"
else
version=$3
fi
output=`/usr/bin/snmpwalk -Oav -v$version -c $2 $1 .1.3.6.1.4.1.2021.8.1.101.1 | cut -d '"' -f 2 | tr -s -`
printf "$output"
Enfin, vous importez le fichier XML du template dans votre Cacti et vous l’instanciez pour votre serveur. cacti_graph_template_n2_-_j-checkmail_stats.xml
Aperçu du graphe généré
Tout va bien :
Un exemple d’attaque bloqué par le filtre :
Références
- Post sur le forum de Cacti : http://forums.cacti.net/viewtopic.php?f=12&t=27599
- Fiche Plume sur j-chkmail : https://www.projet-plume.org/fr/fiche/j-chkmail
- Image CacTux : http://tux.crystalxp.net/fr.id.1525-k-net-cactux.html