[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: