Search code examples
bashshellunixcommandtelnet

bash and telnet to test an email


I'm trying to find out whether an email address is valid.

I've accomplished this by usign telnet, see below

$ telnet mail.example.com 25
Trying 0.0.0.0...
Connected to mail.example.com.
Escape character is '^]'.
220 mail.example.com Mon, 14 Jan 2013 19:01:44 +0000
helo email.com
250 mail.example.com Hello email.com [0.0.0.0]
mail from:[email protected]
250 OK
rcpt to:[email protected]
550 Unknown user

with this 550 request i know that the address is not valid on the mail server... if it was valid i would get a response like the below:

250 2.1.5 OK 

How would I automate this in a shell script? so far I have the below

#!/bin/bash
host=`dig mx +short $1 | cut -d ' ' -f2 | head -1`
telnet $host 25 

Thanks!


Solution

  • Try doing this :

    [[ $4 ]] || {
        printf "Usage\n\t$0 <domain> <email> <from_email> <rcpt_email>\n"
        exit 1
    }
    {
        sleep 1
        echo "helo $2"
        sleep 0.5
        echo "mail from:<$3>"
        sleep 0.5
        echo "rcpt to:<$4>"
        echo
    } | telnet $1 25 |
        grep -q "Unknown user" &&
        echo "Invalid email" ||
        echo "Valid email"
    

    Usage :

    ./script.sh domain email from_email rcpt_email