Benutzer-Werkzeuge

Action disabled: source

Mailstatus prüfen

Hier sind mehrere Scripte nötig checkMailWrapper.sh, checkSMTP.expect und checkPOP3.expect

Scripte

checkMailWrapper.sh

Dieses Script wird vom Zabbix aufgerufen

#!/bin/bash
 
# parameters from user to connect to servers
# order is VERY important
SMTPSERVER=$1
SMTPSENDER=$2
SMTPRECIEVER=$3
POP3SERVER=$4
POP3USER=$5
POP3PWD=$6
 
 
START=$(date '+%s%N' | cut -b1-13)
# call the smtp check and store output on $RESPONSE for further processing
RESPONSE="$(/usr/local/share/zabbix/externalscripts/checkSMTP.expect $SMTPSERVER $SMTPSENDER $SMTPRECIEVER)"
END=$(date '+%s%N' | cut -b1-13)
 
# fetch msgid of the mail just sent
# this is for postfix only
if [ "x$(echo $RESPONSE | grep '250 2.0.0 Ok: queued as ')" != 'x' ] ; then
 MSGID=`echo "$RESPONSE" | grep '250 2.0.0 Ok: queued as ' | awk '{print $NF}'`
 [ "x$MSGID" = 'x' ] && MSGID=`echo "$RESPONSE" | grep 'OK id=' | awk -F'=' '{print $2}'`
# fetch msgid for the mail just sent
# this is for atmail only
elif [ "x$(echo $RESPONSE | grep 'OK id=')" != 'x' ] ; then
 MSGID=`echo "$RESPONSE" | grep 'OK id=' | awk -F'=' '{print $2}'`
else
 echo 0 && exit 1
fi
 
# check if we have a msgid
# connect to given pop3 server and check login and mailbox status
if [ "x$MSGID" != 'x' ] ; then
  POP3="$(/usr/local/share/zabbix/externalscripts/checkPOP3.expect $POP3SERVER $POP3USER $POP3PWD)"
  [ "x$(echo $POP3 | grep -i '+OK logged in')" != 'x' ] && echo $(($END - $START)) && exit 0
  # return an error if anything goes wrong
  echo 0 && exit 1
 fi
# return an error if the script comes until here
echo 0 && exit 1

checkSMTP.expect

#!/usr/bin/expect -f
 
set SERVER [lrange $argv 0 0]
set SENDER [lrange $argv 1 1]
set RECIEVER [lrange $argv 2 2]
 
spawn telnet $SERVER 25
expect "220*"
send "EHLO zab1.datapark.ch\r"
expect "250*"
send "MAIL FROM: <$SENDER>\r"
expect "250*"
send "RCPT TO: <$RECIEVER>\r"
expect {
        "250*" {
		send "RSET\r"
                expect "250*"
                send "QUIT\r"
                expect "221*"
                expect eof
                exit
                send "DATA\r"
        }
        "450*" {
                send "RSET\r"
                expect "250*"
                send "QUIT\r"
                expect "221*"
                expect eof
                exit 1
        }
        "550*" {
                send "RSET\r"
                expect "250*"
                send "QUIT\r"
                expect "221*"
                expect eof
                exit 1
        }
}
expect {
        "354*" {
                send "From: <$SENDER>\r"
                send "To: <$RECIEVER>\r"
                send "Date: [exec date -R]\r"
                send "Subject: Beim naechsten Ton ist es [exec date +%R]\r\r"
                send "[exec date -R]\r"
                send ".\r"
        }
        "450*" {
                send "RSET\r"
        }
}
expect "250*"
send "QUIT\r"
expect "221*"
expect eof

checkPOP3.expect

#!/usr/bin/expect

set SERVER [lrange $argv 0 0]
set USER [lrange $argv 1 1]
set PASS [lrange $argv 2 2]

spawn /usr/bin/openssl s_client -quiet -connect $SERVER:995
expect "+OK*"
send "USER $USER\r"
expect "+OK*"
send "PASS $PASS\r"
expect "+OK*"
send "STAT\r"
expect {
        "+OK*" {
                send "DELE 1\r"
                expect "+OK*"
                send "QUIT\r"
                expect "+OK*"
                exit
        }
}
exit
Melden Sie sich an, um einen Kommentar zu erstellen.

Seiten-Werkzeuge