--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/check_mailq.pl Wed Jun 11 08:45:14 2008 +0000
@@ -0,0 +1,98 @@
+#! /usr/bin/perl -w
+
+use strict;
+use File::Basename;
+use Getopt::Long;
+use lib "/usr/lib/nagios/plugins";
+use utils qw (%ERRORS &print_revision &support);
+
+sub print_help();
+sub print_usage();
+
+my $ME = basename $0;
+my ( $opt_w, $opt_c, $opt_s, $opt_V, $opt_h, $opt_b );
+my ( $result, $mailq );
+
+$opt_s = "86400";
+$opt_w = "10";
+$opt_c = "20";
+$opt_b = "/usr/sbin/exipick";
+
+Getopt::Long::Configure('bundling');
+GetOptions(
+ "V" => \$opt_V,
+ "version" => \$opt_V,
+ "h" => \$opt_h,
+ "help" => \$opt_h,
+ "b=s" => \$opt_b,
+ "binary" => \$opt_b,
+ "s=i" => \$opt_s,
+ "seconds" => \$opt_s,
+ "w=i" => \$opt_w,
+ "warning=i" => \$opt_w,
+ "c=i" => \$opt_c,
+ "critical=i" => \$opt_c
+);
+
+if ($opt_V) {
+ print_revision( $ME, "0.1" );
+ exit $ERRORS{"OK"};
+}
+
+if ($opt_h) {
+ print_help();
+ exit $ERRORS{"OK"};
+}
+
+if ( $opt_w > $opt_c ) {
+ print
+ "MAILQ CRITICAL: Warning (-w) cannot be greater than Critical (-c)!\n";
+ exit $ERRORS{"CRITICAL"};
+}
+
+# check exipick binary
+unless ( -x $opt_b ) {
+ print "MAILQ CRITICAL: exipick not found or not executable - $opt_b\n";
+ exit $ERRORS{"CRITICAL"};
+}
+
+# check the mailq
+`$opt_b -o $opt_s -c` =~ /^(\d+).*/;
+$mailq = $1;
+
+SWITCH: {
+ $mailq < $opt_w and $result = "OK", last;
+ $mailq >= $opt_c and $result = "CRITICAL", last;
+ $mailq >= $opt_w and $result = "WARNING", last;
+}
+
+print
+"MAILQ $result: ($mailq) queued mails older than $opt_s sec.|unsent=$mailq;$opt_w;$opt_c;0;0\n";
+exit $ERRORS{$result};
+
+sub print_usage() {
+ print "Usage:\n";
+ print " $ME [-b <binary>] [-s <sec>] [-w <warn>] [-c <crit>]\n";
+ print " $ME [-h | --help]\n";
+ print " $ME [-V | --version]\n";
+}
+
+sub print_help() {
+ print_revision( $ME, "0.1" );
+ print "Copyright (c) 2008 Christian Arnold\n\n";
+ print "This plugin checks the number of messages, which are longer than\n";
+ print "an specified time holding in the mail queue.\n\n";
+ print_usage();
+ print "\n";
+ print " -b, --binary <binary>\n";
+ print " Path of exipick binary (default: /usr/sbin/exipick)\n";
+ print " -s, --seconds <sec>\n";
+ print " Age of messages in seconds in the mail queue (default: 86400) one day\n";
+ print " -w, --warning <warn>\n";
+ print " Min. number of messages in the mail queue to generate warning alert (default: 10)\n";
+ print " -c, --critical <crit>\n";
+ print " Min. number of messages in the mail queue to generate critical alert (default: 20)\n";
+ print "\n";
+ print "Note: This plugin only works with exim4.\n\n";
+ support();
+}