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 :
mailstatjchkmail.png

Un exemple d'attaque bloqué par le filtre :
attak_j-chkmail.png

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