Email协议基础知识

发表于:2007-07-02来源:作者:点击数: 标签:
1. Email系统的基本原理 [1]internet地址 (1)标准的internet地址 所有Internet的地址通用形式为: userid(用户标识)@domain(域名) 例:qinghua0000@sohu.com harley@fuzzball.ucsb.edu (2)域名与子域 用户标识不是唯一的,唯一所具备的条件呢就是用户
1. Email系统的基本原理
[1]internet地址
(1)标准的internet地址
所有Internet的地址通用形式为:
userid(用户标识)@domain(域名) 
例:qinghua0000@sohu.com
harley@fuzzball.ucsb.edu 
(2)域名与子域 
用户标识不是唯一的,唯一所具备的条件呢就是用户标识与域名的结合必须是唯一的,在同一个域中的用户标识不能相同。其中的域名包含若干子域。值得注意的是,一种具有两个子域的地址,通常要么这个机构很小,要么很大(像sohu.com)。sohu是拥有多台计算机的大机构;在这样的机构中,有一台计算机专用作与外部世界之间电子邮件的收发。该机构的系统管理员为每个人都安排有简单化的邮件地址。以便能够在sohu.com地址上收发邮件。
一般,术语“gateway”(网关)涉及的是两个不同系统之间的连接,假如我们有一个网关(gateway),网关起着内部网络与外部世界之间的连接作用。因网关有用户标识和本地地址表;当一个邮件到达时,网关就可以校查该表,并把该邮件发送给相应的本地计算机。
(3)最高级域
一般有两种形式的最高级域:一般称之为机构域,还有一种称之为地区域。
 类型
com 商业机构 (全称:commercialorganization)
edu 教育机构 (全称:educationalinstitution)
gov 政府部门 (全称:government)
int 国际性机构 (全称:internationalorganization) 
mil 军队 (全称:military)
net 网络机构 (全称:networhimgorganization)
org 非盈利机构 (全称:non-profitorganization)
表一、最高级域机构名属性对照表
 国家 
