7

メールアドレスが有効かどうか調べようとしています。

私はこれをusigntelnetで実現しました。以下を参照してください。

$ 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:blake@email.com
250 OK
rcpt to:gfdgsdfhgsfd@example.com
550 Unknown user

この550リクエストで、アドレスがメールサーバーで無効であることがわかります...有効である場合、次のような応答が返されます。

250 2.1.5 OK 

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

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

ありがとう!

4

3 に答える 3

10

これを試してみてください:

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

使用法 :

./script.sh domain email from_email rcpt_email
于 2013-01-14T20:51:23.753 に答える
1

コマンドラインで入力した場合と同じように、いつでもコマンドをプレーンテキストファイルに1行ずつ入力できます。次に、次のようなものを使用できます

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

このテキストファイルをテンプレートと見なす必要があるため(おそらく電子メールアドレスをパラメータ化する必要があると思います)、awkへの呼び出しを挿入して「catcommands.txt」との出力を取得する必要がある場合があります。メールアドレスを入力してください。

于 2013-01-14T20:53:13.793 に答える
0

変更する変数

BODY="open realy smtp test"
SMTP-SRV="server_ip"
SMTP-PORT="25"
RCPT="name@domain"
SRC="name@domain"

その後、bashで実行します

/bin/nc ${SMTP-SRV} ${SMTP-PORT} << EOL
ehlo example_domain.com
mail from:${SRC}
RCPT to:${RCPT}
data
From:${SRC}
To:${RCPT}
subject: Telnet test
${BODY}
.
quit
EOL
于 2019-06-26T09:30:16.717 に答える