File: D:/bin/scripts/hMailserverQueueCheck.vbs
Option Explicit
On Error Resume Next
' (SS,9/4/14) script to send email alert when queue etc. above certain limit
' from http://www.hmailserver.com/forum/viewtopic.php?p=130508#p130508
' (SS,19/2/15) changed AutobanWarnCount from 5 to 20
' (SS,21/2/15) changed AutobanWarnCount from 20 to 100
' (SS,21/2/15) changed RangesWarnCount from 40 to 150
' (SS,10/5/20) changed IMAPWarnCount from 20 to 40, then to 100
'This script sends email alert when queue above defined limit
'Original by rolaids0 - "Nagios, NRPE scripts."
'administrator information
Const AdminUser = "Administrator"
Const AdminPassword = "pop~smtp#123itp"
Const QueueWarnCount = 100
Const SMTPWarnCount = 20
Const POP3WarnCount = 20
Const IMAPWarnCount = 100 ' (SS,10/5/20) changed from 20 to 40, then to 100
Const AutobanWarnCount = 100 ' (SS,19/2/15) changed from 5 to 20, (SS,21/2/15) changed from 20 to 100
Const RangesWarnCount = 150 ' (SS,21/2/15) changed from 40 to 150, because it might be part of the Autoban range which was increased above
Const FromEmail = "hmailserver@itpartnership.com"
Const ToName = "Admin"
Const ToEmail = "purchases@itpartnership.com"
'don't edit below
Dim oApp: Set oApp = CreateObject("hMailServer.Application")
Call oApp.Authenticate(AdminUser,AdminPassword)
oApp.Connect
'catch connection errors
If Err.Number <> 0 Then
WScript.StdOut.Write "Error connecting!"
WScript.Quit 3
End If
Dim QueueCount: QueueCount = 0
Dim OutPut
Dim oStat: Set oStat = oApp.Status
Dim TempStr: TempStr = oStat.UndeliveredMessages
Dim SMTPConCount: SMTPConCount = oStat.SessionCount(1)
Dim POP3ConCount: POP3ConCount = oStat.SessionCount(3)
Dim IMAPConCount: IMAPConCount = oStat.SessionCount(5)
Dim I
Dim RangeLoop
Dim oMessage
If InStr(TempStr,Chr(13) & Chr(10)) Then
Dim TempArr: TempArr = Split(TempStr, Chr(13) & Chr(10))
QueueCount = UBound(TempArr)
Else
If Len(TempStr) > 0 Then QueueCount = 1
End If
Dim oSecRanges: Set oSecRanges = oApp.Settings.SecurityRanges
Dim SecRangeCount: SecRangeCount = oSecRanges.Count
Dim oRange
Dim AutoBanCount: AutoBanCount = 0
For I = 0 to oSecRanges.Count - 1
Set oRange = oSecRanges.Item(I)
if oRange.Expires Then
AutoBanCount = AutoBanCount + 1
' WScript.StdOut.Write AutoBanCount
End If
Next
WScript.Echo "Undelivered Messages: " & QueueCount
WScript.Echo "SMTP Connections: " & SMTPConCount
WScript.Echo "POP3 Connections: " & POP3ConCount
WScript.Echo "IMAP Connections: " & IMAPConCount
WScript.Echo "IP Ranges Count: " & SecRangeCount
WScript.Echo "Autoban Count: " & AutoBanCount
If AutoBanCount < AutobanWarnCount And SecRangeCount < RangesWarnCount And QueueCount < QueueWarnCount And SMTPConCount < SMTPWarnCount And POP3ConCount < POP3WarnCount And IMAPConCount < IMAPWarnCount Then
Set oStat = Nothing
Set oApp = Nothing
WScript.Quit 0
Else
Set oMessage = CreateObject("hMailServer.Message")
oMessage.From = FromEmail
oMessage.AddRecipient ToName, ToEmail ' Recipient 1
'oMessage.AddRecipient "Manager", "someone@somedomain.tld" ' Recipient 2 etc
oMessage.Subject = "Warning - QUEUE: " & QueueCount & " SMTP: " & SMTPConCount & " POP3: " & POP3ConCount & " IMAP: " & IMAPConCount & " BANS: " & AutoBanCount
oMessage.Body = "Mail server queue length or connection count(s) above threshold! QUEUE: " & QueueCount & " SMTP: " & SMTPConCount & " POP3: " & POP3ConCount & " IMAP: " & IMAPConCount & " BANS: " & AutoBanCount
'oMessage.HTMLBody = "Mail server queue length above threshold! Queue count: " & QueueCount
oMessage.Save
WScript.Echo "Alert email generated"
Set oStat = Nothing
Set oApp = Nothing
WScript.Quit 1
End If
Set oStat = Nothing
Set oApp = Nothing
Output = "ERROR!"
WScript.StdOut.Write OutPut
WScript.Quit 3