at 奥地利 (全称:Austria)
au 澳大利亚 (全称:Australia)
ca 加拿大 (全称:Canada)
ch 瑞士 (全称:Switzerland"ConfoederationHlvetia")
cn 中国 (全称:China)
de 德国 (全称:Genmark"Deutschland")
dk 丹麦 (全称:Denmark) 
es 西班牙 (全称:Spain"Espana")
fr 法国 (全称:Fance)
gr 希腊 (全称:Greece)
ie 爱尔兰共和国 (全称:Republic of Zreland)
jp 日本 (全称:Japan)
nz 新西兰 (全称:New zealand)
uk 英国 (全称:United Kingdow)
us 美国 (全称:United States)
(4)伪Internet地址
有许多机构希望与Internet相连接,但是没有时间或经费与Internet保持长期的连接。作为一个替代的方法,它们与附近的Internet点商定,让其作为它们的邮件代理。仅从这个地址,常常无法断定计算机是否真正与Internet相连接。如果要确切知道一台计算机是否与Internet连接,可使用host命令。
(5)IP地址与 host命令
可以在使用正规地址的任何地方使用IP地址。Internet的地址记录系统叫做域名系统或DNS。DNS是将域名地址与IP数字地址这两个版本来回转换的一种TCP/IP服务。
如果要测试 DNS,可以使用host命令。有以下两种格式:
host standard-address
host IP-address
如果你从一个标准地址入手:
host ucsd.edu
DNS将显示IP地址:
host 128.54.16.1
反之如果你从一个IP地址入手,DNS将显示标准地址。
只有Internet主机才有IP地址(仿真终端是没有的)。因此,可以使用host命令检查计算机是否与Internet直接连接。如使用host能测试出IP地址,说明该计算机是与Internet连接的。
如果指定的地址是未与Internet直接连接的计算机的。将看到:
host not found
host 命令并不适用于所有的计算机。如果你的系统没有host,请试一下nslookup或nstest。
(6)UUCP
所有Unix系统都有一个叫做UUCP的内置联网系统。UUCP是一组程序。名字UUXP来自这些程序中的一个程序,该UUCP程序将文件在Unix系统之间相互拷贝,因此这个名字的意思是“Unix到Unix拷贝”。
UUCP的功能不及TCP/IP强。例如,UUCP不能提供远程登录UUCP邮件程序比Internet慢,并更难用。但是UUCP有一个重要的优点,它是一个标准的Unix部分(适合于绝大多数系统),它通过拨号或电缆直接连接运行,既便宜又可靠。UUCP的作用是使Unix系统连接到一起,形成一个链。例如,假定你正在使用一台名为alpha的计算机,你的计算机就与另一台名为beta的计算机连接起来了,beta计算机与gamma计算机连接,gamma计算机再与delta计算机连接。
它提供了一种经济的方式在计算机之间远距离传送邮件。但是,有一个重要的缺点:由于许多UUCP连接是通过电话线,而且在某些预定的时间内实现的邮件投送可能需数小时,甚至好几天。将还种方式与Internet比较,在Internet中,连接是永久的,信息件递很迅速,常常在几秒钟内,一般在几分钟内就可以完成。
(7)UUCP地址和Bang路径
建立一个由名字依次排列组成的地址,名字之间用!符号分开。例如,下面是一个将上面提到的用户标识发送信息的邮件命令。
mailbeta!gamma!delta!murray
在Unix术语中,!符号的专门术语名字之一是bang。因此,一个指定多重名字的UUCP地址有时叫做bang路径(bangpath)。
(8)简化的UUCP地址
为了使得UUCP获取地址方便,采取了一个叫做UUCPmappingproject(UUCP图示方案)的措施。该方案定期出版数据“地图”,发送到许多关键UUCP计算机,当UUCP邮件到达这些计算机时,计算机可以查看这个图,确定使用的最佳路径。实质上这样可使你使用的UUCP地址与Internet地址相同,让该系统做这项工作。
因此,有时可能看见一种使用UUCP的最高级域的地址。例如,你可以用以下地址发送邮件:
albert@gendeau.uucp
当使用这样一个地址时,就等于向邮件路由软件发出了一个信号,让它找出UUCP图示数据中的名字和指出最佳使用路径。
[2]INTERNET邮件系统
(1)intrenet电子邮件系统基础
<1> 传送受理程序
邮件系统是可输送各类信息的综合服务系统:像文献、印刷品、计算机程序等。而唯一所需的是用ASCII字码(即可用键盘录入的数据)存贮数据。 在有些情况下,也可传送非文本资料,如图像或录音。
SMTP,表示简易邮件传送协议(SimpleMailTransferProtocol),它是TCP/IP系列协议的一部分。它解释邮件的格式和说明怎样处理投递的邮件。每一台Internet计算机在运行邮件程序时,可自动地确保邮件以标准格式选址和传送。这个程序称为传送受理程序(transport agent),它按照SMTP协议工作并将你的邮件联系向外界发送。
在大多数系统中,传送受理程序在“后台”中运行,随时对可能收到的任何要求作出反应。在Unix系统术语中,这个程序称之为“守护神”,即智能程序(daemon)(是的,完全可以这样称呼)。
每一个Unix系统都有各种隐放在“后台”的智能程序无声地为你服务。从理论上讲,不论你的系统使用的是什么传送受理程序,只要它能用SMTP收发邮件文件就行。大多数Unix系统使用一种叫“传送邮件(sendmail)”的智能程序。
<2>电子邮件系统接口(Interface)
a. 用户邮件程序: 做为一个用户,你不会直接与你系统中的传送受理程序发生联系;只是在机器内部通过SMTP运行收发邮件,你使用的这种邮件程序叫作用户邮件程序. 最广泛使用的用户邮件程序是Unix邮件程序。BSD用户邮件程序称为mailx,SystemV用户邮件程序称为Mail。
b.Unix基础邮件程序
通用的有ELM(全屏) 、PINE(菜单驱动)、MH(文件操作者)、MUSH (Zmail)、RMAIL(Emacs是一个建立在功能强大的文本编辑程序上的完整工作环境。在Emacs环境中,你不仅能编辑文本,还能编制扩展程序,阅读Usenet(用户网)文章,操作Rmail收发邮件)
C.邮件信头编写
标准格式的邮件是由两部分组成:“信头”和“主体”。信头包括在文件开始处的信息行。主体实际上是你所表达的信件内容。
下面是一个样本文件。信头格式在操作系统中也许有变动,但主要内容不变。
Fromrick@tsi.com WedMar3114:47:021993(From+地址+时间)
Received:fromhub.ucsb.edu by engineering.ucsb.edu
id AA15594toharley: Wed, 31Mar9313:19: 25PST
Received:from fuzzball(fuzzball.ucsb.edu)byhub.ucsb.edu;
id AA11868
Sendmail4.1/UCSB2.0sun
Wed.3lNar9313:23:58SPST for harley@cs.ucsb.edu
Received:by FUZZBALL(5.57/UCSB-V2)
id AA07200:Wed,31Mar9313:17:40PST
Received:fromtsi.combyucsd.edu;id AA03169
Send mail 5.67/UCSD-2.2 sunvia SMTP
Wed.31 Mar 9313:23:520800 for harley@fuzzball.ucsb.edu
Received:bysdclearcase/" target="_blank" >cc12.UCSD.EDU(4.l/UCSDGENERIC.3)
id AA25582 to harley@fuzzball.ucsb.edu;
Wed.31 Mar 9313:23:51PST
Date:Wed.31 Mar 9313:23:51PST
From:rick@tsi.com(RickStout)
MessageId:9303311840.AA067ll@tsi
X.Mailer:MailUser@#s Shell(7.1.27/11/90)
To:harley@fuzball.ucsb.edu
Subject:this is the subject
Cc:ad die@nipper.com kim@nipper.com
Status:Ro
Harley:I have setup an appoint ment for next Thursday afternoon.
PIease let me know if you can attend.
...Rick
来源: rick@tsi.com1993年3月31日星期三14点47分2秒
接收: from hub.ucsb.edu by engineering.ucsb.edu
id AA15594 to harley:93年3月31日星期三13:19:25PST
接收: from fuzzball(fuzzball.ucsb.edu)by hub.ucsb.edu
id AA11868
传送邮件4.1/UCSB-2.Osun
93年3月31日早期三13:23:58PST到harley@cs.ucsb.edu
接收: 由fuzzball(5.57/UCSB-v2)
id AA07200; 93年3月31日星期三,时间13:17:40PST
接收:来自tsi.com by ucsd.edu;idAA03169
传送邮件通过SMTP5.67/UCSD-2.2sun
93年3月31日星期三时间13:25:520800到harley@fuzzball.ucsb.edu
接收:由sdcc12.UCSD.EDU(4.1/UCSDGENERIC.3)
发送id AA25582至harley@fuzzball.ucsb.edu;
93年3月31日星期三;13:23:51PST
日期:93年3月31日星湖三13:23:51PST
来源: rick@tsi.com(Rick Stout)
文件标识符:93O3311840.AA06711@tsi
X-邮件者: Mail User@#s Shell(7.1.27/11/90)
至: harley@fuzzball.ucsb.edu
标题:具体题目
副本(Cc): addie@nipper.com kim@nipper.com
状态:RO
Harley:在下星期四下午,我安排了一次会见,请告知我你是否参加。
Rick
以上例子说明,在信头中的第一行总是单词“ From”,该行表明发信人的地址。在我们这个例子中,文件是从rick@tsi.com发来的。其它行即不必以同样的顺序显示。这取决于收发邮件系统是怎样构成的,也取决于在你特别的邮件程序设置的是什么选择。在最初的“From”行后有十四行包括五条Received说明的技术信息。这些字行表明该文件所取的路径、时间、日期和操作过程中每一步应使用什么程序。邮件程序常显示一个“状态”行。可是,几乎没有人知道不同的设计表示什么,这一般查不到。
d.用MIME传送二进制数据(多功能Internet邮件扩展程序)
为了收发二进制数据,你必须具有用来支持MIME的一个用户邮件程序(邮件程序);MIME标准现已成为Internet电子邮件的主流,我们现在最常使用的电子邮件软件Eudora、Netscap e Mail、Internet Mail就是采用MIME方式。MIME定义两种编码万式:Base64与QP(Quote-Printable)。QP的规则是对于资料中的7位无须重复编码,仅将8位的数据转成7位。QP编码适用于ASCII码的及字内容,例如我们的中文文件。而Base64 的编码规则是将整个文件重新编码成7位,通常用于传送二进制文件。编码的方式不同会影响编码之后的文件大小。而具有MIME功能的E-mail软件大都能自动判别你的邮件是采用何种编码,然后自动选择用QP或Base64来解码。
[3]基本的网络协议
(1)SMTP
下图显示了SMTP的基本模型。发送方建立起与接收方SMTP的通信。在传输邮件之前,两个SMTP实体可以交换口令或其他鉴别信号,然后发送方发出一个特殊命令,称为MAIL,该命令给出了发送方的标识及一些有关邮件交换的其他信息。接收方必须返回一个对MAIL命令的确认。在SMTP中,该确认可写为250,在另一些文档中,该确认为250 OK。不管是哪一种格式,确认表示所要求的邮件操作完成了。 
图一、 SMTP模型
邮件传输过程的下一步是传输RCPT命令以标识报文的目的端,接收方仍必须给出对该命令的一个确认。
第三步是发送DATA命令。发送方SMTP发出该命令提醒接收方一个报文就要到达了。在发送了该命分之后,发送方SMTP便一行接一行地发送数据,直到发送方发出了一个特殊的控制字符序列,表示报文结束了。这时,服务器使用QUIT命令终止该过程。
(1.1)地址段格式
发送方SMTP使用了一个标准的送地址和接收地址格式,它们的形式如下:
local-part@domain-name
因此SMTP名字遵从了域名系统(DNS)的概念,一些系统使用一个服务器,将该名字映射成IP地址。实际应用中,这种格式可能出现为:
Jones@beta.aus.edu
其中本地用户名为Jones,beta.aus.edu是Jones的域标识符。Iocal-part@domain-name还可能采取其他形式以表示如下含义:
² 一个直接的连接(use@host)
² 邮件接收方位于一台非SMTP主机,通过一个邮件网关接收邮件(user%remote-host@gateway-host)
² 多台主机间的应答(@host-b@host-c@hostd)
(2)POP3
首先,P O P 3服务器启动P O P 3服务,并监听110端口。当客户机要仅用P O P 3服务时,它先与 POP3服务器建立一条TCP连接。若连接成功建立,POP3服务器向客户端发送一条欢迎消息,然后客户机与POP3服务器之间就可以进入命令交互和响应状态,直到连接关闭或异常中断。
每个POP3会话总是处于一系列的状态变化中。一旦客户机与POP3服务器之间的TCP连接建立起来并且POP3服务器的欢迎言息传到客户端。POP3会话过程就进入认证状态。在该状态下,客户机必须进行身份验证。一旦验证通过,并且POP3服务器获得足够的资源打开用户的邮箱。这时POP3会话过程进入“命令交互状态”。在“命令交互状态”下,客户端可以向POP3服务器提出各科服务请求,由POP3服务器完成该服务并返回成功或失败的响应信息。当客户端发出“QUIT’命令后,POP3会话过程进入“更新状态”。在“更新状态”下,POP3服务器释放在“命令交互状态”下获得的资源,更新用户邮箱,然后关闭TCP连接。
(2.1)POP3的基本命令
² USER
这个命令以用户的帐号名称作为参数。
² PASS
这个命令以用户的口令作为参数,缺省情况下用户的口令将以明文在网络上传输。
² STAT
该命令无参数,仅用于“命令交互状态”。
获取当前用户邮件总数和邮件总大小。POP3服务器返回一个成功的响应,以“+OK”开头,后跟一个空格字符,然后是当前用户邮箱内邮件的总数,之后又是一个空格字符,最后是用户邮件的总大小(BYTES)。
C: STAT
S: +OK 2320
² LIST
该命令可以没有参数也可以有一个参数,该参数代表邮件的序
号,但该序号不能是已删除邮件。
该命令仅用于“命令交互状态”。
C: LIST
S: +OK 2 messages( 320 octets)
S: 1 120
S: 2 200
S: .
......
C: LIST 2
S: +OK 2 200
......
C: LIST 3
S: -ERR no such mesage, only 2 message in maildrop.
² RETR
该命令必须带有一个邮件序号,该邮件序号不能是已删除邮件。
该命令仅用于“命令交互状态”。
若POP3服务器返回一个成功响应,则随后的响应属于多行响应。在首行“+OK”响应之后,POP3服务器把对应于该邮件序号的邮件发送到客户端。 
C: RETR 1
S: +OK 120 octets
S: < The PoP3 server sends the entire message here>
C: RETR 5
S: -ERR no such message.
² DELE
该命令必须带一个邮件序号参数。仅用于“命令交互状态”
POP3服务器把该邮件标志为“已删除”,之后,任何对该邮件的操作都将返回错误。POP3服务器并不实际删除该邮件,除非POP3会话进“更新状态”。
C: DELE 1
S: +OK message 1 deleted 
......
C: DELE 1
S: -ERR message 2 already deleted
² NOOP
该命令不待参数,实际上也不做任何事情。仅用于“命令交互状态”。
C: NOOP
S: +OK
² RSET
该命今不带参数。仅用于“命令交互状态”。
POP3服务器将所有已被标志为删除的邮件的删除标志取消,并返回成功响应。
C: RSET
S: +OK maildrop has 2 messages ( 320 octets)
² QUIT
该命令无参数,仅用于“命令交互状态”。
POP3服务器把所有已标志为删除的邮件删除,并释放在“命令交互状态”中获得的资源,然后关闭TCP连接,POP3会话结束。
2.SMTP
1、概述
SMTP被用来在因特网上传递电子邮件。文件RFC821规定了该协议的所有细节。
协议的原理很简单。无非是一个客户端计算机向服务器发送命令,然后服务器向客户端计算机返回一些信息。客户端发送的命令以及服务器的回应都是字符串。
首先要与邮件服务器连接,服务器将返回文本。该文本包含一个三位数的代码及描述,例如:
220-ns.cinfo.ru Sendmail 8.6.12/8.6.9 ready at Wed, 22 Apr 1998 22:54:41 +0300
220 ESMTP spoken here
这些描述可能会因服务器而异。只须要知道代码所代表的意思就行了。代码220表示成功建立连接,服务器等待你的第一个命令。
向服务器传递的第一个命令是HELO. 该命令包含一个参数,即你的邮箱名。
HELO oleg
注意: 在RFC821中,HELO是一个可选择性命令,如果服务器不要求该命令的话,你可以把它忽略掉。
如果命令成功,服务器会返回一个代码为250的回应。
下一步用MAIL FROM命令告诉服务器你想发一封邮件。该命令以发信人的邮件地址为参数。
MAIL FROM: oleg@vbip.com
发完命令后,如果服务器返回一个代码为250回应,你就可以向服务器发送RCPT TO命令了。
RCPT TO命令以收信人地址为参数,是告诉服务器你想将邮件发到收信人地址处。
RCPT TO: somebody@domain.com
如果你想将邮件发给多个收件人的话。你需要多次使用RCPT TO命令,对每个命令,服务器都会返回代码为250的回应。
现在可以向服务器发送邮件正文了。
用DATA命令告诉服务器以下的内容为邮件正文。在你从服务器收到代码为354的回应后,你就可以发送邮件正文了。邮件按行发送,每行邮件以一个无回车的换行符结束,只须按回车键就行了。下面是一个例子:
Subject: My first e-mail message.
First line of a message.
Second line.
注意上面最后一行的最后一个字符是一个小数点。这是正文结束的标志。 服务器收到这个标志后,就会立即返回一个代码为250的回应以及该邮件的唯一ID号。
250 WAA10568 Message accepted for delivery
任务完成了,可以继续发送下封邮件,也可以断开同服务器的连接。如果要断开同服务器的连接就用QUIT命令。在这种情况下,服务器会返回一个代码为221的回应并断开连接。
QUIT
221 ns.cinfo.ru closing connection 
2、工作机制
SMTP设计基于以下通信模型:针对用户的邮件请求,发送SMTP建立与接收SMTP之间建立一个双向传送通道。接收SMTP可以是最终接收者也可以是中间传送者。SMTP命令由发送SMTP发出,由接收SMTP接收,而应答则反方面传送。
  一旦传送通道建立,SMTP发送者发送MAIL命令指明邮件发送者。如果SMTP接收者可以接收邮件则返回OK应答。SMTP发送者再发出RCPT命令确认邮件是否能接收到。如果SMTP接收者接收,则返回OK应答;如果不能接收到,则发出拒绝接收应答(但不中止整个邮件操作),双方将如此重复多次。当接收者收到全部邮件后会接收到特别的序列,如果接收者成功处理了邮件,则返回OK应答
