跳到内容

电子邮件系统概述

电子邮件作为互联网初期三大服务(FTP、Web 和电子邮件)之一,至今仍被许多人使用。电子邮件最早出现在 20 世纪 60 年代,基于网络传输的电子邮件首次出现在 1971 年。

与商业公司的电子邮件系统不同,电子邮件系统的开源版本由许多部分组成。它不是一项单一服务,导致 GNU/Linux 环境中的电子邮件系统更加复杂。

电子邮件系统的基本概念

电子邮件系统主要由四部分组成:MUAMTAMRAMDA

  • 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 之间的区别如下

操作位置操作内容IMAPPOP3
收件箱阅读、标记、移动、删除电子邮件等客户端与邮箱更新同步仅在客户端内
发件箱保存到已发送邮件客户端与邮箱更新同步仅在客户端内
创建文件夹创建新的自定义文件夹客户端与邮箱更新同步仅在客户端内
草稿保存草稿邮件客户端与邮箱更新同步仅在客户端内
垃圾邮件文件夹错误地移动到垃圾邮件文件夹的收到的电子邮件支持不支持
广告邮件接收已移动到广告邮件文件夹的邮件支持不支持

具体实现

如下图所示,这是电子邮件系统发送和接收的简单示意图。

Simple email system

  • MTA:在 GNU/Linux 中,主流且通用的 MTA 是 postfixqmailsendmail
  • MDA:在 GNU/Linux 中,主流且通用的 MDA 是 procmailmaildrop
  • MRA:在 GNU/Linux 中,主流且通用的 MDA 是 dovecot

问题

为什么 DNS 需要参与电子邮件系统的运作? 日常使用中,电子邮件用户的标准格式是“用户名@域名”。域名不能代表特定主机,需要将域名指向特定主机名,因此我们需要 DNS MX 解析记录。

Postfix 发送和接收电子邮件的过程

Sendmail 诞生于 1983 年,在 CentOS6 之前的版本中默认安装。由于一些历史原因(例如复杂的配置文件),sendmail 的发展受到了阻碍。虽然 sendmail 复杂,但如果您拥有强大的技术技能或丰富的经验,经过精心调整的 sendmail 在效率和性能方面都非常出色。

Postfix 由 IBM 荷兰研究员 Wietse Venema 于 1990 年创建,旨在改进 sendmail 邮件服务器。

Wietse Venema

有关 postfix 的更多信息,请参考以下两个链接

客户端发送电子邮件的过程

legend01

Postfix 确定从客户端发送的电子邮件属于本地域还是外部域。如果电子邮件属于本地域,它将存储在本地域邮箱中。如果发送的电子邮件属于外部域,它将转发到另一个 MTA(转发之前需要从数据库验证用户的身份)。

客户端接收电子邮件的过程

legend02

开源邮件服务器

一个完整的电子邮件系统由分散的组件组成,这些组件由不同的个人或组织维护,并且某些人使用这些组件的障碍很高。因此,随着时间的推移,出现了一些开源邮件服务器,这些服务器将这些组件组合起来以形成一个开箱即用的产品,对于用户来说,各个方面都比较简单易用。

作者:田思李