• 与普通邮件一样,电子邮件是一种异步通信媒介,不必与他人的计划进行协调。现代电子邮件报文常常包含附件、超链接、HTML格式文本和图片。
  • 因特网电子邮件系统通常包括:用户代理(user agent)邮件服务器(mail server)简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)
  • 用户代理允许用户阅读、回复、转发、保存、撰写报文
  • 邮件发送到邮件服务器,被放在发送报文队列中。
  • 邮件服务器是电子邮件体系结构的核心,每个接收方在其中的某个服务器上有一个邮箱,邮箱管理和维护发送给用户的报文。
  • 典型过程为:发送方的用户代理发送邮件到发送方的邮件服务器,再传输到接收方的邮件服务器,最后被分发到接收方的邮箱中。
  • 如果发送放的邮件服务器将邮件发送给接收方的邮件服务器失败了,发送方的邮件服务器在报文队列(message quene)中保持该报文并以后尝试再次发送。通常每30分钟进行一次尝试;如果几天后仍不能成功,服务器就删除该报文并以电子邮件的形式通知发送方
  • SMTP是应用层协议,使用TCP可靠数据传输服务,从发送方的邮件服务器向接收方的邮件服务器发送邮件。像大多数应用层协议一样,SMTP有两个部分:运行在发送方邮件服务器的客户端和运行在接收方邮件服务器的服务器端。每台邮件服务器上既运行STMP的客户端也运行着SMTP的服务器端

因特网中的电子邮件 - 图1

一、SMTP

  • SMTP是电子邮件应用的核心,使用TCP从客户机到服务器可靠地传输电子邮件报文,持续连接,用端口25,属于TCP/IP协议族。
  • SMTP一般不使用中间邮件服务器发送邮件,他采用直接传输的方式,从发送服务器到接受服务器
  • 报文必须是7比特ASCII格式
  • 传输共有三个阶段:握手、报文传输、关闭
  • 在SMTP握手阶段,客户端向SMTP服务器分别指定发信人和收信人的电子邮件地址。握手阶段完毕,SMTP服务器把客户端发出的邮件消息添加到发信队列中,通过TCP提供的可靠数据传输服务把该消息无错的传送到服务器。如果客户还有其他邮件消息需要发送到同一个服务器,就在同一个TCP连接重复上述过程;否则,指定TCP关闭该连接。
  • 连接和发送过程如下:

    1)建立TCP连接。 2)客户端发送HELO命令以标识发件人自己的身份,客户端发送MAIL命令。服务器以ok作为响应,表明准备接受。
    3)使用AUTH命令登录SMTP服务器。输入用户名和密码(注意用户名和密码都需要使用base64加密)。
    4)客户端发送RCPT命令,标识该电子邮件的计划接收人,可以有多个RCPT行。服务器以OK作为响应,表示愿意为收件人发送邮件。
    5)协商结束后,使用DATA命令发送。
    6)以“.”号表示结束,输入内容一起发送出去,结束此次发送,用QUIT命令退出。

