电子邮件系统概述¶
电子邮件作为互联网初期三大服务(FTP、Web 和电子邮件)之一,至今仍被许多人使用。电子邮件最早出现在 20 世纪 60 年代,基于网络传输的电子邮件首次出现在 1971 年。
与商业公司的电子邮件系统不同,电子邮件系统的开源版本由许多部分组成。它不是一项单一服务,导致 GNU/Linux 环境中的电子邮件系统更加复杂。
电子邮件系统的基本概念¶
电子邮件系统主要由四部分组成:MUA、MTA、MRA 和 MDA。
- MUA(邮件用户代理):即用户使用的邮件客户端,例如 Outlook、Foxmail 等。
- MTA(邮件传输代理):是指用于传输邮件的电子邮件服务器程序。MTA 是 SMTP 的实现。
- MDA(邮件交付代理):MTA 收到邮件后,MDA 负责将电子邮件保存到电子邮件服务器上的指定位置,同时执行电子邮件过滤和反病毒操作。
- MRA(邮件检索代理):MRA 是 IMAP 和 POP3 的实现,用于与 MUA 交互,通过 IMAP 或 POP3 将电子邮件传输到邮件客户端。
三种协议¶
- SMTP(简单邮件传输协议):发送电子邮件的标准协议,默认端口为“TCP 25”。需要加密功能时,使用“TCP 465”端口。
- IMAP(互联网邮件访问协议):用于从电子邮件服务器接收电子邮件,默认端口为 143。需要加密功能时,使用 993 端口。
- POP3(邮局协议 - 版本 3):用于从电子邮件服务器接收电子邮件,默认端口为 110。需要加密功能时,使用 995 端口。
IMAP 和 POP3 之间的区别如下
操作位置 | 操作内容 | IMAP | POP3 |
---|---|---|---|
收件箱 | 阅读、标记、移动、删除电子邮件等 | 客户端与邮箱更新同步 | 仅在客户端内 |
发件箱 | 保存到已发送邮件 | 客户端与邮箱更新同步 | 仅在客户端内 |
创建文件夹 | 创建新的自定义文件夹 | 客户端与邮箱更新同步 | 仅在客户端内 |
草稿 | 保存草稿邮件 | 客户端与邮箱更新同步 | 仅在客户端内 |
垃圾邮件文件夹 | 错误地移动到垃圾邮件文件夹的收到的电子邮件 | 支持 | 不支持 |
广告邮件 | 接收已移动到广告邮件文件夹的邮件 | 支持 | 不支持 |
具体实现¶
如下图所示,这是电子邮件系统发送和接收的简单示意图。
- MTA:在 GNU/Linux 中,主流且通用的 MTA 是 postfix、qmail、sendmail。
- MDA:在 GNU/Linux 中,主流且通用的 MDA 是 procmail 和 maildrop。
- MRA:在 GNU/Linux 中,主流且通用的 MDA 是 dovecot。
问题
为什么 DNS 需要参与电子邮件系统的运作? 日常使用中,电子邮件用户的标准格式是“用户名@域名”。域名不能代表特定主机,需要将域名指向特定主机名,因此我们需要 DNS MX 解析记录。
Postfix 发送和接收电子邮件的过程¶
Sendmail 诞生于 1983 年,在 CentOS6 之前的版本中默认安装。由于一些历史原因(例如复杂的配置文件),sendmail 的发展受到了阻碍。虽然 sendmail 复杂,但如果您拥有强大的技术技能或丰富的经验,经过精心调整的 sendmail 在效率和性能方面都非常出色。
Postfix 由 IBM 荷兰研究员 Wietse Venema 于 1990 年创建,旨在改进 sendmail 邮件服务器。
有关 postfix 的更多信息,请参考以下两个链接
客户端发送电子邮件的过程¶
Postfix 确定从客户端发送的电子邮件属于本地域还是外部域。如果电子邮件属于本地域,它将存储在本地域邮箱中。如果发送的电子邮件属于外部域,它将转发到另一个 MTA(转发之前需要从数据库验证用户的身份)。
客户端接收电子邮件的过程¶
开源邮件服务器¶
一个完整的电子邮件系统由分散的组件组成,这些组件由不同的个人或组织维护,并且某些人使用这些组件的障碍很高。因此,随着时间的推移,出现了一些开源邮件服务器,这些服务器将这些组件组合起来以形成一个开箱即用的产品,对于用户来说,各个方面都比较简单易用。
作者:田思李