====== Nagios Delivery Test ======
I put together the following python script in order to verify that mail is being delivered through a server and can be retrieved by IMAP-SSL on the next Nagios test cycle.
#!/usr/bin/python
# $Id: check_delivery_imap.py,v 1.3 2015/05/16 19:48:11 root Exp root $
import sys
import re
import imaplib
import smtplib
from email.Utils import formatdate
date = formatdate(localtime=True)
host = sys.argv[1]
recipient = sys.argv[2]
password = sys.argv[3]
warning = 0
# IMAP existing messages
try:
imapserver = imaplib.IMAP4_SSL(host)
# imapserver.debug=4
imapserver.login(recipient,password)
resp, messagecount = imapserver.select()
if int(messagecount[0]) < 1:
print "WARNING - no message in INBOX"
warning = 1
resp, ids = imapserver.search(None, 'ALL')
for id in ids[0].split():
imapserver.store(id, '+FLAGS', '\\Deleted')
imapserver.expunge()
imapserver.close()
imapserver.logout()
except:
print "CRITIAL - IMAP server error"
sys.exit(2)
# Use SMTP to send new message
try:
testmessage = '''Date: ''' + date + '''
Subject: Nagios Delivery test message
From: ''' + recipient + '''
To: ''' + recipient + '''
Nagios Delivery test message: ''' + date
smtpserver = smtplib.SMTP(host,25)
# smtpserver.set_debuglevel(1)
smtpserver.starttls()
smtpserver.sendmail(sys.argv[2], sys.argv[2], testmessage)
smtpserver.quit()
except:
print "CRITIAL - SMTP server error"
sys.exit(2)
if warning == 1:
sys.exit(warning)
else:
print "Mail Delivery OK"