「Email」- 架构

  CREATED BY JENKINSBOT

邮件是如何发送给收件人的?

简单的说……

你的邮箱是sender@163.com,收件人的邮箱是recipient@gmail.com,现在你要给他发邮件:

	1. 打开你的Foxmail邮件客户端,写好邮件,填上收件人地址,点击「发送」;
	2. 此时Foxmail会将邮件先发送到你所在的邮件服务器上,这里是mail.163.com服务器;
	3. 然后,邮件服务器mail.163.com将邮件发送到收件人所在的邮件服务器,这里是mail.gmail.com服务器;
	4. 在邮件服务器mail.gmail.com收到邮件后,将邮件存储在起来,等待收件人来收取邮件;
	5. 收件人打开自己的邮件客户端(Foxmail、Thunderbird等等),到mail.google.com上拉取邮件;

上述过程概括起来就是:

	1. 发件人,使用邮件客户端,将邮件发送到发件人所在的邮件服务器;
	2. 发件人所在的服务器,将邮件发送到收件人所在的服务器;
	3. 收件人,使用邮件客户端,到自己所在的邮件服务器上收取邮件;

如下图所示:

复杂点说就是…


这并不是最复杂的,上图只涉及了邮件发送中的一部分角色。

发送邮件中的各种角色

邮件用户代理(MUA, Mail User Agent)

常用的客户端,比如Foxmial、Thunderbird等等,都是邮件用户代理。

邮件传输代理(MTA, Mail Transfer Agent)

由于接收邮件的服务器,有时候也称为「邮件中继(Mail Relay)」

邮件投递代理(MDA, Mail Delivery Agent)

邮件传递代理是一种计算机软件组件,负责将电子邮件传递到本地收件人的邮箱。它也被称为本地传递代理(LDA)。

在因特网邮件体系结构中,通过处理来自MTA的消息,并将邮件存储到接收者的环境(通常是“邮箱”)中来实现本地消息传递。

许多邮件处理软件产品将多个MDA与MTA组件捆绑在一起。

邮件提交代理(MSA, Mail Submmission Agent)

Wikipedia/Message submission agent
收取MUA发来的邮件,并与MTA合作。大多数MTA已经包含了MSA的功能,但也有写软件专门提供MSA功能。

邮件访问代理(MAA, Mail Access Agent)

Application Layer (email services) – Message Access Agents (POP and IMAP)
用于将用户连接到系统邮件库,使用POP或IMAP协议收取邮件。现在很多的邮件客户端都提供了MAA的功能。

完整的邮件发送事件序列

参考文献

电子邮件收发协议总结
电子邮件系统组成的5部分:MTA,MSA,MUA,MDA,MAA
基础邮件原理(MUA,MTA,MDA)