SMTP提供传送邮件的机制,如果接收方与发送方连接在同一个传送服务下时,邮件可以直接由发送方主机传送到接收方主机;或者,当两者不在同一个传送服务下时,通过中继SMTP服务器传送。为了能够对SMTP服务器提供中继能力,它必须拥有最终目的主机地址和邮箱名称。
  MAIL命令参数是回复路径,它指定邮件从何处来;而RCPT命令的参数是转发路径的,它指定邮件向何处去。向前路径是源路径,而回复路径是返回路径(它用于发生错误时返回邮件)。 
3、基本命令(所有的命令都是四个字母组成)
发送邮件操作涉及到不同的数据对象,它们由不同的参数相互连接。回复路径就是MAIL命令的参数,而转发路径则是RCPT命令的参数,邮件日期是DATA命令的参数。这些参数或者数据对象必须跟在命令后。这种模式也就要求有不同的缓冲区来存储这些对象,也就是说,有一个回复路径缓冲区,一个转发路径缓冲区,一个邮件内容缓冲区。特定的命令产生自己的缓冲区,或使一个或多个缓冲的内容被清除
(0)HELO(HELLO)
HELO〈SP〉〈domain〉〈CRLF>
通知服务器客户的身份。 
  此命令用于向接收SMTP确认发送SMTP。参数域包括发送SMTP的主机名。接收SMTP通过连接确认命令来向发送SMTP确认接收SMTP。引命令和OK响应确认发送和接收SMTP进入了初始状态,也就是说,没有操作正在执行,所有状态表和缓冲区已经被子清除。
