2013-01-14 25 views
5

Tôi đang cố gắng tìm hiểu xem địa chỉ email có hợp lệ hay không.bash và telnet để kiểm tra email

Tôi đã thực hiện điều này bằng cách telnet usign, xem dưới đây

$ 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:bla[email protected] 
250 OK 
rcpt to:[email protected] 
550 Unknown user 

với 550 yêu cầu này tôi biết rằng địa chỉ không hợp lệ trên máy chủ mail ... nếu nó là hợp lệ tôi sẽ nhận được một câu trả lời như bên dưới:

250 2.1.5 OK 

Làm cách nào để tự động hóa điều này trong tập lệnh trình bao? cho đến nay tôi có bên dưới

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

Cảm ơn!

+3

Cần lưu ý rằng hầu hết các nhà cung cấp thư lớn, bao gồm GMail, Hotmail và Yahoo Mail không cho phép kỹ thuật này để ngăn người gửi spam thu thập tài khoản trực tiếp. –

+1

@that guy khác Tôi đã thực sự thử với gmail và nó * không * hoạt động, chỉ ở định dạng khác ...... 'code' mail from: <[email protected]> rcpt to: < [email protected]> 'code' – bsmoo

Trả lời

8

Hãy thử làm điều này:

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

Cách sử dụng:

./script.sh domain email from_email rcpt_email 
1

Bạn luôn có thể nhập lệnh của bạn vào một tập tin văn bản đơn giản, từng dòng, giống như khi bạn gõ chúng trên dòng lệnh . Sau đó, bạn có thể sử dụng một cái gì đó giống như

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

Vì bạn có thể sẽ cần phải xem xét file văn bản này như mẫu, (tôi giả sử bạn có thể sẽ muốn parameterize địa chỉ e-mail), bạn có thể cần phải chèn một cuộc gọi đến awk để có đầu ra của 'cat commands.txt' và chèn địa chỉ e-mail của bạn.