Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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!

like image 719
bsmoo Avatar asked Jan 14 '13 20:01

bsmoo


People also ask

How do I test an email using telnet?

Open a Command Prompt window, type telnet , and then press Enter. This command opens the Telnet session. Type set localecho , and then press Enter. This optional command lets you view the characters as you type them, and it might be required for some SMTP servers.


2 Answers

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
like image 92
Gilles Quenot Avatar answered Nov 06 '22 05:11

Gilles Quenot


You could always enter your commands into a plain text file, line after line, just as if you typed them on the command line. Then you can use something like

cat commands.txt | telnet mail.example.com 25 | grep -i '550 Unknown User'

Since you will probably need to consider this text file as template, (I am assuming you will probably want to parameterize the e-mail address) you may need to insert a call to awk to take the output of 'cat commands.txt' and insert your e-mail address.

like image 32
matt forsythe Avatar answered Nov 06 '22 05:11

matt forsythe