Skip to content

Instantly share code, notes, and snippets.

@alexalouit
Last active August 29, 2015 14:06
Show Gist options
  • Save alexalouit/dcdf32a43f46e73affc7 to your computer and use it in GitHub Desktop.
Save alexalouit/dcdf32a43f46e73affc7 to your computer and use it in GitHub Desktop.
Collectd: Postfix, Docecot, Postgrey, SPF
LoadPlugin tail
<Plugin "tail">
<File "/var/log/mail.log">
Instance "postfix"
# number of connections
# (incoming)
<Match>
Regex "\\<postfix\\/smtpd\\[[0-9]+\\]: connect from\\>"
DSType "CounterInc"
Type "counter"
Instance "connection-in-open"
</Match>
<Match>
Regex "\\<postfix\\/smtpd\\[[0-9]+\\]: disconnect from\\>"
DSType "CounterInc"
Type "counter"
Instance "connection-in-close"
</Match>
<Match>
Regex "\\<postfix\\/smtpd\\[[0-9]+\\]: lost connection after .* from\\>"
DSType "CounterInc"
Type "counter"
Instance "connection-in-lost"
</Match>
<Match>
Regex "\\<postfix\\/smtpd\\[[0-9]+\\]: timeout after .* from\\>"
DSType "CounterInc"
Type "counter"
Instance "connection-in-timeout"
</Match>
<Match>
Regex "\\<postfix\\/smtpd\\[[0-9]+\\]: setting up TLS connection from\\>"
DSType "CounterInc"
Type "counter"
Instance "connection-in-TLS-setup"
</Match>
<Match>
Regex "\\<postfix\\/smtpd\\[[0-9]+\\]: [A-Za-z]+ TLS connection established from\\>"
DSType "CounterInc"
Type "counter"
Instance "connection-in-TLS-established"
</Match>
# (outgoing)
<Match>
Regex "\\<postfix\\/smtp\\[[0-9]+\\]: setting up TLS connection to\\>"
DSType "CounterInc"
Type "counter"
Instance "connection-out-TLS-setup"
</Match>
<Match>
Regex "\\<postfix\\/smtp\\[[0-9]+\\]: [A-Za-z]+ TLS connection established to\\>"
DSType "CounterInc"
Type "counter"
Instance "connection-out-TLS-established"
</Match>
# rejects for incoming E-mails
<Match>
Regex "\\<554 5\\.7\\.1\\>"
DSType "CounterInc"
Type "counter"
Instance "rejected"
</Match>
<Match>
Regex "\\<450 4\\.7\\.1\\>.*Helo command rejected: Host not found\\>"
DSType "CounterInc"
Type "counter"
Instance "rejected-host_not_found"
</Match>
<Match>
Regex "\\<450 4\\.7\\.1\\>.*Client host rejected: No DNS entries for your MTA, HELO and Domain\\>"
DSType "CounterInc"
Type "counter"
Instance "rejected-no_dns_entry"
</Match>
<Match>
Regex "\\<450 4\\.7\\.1\\>.*Client host rejected: Mail appeared to be SPAM or forged\\>"
DSType "CounterInc"
Type "counter"
Instance "rejected-spam_or_forged"
</Match>
# status codes
<Match>
Regex "status=deferred"
DSType "CounterInc"
Type "counter"
Instance "status-deferred"
</Match>
<Match>
Regex "status=forwarded"
DSType "CounterInc"
Type "counter"
Instance "status-forwarded"
</Match>
<Match>
Regex "status=reject"
DSType "CounterInc"
Type "counter"
Instance "status-reject"
</Match>
<Match>
Regex "status=sent"
DSType "CounterInc"
Type "counter"
Instance "status-sent"
</Match>
<Match>
Regex "status=bounced"
DSType "CounterInc"
Type "counter"
Instance "status-bounced"
</Match>
<Match>
Regex "status=SOFTBOUNCE"
DSType "CounterInc"
Type "counter"
Instance "status-softbounce"
</Match>
# message size
<Match>
Regex "size=([0-9]*)"
DSType "CounterAdd"
Type "ipt_bytes"
Instance "size"
</Match>
# delays (see [1] for details)
# total time spent in the Postfix queue
<Match>
Regex "delay=([\.0-9]*)"
DSType "GaugeAverage"
Type "gauge"
Instance "delay"
</Match>
# time spent before the queue manager, including message transmission
<Match>
Regex "delays=([\.0-9]*)/[\.0-9]*/[\.0-9]*/[\.0-9]*"
DSType "GaugeAverage"
Type "gauge"
Instance "delay-before_queue_mgr"
</Match>
# time spent in the queue manager
<Match>
Regex "delays=[\.0-9]*/([\.0-9]*)/[\.0-9]*/[\.0-9]*"
DSType "GaugeAverage"
Type "gauge"
Instance "delay-in_queue_mgr"
</Match>
# connection setup time including DNS, HELO and TLS
<Match>
Regex "delays=[\.0-9]*/[\.0-9]*/([\.0-9]*)/[\.0-9]*"
DSType "GaugeAverage"
Type "gauge"
Instance "delay-setup_time"
</Match>
# message transmission time
<Match>
Regex "delays=[\.0-9]*/[\.0-9]*/[\.0-9]*/([\.0-9]*)"
DSType "GaugeAverage"
Type "gauge"
Instance "delay-trans_time"
</Match>
Instance "postgrey"
<Match>
Regex "\\<action=greylist, reason=new\\>"
DSType "CounterInc"
Type "counter"
Instance "greylisted"
</Match>
<Match>
Regex "\\<action=pass, reason=triplet found\\>"
DSType "CounterInc"
Type "counter"
Instance "accepted"
</Match>
<Match>
Regex "\\<action=pass, reason=client whitelist\\>"
DSType "CounterInc"
Type "counter"
Instance "client_whitelist"
</Match>
Instance "spf"
<Match>
Regex "SPF fail"
DSType "CounterInc"
Type "counter"
Instance "spf-fail"
</Match>
Instance "dovecot"
<Match>
Regex "dovecot: pop3-login: Login:"
DSType "CounterInc"
Type "counter"
Instance "dovecot-pop3-login"
</Match>
<Match>
Regex "dovecot: pop3-login: Disconnected"
DSType "CounterInc"
Type "counter"
Instance "dovecot-pop3-disconnect"
</Match>
<Match>
Regex "dovecot: imap-login: Login:"
DSType "CounterInc"
Type "counter"
Instance "dovecot-imap-login"
</Match>
<Match>
Regex "dovecot: imap-login: Disconnected"
DSType "CounterInc"
Type "counter"
Instance "dovecot-imap-disconnect"
</Match>
<Match>
Regex "dovecot: deliver"
DSType "CounterInc"
Type "counter"
Instance "dovecot-deliver"
</Match>
</File>
</plugin>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment