1 电子邮件的组成
电子邮件通常由两部分组成:
用户代理(UA):让用户能够阅读和发送邮件。
UA是一个本地程序,提供命令行或图形界面,让用户和电子邮件系统交互 。
邮件传输代理 (MTA):将邮件从源端送到目标端,又被称为邮件服务器。
MTA通常是一个系统守护进程,即运行在后台的进程,在系统中传递电子邮件。
2 电子邮件的体系结构
Sender在UA编辑好邮件 ==> 提交给Sender的MTA ==> Sender的MTA将邮件传输给Receiver的MTA ==> 邮件投递给Receiver
在电邮体系结构中,用户直接接触的是用户代理UA,通常是一个程序(电子邮件阅读器。
常见的电子邮件阅读器有:Outlook、Gmail、Thunderbird、Foxmail……
用户代理:
用户代理的界面(即邮箱内的操作界面)各不相同,但主要功能如下:
- 入境邮件的显示
- 入境邮件的显示(垃圾邮件、某重要人物的邮件
- 自动响应
- 邮件处置(邮件的回复、转发、删除、保存……
- 签名块
- 邮件列表 (mailing-list(本地、传输代理
3 电子邮件消息格式
ASCII 电子邮件信息通常采用 RFC 822,消息由一个基本的信封 (RFC821)、一些头域、一个空行和消息体组成。
每个头域(逻辑上地,上图中红框部分)由一行ASCII文本组成,包括域名、一个冒号,对于大多数头域来说,还包括一个值。
RFC 822 是几十年前设计的,没有区分信封域和头域。现在最近发行的版本是RFC 2822,已经对此作了修正和增添了许多修订,但由于RFC 822 使用得非常广泛,不可能推倒重来,所以仍然维持着ASCII文本的基本格式。
各部分字段的意义
以 RFC 5322 与邮件传输相关的头字段为例:
Header | Meaning |
To: | E-mail address(es) of primary recipient(s). |
Cc: | E-mail address(es) of secondary recipient(s). |
Bcc: | E-mail address(es) for blind carbon copies. |
From: | Person orbeoole who created th. |
Sender: | E-mail address of the actual sender. |
Received: | Line added by each transfer agent along the route. |
Return-Path: | Can be used to identify a path back to the sender. |
RFC 5322 中邮件头使用的某些字段:
Header | Meaning |
Date: | The date and time the message was sent. |
Reply-To: | E-mail address to which replies should be sent. |
Message-ld: | Unique number for referencing this message later. |
ln-Reply-To: | Message-ld of the message to which this is a reply. |
References: | Other relevant Message-lds. |
Keywords: | User-chosen keywords. |
Subject: | Short summary of the message for the one-line display. |
4 MIME
MIME(Multipurpose Internet Mail Extensions)是多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型。
MIME出现是为了解决这些问题:带有重音符的语言(如法语)、非拉丁字母(如俄 语)、不带字母的语言(如汉语)、完全不包含文本的消息(如视频)……出现在邮件中无法显示。 准确的说,MIME是一个互联网标准,扩展了电子邮件标准。
MIME的基本思想是继续使用 RFC 822 格式,但是在消息体中增加了结构,且为非ASCII消息定义了编码规则。又因为MIME没有偏离 RFC 822 ,所以 MIME 消息可以使用现有的程序和协议来发送,而所有必须要改变的是接收和发送的程序。
MIME增加了的消息头——Content-Transfer-Encoding(内容传输编码,指明了这种编码规则。
Header | Meaning |
MIME-Version: | ldentifies the MIME version. |
Content-Description: | Human-readable string telling what is in the message. |
Content-ld: | Unique identifier. |
Content-Transfer-Encoding: | How the body is wrapped for transmission. |
Content-Type: | Type and format of the content. |
MIME提供了 5 种编码方法(即加上一个扩充新方案的选项,这里介绍其中一种:Base64 编码
Base64 编码
Base64 编码,有时被称为ASCII盔甲( ASCII armor),每24位成一组,每组分成4个6位单元,每个单元被当作一个合法的 ASCII字符来发送。
“A” 代表 0, “B”代表 1, 以此类推,接着是26位小写字母,10 个数字,最后是 + 和 / 分别代表 62 和 63。
在Base64编码中 == 和 = 分别表示最后一个组只含有8位或16位,并且回车和换行被忽略。
Email 消息传输
Email 消息传输系统专注于将消息从发信方转发给收信方。这里我们使用的是SMTP – Simple Mail Transfer Protocol。
MIME 和 SMTP之间的关系:
但这种传输模式的问题在于,必须所有的收发邮件的机器都一直处于工作状态,但用户不可能一直在线,所以设计了 POP3 协议,允许用户和消息传输代理MTA联系,然 后把邮件从ISP那里拷贝到用户。
POP3 协议等同于建立一个中转缓存站,存储邮件,是最后一跳。
POP 3 的工作状态大致如下:
POP 3不适合移动用户的工作,因为他在某地收到邮件后,邮件会被标记成删除,无法在异地再次收邮件,而IMAP (Internet Message Access Protocol)比POP3更加强大,针对这点也做了改进,将所有的邮件永久的保存在服务器上的多个邮箱中。
POP 3 是 IMAP的早期版本。