我的网络老师说,从Alice到Bob的SMTP消息传递过程都经历了这个过程。
(1)用户代理 - > (2)Alice的邮件服务器 - > (3)Bob的邮件服务器 - > (4)Bob的用户代理
让我们说Alice是她的用户代理(例如Thunderbird)。为什么她的电子邮件必须通过邮件服务器?为什么她不能直接向bob的邮件服务器发送邮件?如果她的用户代理知道Bob的地址(bob@gmail.com),她的用户代理无法进行某种DNS查找以找出gmail.com的IP地址并直接将她的SMTP消息发送给鲍勃的邮件服务器?
答案 0 :(得分:2)
如果我们考虑无法访问Bob的邮件服务器的情况,那么除了将该电子邮件发送给Alice的邮件服务器之外,Alice没有任何选择。
如果Alice将电子邮件存入其邮件服务器,那么Alice的邮件服务器将继续尝试向Bob的邮件服务器发送电子邮件,直到它可以访问。
正如您所提到的,如果我们尝试直接向Bob的邮件服务器发送电子邮件,那么Alice将不得不继续自己发送该电子邮件,直到Bob的邮件服务器变得可访问,并且作为用户您不希望这样。
答案 1 :(得分:2)
与HTTP不同,SMTP是一种推送'协议。 HTTP客户端'拉动'来自HTTP服务器的数据。另一方面,邮件客户端(在这种情况下是爱丽丝),推动'使用简单邮件传输协议(SMTP)的电子邮件到运行SMTP的邮件服务器。邮件服务器然后将此电子邮件推送到Bob的邮件服务器。
现在,当Bob想要检查他的电子邮件时,他不使用SMTP,而是使用其他协议(如IMAP / POP)来获取他的新电子邮件并显示在他的用户代理上。
如果Alice要直接向Bob发送电子邮件,Bob的用户代理必须始终打开(很像服务器)。但是,由于Bob只是另一个可以关闭的客户端,如果Bob的用户代理已关闭,Alice的电子邮件将无法联系到Bob。因此,邮件服务器将Alice的电子邮件存储到Bob,并且当Bob的用户代理开启时,它可以检索新的电子邮件。因此,需要通过邮件服务器发送邮件。
答案 2 :(得分:1)
电子邮件转移通常简单。 "特殊情况的数量"可能巨大。
通过本地邮件/ SMTP服务器发送使用户/邮件代理更简单。它降低了击中和特殊情况的机会"在传递电子邮件递送责任之前。它有助于避免"不稳定"行为。
直接发送到收件人的邮件服务器在垃圾邮件时代更加复杂且风险。
某些服务器掉线"归类为垃圾邮件"消息没有任何通知。没有它我可能会推荐高级用户"在SMTP会话中初始直接传递失败时,使用本地邮件服务器作为后退传递路由。
如果您有固定的IP地址而没有阻止的外发SMTP连接,您可以设置自己的邮件/ SMTP服务器。它使复杂的邮件代理商的市场变得更小。