Projet

Général

Profil

Paste
Télécharger au format
Statistiques
| Branche: | Révision:

root / plugins / amavis / amavis-debian @ c4b2d9a8

Historique | Voir | Annoter | Télécharger (2,55 ko)

1
#!/bin/sh
2
# 
3
# Plugin to monitor the amavis mail filter for Debian
4
# (based upon a plugin authored by Geoffroy Desvernay)
5
#
6
# This plugin is built and tested on Debian Etch using:
7
# 	munin 1.2.5-1
8
#	amavisd-new 2.4.2-6.1
9
#
10
# With some minor modification it should also work on non-debian systems
11
# This, however, is up to you
12
#
13
# Munin graph will sum up: Passed CLEAN, Blocked VIRUS, Blocked SPAM, Other
14
#
15
# Parameters understood:
16
# 	config   (required)
17
# 	autoconf (optional)
18
#
19
# Config variables:
20
#       AMAVIS_LOG	- file where amavis logs are written
21
#	STATEFILE	- file which is needed to keep track of AMAVIS_LOG
22
#	LOGTAIL		- location of logtail
23
#	BC		- location of bc
24
#
25
# Enjoy!
26
# Fili Wiese
27
#
28

    
29
AMAVIS_LOG=${logfile:-/var/log/mail.log}
30
STATEFILE=/var/lib/munin/plugin-state/amavis.offset
31
LOGTAIL=${logtail:-`which logtail`}
32
BC=${bc:-`which bc`}
33

    
34
mktempfile () {
35
	mktemp
36
}       
37

    
38
if [ "$1" = "autoconf" ]; then
39
        if [ -f "${AMAVIS_LOG}" -a -n "${LOGTAIL}" -a -x "${LOGTAIL}" -a -n "${BC}" -a -x "${BC}" ] ; then
40
		echo yes
41
		exit 0
42
	else
43
		echo no
44
		exit 1
45
	fi
46
fi
47

    
48
if [ "$1" = "config" ]; then
49
	echo 'graph_title Amavis filter statistics'
50
	echo 'graph_category antivirus'
51
	echo 'graph_order total clean spam virus other'
52
	echo 'graph_vlabel Mails filtered'
53
	echo 'graph_scale no'
54
	echo 'total.label Total'
55
	echo 'total.draw AREA'
56
	echo 'total.colour DDDDDD'
57
	echo 'clean.label Passed CLEAN'
58
	echo 'clean.draw LINE1'
59
	echo 'clean.colour 32FA00'
60
	echo 'spam.label Blocked SPAM'
61
	echo 'spam.draw LINE1'
62
	echo 'spam.colour FF0000'
63
	echo 'virus.label Blocked VIRUS'
64
	echo 'virus.draw LINE1'
65
	echo 'virus.colour 880088'
66
	echo 'other.label Other'
67
	echo 'other.draw LINE1'
68
	echo 'other.colour 0099FF'
69
	exit 0
70
fi
71

    
72
clean=0
73
virus=0
74
spams=0
75
other=0
76
total=0
77

    
78
ARGS=0
79
`$LOGTAIL /etc/hosts 2>/dev/null >/dev/null`
80
if [ $? = 66 ]; then
81
    if [ ! -n "$logtail" ]; then
82
	ARGS=1
83
    fi
84
fi
85

    
86
TEMP_FILE=`mktempfile munin-amavis.XXXXXX`
87

    
88
if [ -n "$TEMP_FILE" -a -f "$TEMP_FILE" ]
89
then
90
	if [ $ARGS != 0 ]; then
91
	    $LOGTAIL ${AMAVIS_LOG} $STATEFILE | grep 'amavis\[.*\]:' | grep -v 'TIMED OUT' > ${TEMP_FILE}
92
	else
93
	    $LOGTAIL ${AMAVIS_LOG} $STATEFILE | grep 'amavis\[.*\]:' | grep -v 'TIMED OUT' > ${TEMP_FILE}
94
	fi
95
	total=`cat ${TEMP_FILE} | wc -l`
96
	clean=`grep 'CLEAN' ${TEMP_FILE} | wc -l`
97
	virus=`grep 'INFECTED' ${TEMP_FILE} | wc -l`
98
	spam=`grep 'Blocked SPAM' ${TEMP_FILE} | wc -l`
99
	other=`echo ${total}-${clean}-${virus}-${other}-${spam} | ${BC}`
100
	
101
	/bin/rm -f $TEMP_FILE
102
fi
103

    
104

    
105
echo "clean.value ${clean}"
106
echo "virus.value ${virus}"
107
echo "spam.value ${spam}"
108
echo "other.value ${other}"
109
echo "total.value ${total}"
110