Re: Bash Script for Mail sending Check
On Thu, Apr 16, 2009 at 09:58:37AM +0530, Kurian Thayil (kurianmthayil@gmail.com) wrote:
> I tried the script. Good work. But, one problem though. If the mail
> server is firewalled (Netfilter) and if its blocking the client (one
> where bash script is run - 192.168.0.10), then `telnet 192.168.0.20 25`
> will not give any reply but just tries to connect indefinitely. At that
> moment the script will not give the error message. Can we do anything
> about it?
You could abort the telnet using its escape sequence instead of
using smtp quit, i.e.,
#! /bin/bash
case "$( (sleep 5; echo -e '\033q') | telnet 192.168.0.20 25 2>&- )" in
*'
220 '*) echo Success ;;
*) echo Failed ;;
esac
If you want to be friendly to the mail server you could do both:
case "$( (sleep 5; echo quit; sleep 5; echo -e '\033q') | telnet 192.168.0.20 25 2>&- )" in
That will look a bit nicer in the mail server logs and may avoid
tripping some spam/attack detection tools.
Also, you may need to adjust the delays: the time a mail server
takes to respond to initial connection may vary a lot,
depending on things like its load and whatnot.
Quite a few even deliberately wait some 10 seconds just
to trip spamming software known to be too impatient.
--
Tapani Tarvainen
Reply to: