跳至内容

电子邮件系统概述

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

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

电子邮件系统的基本概念

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

  • 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
收件箱 阅读、标记、移动、删除邮件等 客户端同步邮箱更新 仅在客户端内
发件箱 保存到已发送邮件 客户端同步邮箱更新 仅在客户端内
创建文件夹 创建新的自定义文件夹 客户端同步邮箱更新 仅在客户端内
草稿 保存草稿邮件 客户端同步邮箱更新 仅在客户端内
垃圾箱 收到了错误移动到垃圾箱的邮件 支持 不支持
广告邮件 接收已被移动到广告邮件文件夹的消息 支持 不支持

具体实现

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

Simple email system

  • MTA:在 GNU/Linux 中,主流且常见的 MTA 有 postfixqmailsendmail
  • MDA:在 GNU/Linux 中,主流且常见的 MDA 有 procmailmaildrop
  • MRA:在 GNU/Linux 中,主流且常见的 MRA 有 dovecot

问题

为什么 DNS 需要参与电子邮件系统的运作? 在日常使用中,电子邮件用户的标准格式是“username@domain name”。域名无法指向一个特定的主机,你需要将域名指向一个特定的主机名,所以我们需要 DNS 的 MX 解析记录。

Postfix 发送和接收邮件的过程

Sendmail 诞生于 1983 年,在 CentOS6 之前的版本中默认安装。由于一些历史原因(例如复杂的配置文件),sendmail 的发展受到了阻碍。尽管 sendmail 复杂,但如果你拥有强大的技术技能或丰富的经验,一个调优良好的 sendmail 在效率和性能方面表现出色。

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

Wietse Venema

有关 postfix 的更多信息,请参阅这两个链接

客户端发送邮件的过程

legend01

Postfix 判断从客户端发送的邮件是否属于本地域或外部域。如果邮件属于本地域,则将其存储在本地域邮箱中。如果发送的邮件属于外部域,则将其转发给另一个 MTA(在转发之前需要从数据库中验证用户的身份)。

客户端接收邮件的过程

legend02

开源邮件服务器

一个完整的电子邮件系统由许多部分组成,这些部分是分散的,由不同的个人或组织维护,并且对某些人来说使用门槛很高。因此,一些开源邮件服务器应运而生,这些邮件服务器将这些组件整合在一起,形成一个开箱即用的产品,对用户来说,所有方面都相对简单易用。

作者:李天赐