Jun 102011

Normally, to check if my server smtp connection alive, I just do telnet to port 25 from my workstation. if the smtp banner displayed, it means that the connection to the smtp server is good. I have done this for years.  😆

$ telnet smtp.example.com 25
Trying xxx.xxx.xx.xxx...
Connected to xxx.xxx.xx.x.
Escape character is '^]'.
220 smtp.example.com ESMTP Postfix
ehlo host.example.com
250-SIZE 52428800
250 DSN
221 2.0.0 Bye
Connection closed by foreign host.

Although many tools that are deliberately created for this purpose, still, I prefer just using telnet to port 25. I have made a simple perl script, with the intention that the things I do for years manually can be done automatically.

Modules required:

This is the perl script

#!/usr/bin/perl -w
use strict;
use warnings;
use Net::SMTP;
use Time::HiRes qw(gettimeofday);

my $start = gettimeofday();
my $smtp = Net::SMTP->new("$ARGV[0]",
                    Hello => 'my.host.com',
                    Timeout => 60) or die "Cannot connect to remote smtp: $@";
my $banner = $smtp->banner;
my $end = gettimeofday();
my $delta = ($end - $start);

printf "%s", $banner;
printf "%s takes : %.3f seconds to get connected\n", $ARGV[0],  $delta;

exit 0;

This is an example of how the script works

$ ./smtp-check.pl aspmx.l.google.com
mx.google.com ESMTP w15si5875063ibh.43
aspmx.l.google.com takes : 1.807 seconds to get connected
$ ./smtp-check.pl h.mx.mail.yahoo.com
mta1186.mail.mud.yahoo.com ESMTP YSmtp service ready
h.mx.mail.yahoo.com takes : 1.176 seconds to get connected
$ ./smtp-check.pl mail.cloud9.net
english-breakfast.cloud9.net ESMTP Postfix
mail.cloud9.net takes : 2.622 seconds to get connected

That’s all for now.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>




This site uses Akismet to reduce spam. Learn how your comment data is processed.