#!/bin/sh # # Copyright 2011 Claudiu Vasadi. All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, are # permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, this list of # conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright notice, this list # of conditions and the following disclaimer in the documentation and/or other materials # provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY Claudiu Vasadi ''AS IS'' AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Claudiu Vasadi OR # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # The views and conclusions contained in the software and documentation are those of the # authors and should not be interpreted as representing official policies, either expressed # or implied, of Claudiu Vasadi. # # # Postfix process monitor plugin for Nagios # Originally written by Thomas Sluyter (nagios@kilala.nl) # Adapted by Claudiu Vasadi (claudiu.vasadi@gmail.com) # Last Modified: 22.11.2011 # # Usage: ./check_postfix # # Description: # This plugin determines whether the Postfix SMTP server # is running properly. It will check the following: # * Are all required processes running? # * Are all the required TCP/IP ports open? # # Limitations: # Only tested on FreeBSD 8.x and higher # # Output: # Script returns a CRIT when one of the abovementioned criteria is # not matched # # History: # # v0.3 (01.12.2014): # - removed the "-" from "ps -aux" # - updated the echo statements # # v0.2: # - removed 1 unused pipe (code cleanup) # # v0.1: # - inital (adapted) release # PATH=/usr/bin:/usr/sbin:/bin:/sbin LIBEXEC=/usr/local/libexec/nagios . "$LIBEXEC"/utils.sh # Set postfix's processes PROCLIST="qmgr pickup master" PORT="25" check_processes(){ for PROC in `echo "$PROCLIST"` do ps aux | grep $PROC | grep -v grep > /dev/null if [ $? = "0" ];then echo "OK: All postfix processes running" exit "$STATE_OK" else echo "NOT OK: One or more postfix processes not running" exit "$STATE_CRITICAL" fi done } check_ports(){ netstat -an | grep LISTEN | grep "$PORT" > /dev/null if [ $? != "0" ];then echo "NOT OK: One or more TCP/IP ports not listening." exit "$STATE_CRITICAL" else echo "OK: All postfix ports are listening." exit "$STATE_CRITICAL" fi } check_processes check_ports