我正在尝试使用dig命令找到gmail.com邮件服务器,并使用telnet验证dig命令返回的结果。
$ dig gmail.com MX
; <<>> DiG 9.7.3 <<>> gmail.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54145
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;gmail.com. IN MX
;; ANSWER SECTION:
gmail.com. 800 IN MX 10 alt1.gmail-smtp-in.l.google.com.
gmail.com. 800 IN MX 20 alt2.gmail-smtp-in.l.google.com.
gmail.com. 800 IN MX 30 alt3.gmail-smtp-in.l.google.com.
gmail.com. 800 IN MX 40 alt4.gmail-smtp-in.l.google.com.
gmail.com. 800 IN MX 5 gmail-smtp-in.l.google.com.
;; Query time: 14 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Tue Dec 27 02:09:50 2011
;; MSG SIZE rcvd: 150
Dig命令说“alt1.gmail-smtp-in.l.google.com”是其中一个邮件服务器。 smtp端口25或587未打开(使用telnet验证)链接“alt1.gmail-smtp-in.1.google.com”。但是链接http://support.google.com/mail/bin/answer.py?hl=en&answer=13287表示smtp.gmail.com是gmail.com的邮件服务器,端口587为它打开。为什么挖掘提供错误的电子邮件服务器,或者我在阅读挖掘输出时的理解是错误的。
答案 0 :(得分:15)
一般来说,SMTP服务器有两种不同的功能,通常会混淆:外发邮件提交和从其他网络接收邮件。这两个功能使用相同的SMTP协议执行。通常这两个功能由同一台机器执行,历史上它们甚至可以在同一个端口上执行。因此很容易理解为什么人们会混淆这两个功能。
尽管这两个功能仍然使用相同的SMTP协议,但是在同一端口上执行这些功能的情况越来越少(因为系统管理员通过阻止传出端口25流量来阻止其客户发送垃圾邮件)。目前,SMTP提交通常使用SSL加密,而在两个不同网络之间传输邮件仍然是以纯文本形式完成的。由于谷歌网络的复杂性,如果这两个功能在不同的机器上执行,我不会感到惊讶。 (免责声明:我在谷歌工作,但我对GMail的操作没有内部知识。)
发送邮件。当您从GMail发送电子邮件时,尤其是当您配置像您要从您的Gmail帐户发送的电子邮件客户端时,您必须配置用于发送邮件的SMTP服务器。您的电子邮件客户端直接与此SMTP服务器连接,该SMTP服务器负责将邮件发送到Internet上其他位置的正确位置。这通常使用特殊端口配置,并且需要登录信息,以便只有授权用户才能发送电子邮件。这是上面的支持链接正在处理的功能。您将电子邮件客户端配置为使用端口587上的域名smtp.gmail.com
,我认为您的电子邮件客户端使用DNS A
记录查找此服务器以进行普通域名查找。
从其他网络接收电子邮件。将您的消息中继到其他网络的SMTP服务器会查找MX
的{{1}}记录(在您的情况下,发现发送消息的位置为gmail.com
)并发送消息到该主机上的端口25。这是您在DIG中查找的内容,并使用telnet进行测试。
为什么当你尝试通过消费者互联网连接进行远程登录时,你没有看到alt1.gmail-smtp-in.l.google.com
的端口25?答案是,为防止外发垃圾邮件,您的ISP会阻止端口25上的传出流量。因此,如果不通过ISP的SMTP服务器或其他需要登录的SMTP服务器,则无法向alt1.gmail-smtp-in.l.google.com
端口25发送任何内容。在港口587上提交意见书。
所以你要尝试执行#2功能。您自己对gmail.com
执行了MX查找,发现它对应于服务器gmail.com
。然后你尝试telnet到alt1.gmail-smtp-in.l.google.com
上的端口587。这不起作用,因为alt1.gmail-smtp-in.l.google.com
没有侦听该端口(它只需要侦听端口25以执行功能#2)。然后你试图telnet到alt1.gmail-smtp-in.l.google.com
上的端口25。这不起作用,因为您的ISP阻止了端口25上的传出连接。
向gmail.com发送电子邮件需要做的是找到执行功能#1并通过那里发送电子邮件的服务器。或者,找一个不介意成为垃圾邮件天堂的ISP并且不会阻止端口25上的传出流量。(实际上,请不要。)