2013-01-14 23 views
5

Sto cercando di scoprire se un indirizzo e-mail è valido.bash e telnet per testare una e-mail

ho compiuto questo telnet usign, vedi sotto

$ 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 

con questo 550 richiesta so che l'indirizzo non è valido sul server di posta ... se fosse valida avrei ricevuto una risposta come il seguente:

Come si automatizza questo in uno script di shell? finora ho il seguente

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

Grazie!

+3

Vale la pena notare che la maggior parte dei grandi provider di posta, inclusi GMail, Hotmail e Yahoo Mail, non consentono questa tecnica per impedire agli spammer di raccogliere account live. –

+1

@that altro ragazzo In realtà ho provato con gmail e * funziona *, solo in un formato diverso ... 'code' posta da: <[email protected]> rcpt a: < [email protected]> 'Codice delle – bsmoo

risposta

8

Prova a fare questo:

[[ [email protected] ]] || { 
    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 
1

Si può sempre inserire i comandi in un file di testo, riga dopo riga, proprio come se li digitato sulla linea di comando . Poi si può usare qualcosa di simile

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

Dal momento che sarà probabilmente necessario prendere in considerazione questo file di testo come modello, (io parto dal presupposto probabilmente si vuole parametrizzare l'indirizzo e-mail), potrebbe essere necessario inserire una chiamata a awk per prendere l'output di "cat commands.txt" e inserire il tuo indirizzo e-mail.