root / plugins / mail / spamdyke @ e5ce7492
Historique | Voir | Annoter | Télécharger (10,9 ko)
| 1 | e5fccd49 | Sebastien Guilbaud | #!/bin/bash |
|---|---|---|---|
| 2 | # |
||
| 3 | # Plugin to monitor spamdyke |
||
| 4 | # |
||
| 5 | # Spamdyke logs expected to be inside /var/log/mail.info |
||
| 6 | # logtail must be installed |
||
| 7 | # Plugin state stored in /var/lib/munin/plugin-state |
||
| 8 | # (statedir as defined in munin debian packages) |
||
| 9 | # |
||
| 10 | # You may override spamdyke logfile in plugin-conf.d/munin-node, and |
||
| 11 | # give the user/group with enough rights to read your logs (group |
||
| 12 | # adm on stock debian works fine) |
||
| 13 | # |
||
| 14 | # [spamdyke] |
||
| 15 | # env.logfile /var/log/maillog |
||
| 16 | # group adm |
||
| 17 | # |
||
| 18 | # |
||
| 19 | # |
||
| 20 | # Parameters understood: |
||
| 21 | # |
||
| 22 | # config (required) |
||
| 23 | # autoconf (optional) |
||
| 24 | # |
||
| 25 | |||
| 26 | mktempfile () {
|
||
| 27 | mktemp -t |
||
| 28 | } |
||
| 29 | |||
| 30 | MAIL_LOG=${logfile:-/var/log/mail.info}
|
||
| 31 | LOGTAIL=${logtail:-`which logtail`}
|
||
| 32 | STATEFILE=/var/lib/munin/plugin-state/spamdyke.offset |
||
| 33 | |||
| 34 | if [ "$1" = "autoconf" ]; then |
||
| 35 | if [ -f "${MAIL_LOG}" -a -n "${LOGTAIL}" -a -x "${LOGTAIL}" ] ; then
|
||
| 36 | echo yes |
||
| 37 | exit 0 |
||
| 38 | else |
||
| 39 | echo no |
||
| 40 | exit 1 |
||
| 41 | fi |
||
| 42 | fi |
||
| 43 | |||
| 44 | if [ "$1" = "config" ]; then |
||
| 45 | echo 'graph_title spamdyke filtering' |
||
| 46 | echo 'graph_category mail' |
||
| 47 | echo 'graph_vlabel Count' |
||
| 48 | echo 'graph_args --base 1000 -l 0' |
||
| 49 | echo 'graph_total total' |
||
| 50 | |||
| 51 | echo 'allowed.label ALLOWED' |
||
| 52 | echo 'allowed.info The message passed all filters. qmail may still bounce the message for other reasons, however. ' |
||
| 53 | echo 'allowed.min 1' |
||
| 54 | echo 'allowedauthenticated.label ALLOWED_AUTHENTICATED' |
||
| 55 | echo 'allowedauthenticated.info The remote client successfully authenticated using SMTP AUTH with spamdyke. If qmail is patched to provide SMTP AUTH, this code will never be used ' |
||
| 56 | echo 'allowedauthenticated.min 1' |
||
| 57 | echo 'allowedtls.label ALLOWED_TLS' |
||
| 58 | echo 'allowedtls.info The remote client successfully started a TLS session with spamdyke ' |
||
| 59 | echo 'allowedtls.min 1' |
||
| 60 | echo 'timeout.label TIMEOUT' |
||
| 61 | echo 'timeout.info The connection timed out, either in total time ("connection-timeout-secs") or idle time ("idle-timeout-secs"). If the connection was already being blocked for another reason, the code for that error is given as REALCODE '
|
||
| 62 | echo 'timeout.min 1' |
||
| 63 | echo 'deniedtoomanyrecipients.label DENIED_TOO_MANY_RECIPIENTS' |
||
| 64 | echo 'deniedtoomanyrecipients.info The recipient was blocked because the limit ("max-recipients") was reached for this connection. The SMTP connection continues after this error occurs'
|
||
| 65 | echo 'deniedtoomanyrecipients.min 1' |
||
| 66 | echo 'deniedunqualifiedrecipient.label DENIED_UNQUALIFIED_RECIPIENT' |
||
| 67 | echo 'deniedunqualifiedrecipient.info The recipient was blocked because the address had no domain name. The SMTP connection continues after this error occurs' |
||
| 68 | echo 'deniedunqualifiedrecipient.min 1' |
||
| 69 | echo 'deniedgraylisted.label DENIED_GRAYLISTED' |
||
| 70 | echo 'deniedgraylisted.info recipient was blocked because the sender/recipient combination was graylisted ' |
||
| 71 | echo 'deniedgraylisted.min 1' |
||
| 72 | echo 'deniedrdnsmissing.label DENIED_RDNS_MISSING' |
||
| 73 | echo 'deniedrdnsmissing.info The connection was blocked because the remote server has no rDNS name at all' |
||
| 74 | echo 'deniedrdnsmissing.min 1' |
||
| 75 | echo 'deniedrdnsresolve.label DENIED_RDNS_RESOLVE' |
||
| 76 | echo 'deniedrdnsresolve.info The connection was blocked because the remote servers rDNS name does not resolve ' |
||
| 77 | echo 'deniedrdnsresolve.min 1' |
||
| 78 | echo 'deniedipinccrdns.label DENIED_IP_IN_CC_RDNS' |
||
| 79 | echo 'deniedipinccrdns.info The connection was blocked because the remote servers IP address was found in the remote servers rDNS name _and_ the remote servers rDNS name ends in a country code ("reject-ip-in-cc-rdns"). '
|
||
| 80 | echo 'deniedipinccrdns.min 1' |
||
| 81 | echo 'deniedipinrdns.label DENIED_IP_IN_RDNS' |
||
| 82 | echo 'deniedipinrdns.info The connection was blocked because the remote servers IP address was found in the remote servers rDNS name _and_ a prohibited keyword was found in the remote servers rDNS name ("ip-in-rdns-keyword-file"). '
|
||
| 83 | echo 'deniedipinrdns.min 1' |
||
| 84 | echo 'deniedearlytalker.label DENIED_EARLYTALKER' |
||
| 85 | echo 'deniedearlytalker.info The connection was blocked because the remote server began sending data before the SMTP greeting was issued ("greeting-delay-secs"). '
|
||
| 86 | echo 'deniedearlytalker.min 1' |
||
| 87 | echo 'deniedblacklistname.label DENIED_BLACKLIST_NAME' |
||
| 88 | echo 'deniedblacklistname.info The connection was blocked because the base domain of the remote servers rDNS name is blacklisted ("rdns-blacklist-file" or "rdns-blacklist-dir"). '
|
||
| 89 | echo 'deniedblacklistname.min 1' |
||
| 90 | echo 'deniedblacklistip.label DENIED_BLACKLIST_IP' |
||
| 91 | echo 'deniedblacklistip.info The connection was blocked because the remote servers IP address is blacklisted ("ip-blacklist-file"). '
|
||
| 92 | echo 'deniedblacklistip.min 1' |
||
| 93 | echo 'deniedsenderblacklisted.label DENIED_SENDER_BLACKLISTED' |
||
| 94 | echo 'deniedsenderblacklisted.info The connection was blocked because the senders email address is blacklisted ("sender-blacklist-file"). '
|
||
| 95 | echo 'deniedsenderblacklisted.min 1' |
||
| 96 | echo 'deniedrecipientblacklisted.label DENIED_RECIPIENT_BLACKLISTED' |
||
| 97 | echo 'deniedrecipientblacklisted.info The recipient was blocked because the recipient email address is blacklisted ("recipient-blacklist-file"). '
|
||
| 98 | echo 'deniedrecipientblacklisted.min 1' |
||
| 99 | echo 'deniedrblmatch.label DENIED_RBL_MATCH' |
||
| 100 | echo 'deniedrblmatch.info The connection was blocked because the remote servers IP address was found on a DNS RBL ("check-dnsrbl"). '
|
||
| 101 | echo 'deniedrblmatch.min 1' |
||
| 102 | echo 'deniedrhsblmatch.label DENIED_RHSBL_MATCH' |
||
| 103 | echo 'deniedrhsblmatch.info The connection was blocked because the remote servers reverse DNS name was found on a righthand-side DNS blacklist (RHSBL) OR the connection was blocked because the senders domain name was found on a righthand-side DNS blacklist (RHSBL). ' |
||
| 104 | echo 'deniedrhsblmatch.min 1' |
||
| 105 | echo 'deniedsendernomx.label DENIED_SENDER_NO_MX' |
||
| 106 | echo 'deniedsendernomx.info The connection was blocked because the senders domain has no mail exchanger, making the sender address invalid' |
||
| 107 | echo 'deniedsendernomx.min 1' |
||
| 108 | echo 'deniedccessdenied.label DENIED_ACCESS_DENIED' |
||
| 109 | echo 'deniedaccessdenied.info The connection was blocked because the remote servers IP address or rDNS name was found in the access file with a "deny" command ("access-file"). '
|
||
| 110 | echo 'deniedccessdenied.min 1' |
||
| 111 | echo 'deniedrelaying.label DENIED_RELAYING' |
||
| 112 | echo 'deniedrelaying.info The recipient was blocked because the recipients domain is not locally hosted ("local-domains-file") and the remote server is not allowed to relay ("access-file"). '
|
||
| 113 | echo 'deniedrelaying.min 1' |
||
| 114 | echo 'deniedother.label DENIED_OTHER' |
||
| 115 | echo 'deniedother.info The connection was rejected by qmail (or another downstream filter), not spamdyke. ' |
||
| 116 | echo 'deniedother.min 1' |
||
| 117 | echo 'failedauth.label FAILED_AUTH' |
||
| 118 | echo 'failedauth.info The remote server attempted to authenticate but the given username and/or password were incorrect ("smtp-auth-command" or "smtp-auth-command-encryption"). '
|
||
| 119 | echo 'failedauth.min 1' |
||
| 120 | echo 'unknownauth.label UNKNOWN_AUTH' |
||
| 121 | echo 'unknownauth.info The remote server requested an authentication method spamdyke doesnt support. This shouldnt happen. ' |
||
| 122 | echo 'unknownauth.min 1' |
||
| 123 | echo 'failedtls.label FAILED_TLS' |
||
| 124 | echo 'failedtls.info The remote client attempted to start a TLS session but SSL negotiation failed.' |
||
| 125 | echo 'failedtls.min 1' |
||
| 126 | exit 0 |
||
| 127 | fi |
||
| 128 | |||
| 129 | allowed=u |
||
| 130 | allowedauthenticated=u |
||
| 131 | allowedtls=u |
||
| 132 | timeout=u |
||
| 133 | deniedtoomanyrecipients=U |
||
| 134 | deniedunqualifiedrecipient=U |
||
| 135 | deniedgraylisted=U |
||
| 136 | deniedrdnsmissing=U |
||
| 137 | deniedrdnsresolve=U |
||
| 138 | deniedipinccrdns=U |
||
| 139 | deniedipinrdns=U |
||
| 140 | deniedearlytalker=U |
||
| 141 | deniedblacklistname=U |
||
| 142 | deniedblacklistip=U |
||
| 143 | deniedsenderblacklisted=U |
||
| 144 | deniedrecipientblacklisted=U |
||
| 145 | deniedrblmatch=U |
||
| 146 | deniedrhsblmatch=U |
||
| 147 | deniedsendernomx=U |
||
| 148 | deniedccessdenied=U |
||
| 149 | deniedrelaying=U |
||
| 150 | deniedother=U |
||
| 151 | failedauth=U |
||
| 152 | unknownauth=U |
||
| 153 | failedtls=U |
||
| 154 | |||
| 155 | TEMP_FILE=`mktempfile munin.spamdyke.XXXXXX` |
||
| 156 | |||
| 157 | if [ -n "$TEMP_FILE" -a -f "$TEMP_FILE" ] |
||
| 158 | then |
||
| 159 | $LOGTAIL ${MAIL_LOG} $STATEFILE | grep "spamdyke\[.*\]:" > ${TEMP_FILE}
|
||
| 160 | |||
| 161 | allowed=`grep 'spamdyke\[[0-9\]*]: ALLOWED' ${TEMP_FILE} | wc -l`
|
||
| 162 | allowedauthenticated=`grep 'spamdyke\[[0-9]*\]: ALLOWED_AUTHENTICATED' ${TEMP_FILE} | wc -l`
|
||
| 163 | allowedtls=`grep 'spamdyke\[[0-9]\]: ALLOWED_TLS' ${TEMP_FILE} | wc -l`
|
||
| 164 | timeout=`grep 'spamdyke\[[0-9]*\]: TIMEOUT' ${TEMP_FILE} | wc -l`
|
||
| 165 | deniedtoomanyrecipients=`grep 'spamdyke\[[0-9]*\]: DENIED_TOO_MANY_RECIPIENTS' ${TEMP_FILE} | wc -l`
|
||
| 166 | deniedunqualifiedrecipient=`grep 'spamdyke\[[0-9]*\]: DENIED_UNQUALIFIED_RECIPIENT' ${TEMP_FILE} | wc -l`
|
||
| 167 | deniedgraylisted=`grep 'spamdyke\[[0-9]*\]: DENIED_GRAYLISTED' ${TEMP_FILE} | wc -l`
|
||
| 168 | deniedrdnsmissing=`grep 'spamdyke\[[0-9]*\]: DENIED_RDNS_MISSING' ${TEMP_FILE} | wc -l`
|
||
| 169 | deniedrdnsresolve=`grep 'spamdyke\[[0-9]*\]: DENIED_RDNS_RESOLVE' ${TEMP_FILE} | wc -l`
|
||
| 170 | deniedipinccrdns=`grep 'spamdyke\[[0-9]*\]: DENIED_IP_IN_CC_RDNS' ${TEMP_FILE} | wc -l`
|
||
| 171 | deniedipinrdns=`grep 'spamdyke\[[0-9]*\]: DENIED_IP_IN_RDNS' ${TEMP_FILE} | wc -l`
|
||
| 172 | deniedearlytalker=`grep 'spamdyke\[[0-9]*\]: DENIED_EARLYTALKER' ${TEMP_FILE} | wc -l`
|
||
| 173 | deniedblacklistname=`grep 'spamdyke\[[0-9]*\]: DENIED_BLACKLIST_NAME' ${TEMP_FILE} | wc -l`
|
||
| 174 | deniedblacklistip=`grep 'spamdyke\[[0-9]*\]: DENIED_BLACKLIST_IP' ${TEMP_FILE} | wc -l`
|
||
| 175 | deniedsenderblacklisted=`grep 'spamdyke\[[0-9]*\]: DENIED_SENDER_BLACKLISTED' ${TEMP_FILE} | wc -l`
|
||
| 176 | deniedrecipientblacklisted=`grep 'spamdyke\[[0-9]*\]: DENIED_RECIPIENT_BLACKLISTED' ${TEMP_FILE} | wc -l`
|
||
| 177 | deniedrblmatch=`grep 'spamdyke\[[0-9]*\]: DENIED_RBL_MATCH' ${TEMP_FILE} | wc -l`
|
||
| 178 | deniedrhsblmatch=`grep 'spamdyke\[[0-9]*\]: DENIED_RHSBL_MATCH' ${TEMP_FILE} | wc -l`
|
||
| 179 | deniedsendernomx=`grep 'spamdyke\[[0-9]*\]: DENIED_SENDER_NO_MX' ${TEMP_FILE} | wc -l`
|
||
| 180 | deniedccessdenied=`grep 'spamdyke\[[0-9]*\]: DENIED_ACCESS_DENIED' ${TEMP_FILE} | wc -l`
|
||
| 181 | deniedrelaying=`grep 'spamdyke\[[0-9]*\]: DENIED_RELAYING' ${TEMP_FILE} | wc -l`
|
||
| 182 | deniedother=`grep 'spamdyke\[[0-9]*\]: DENIED_OTHER' ${TEMP_FILE} | wc -l`
|
||
| 183 | failedauth=`grep 'spamdyke\[[0-9]*\]: FAILED_AUTH' ${TEMP_FILE} | wc -l`
|
||
| 184 | unknownauth=`grep 'spamdyke\[[0-9]*\]: UNKNOWN_AUTH' ${TEMP_FILE} | wc -l`
|
||
| 185 | failedtls=`grep 'spamdyke\[[0-9]*\]: FAILED_TLS' ${TEMP_FILE} | wc -l`
|
||
| 186 | |||
| 187 | /bin/rm -f $TEMP_FILE |
||
| 188 | fi |
||
| 189 | |||
| 190 | echo "allowed.value ${allowed}"
|
||
| 191 | echo "allowedauthenticated.value ${allowedauthenticated}"
|
||
| 192 | echo "allowedtls.value ${allowedtls}"
|
||
| 193 | echo "timeout.value ${timeout}"
|
||
| 194 | echo "deniedtoomanyrecipients.value ${deniedtoomanyrecipients}"
|
||
| 195 | echo "deniedunqualifiedrecipient.value ${deniedunqualifiedrecipient}"
|
||
| 196 | echo "deniedgraylisted.value ${deniedgraylisted}"
|
||
| 197 | echo "deniedrdnsmissing.value ${deniedrdnsmissing}"
|
||
| 198 | echo "deniedrdnsresolve.value ${deniedrdnsresolve}"
|
||
| 199 | echo "deniedipinccrdns.value ${deniedipinccrdns}"
|
||
| 200 | echo "deniedipinrdns.value ${deniedipinrdns}"
|
||
| 201 | echo "deniedearlytalker.value ${deniedearlytalker}"
|
||
| 202 | echo "deniedblacklistname.value ${deniedblacklistname}"
|
||
| 203 | echo "deniedblacklistip.value ${deniedblacklistip}"
|
||
| 204 | echo "deniedsenderblacklisted.value ${deniedsenderblacklisted}"
|
||
| 205 | echo "deniedrecipientblacklisted.value ${deniedrecipientblacklisted}"
|
||
| 206 | echo "deniedrblmatch.value ${deniedrblmatch}"
|
||
| 207 | echo "deniedrhsblmatch.value ${deniedrhsblmatch}"
|
||
| 208 | echo "deniedsendernomx.value ${deniedsendernomx}"
|
||
| 209 | echo "deniedccessdenied.value ${deniedccessdenied}"
|
||
| 210 | echo "deniedrelaying.value ${deniedrelaying}"
|
||
| 211 | echo "deniedother.value ${deniedother}"
|
||
| 212 | echo "failedauth.value ${failedauth}"
|
||
| 213 | echo "unknownauth.value ${unknownauth}"
|
||
| 214 | echo "failedtls.value ${failedtls}" |
