2013-01-14 9 views
5

Próbuję sprawdzić, czy adres e-mail jest prawidłowy.bash i telnet do przetestowania wiadomości e-mail

Mam dokonał tego przez usign telnet, patrz poniżej

$ 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 

z tego 550 życzenie wiem, że adres nie jest ważny na serwerze pocztowym ... czy to ważne chciałbym uzyskać odpowiedź jak poniżej:

250 2.1.5 OK 

Jak zautomatyzować to w skrypcie powłoki? do tej pory mam poniżej:

Dzięki!

+3

Warto zauważyć, że większość dużych dostawców poczty, w tym Gmail, Hotmail i Yahoo Mail, nie zezwala na tę technikę, aby uniemożliwić spamerom zbieranie kont na żywo. –

+1

@ten inny facet Próbowałem już z Gmailem i to * działa *, tylko w innym formacie ...... 'kod' mail from: <[email protected]> rcpt do: < [email protected]> 'code' – bsmoo

Odpowiedz

8

Spróbuj zrobić tak:

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

Zastosowanie:

./script.sh domain email from_email rcpt_email 
1

Zawsze możesz wprowadzić swoje polecenia do pliku tekstowego, linia po linii, tak jakby je wpisać w wierszu poleceń . Następnie można użyć coś jak

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

Ponieważ prawdopodobnie będziesz musiał rozważyć ten plik tekstowy jako szablon (jestem zakładając prawdopodobnie zechcesz parameterize adres e-mail) może trzeba wstawić wywołanie awk, aby pobrać wyjście "cat commands.txt" i wstaw swój adres e-mail.