(1)MAIL
MAIL FROM: 
此命令用于开始将邮件发送到一个多个邮箱中。参数域包括回复路径。返回路径中包括了可选的主机和发送者邮箱列表。当有主机列表时,它是一个回复路径源,它说明此邮箱是由在表中的主机一一传递发送(第一个主机是最后一个接收到此邮件的主机)过来的。此表也有作向发送者返回非传递信号的源路径。因为每个传递主机地址都被加在此表起始处,它就必须使用发送IPCE而不是接收IPCE(如果它们不是一个IPCE的话)清楚的名称。一些出错信息的回复路径可能就是空的。
  此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,并且将此命令的回复路径信息插入到回复路径缓冲区中。
(2)RCPT(recipient)
RCPT TO: 
  此命令用于确定邮件内容的唯一接收者;多个接收者将由多个此命令指定。转发路径中包括一个可选的主机和一个必须的目的邮箱。
此命令给出向前路径标识接收者,如果命令被接收,接收方返回一个250 OK应答,并存储向前路径。如果接收者未知,接收方会返回一个550 Failure应答。此过程可能会重复若干次。
  不仅包括邮件,它是主机和目的邮箱的路由表,在其中的第一个主机就是接收命令的主机。 
(3)DATA
DATA 
  如果命令被接收,接收方返回一个354 Intermediate应答,并认定以下的各行都是信件内容。当信件结尾收到并存储后,接收者发送一个250 OK应答。因为邮件是在传送通道上发送,因此必须指明邮件内容结尾,以便应答对话可以重新开始。SMTP通过在最后一行仅发送一个句号来表示邮件内容的结束,在接收方,一个对用户透明的过程将此符号过滤掉,以不影响正常的数据。
  注意:邮件内容包括如下提示:Date, Subject, To, Cc, From。
  邮件内容指示符确认邮件操作并告知接收者可以存储和再发送数据了。如果此命令被接收,接收方返回一个250 OK应答。DATA命令仅在邮件操作未完成或源无效的情况下失败。
