email - 发送电子邮件涉及哪些协议(protocol)和服务器,步骤是什么?

标签 email smtp pop3

在过去的几周里,我一直在尝试了解电子邮件的工作原理。我非常了解客户端使用 POP 从服务器接收邮件的过程。我也了解客户端计算机如何使用 SMTP 请求 SMTP 服务器发送消息。但是,我仍然缺少一些东西......

据我了解,外发邮件必须经过三趟:

  • 客户端(使用 Thunderbird 的 Gmail 用户)到服务器 (Gmail)
  • 第一台服务器 (Gmail) 到第二台服务器 (Hotmail)
  • 第二个服务器(Hotmail)到第二个客户端(使用 OS X Mail 的 hotmail 用户)

  • 据我了解,第一步使用 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/

    相关文章:

    spring-boot - 454 4.7.0 Spring Boot 2.1.4.RELEASE 中登录尝试次数过多

    c - 从套接字中读取消息挂起

    amazon-web-services - Spring Integration Pop3MailReceiver 停止静默轮询而不记录原因

    php - 无法在 Windows 8 上使用 php 邮件功能发送电子邮件

    python - 将 PIL 图像转换为 MIMEImage

    ios - 应用内电子邮件发出嗖嗖声但不发送

    ruby - 使用 Ruby 脚本发送电子邮件 - 501 5.5.4 无效地址

    java - 如何使用gmail smtp发送邮件Spring实现?

    email - 555 5.5.2 语法错误。 Gmail 的 SMTP

    c# - OpenPop.NET - 修改电子邮件中的字符