应用层——电子邮件

电子邮件的重要标准:

  • 简单邮件发送协议:SMTP
  • 互联网文本报文格式
  • 通用互联网邮件扩充 MIME
  • 邮件读取协议:POP3 和 IMAP

通信架构

电子邮件在几十年的发展过程中出现了明显的变化,从原始的发送方电脑直接向接收方电脑发送电子邮件,演变成收发双方都使用邮件服务器代为收发邮件。通过这种方式,电子邮件通信不再依赖接收方当前是否在线,而电子邮件的通信过程由简单的发送方到接收方,演变成发送方电脑到发送方邮件服务器,发送方邮件服务器到接收方邮件服务器,以及接收方邮件服务器到接收方电脑的三个通信过程。并且参与通信的四方都不是直接相连,而是分别独立连接到互联网中。这个架构中,邮件发送方和接收方使用的电脑称为用户代理。

电子邮件的组成:三个主要构件

用户代理 UA (User Agent)

用户代理 UA 就是用户与电子邮件系统的接口,是电子邮件客户端软件。用户代理向用户提供一个很友好的接口来发送和接收邮件。

用户代理的功能:撰写、显示、处理和通信。

邮件服务器 (Mail Server)

邮件服务器的功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。

邮件服务器按照客户-服务器方式工作。邮件服务器需要使用发送和读取两个不同的协议:SMTP,POP3。

邮件发送和读取协议

简单邮件发送协议 SMTP:用于在用户代理向邮件服务器或邮件服务器之间发送邮件。

邮局协议 POP3:用于用户代理从邮件服务器读取邮件。

一个邮件服务器既可以作为客户,也可以作为服务器。

例如,当邮件服务器 A 向另一个邮件服务器 B 发送邮件时,邮件服务器 A 就作为 SMTP 客户,而 B 是 SMTP 服务器。

当邮件服务器 A 从另一个邮件服务器 B 接收邮件时,邮件服务器 A 就作为 SMTP 服务器,而 B 是 SMTP 客户。

SMTP 和 POP3(或IMAP)都是使用 TCP 连接来传送邮件的,目的是为了可靠地传送邮件。

发送和接收电子邮件的几个重要步骤

  1. 发件人调用 PC 中的用户代理撰写和编辑要发送的邮件。
  2. 发件人的用户代理把邮件用 SMTP 协议发给发送方邮件服务器。
  3. SMTP 服务器把邮件临时存放在邮件缓存队列中,等待发送。
  4. 发送方邮件服务器的 SMTP 客户与接收方邮件服务器的 SMTP 服务器建立 TCP 连接,然后就把邮件缓存队列中的邮件依次发送出去。
  5. 运行在接收方邮件服务器中的 SMTP 服务器进程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取。
  6. 收件人在打算收信时,就运行PC机中的用户代理,使用POP3(或 IMAP)协议读取发送给自己的邮件。

电子邮件的组成

电子邮件由信封和内容两部分组成。

电子邮件的传输程序根据邮件信封上的信息来传送邮件。用户在从自己的邮箱中读取邮件时才能见到邮件的内容。

在邮件的信封上,最重要的就是收件人的地址。

电子邮件地址的格式

使用电子邮件时,需要拥有一个地址,这个地址叫做邮件地址,也叫邮箱地址。它相当于通信地址和姓名。

TCP/IP 体系的电子邮件系统规定电子邮件地址的格式如下:收件人邮箱名@邮箱所在主机的域名。

符号@表示“在”的意思。例如电子邮件地址wsq@qq.com

wsq表示用户的名称,同一个通信地址内,名称必须是唯一的,不能出现重复;@表示分隔符;qq.com是用户邮箱的邮件接收服务器的域名。

电子邮件的发送地址由 DNS 管理。DNS 中注册了邮件地址和对应邮件服务器的域名。这些映射信息被称为 MX 记录。比如:qq.com的 MX 记录中指定了mail.qq.com。那么任何发送给qq.com结尾的邮件都被发送到mail.qq.com服务器。就这样,根据 MX 记录中指定的邮件服务器,可以管理不同邮件地址与特定邮件服务器之间的映射关系。

简单邮件传送协议 SMTP

  • SMTP 规定了在两个相互通信的 SMTP 进程交换信息的方法。
  • SMTP 使用客户–服务器方式。
  • SMTP 基于 TCP 实现客户与服务器的通信。
  • SMTP 是一个基于文本的 (即 ASCII 码)的协议。
  • SMTP 客户与服务器之间采用命令-响应方式进行交互。