(4)RSET
RSET
  此命令指示当送邮件操作将被放弃。任何保存的发送者,接收者和邮件内容应该被抛弃,所有缓冲区和状态表应该被清除,接收方必须返回OK应答。
(5)SEND 
SENDFROM:〈reverse-path>
  此命令用于开始一个发送命令,将邮件发送到一个或多个终端上。参数域包括了一个回复路径,此命令如果成功就将邮件发送到终端上了。 
  回复路径包括一个可选的主机列表和发送者邮箱。当出现主机列表时,表示这是一个传送路径,邮件就是经过这个路径上的每个主机发送到这里的(列表上第一个主机是最后经手的主机)。此表用于返回非传递信号到发送者。因为每个传递主机地址都被加在此表起始处,它就必须使用发送IPCE而不是接收IPCE(如果它们不是一个IPCE的话)清楚的名称。一些出错信息的回复路径可能就是空的。
  此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,并且将此命令的回复路径信息插入到回复路径缓冲区中。
(6)SOML(send or mail)
SOMLFROM:〈reverse-path>
此命令用于开始一个邮件操作将邮件内容传送到一个或多个终端上,或者传送到邮箱中。对于每个接收者,如果接收者终端打开,邮件内容将被传送到接收者的终端上,否则就送到接收者的邮箱中。参数域包括回复路径,如果成功地将信息送到终端或邮箱中此命令成功。
  回复路径包括一个可选的主机列表和发送者邮箱。当出现主机列表时,表示这是一个传送路径,邮件就是经过这个路径上的每个主机发送到这里的(列表上第一个主机是最后经手的主机)。
  此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,并且将此命令的回复路径信息插入到回复路径缓冲区中。
