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