2013-01-14 11 views
5

Ich versuche herauszufinden, ob eine E-Mail-Adresse gültig ist.Bash und Telnet, um eine E-Mail zu testen

Ich habe dies durch usign Telnet erreicht, siehe unten

$ 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 

mit dieser 550 Anfrage ich weiß, dass die Adresse auf dem Mail-Server nicht gültig ist ... wenn es gültig ist ich würde eine Antwort erhalten wie folgt:

250 2.1.5 OK 

Wie würde ich das in einem Shell-Skript automatisieren? so weit ich habe die unten

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

Vielen Dank!

+3

Es ist vielleicht erwähnenswert, dass die meisten großen Mail-Anbieter, einschließlich GMail, Hotmail und Yahoo Mail diese Technik nicht zulassen, um Spammer daran zu hindern, Live-Accounts zu ernten. –

+1

@that anderer Typ Ich habe tatsächlich mit Google Mail versucht und es * funktioniert *, nur in einem anderen Format ...... 'code' Mail von: <[email protected]> rcpt zu: < [email protected]> 'Code' – bsmoo

Antwort

8

Versuchen Sie tun dies:

[[ [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" 

Verbrauch:

./script.sh domain email from_email rcpt_email 
1

Sie immer Ihre Befehle in eine Textdatei eingeben könnten, Zeile für Zeile, wie wenn man sich auf der Kommandozeile eingegeben . Dann können Sie so etwas wie

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

verwenden Da Sie wahrscheinlich diese Textdatei als Vorlage betrachten müssen, (Ich gehe davon aus dass Sie wahrscheinlich die E-Mail-Adresse parametrieren möchten) Sie benötigen einen Anruf einfügen zu awk, um die Ausgabe von 'cat commands.txt' zu nehmen und deine E-Mail-Adresse einzugeben.