(7)SAML(send and mail)
SAMLFROM:〈reverse-path>
此命令用于开始一个邮件操作将邮件内容传送到一个或多个终端上,并传送到邮箱中。如果接收者终端打开,邮件内容将被传送到接收者的终端上和接收者的邮箱中。参数域包括回复路径,如果成功地将信息送到邮箱中此命令成功。
  回复路径包括一个可选的主机列表和发送者邮箱。当出现主机列表时,表示这是一个传送路径,邮件就是经过这个路径上的每个主机发送到这里的(列表上第一个主机是最后经手的主机)。
  此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,并且将此命令的回复路径信息插入到回复路径缓冲区中。
(8)VRFY(verify vt.证实,查证;证明)
VRFY〈string〉
此命令要求接收者确认参数是一个用户。如果这是(已经知道的)用户名,返回用户的全名和指定的邮箱。此命令对回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区没有影响。
(9)EXPN(expand vt.扩大;使膨胀)
EXPN〈string〉
此命令要求接收者确认参数指定了一个邮件发送列表,如果是一个邮件发送列表,就返回表中的成员。如果这是(已经知道的)用户名,返回用户的全名和指定的邮箱。此命令对回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区没有影响。
(10)NOOP
NOOP
  此命令不影响任何参数和已经发出的命令。它只是说明没有任何操作而不是说明接收者发送了一个OK应答。此命令对回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区没有影响。 
