为什么SMTP用户代理必须通过邮件服务器发送邮件?

3
我的网络老师说,Alice发送给Bob的SMTP邮件经过以下过程:
(1) 用户代理 -> (2) Alice的邮件服务器 -> (3) Bob的邮件服务器 -> (4) Bob的用户代理。
假设Alice在她的用户代理(如Thunderbird)上,为什么她的电子邮件必须通过邮件服务器发送?她不能直接向bob的邮件服务器发送消息吗?如果她的用户代理知道Bob的地址(bob@gmail.com),那么他的用户代理能否进行某种DNS查找以找到gmail.com的IP地址并将SMTP消息直接发送到Bob的邮件服务器?

2
当您通过普通邮件寄信时,为什么您的信件必须经过您当地的邮局和目的地邮局?为什么它不能直接从您家出发,然后自动到达收件人的邮箱?用户代理不具有任何查找功能。Alice的电子邮件客户端软件(即您所称的用户代理)知道Alice邮件服务器的地址,就这样。Alice知道Bob邮件服务器的名称Bob@example.com),但不知道Bob住在哪里。Alice的邮件服务器知道Bob邮件服务器的地址,而Bob的邮件服务器知道Bob住在哪里。 - Ken White
3个回答

2
与HTTP不同,SMTP是一种“推送”协议。HTTP客户端从HTTP服务器“拉取”数据。另一方面,邮件客户端(在本例中为Alice)使用简单邮件传输协议(SMTP)将电子邮件“推送”到运行SMTP的邮件服务器。然后,邮件服务器将此电子邮件推送到Bob的邮件服务器。
现在,当Bob想要检查他的电子邮件时,他并不使用SMTP,而是使用其他协议(如IMAP / POP)获取他的新邮件并在用户代理上显示。
如果Alice直接向Bob发送电子邮件,则Bob的用户代理必须始终处于开启状态(类似于服务器)。但是,由于Bob只是另一个可以关闭的客户端,如果Bob的用户代理关闭,Alice的电子邮件将无法到达Bob。因此,邮件服务器会将Alice的电子邮件存储到Bob,并且当Bob的用户代理打开时,它可以检索新的电子邮件。因此,需要通过邮件服务器发送邮件。

2
如果考虑到Bob的邮件服务器无法访问的情况,那么Alice除了将该电子邮件发送到自己的邮件服务器之外别无选择。
如果Alice将电子邮件存放在自己的邮件服务器上,则Alice的邮件服务器将不断尝试向Bob的邮件服务器发送电子邮件,直到后者变得可达为止。
正如您所提到的,如果我们尝试直接发送电子邮件到Bob的邮件服务器,那么Alice将不得不重复自己地不断发送该电子邮件,直到Bob的邮件服务器变得可达,而作为用户,您不希望这样。

1
Email转移通常很简单。可能会有大量“特殊情况”。
1. 通过本地邮件/SMTP服务器发送可以使用户/邮件代理更简单。在传递电子邮件之前降低了遇到“特殊情况”的机会。它有助于避免“不稳定”行为。
2. 直接发送到收件人的邮件服务器在垃圾邮件时代甚至更加复杂和危险。
一些服务器会在没有任何通知的情况下删除“被归类为垃圾邮件”的消息。如果没有它,我可能会建议“高级用户”在SMTP会话中初始直接传递失败时使用本地邮件服务器作为备用传递路线。
如果您拥有固定的IP地址且未被阻止的传出SMTP连接,则可以设置自己的邮件/SMTP服务器。这使得(过度)复杂的邮件代理市场更小。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接