Last active
March 26, 2018 15:11
-
-
Save alexlehm/8084195 to your computer and use it in GitHub Desktop.
check_postfix_mailqueue from http://exchange.nagios.org/directory/Plugins/Email-and-Groupware/Postfix/check_postfix_mailqueue/details
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
################################################################### | |
# check_postfix_mailqueue is developped with GPL Licence 2.0 | |
# | |
# GPL License: http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt | |
# | |
# Developped by : Bjoern Bongermino | |
# | |
################################################################### | |
# This program is free software; you can redistribute it and/or | |
# modify it under the terms of the GNU General Public License | |
# as published by the Free Software Foundation; either version 2 | |
# of the License, or (at your option) any later version. | |
# | |
# This program is distributed in the hope that it will be useful, | |
# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
# GNU General Public License for more details. | |
# | |
#################################################################### | |
# | |
# minor fixes by [email protected] https://gist.github.com/alexlehm/8084195 | |
# | |
# Uncomment to enable debugging | |
# set -x | |
PROGNAME=`basename $0` | |
VERSION="Version 1.0" | |
AUTHOR="Bjoern Bongermino (http://www.bongermino.de)" | |
STATE_OK=0 | |
STATE_WARNING=1 | |
STATE_CRITICAL=2 | |
STATE_UNKNOWN=3 | |
warning=0 | |
critical=0 | |
print_version() { | |
echo "$PROGNAME $VERSION $AUTHOR" | |
} | |
print_help() { | |
print_version $PROGNAME $VERSION | |
echo "" | |
echo "$PROGNAME - Checks postfix mailqueue statistic" | |
echo "" | |
echo "$PROGNAME is a Nagios plugin which generates statistics" | |
echo "for the postfix mailqueue and checks for corrupt messages." | |
echo "The following values will be checked:" | |
echo "maildrop: Localy posted mail" | |
echo "incoming: Processed local mail and received from network" | |
echo "active: Mails being delivered (should be small)" | |
echo "deferred: Stuck mails (that will be retried later)" | |
echo "corrupt: Messages found to not be in correct format (should be 0)" | |
echo "hold: Recent addition, messages put on hold indefinitly - delete of free" | |
echo "" | |
echo "Usage: $PROGNAME -w WARN-Level -c CRIT-Level" | |
echo "" | |
echo "Options:" | |
echo " -w)" | |
echo " Warning level for deferred mails" | |
echo " -c)" | |
echo " Critical level for deferred mail" | |
echo " -h)" | |
echo " This help" | |
echo " -v)" | |
echo " Version" | |
exit $STATE_OK | |
} | |
# Check for parameters | |
while test -n "$1"; do | |
case "$1" in | |
-h) | |
print_help | |
exit $STATE_OK;; | |
-v) | |
print_version | |
exit $STATE_OK;; | |
-w) | |
warning=$2 | |
shift | |
;; | |
-c) | |
critical=$2 | |
shift | |
;; | |
*) | |
# check_postfix_mailqueue | |
;; | |
esac | |
shift | |
done | |
check_postfix_mailqueue() { | |
# Can be set via environment, but default is fetched by postconf (if available, | |
# else /var/spool/postfix) | |
if which postconf > /dev/null ; then | |
SPOOLDIR=${spooldir:-`postconf -h queue_directory`} | |
else | |
SPOOLDIR=${spooldir:-/var/spool/postfix} | |
fi | |
cd $SPOOLDIR >/dev/null 2>/dev/null || { | |
echo -n "Cannot cd to $SPOOLDIR" | |
exit $STATE_CRITICAL | |
} | |
for d in deferred active maildrop incoming corrupt hold | |
do | |
if [ ! -r $d ] | |
then | |
echo -n "queue dir '$d' is not readable" | |
exit $STATE_CRITICAL | |
fi | |
done | |
# Get values | |
deferred=`(test -d deferred && find deferred -type f ) | wc -l` | |
active=`(test -d active && find active -type f ) | wc -l` | |
maildrop=`(test -d maildrop && find maildrop -type f ) | wc -l` | |
incoming=`(test -d incoming && find incoming -type f ) | wc -l` | |
corrupt=`(test -d corrupt && find corrupt -type f ) | wc -l` | |
hold=`( test -d hold && find hold -type f ) | wc -l` | |
} | |
check_postfix_mailqueue | |
values="Deferred mails=$deferred Active deliveries=$active Locally posted mails=$maildrop Incoming mails=$incoming Corrupt mails=$corrupt Mails on hold=$hold" | |
perfdata="deferred=$deferred;; active=$active;; maildrop=$maildrop;; incoming=$incoming;; corrupt=$corrupt;; hold=$hold;;" | |
if [ $corrupt -gt 0 ]; then | |
echo -n "Postfix Mailqueue CRITICAL - $corrupt corrupt messages found! | $perfdata" | |
exit $STATE_CRITICAL | |
fi | |
if [ $warning -gt 0 ] && [ $critical -gt 0 ]; then | |
if [ $deferred -gt $critical ]; then | |
echo -n "Postfix Mailqueue CRITICAL - $values | $perfdata" | |
exit $STATE_CRITICAL | |
elif [ $deferred -gt $warning ]; then | |
echo -n "Postfix Mailqueue WARNING - $values | $perfdata" | |
exit $STATE_WARNING | |
else | |
echo -n "Postfix Mailqueue OK - $values | $perfdata" | |
exit $STATE_OK | |
fi | |
else | |
echo -n "Postfix Mailqueue OK - $values | $perfdata" | |
exit $STATE_OK | |
fi |
Hello.
Is there a way to specify a threshold for bounced messages implemented?
Regards
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Why not add warn and crit to perfdata?
perfdata="deferred=$deferred;$warning;$critical active=....