(11)QUIT
QUIT 
  此命令指示接收方必须发送OK应答然后关闭传送信道。接收方在接到QUIT命令并做出响应之前不应该关闭通信信道。发送方在发送QUIT命令和接收到响应之前也不应该关闭信道。即使出错,也不应该关闭信道。如果连接被提前关闭,接收方应该象接收到RSET命令一样,取消所有等待的操作,但不恢复原先已经做过的操作。而发送方应该象接收到暂时错误(4XX)一样假定命令和操作仍在支持之中。 
4、 SMTP响应
  对SMTP命令的响应是多样的,它确定了在邮件传输过程中请求和处理的同步,也保证了发送SMTP知道接收SMTP的状态。每个命令必须有且只有一个响应。
  SMTP响应由三位数字组成,其后跟一些文本。数字帮助决定下一个应该进入的状态,而文本对人是有意义的。三位的响应已经包括了足够的信息,不用再阅读文本,文本可以直接抛弃或者传递给用户。特别的是,文本是与接收和环境相关的,所以每次接收到的文本可能不同。在附录E中可以看到全部的响应码。正规的情况下,响应由下面序列构成:三位的数字,,一行文本和一个,或者也可以是一个多行响应。只有EXPN和HELP命令可以导致多行应答,然而,对所有命令,多行响应都是允许的。
