2
0
mirror of https://github.com/munin-monitoring/contrib.git synced 2018-11-08 00:59:34 +01:00
contrib-munin/plugins/senderscore/senderscore
2012-09-01 11:23:01 +02:00

89 lines
2.7 KiB
Python

#!/usr/bin/python
#
# Here's a plugin which lets you monitor your senderscore.org reputation. For
# people sending a large amount of email - this might be useful.
#
# Config env var used:
# [senderscore]
# env.senderscore_check_ip xxx.yyy.zzz.ttt
#
import socket
import sys
import os
def get_senderscores(ip):
tmp = ip.split(".")
backwards = "%s.%s.%s.%s" % (tmp[3], tmp[2], tmp[1], tmp[0])
# replists = ['cmplt.rating.senderscore.com', 'score.senderscore.com', 'uus.rating.senderscore.com', 'vol.rating.senderscore.com', 'filtered.rating.senderscore.com']
replists = ['score.senderscore.com']
lookup_results = {}
for rl in replists:
try:
host = '%s.%s' % (backwards, rl)
ret = socket.gethostbyname(host)
if ret:
lookup_results[rl] = ret
except Exception, e:
print >> sys.stderr,e
# sys.exit(1)
scores = {}
for k in lookup_results.keys():
v = lookup_results[k].split('.')[3]
k = k.split(".")[0]
scores[k] = v
return scores
def print_stats(ip):
scores = get_senderscores(ip)
for key in scores.keys():
print key+".value " +scores[key]
def print_config():
print """
graph_title senderscore reputation
graph_info This graph shows senderscore.org reputation metrics
graphs_args --upper-limit 100 -u 100 -l 0
graph_category senderscore
graph_vlabel score
graph_scale no
score.label sender score
score.info score represents the overall health of your email programs as they appear to receiving systems.
score.warning 95:
score.critical 90:
"""
unused = """cmplt.label complaints
cmplt.infocomplaint scores are a rank based on your complaint rates.
cmplt.warning 95
cmplt.critical 90
uus.label unknown users
uus.info ratio of unknown users, or invalid email addresses, compared to the amount of email seen by our receiving sources
vol.label volume
vol.info rank of ip address by volume of email monitored
filtered.label filtered
filtered.info how often messages are rejected (bounced due to some policy reason, usually spam filtering or blacklisting) compared to other IP addresses seen in the Sender Score Reputation Network
filtered.warning 95
filtered.critical 90
"""
if __name__ == "__main__":
if os.environ['senderscore_check_ip'] == '':
print "env.senderscore_check_ip not defined in munin config"
sys.exit(1)
ip = os.environ['senderscore_check_ip']
if len(sys.argv) > 1 and sys.argv[1] != '':
if sys.argv[1] == 'config':
print_config()
else:
print "Command %s not recognized" % sys.argv[1]
sys.exit(1)
else:
print_stats(ip)