SMTP 规定了 14 条命令和 21 种应答信息。每条命令用几个字母组成,每一种应答信息一般只有一行信息,由一个 3 位数字的代码开始,后面附上很简单的文字说明。

SMTP通信的三个阶段

1. 连接建立

连接是在发送主机的 SMTP 客户和接收主机的 SMTP 服务器之间建立的。SMTP不使用中间的邮件服务器。

发送人的邮件送到发送方邮件服务器的邮件缓存后,SMTP 客户就每隔一定时间对邮件缓存扫描一次。如发现有邮件,就使用 SMTP 的熟知端口号 25 与接收方邮件服务器的 SMTP 服务器建立 TCP 连接。在连接建立后,接收方 SMTP 服务器要发出220 Service Ready。然后 SMTP 客户向 SMTP 服务器发送HELLO命令,并附上发送方的主机名。SMTP 服务器若有能力接收邮件,则回答250 OK,表示已准备好接收。若 SMTP 服务器不可用,则回答 421 Service not available

如果一定时间内发送不了邮件,邮件服务器会把这个情况通知发件人。

2. 邮件传送

邮件的传送从MAIL命令开始,MAIL命令后面有发件人的地址。若 SMTP 服务器已准备好接收邮件,则回答250 OK。否则,返回一个代码,指出原因。

下面跟着一个或多个RCPT(recipient)命令,取决于把同一个邮件发送给一个或多个收件人。每发送一个RCPT命令,都应当有相应的信息从 SMTP 服务器返回,如250 OK,表示指明的邮箱在接收方的系统中,或550 No such user here,不存在此邮箱。

RCPT命令的作用就是:先弄清接收方系统是否已做好接收邮件的准备,然后才发送邮件。这样做是为了避免浪费通信资源,不至于发送了很长的邮件以后才知道地址错误。

再下面就是DATA命令,表示要开始传送邮件的内容了。若不能接收邮件,则返回 421(服务器不可用)、500(命令无法识别)等。接着 SMTP 客户就发送邮件内容。发送完毕后,再发送<CRLF>.<CRLF>表示邮件内容结束。实际上在服务器看到的可打印字符只是一个英文的句点。若邮件收到了,则 SMTP 服务器返回信息250 OK或差错代码。

3. 连接释放

邮件发送完毕后,SMTP 客户应发送QUIT命令。SMTP 服务器返回的信息是221(服务器关闭),表示 SMTP 同意释放 TCP 连接。

SMTP 缺点

  • 发送电子邮件不需要经过鉴别。
  • SMTP 传送的邮件是明文的,不利于保密。
  • 在网络上的传输效率不高。SMTP 本来就是为传送的是ASCII 码设计的,在传输非 ASCII 码的长报文时效率不高。

电子邮件的信息格式

一个电子邮件分为信封和内容两大部分。

RFC 5322 只规定了邮件内容中的首部格式,而对邮件的主体部分则让用户自由撰写。

邮件内容的首部

邮件内容首部的关键字:

  • To::后面填入一个或多个收件人的电子邮件地址。
  • Subject::邮件的主题。它反映了邮件的主要内容,便于用户查找邮件。
  • Cc::抄送,表示应给某某人发送一个邮件副本。
  • From:Date::表示发信人的电子邮件地址和发信日期。
  • Reply-To::是对方回信所用的地址。这个地址可以与发件人发信时使用的地址不同。

邮件读取协议 POP3 和 IMAP 协议

两个常用的邮件读取协议:

  • POP3:邮局协议(Post Office Protocol)第3个版本
  • IMAP:网际报文存取协议(Internet Message Access Protocol)

POP3 协议

电子邮件通过 SMTP 协议到达接收方服务器,个人电脑不可能长期处于开机状态,用户希望一开机就能收到邮件,然而 SMTP 没有这种功能。

为了解决这个问题,就引入了 POP3 协议。POP3 协议是用于接收电子邮件的协议。发送端的邮件使用 SMTP 协议将电子邮件转发给一直在线的 POP3 服务器。客户端再根据 POP3 协议从 POP3 服务器接收邮件。这个过程中,为了防止别人盗取邮件内容,还要进行用户认证。

