6.2.7 简单邮件传送协议SMTP
我们从一个SMTP发送的示例来了解简单邮件传送协议SMTP。
例:在主机Alpha.ARPA上的Smith发送邮件给在主机Beta.ARPA 的Jones.Green和Brown的过程。这里我们假定主机Alpha直接联系主机Beta。
Sender-SMTP和Receiver-SMTP建立了传输信道后
如图
- 首先发送MAIL命令用以说明发信人
- Receiver返回OK
- Sender针对每个收信人发送RCPT来询问可否接收邮件
- Receiver两次返回OK表示收信人的邮箱是有效的,一次则返回查无此人。
- Sender最后发送DATA命令
- Receiver返回开始邮件输入命令
- Sender开始发送邮件数据,数据以两个回车换行以及中间一个点作为邮件的结束标记( .)。
- Receiver返回OK,至此邮件就存入了Jones、Green和Brown的邮箱。而Green因为在主机上没有邮箱所以就收不到邮件了。
一、SMTP命令
SMTP(RFC 821)规定了14条命令和21中应答信息。每条命令用4个字母组成,而每一种应答信息一般只有一行信息,由一个3位数字的代码开始,后面附上简单的文字说明。
如图
此外SMTP服务扩展RFC 2554(1999)中增加了用于认证的EHLO和AUTH命令。
二、SMTP 通信的三个阶段
- TCP连接建立:连接建立是采用三次握手,在发送主机的SMTP客户和接收主机的SMTP服务器之间建立一个TCP连接。
- 邮件传送
- TCP连接释放:邮件发送完毕后,SMTP应释放TCP连接。
前面我们对邮件传送的主要过程已经了解,下面我们通过一个具体的示例了解一下用户代理和邮件服务器之间完整的邮件传送过程。
例用户使用foxmail发送一个邮件到QQ邮箱,用户代理和邮件服务器之间的邮件传送过程如下。
显然示例中Sender-SMTP是Foxmail,而em.njupt.edu.cn是Receiver-SMTP,在TCP连接建立之后开始邮件的发送过程。
- Receiver首先发来220应答码,表示邮件服务器已经准备好了。
- Sender标识身份,发送用户名和密码进行用户身份认证
- Sender发送邮件的发信人和收信人
- Receiver确认
- Sender发送DATA命令启动邮件内容的发送
- 结束后Receiver确认
- 最后Sender发送quit命令
- Receiver以221 Bye作为响应
三、SMTP缺点
SMTP(1982年RFC 821,2001年RFC 2821)有以下缺点
- RFC 822指定US-ASCII邮件首部有关的细节,邮件内容或邮件主题也只能是未加修改的US-ASCII文本;
- SMTP仅限于传送7位US-ASCII码数据,许多其他非英语国家的文字(如中文、俄文、甚至带重音符号的法文或德文)无法直接传送,非文本也无法传送;SMTP服务器会拒绝一行(包括尾部的CRLF行分隔符)超过1000个字符的邮件。
- MIME的意图是继续使用目前的邮件格式[RFC 822],但增加了邮件主体的结构,并定义了非ASCII码数据的编码规则。
- MIME实际上增加了SMTP的功能,并没有改动SMTP或取代它。
- MIME重新定义了邮件,支持文本邮件主体,使用除ASCII码之外的字符集,支持可扩展的一组不同格式的非文本邮件主体,支持多部分邮件主体,支持文本首部信息使用除ASCII码之外的字符集。
四、MIME和SMTP的关系
如图
用户发送包含非ASCII码的邮件必须使用MIME定义的邮件格式,所有的非ASCII码都会被编码为ASCII码,邮件的发送仍然使用SMTP协议,使用MIME用户可以发送包含文本图片等多媒体信息及附件的邮件,MIME标准在RFC 822邮件格式基础上扩展了一些MIME邮件首部字段。
五、邮件读取协议
- 邮局协议POP(Post Office Protocol)是一个非常简单、但功能有限的邮件读取协议,现在使用的是它的第三个版本POP3(RFC1939)。
- POP也使用C/S工作方式。在接收邮件的用户PC机种必须运行POP客户程序,而在用户所连接的邮件服务器中则运行POP Server。
- POP3协议的特点是只要用户从POP3服务器读取了邮件,服务器就将该邮件删除。因此POP3客户程序在读取邮件后立即将邮件复制到自己的计算机中。
- IMAP4(INTERNET MESSAGE ACCESS PROTOCOL)协议(1996年RFC2060,2003年RFC3501)弥补了POP3协议的很多缺陷。
- IMAP4也使用C/S工作方式。在收邮件的用户PC机种必须运行IMAP4客户程序,而在用户所连接的邮件服务器中则运行IMAP Server。
- IMAP4是一个练级协议,用户在PC机上可操纵在服务器上的邮箱。当用户用客户程序打开服务器上的邮箱时,用户可以看到邮箱的首部,当用户打开指定的邮件时,该邮件才传到PC上。
- 与POP3不同的是,用户从IMAP4服务器读取邮件后,不会将该邮件删除,除非用户发出了删除命令。