红联Linux门户
Linux帮助

判断电子邮箱地址是否存在-Linux

发布时间:2016-09-03 15:34:40来源:topspeedsnail.com作者:斗大的熊猫
怎么判断一个电子邮箱是否真实存在?
 
常用方法有:
1.发送测试邮件;
2.使用第三方服务:http://verify-email.org(有次数限制)
本文介绍怎么使用Linux命令判断邮箱地址是否存在,没有次数限制,不用发送电子邮件。
 
发件原理:当你给我(root@topspeedsnail.com)发送电子邮件时,发件服务器首先会查询对应域名(topspeedsnail.com)的MX记录,如果查询到了MX记录(一条或多条),发件服务器会把邮件投递给MX记录指向的邮件服务器。
 
判断abc@163.com是否存在
首先查询和域名关联的MX记录,使用DNS查询工具dig:
$ dig 163.com MX
 
输出:
; <<>> DiG 9.10.3-P4-Ubuntu <<>> 163.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28744
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;163.com. IN MX
;; ANSWER SECTION:
163.com. 10091 IN MX 10 163mx01.mxmail.netease.com.
163.com. 10091 IN MX 10 163mx03.mxmail.netease.com.
163.com. 10091 IN MX 10 163mx02.mxmail.netease.com.
163.com. 10091 IN MX 50 163mx00.mxmail.netease.com.
;; Query time: 6 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Sat Sep 03 10:52:52 CST 2016
;; MSG SIZE  rcvd: 147
 
从上可以看到163.com有4条MX记录,每条记录后都对应一个值,这个值代表优先级,值越小优先级越高。发件服务会优先把邮件投递给优先级最高的服务器。如果MX记录优先级相同,则服务器采用轮询或随机选择一个记录。如果该服务器不可用,则选择另一个MX。
 
然后,我们连接163mx01.mxmail.netease.com服务器的25端口(STMP),判断abc@163.com是否是有效邮箱地址。可以选择使用nc或telnet命令:
$ nc 163mx01.mxmail.netease.com 25
# 220 163.com Anti-spam GT for Coremail System (163com[20141201])
HELO topspeedsnail.com
# 250 OK
mail from:<root@topspeedsnail.com>
# 250 Mail OK
rcpt to:<abc@163.com>
# 250 Mail OK  # 返回250表示邮件地址有效
rcpt to:<fyr4u3vnjfh3@163.com>
# 550 User not found: fyr4u3vnjfh3@163.com  # 邮箱地址无效
 
或使用telnet命令:
$ telnet 163mx01.mxmail.netease.com 25
Trying 220.181.14.140...
Connected to 163mx01.mxmail.netease.com.
Escape character is '^]'.
220 163.com Anti-spam GT for Coremail System (163com[20141201])
HELO ...
...
注意:如果查询过于频繁的话,服务器可能处理你的IP。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/23862.html