为什么邮件服务器中有 2 个不同的服务器(传入和传出)?

Why 2 different servers (incoming and outgoing) in mail servers?

我有一个关于邮件服务器的基本问题。通常,任何通用服务器(不一定是邮件服务器)都会处理各种相关请求,即与客户端的双向交互(例如向客户端发送消息和从客户端接收消息),但在邮件服务器的情况下,有 2 个不同的服务器——一个用于传出消息称为传出服务器遵循 SMTP 协议,另一个用于传入消息称为传入服务器遵循 POP3/IMAP 协议。为什么这样? .就此而言,不能将 2 个协议包含在一个协议中以处理双向消息流。另外,在一般企业中,这两个服务器通常托管在同一台机器上吗?

就个人而言,我很遗憾几乎没有人再使用 UUCP :)

邮寄、管理和收集邮件的分离具有历史、哲学和设计基础。 这正符合Unix世界的精神:“做一件事,但要把它做好”,“让一切尽可能简单”。

电子邮件问题有多复杂,涉及多少技术,请阅读此处: https://en.wikipedia.org/wiki/Email 然后查看脚注中的相关 RFC 以获取详细信息。

很难实施一个既考虑到电子邮件的所有细微差别又同时考虑到所有细微差别的单一程序 保持简单(SMTP 中的简单)。这样的单体将是开发、维护和管理的噩梦, post 办公室自 1970 年代以来已经改变了很多次。

关于第二个问题,没有理由使用同一台物理机,但除了可用资源量之外也没有禁忌。

因为协议很旧。在旧的 Unix 传统中,暂时忽略 UUCP:

SMTP 首先出现,用于在站点之间传输邮件,登录后使用文本模式客户端在 server/network 上本地读取邮件。不需要获取邮件,您使用 'mail' 命令,它会访问您的本地邮件假脱机(包含您的邮件的文件,位于文件系统上,SMTP 服务器附加到该文件系统)。

后来,人们希望在自己的主机上阅读邮件,因此发明了一种协议来满足这一需求。 POP 服务器会读取相同的假脱机文件,并允许您将所有消息下载到间歇性连接的客户端计算机。 SMTP 被重新用于发送邮件,因为它已经存在并且很容易适应该目的。

如今,通常有三个值得注意的服务器:SMTP 提交服务器、SMTP 传输服务器和 IMAP。提交服务器是该服务的最终用户提交他们的电子邮件以转发到最终主机的地方,例如 Gmail 用户将他们的电子邮件提交到 Google 服务器(通常在端口 465 或端口 587 上,与验证)。传输服务器负责在站点之间发送和接收电子邮件(例如,当 Yahoo 和 Gmail 在端口 25 上相互交换其客户的邮件时)。最终用户使用 IMAP 来获取他们的电子邮件。

大型网站上的这三种服务通常由不同主机上的不同服务器提供。在非常大的服务上,例如 Gmail,它们是独立的服务器池。

在小型企业主机上,它们通常只有一台机器。

有更新和集成度更高的协议。例如,EAS 和 EWS 都在同一协议中包含邮件提取和提交。