在过去的几周里,我一直在尝试了解电子邮件的工作原理。我非常了解客户端使用 POP 从服务器接收邮件的过程。我也了解客户端计算机如何使用 SMTP 请求 SMTP 服务器发送消息。但是,我仍然缺少一些东西......
据我了解,外发邮件必须经过三趟:
据我了解,第一步使用 SMTP 进行客户端通信。客户端以某种方式对自己进行身份验证(例如,使用 USER 和 PASS),然后向 gmail 服务器发送一条消息。
但是,我不明白 gmail 服务器如何将邮件传输到 hotmail 服务器。
对于第三步,我很确定,hotmail 服务器使用 POP 将消息发送到 hotmail 客户端(再次使用身份验证)。
所以,最大的问题是:当我单击发送邮件将我的邮件发送到我的 gmail 服务器时,我的 gmail 服务器如何将邮件转发到例如 hotmail 服务器以便我的 friend 可以接收它?
非常感谢!
~杰森
谢谢,到目前为止这很有帮助。
据我了解,第一个客户端使用 SMTP 将消息发送到第一个服务器,通常发送到端口 25 上的地址,例如 smtp.mail.SOMESERVER.com(通常)。
然后,SOMESERVER 再次使用 SMTP 将消息发送到端口 25 上的 RECEIVESERVER.com(不是 smtp.mail.RECEIVESERVER.com 或任何花哨的东西)。
然后,当收件人使用 POP 向 RECEIVESERVER 询问其邮件时,他/她收到了邮件……对吗?
再次感谢(尤其是对 jan 博士),
杰森
最佳答案
Gmail 的 SMTP 服务器(接受来自 Thunderbird 的邮件)会将邮件路由到最终收件人。
它通过使用 DNS 查找目标电子邮件地址(本例中为 hotmail.com)的域名部分的 MX(邮件交换器)记录来实现这一点。 DNS 服务器将返回消息应发送到的 IP 地址。目标 IP 地址的服务器有望运行 SMTP(在标准端口 25 上),以便它可以接收传入的消息。
一旦hotmail 服务器接收到消息,它就会被存储起来,直到相应的用户登录并使用POP(或IMAP)检索他们的消息。
杰森 - 回答你的跟进......
Then, SOMESERVER uses SMTP again to send the message to RECEIVESERVER.com on port 25 (not smtp.mail.RECEIVESERVER.com or anything fancy).
没错 - 要发送到的域名被视为收件人电子邮件地址中“@”之后的所有内容。通常,RECEIVESERVER.com 是更具体的东西的别名,比如incoming.RECEIVESERVER.com,(或者,实际上,smtp.mail.RECEIVESERVER.com)。
您可以使用 nslookup 查询本地 DNS 服务器(这适用于 Linux 和 Windows cmd 窗口):
nslookup
> set type=mx
> stackoverflow.com
Server: 158.155.25.16
Address: 158.155.25.16#53
Non-authoritative answer:
stackoverflow.com mail exchanger = 10 aspmx.l.google.com.
stackoverflow.com mail exchanger = 20 alt1.aspmx.l.google.com.
stackoverflow.com mail exchanger = 30 alt2.aspmx.l.google.com.
stackoverflow.com mail exchanger = 40 aspmx2.googlemail.com.
stackoverflow.com mail exchanger = 50 aspmx3.googlemail.com.
Authoritative answers can be found from:
aspmx.l.google.com internet address = 64.233.183.114
aspmx.l.google.com internet address = 64.233.183.27
>
这向我们表明,给 stackoverflow.com 上的任何人的电子邮件都应该发送到上面显示的 gmail 服务器之一。
提到的 Wikipedia 文章 (http://en.wikipedia.org/wiki/Mx_record) 讨论了上面显示的优先级数字 (10, 20, ..., 50)。
关于email - 发送电子邮件涉及哪些协议(protocol)和服务器,步骤是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32744/