Xymon Mailing List Archive search

Monitoring SMTP Relay server using hobbit

list Alexander Bech
Sat, 19 Dec 2009 15:36:12 +0100
Message-Id: <user-811e15224be0@xymon.invalid>

Balasubramaniam Natarajan schrieb:
Hi
 
I have two Windows 2003 server which works as SMTP relay server.
 
What are the key parameter of the server should I monitor from Xymon.
 
I want to check certain parameters like

   1. If the Mail server is accepting mails.
   2. If the Mail Server is able to relay it to the next server.
   3. Is my Mail relaying server free from open relaying and stuffs, 

How could I achieve all these using Xymon?  I have BBNT "An NT/W2K
**CLIENT** for Big Brother System & Network Monitor Version 1.08d" on
all the Windows 2003 servers.
Hi,

for 1 and 3 you can use a server-side script using expect:

file expect-smtp
###################
#!/usr/bin/expect

set mailserver [lrange $argv 0 0]
set from [lrange $argv 1 1]
set to [lrange $argv 2 2]
set timeout 90

spawn telnet $mailserver 25
expect "failed" {
                send_user "$mailserver: connect failed\n"
                exit
        } "2?? *" {
        } "4?? *"   {
                exit
        } "refused" {
                send_user "$mailserver: connect refused\n"
                exit
        } "closed" {
                send_user "$mailserver: connect closed\n"
                exit
        } timeout {
                send_user "$mailserver: connect to port 25 timeout\n"
                exit
        }

send "HELO server.isp.de\r"
expect "2?? *" {
} "5?? *" {
        send_user "=== $mailserver: HELO 5??\n"
        exit
} "4?? *" {
        send_user "=== $mailserver: HELO 4??\n"
        exit
}

send "MAIL FROM: <$from>\r"
expect "2?? *"  {
} "5?? *" {
        exit
} "4?? *" {
        exit
}

send "RCPT TO: <$to>\r"
expect "2?? *" {
        set smtpcode "2xx"
        send_user "smtpcode = $smtpcode\n"
} "5?? *" {
        set smtpcode "5xx"
        send_user "smtpcode = $smtpcode\n"
        exit
} "4?? *" {
        set smtpcode "4xx"
        send_user "smtpcode = $smtpcode\n"
        exit
}

send "RSET\r"
send "QUIT\r"
exit
#########################


I call it from server-side shell-script mailserver-verify.sh
for a list of mailservers.
(in my case: check rejecting invalid recipients during the SMTP protocol)...

...
TEXT=$(${BBHOME}/ext/expect-smtp ${IP} user-16645eafb3e6@xymon.invalid
non-existent-address@${DOMAIN})
...

220 server03.domain.de Microsoft ESMTP MAIL Service, Version: 6.0.3790.3959 ready at  Sat, 19 Dec 2009 14:57:09 +0100 
HELO relay.isp.de
250 server03.domain.de Hello [10.224.138.110]
MAIL FROM: user-16645eafb3e6@xymon.invalid
250 2.1.0 user-33d1136cde29@xymon.invalid OK
RCPT TO: user-88fe96e051d7@xymon.invalid
550 5.1.1 User unknown
smtpcode = 5xx


... evaluate the line "smtpcode =" in ${TEXT},
and sent a message to xymon-server.


Regards,

Alex