三位的应答码每一位都有特定的意义。每一位应答表示是否是成功的,失败的或未完成的。通过这一位,不复杂的SMTP发送就可以决定下一步的操作,如果发送方希望大概了解究竟出了什么问题,它可以检测第二位,而第三位则保存了最后更完整的信息。也就是说,从第一位到第三位,接收方可以一步比一步精确地确定接收方的状态。
(1)对于第一位有五种可能的表示代表不同的意义:
  1yz 部分完成应答
  命令被接受,但是要求的操作被中止,原因在应答码中。发送方应该再次发送另一命令指明是否继续操作,或者放弃操作。
  2yz 全部完成应答
  要求的操作已经完成,可以开始另一个新的请求。
  3yz 需要近一步信息的部分完成应答
  命令被接受,但是要求的操作被中止,需要接收进一步的信息。发送方应该发送另一条命令指明进一步的信息。
  4yz 暂时未完成应答
  命令未被接受,要求的操作也未执行,但是发生错误的状态是暂时的,可以再一次请求操作。发送者应该返回命令序列的开始命令(如果有的话)。很难解释这个暂时的意义,特别对于两个不同的站点来说。区别应答是属于些类还是下一类的方法是:如果能够不加任何改变地重复的再一次发送命令,就是本类的,如果不是,就是下一类(5yz)的。
  5yz 永久未完成应答
  命令未被接受,要求的操作未完成。发送对命令的重复不起作用。即使一些出错条件已经改变,但是用户已经不希望重试,而希望在未来的某个时间再进行操作
(2)应答的第二位的意义有以下几类:
x0z 语法:此类型的应答是针对以下情况的:语法错误;符合语法但命令不存在功能;未完成或冗余的命令。
x1z 信息:此类型的应答是用于请求信息的,如状态或帮助信息。
x2z 连接:此类型的应答是关于传输信道的。
x3z 未使用。
x4z 未使用。
x5z 邮件系统:此类型的应答指明接收方邮件系统关于请求传送或其它操作的状态的。
(3)第三位给出了更详细的说明。
3.POP3
POP的全称是 Post Office Protocol ,即邮局协议,用于电子邮件的接收,现在常用的是第三版 ,简称为 POP3。通过POP协议,客户机登录到服务器上后,可以对自己的邮件进行删除,或是下载到本地,下载后,电子邮件客户软件就可以在本地对邮件进行修改、删除等。
  POP服务器一般使用的是TCP的110号端口,
  以下对几个常用的POP3命令作一个简单的介绍 :
  命令    参数    状态    描述
  ------------------------------------------
  USER    username  认可    此命令与下面的pass命令若成功,将导致状态转换
  PASS    password  认可
  APOP    Name,Digest 认可    Digest是MD5消息摘要
  ------------------------------------------
  STAT    None    处理    请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数
  UIDL    [Msg#]   处理    返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的
  LIST    [Msg#]   处理    返回邮件数量和每个邮件的大小
  RETR    [Msg#]   处理    返回由参数标识的邮件的全部文本
  DELE    [Msg#]   处理    服务器将由参数标识的邮件标记为删除,由quit命令执行
  RSET    None    处理    服务器将重置所有标记为删除的邮件,用于撤消DELE命令
  TOP    [Msg#]    处理    服务器将返回由参数标识的邮件前n行内容,n必须是正整数
  NOOP    None    处理    服务器返回一个肯定的响应,不做任何操作。
  ------------------------------------------
QUIT    None    更新 退出
POP3协议的基本操作:
1. 服务器通过侦听tcp端口110开始POP3服务。
2. 当客户需要服务时,它与服务器建立连接,连接建立后,POP3服务器发送确认消息
3. 客户与服务器相互交互命令和响应,持续到连接终止。
POP3命令由一个命令和一些参数组成
POP3响应由一个状态码和一个可能跟有附加信息的命令组成。
两种状态码:确定(+OK)和错误(-ERR)
POP3在生命周期中经历的状态:“确认”—“操作”—“更新”
基础的POP3命令有:USER name 在确认状态下有效 可选的命令:APOP name digest
PASS string
QUIT 
STAT 在操作状态下有效 TOP msg n
LIST [msg] UIDL [msg]
RETR msg 
DELE msg
NOOP
REST
QUIT 在更新状态下有效
POP3响应有:+OK -ERR
注意:除了STAT,LIST,UIDLD的响应外,其他命令的响应都为+OK和-ERR。响应后的所有文件将被客户略去。

原文转自:http://www.ltesting.net