命令/响应交互模式:

  • 命令: 按照ASCII码的表示方式,发送自解释命令
  • 响应: 用状态码和短语对每条命令进行回答

    二、SMTP与HTTP的对比

    1、相同点

  • HTTP和SMTP都用于从一台主机向另一台主机传输文件

    • HTTP从Web服务器向Web客户;
    • SMTP从一个邮件服务器向另一个邮件服务器;
  • 持续的HTTP和SMTP都使用持续连接

    2、不同点

  • HTTP主要是一个拉协议(pull protocol):即在方便的时候,某些人在Web服务器上装载信息,用户使用HTTP从该服务器拉取这些信息。特别是TCP连接是由想接收文件的机器发起的;SMTP主要是一个推协议(push protocol):即发送邮件服务器把文件推向接收邮件服务器,这个连接是由要发送该文件的机器发起的。特别是,这个TCP连接是由发送该文件的机器发起的

  • SMTP要求每一个报文(包括他们的体)使用7比特ASCII码格式。如果某报文包含了非7比特ASCII字符(如具有重音的法文字符)或二进制数据(如图形文件),则强制转化;HTTP没有这样的编码限制
  • HTTP把每个对象封装到它自己的HTTP响应报文中;SMTP把所有报文对象放在一个报文之中。

    三、邮件报文格式和IMME

  • RFC 5322规定文本消息格式标准:

    • 包括有头部行、空白行、消息体,其中头部行有To(必须)、From(必须)、Subject(非必须),消息体包括消息本身,消息体只能是 ASCII字符
  • 由于文本消息格式标准 ,只适合于发送普通ASCII文本,不能充分满足多媒体报文或非ASCII文本格式的报文的需求。为发送非ASCII码内容,发送方的用户代理必须在报文中使用附加的首部行,MIME(多用途因特网邮件扩展)是对RFC 822的扩展
  • 支持多媒体的两个关键MIME首部是Content-Type Content-Transfer-Encoding
    • Content-Type:首部行允许接收用户代理对报文采取适当的动作
    • Content-Transfer-Encoding:首部行提示接收用户代理该报文主体已经使用了ASCII编码,并指出了所用的编码类型。
  • 接收服务器一旦接收到具有RFC 822和MIME首部行的报文,就在该报文的顶部添加一个Received:首部行;该首部行定义了发送该报文的SMTP服务器的名称(from),接收该报文的SMTP服务器的名称(by),以及接收服务器接收到的时间。
  • 有时一个邮件有多个Receive行,这是因为有的邮件在发送方和接收方之间的路径要经过不止一个SMTP服务器转发。

    四、邮件访问协议

  • 在上述分析中,有一个疏漏的环节,那就是在Alice向Bob发送邮件的过程中,Bob是如何通过运行在他本地PC上的用户代理,获得位于某ISP的邮件服务器上的他的邮件呢?注意到Bob的用户代理不能使用SMTP来取回邮件,因为取邮件是一个拉操作,而SMTP是一个推协议。因此我们要引入邮件访问协议,包括第三版的邮局协议(Post Office Protocol—Version 3 , POP3)因特网邮件访问协议(Internet Mail Access Protocol , IMAP)以及HTTP

image.png

1、POP3

  • POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,是TCP/IP协议族中的一员(默认端口是110)。
  • 它被用户代理用来邮件服务器取得邮件。POP3采用的也是C/S通信模型,对应的RFC文档为RFC1939。
  • POP3支持电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的 。
  • POP3按照三个阶段工作: 
    • 特许:用户代理发送(以明文形式)用户名和口令以鉴别用户。
    • 事务处理:用户代理取回报文,同时对报文做删除标记、取消报文删除标记、以及获取邮件的统计信息
    • 更新:它出现在客户发出Quit命令之后,目的是结束POP3会话,这时会删除标记为删除的报文
  • 使用POP3用户代理通常被用户配置为“下载并删除”或者“下载并保留”方式。POP3用户代理发出的命令序列取决于用户代理程序被配置为这两种工作方式的哪一种
  • 在用户代理于邮件服务器之间的POP3会话期间,该POP3服务器保留了一些状态信息;特别是记录了哪些用户报文被标记为删除了。然而POP3服务器并不在POP3会话过程中携带状态信息。会话中不包括状态信息大大简化了POP3服务的实现

    2、IMAP

  • IMAP 全称是 Internet Mail Access Protocol,即互联网邮件访问协议,是一个应用层协议(端口是143)。用来从本地邮件客户端(Outlook Express、Foxmail、Mozilla Thunderbird等)访问远程服务器上的邮件。

  • 开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。
  • IMAP允许用户代理获取报文组件的命令,例:用户代理可以只读一个报文的报文首部,或只是一个多部分MIME报文的一部分。

    IMAP和POP3的区别

    IMAP像POP3那样提供了方便的邮件下载服务,让用户能进行离线阅读。IMAP和POP3是邮件访问最为普遍的Internet标准协议。不同的是:
    (1)IMAP提供Webmail与电子邮件客户端之间的双向通信,客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上(如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的)。而POP3在客户端的操作不会反馈到服务器上。
    (2)IMAP更好地支持了从多个不同设备中随时访问新邮件。
    (3)IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。
    (4)POP3需要下载未阅读的邮件,IMAP可以不用把所有的邮件全部下载,而是通过客户端直接对服务器上的邮件进行操作。所有通过IMAP传输的数据都会被加密,从而保证通信的安全性。
    (5)IMAP 整体上为用户带来更为便捷和可靠的体验。POP3 更易丢失邮件或多次下载相同的邮件。
    总之,IMAP 整体上为用户带来更为便捷和可靠的体验。POP3 更易丢失邮件或多次下载相同的邮件,但 IMAP 通过邮件客户端与webmail之间的双向同步功能很好地避免了这些问题。

    3、基于Web的电子邮件

  • 当用户用Web浏览器收发电子邮件时,用户代理就是普通的浏览器,用户和他远程邮箱之间的通信则通过HTTP进行;然而,Alice的邮件服务器在与其他的邮件服务器之间发送和接收邮件时,仍然使用的是SMTP。