summaryrefslogtreecommitdiff
path: root/files/munin/dovecot
blob: 86feb4bf9f9313378dda7941ff73a582f8cb927b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#!/bin/sh
#
# Munin Plugin
# to count logins to your dovecot mailserver
# 
# Created by Dominik Schulz <lkml@ds.gauner.org>
# http://developer.gauner.org/munin/
# Contributions by:
# - Stephane Enten <tuf@delyth.net>
# 
# Parameters understood:
#
# config    (required)
# autoconf  (optional - used by munin-config)
# 
# Config variables:
#
#       logfile      - Where to find the syslog file
#
# Add the following line to a file in /etc/munin/plugin-conf.d:
#   env.logfile /var/log/your/logfile.log
#
# Magic markers (optional - used by munin-config and installation scripts):
#
#%# family=auto
#%# capabilities=autoconf

######################
# Configuration
######################
STAT_FILE=/var/lib/munin/plugin-state/plugin-dovecot.state
EXPR_BIN=/usr/bin/expr
LOGFILE=${logfile:-/var/log/mail.log}
######################

if [ "$1" = "autoconf" ]; then
  echo yes
  exit 0
fi

if [ "$1" = "config" ]; then
  echo 'graph_title Dovcecot Logins'
  echo 'graph_args --base 1000 -l 0'
  echo 'graph_vlabel Login Counters'
  echo 'login_total.label Total Logins'
  echo 'login_tls.label TLS Logins'
  echo 'login_ssl.label SSL Logins'
  echo 'login_imap.label IMAP Logins'
  echo 'login_pop3.label POP3 Logins'
  echo 'connected.label Connected Users'
  exit 0
fi

#############################
# Initialization
#############################
if [ ! -r $STAT_FILE ]; then
  echo "TOTAL=0" > $STAT_FILE
  echo "TLS=0" >> $STAT_FILE
  echo "SSL=0" >> $STAT_FILE
  echo "IMAP=0" >> $STAT_FILE
  echo "POP3=0" >> $STAT_FILE
fi
#############################


######################
# Total Logins
######################
/bin/echo -en "login_total.value "
NEW_TOTAL=$(egrep 'dovecot.*Login' $LOGFILE | grep "`date '+%b %e'`" | sort | wc -l)
OLD_TOTAL=$(grep TOTAL $STAT_FILE | cut -f2 -d '=')
TOTAL=$($EXPR_BIN $NEW_TOTAL - $OLD_TOTAL)
if [ $TOTAL -gt 0 ]; then
  echo "$TOTAL"
else
  echo "0"
fi
echo -n
######################
# Connected Users
######################
CONNECTS=$(doveadm -f flow who -1 |wc -l)
/bin/echo -en "connected.value "
echo $CONNECTS
echo -n
######################
# TLS Logins
######################
/bin/echo -en "login_tls.value "
NEW_TLS=$(egrep 'dovecot.*Login.*TLS' $LOGFILE | grep "`date '+%b %e'`" | sort | wc -l)
OLD_TLS=$(grep TLS $STAT_FILE | cut -f2 -d '=')
TLS=$($EXPR_BIN $NEW_TLS - $OLD_TLS)
if [ $TLS -gt 0 ]; then
  echo "$TLS"
else
  echo "0"
fi
echo -n
######################
# SSL Logins
######################
/bin/echo -en "login_ssl.value "
NEW_SSL=$(egrep 'dovecot.*Login.*SSL' $LOGFILE | grep "`date '+%b %e'`" | sort | wc -l)
OLD_SSL=$(grep SSL $STAT_FILE | cut -f2 -d '=')
SSL=$($EXPR_BIN $NEW_SSL - $OLD_SSL)
if [ $SSL -gt 0 ]; then
  echo "$SSL"
else
  echo "0"
fi
echo -n
######################
# IMAP Logins
######################
/bin/echo -en "login_imap.value "
NEW_IMAP=$(egrep 'dovecot.*imap.*Login' $LOGFILE | grep "`date '+%b %e'`" | sort | wc -l)
OLD_IMAP=$(grep IMAP $STAT_FILE | cut -f2 -d '=')
IMAP=$($EXPR_BIN $NEW_IMAP - $OLD_IMAP)
if [ $IMAP -gt 0 ]; then
  echo "$IMAP"
else
  echo "0"
fi
echo -n
######################
# POP3 Logins
######################
/bin/echo -en "login_pop3.value "
NEW_POP3=$(egrep 'dovecot.*pop3.*Login' $LOGFILE | grep "`date '+%b %e'`" | sort | wc -l)
OLD_POP3=$(grep POP3 $STAT_FILE | cut -f2 -d '=')
POP3=$($EXPR_BIN $NEW_POP3 - $OLD_POP3)
if [ $POP3 -gt 0 ]; then
  echo "$POP3"
else
  echo "0"
fi
echo -n
######################
# Save the new values
######################
echo "TOTAL=$NEW_TOTAL" > $STAT_FILE
echo "TLS=$NEW_TLS" >> $STAT_FILE
echo "SSL=$NEW_SSL" >> $STAT_FILE 
echo "IMAP=$NEW_IMAP" >> $STAT_FILE
echo "POP3=$NEW_POP3" >> $STAT_FILE