Hace un tiempo eché un vistazo a un día en el correo de blackshell, y pude comprobar que más o menos se detectaba un 35% de spam respecto al total de correo del servidor.
Hoy me he preguntado otra vez cómo estaría la cosa, comentando un poco con Jaime y Felipe la jugada. Le he dedicado un rato al tema, principalmente peleándome con gnuplot, para automatizar el análisis de los datos.
Este es el resultado:

Estadísticas (siempre) del día de ayer.
El script que he usado para crear el gráfico puede ser algo específico de mi sistema, pero igual a alguien le resulta interesante.
#!/bin/sh # se crean temporales en el directorio de trabajo # y luego se borran, pero ojo con el usuario que lo hace cd /root/tmp # configuracion HOST="blackshell.usebox.net" OUTPUT="/var/www/htdocs/images/spamstats.png" # usamos C para que de la fecha correcta LANG=C # procesamos las entradas de ayer # el date de GNU soporta 'date -d yesterday +"%h %e"' # pero esta versión es portable ;) DATE=$(date -r $(($(date +%s) - 86400)) +"%h %e") # preparamos el log de ayer grep "$DATE" < /var/log/maillog > mailog.yesterday # si rotamos logs por tamaño... (OJO si hay mucho trafico) zcat /var/log/maillog.*.gz | grep "$DATE" >> mailog.yesterday # separamos spam y ham (ojo que no esté el modo 'verbose' de bogom) awk '/X-Bogosity:\ Yes/ { print $3 }' mailog.yesterday > spam.log awk '/X-Bogosity:\ No/ { print $3 }' mailog.yesterday > ham.log # totales TOT_SPAM=$(wc -l < spam.log | sed 's/ //g') TOT_HAM=$(wc -l < ham.log | sed 's/ //g') # preparamos los datos para gnuplot cat spam.log | cut -f1 -d: | sort | uniq -c > spam.data cat ham.log | cut -f1 -d: | sort | uniq -c > ham.data # conf de gnuplot cat > graf.plot << PLOT set data style linespoints set format x "%H" set timefmt "%H" set xdata time set pointsize 0.4 set xlabel "$DATE" set ylabel "Mail count" set title "Bogofilter stats for $HOST" set terminal png small xffffff set size 500/640.0, 300/480.0 set output "$OUTPUT" plot "spam.data" using 2:1 title "SPAM ($TOT_SPAM)" 1, \ "ham.data" using 2:1 title "HAM ($TOT_HAM)" 2 PLOT # si hay datos, genera un gráfico nuevo if [ $TOT_SPAM -ne 0 -a $TOT_HAM -ne 0 ]; then gnuplot graf.plot > /dev/null fi # borra temporales rm -f graf.plot spam.data ham.data spam.log ham.log mailog.yesterday # EOF
Seguro que podemos encontrar paquetes que nos darán estadísticas más detalladas (como AWStats), pero para mi es suficiente ;).
Jugando con cron actualizaré la gráfica todos los días, para echar un vistazo de vez en cuando. De entrada se puede ver como ya recibo más spam que correo legítimo (del 35% que comprobé en Febrero), y eso que hay varios usuarios en el servidor suscritos a listas de correo :'(.
![[xml]](/images/xml.gif)