POP3 协议和 SMTP 协议一样,是基于 TCP 的应用层协议,使用 TCP 110 端口连接邮件服务器。接收方的邮件客户端程序首先使用 TCP 连接到 POP3 服务器的 TCP 端口 110;再进行用户认证、邮件列表查询、邮件下载、邮件删除等操作;操作完成后,客户端与邮件服务器之间再断开 TCP 连接。

POP3 仅负责邮件的下载,邮件从客户端上传到邮件服务器由 SMTP 协议完成。

IMAP 协议

POP3 协议的邮件客户端能够在邮件服务器上执行的操作很少,而且邮件要下载到客户端本地,而不保留在邮件服务器,实际使用时很不方便。目前使用更广泛的接收电子邮件的协议是 IMAP。在 IMAP 中邮件则由服务器进行管理。

使用 IMAP 时,不必从服务器上下载所有的邮件也可以查看。由于 IMAP 是在服务器端处理 MIME 信息,它可以实现邮件附件的选择性下载功能。比如:一封邮件有 5 个附件时,可以只下载其中的 3 个附件。IMAP 还会在服务器上对 “已读/未读” 信息和邮件分类进行管理,所以在不同的电脑上打开邮箱,也能保持同步,使用起来非常方便。

IMAP 使用客户–服务器方式。基于 TCP 实现客户与服务器的通信。

IMAP 是一个联机协议。

IMAP 的特点:

  • 连接后只下载邮件首部(部分下载)。
  • 用户直接在 IMAP 服务器上创建和管理文件夹。
  • 用户可以搜索邮件内容。
  • 用户可以在不同的地方使用不同的计算机随时上网阅读和处理自己的邮件。
  • 允许收信人只读取邮件中的某一个部分。

缺点:要想查阅邮件,必须先联网。

IMAP 与 POP3 比较

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

邮件读取协议 POP 或 IMAP 与邮件传送协议 SMTP 完全不同。发信人的用户代理向源邮件服务器发送邮件,以及源邮件服务器向目的邮件服务器发送邮件,都是使用 SMTP 协议。而 POP 协议或 IMAP 协议则是用户从目的邮件服务器上读取邮件所使用的协议。

基于万维网的电子邮件

用户代理 (UA) 的缺点:

  • 必须在计算机中安装用户代理软件。
  • 但可能不能安装或不允许安装。因此,不方便收发邮件。

万维网电子邮件优点:

  • 不需要在计算机中再安装用户代理软件。
  • 计算机能联网,就能非常方便地收发电子邮件。
  • 电子邮件界面非常友好。

万维网电子邮件

发送、接收电子邮件时使用 HTTP 协议。

两个邮件服务器之间传送邮件时使用 SMTP。

通用互联网邮件扩充 MIME

SMTP 有以下缺点:

  • SMTP 不能传送可执行文件或其他的二进制对象。
  • SMTP 限于传送 7 位的 ASCII 码。许多其他非英语国家的文字(如中文、俄文或德文)就无法传送。
  • SMTP 服务器会拒绝超过一定长度的邮件。
  • 某些 SMTP 的实现并没有完全按照 SMTP 的标准。

于是在这种情况下提出了通用互联网邮件扩充 MIME。

1.MIME 概述

MMIE 并没有改动或修改 SMTP,MIME 的意图是继续使用原来的邮件格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。也就是说 MIME 邮件可在现有的电子邮件程序和协议下传送。

MIME 和 SMTP 的关系:

MIME 主要包括三个部分:

  • 5 个新的邮件首部字段,它们可包含在原有首部中。这些字段提供了有关邮件主体的信息。
  • 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
  • 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。

MIME 增加 5 个新的邮件首部:

2.内容传送编码(Content-Transfer-Encoding)

Quoted-printable编码适用于所传送的数据中只有少量的非 ASCII 码的情况。

Base64编码适合任意长度的二进制数据。

3. 内容类型

MIME 标准规定Content-Type说明必须含有两个标识符,即内容类型和子类型,中间用/分开。

MIME 标准原先定义了 7 个基本内容类型和 15 种子类型。

MIME允许发件人和收件人自己定义专用的内容类型。但为避免可能出现名字冲突,标准要求为专用的内容类型选择的名字要以字符串X-开始。

MIME 举例

打赏
  • Copyrights © 2017-2023 WSQ
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信