2013-01-14 10 views
5

電子メールアドレスが有効かどうかを調べようとしています。電子メールをテストするためのbashとtelnet

私はそれが有効だった場合、私は応答になるだろう...私はアドレスは、メールサーバー上で有効ではないことを知っているこの550要求に

$ 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 

下記参照、usignのtelnetすることによって、これを達成しました

250 2.1.5 OK 

これをシェルスクリプトで自動化するにはどうすればよいですか?今まで私は以下を持っています

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

ありがとう!

+3

GMail、Hotmail、Yahoo Mailなどの大手メールプロバイダのほとんどが、スパマーがライブアカウントを収集するのを防ぐために、この手法を禁止していることは注目に値します。 –

+1

@他の人 私は実際にGmailで試してみたのですが、ちょうど別のフォーマットで働いています...... 'code' mail from:<[email protected]> rcpt to: [email protected]> 'code' – bsmoo

答えて

8

やって試してみてくださいこの:

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

使用法:あなたは常にコマンドラインにあなたがそれらを入力した場合と同様に、行の後に、プレーンテキストファイルに行をあなたのコマンドを入力することができ

./script.sh domain email from_email rcpt_email 
1

。あなたはおそらく、あなたがへの呼び出しを挿入する必要があるかもしれません(私はあなたがおそらく電子メールアドレスをパラメータ化するだろうと仮定しています)、テンプレートとしてこのテキストファイルを検討する必要がありますので、あなたは

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

のようなものを使用することができますawkが 'cat commands.txt'の出力を受け取り、あなたの電子メールアドレスを挿入します。

関連する問題