【问题标题】:Why must SMTP User agents send mail through a mail server?为什么 SMTP 用户代理必须通过邮件服务器发送邮件?
【发布时间】:2017-06-09 18:21:15
【问题描述】:

我的网络老师说过,从 Alice 到 Bob 的 SMTP 消息传递过程会经历这个过程。

(1) 用户代理 -> (2) Alice 的邮件服务器 -> (3) Bob 的邮件服务器 -> (4) Bob 的用户代理

假设 Alice 在她的用户代理(例如 Thunderbird)上。为什么她的电子邮件必须通过邮件服务器?为什么她不能直接向 bob 的邮件服务器发送消息?如果她的用户代理知道 Bob 的地址 (bob@gmail.com),她的用户代理就不能进行某种 DNS 查找来找出 gmail.com 的 IP 地址并将她的 SMTP 消息直接发送到 Bob 的邮件服务器吗?

【问题讨论】:

  • 当您通过普通邮件邮寄信件时,为什么您的信件必须通过当地邮局和目的地邮局?为什么它不能离开你的房子并自动进入收件人的邮箱?用户代理不查找任何内容。 Alice 的电子邮件客户端软件(您称之为用户代理)知道 Alice 的邮件服务器的地址,仅此而已。 Alice 知道 Bob 的邮件服务器 (Bob@example.com) 的 名称,但不知道 Bob 住在哪里。 Alice 的邮件服务器知道 Bob 的邮件服务器的地址,Bob 的邮件服务器知道 Bob 的地址。

标签: email smtp


【解决方案1】:

电子邮件传输通常很简单。 “特殊情况”的数量可能大量

  1. 通过本地邮件/SMTP 服务器发送使用户/邮件代理更简单。它降低了在传递电子邮件传递责任之前遇到“特殊情况”的机会。它有助于避免“不稳定”行为。

  2. 在垃圾邮件时代,直接发送到收件人的邮件服务器更加复杂和风险

有些服务器会在没有任何通知的情况下丢弃“分类为垃圾邮件”的邮件。如果没有它,我可能会建议“高级用户”在 SMTP 会话中初始直接传递失败时使用本地邮件服务器作为后备传递路径。

如果您有固定的 IP 地址而没有阻止传出 SMTP 连接,您可以设置自己的邮件/SMTP 服务器。它使(过度)复杂的邮件代理的市场变得更小。

【讨论】:

    【解决方案2】:

    如果我们考虑 Bob 的邮件服务器无法访问的情况,那么 Alice 除了将电子邮件发送到 Alice 的邮件服务器之外别无选择。

    如果 Alice 将电子邮件存入它的邮件服务器,那么 Alice 的邮件服务器将继续尝试向 Bob 的邮件服务器发送电子邮件,直到它可以访问为止。

    正如您所提到的,如果我们尝试直接向 Bob 的邮件服务器发送电子邮件,那么 Alice 将不得不不断地自己重复发送该电子邮件,直到 Bob 的邮件服务器变得可访问并且作为用户您不希望这样。

    【讨论】:

      【解决方案3】:

      与 HTTP 不同,SMTP 是一种“推送”协议。 HTTP 客户端从 HTTP 服务器“拉取”数据。另一方面,邮件客户端(在本例中为 Alice)使用简单邮件传输协议 (SMTP) 将电子邮件“推送”到运行 SMTP 的邮件服务器。然后邮件服务器将此电子邮件推送到 Bob 的邮件服务器。

      现在,当 Bob 想要检查他的电子邮件时,他不使用 SMTP,而是使用 IMAP/POP 等其他协议来获取他的新电子邮件并显示在他的用户代理上。

      如果 Alice 直接向 Bob 发送电子邮件,则 Bob 的用户代理必须始终处于打开状态(很像服务器)。但是,由于 Bob 只是另一个可以关闭的客户端,因此如果 Bob 的用户代理关闭,Alice 的电子邮件将无法到达 Bob。因此,邮件服务器会将 Alice 的电子邮件存储给 Bob,并且当 Bob 的用户代理打开时,它可以检索新电子邮件。因此,需要通过邮件服务器发送邮件。

      【讨论】:

        猜你喜欢
        • 2016-10-01
        • 2018-10-17
        • 1970-01-01
        • 1970-01-01
        • 2011-02-07
        • 2011-10-21
        • 2016-06-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多