
Email协议基础知识
关键词:MailjavaMail
1.Email系统的基本原理
[1]internet地址
(1)标准的internet地址
所有Internet的地址通用形式为:
urid(用户标识)@domain(域名)
例:qinghua0000@
harley@
(2)域名与子域
用户标识不是唯一的,唯一所具备的条件呢就是用户标识与域名的结合必须是唯一的,在
同一个域中的用户标识不能相同。其中的域名包含若干子域。值得注意的是,一种具有两
个子域的地址,通常要么这个机构很小,要么很大(像)。sohu是拥有多台计算
机的大机构;在这样的机构中,有一台计算机专用作与外部世界之间电子邮件的收发。该
机构的系统管理员为每个人都安排有简单化的邮件地址。以便能够在地址上收
发邮件。
一般,术语“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爱尔兰共和国(全称:RepublicofZreland)
jp日本(全称:Japan)
nz新西兰(全称:Newzealand)
uk英国(全称:UnitedKingdow)
us美国(全称:UnitedStates)
(4)伪Internet地址
有许多机构希望与Internet相连接,但是没有时间或经费与Internet保持长期的连接。作为
一个替代的方法,它们与附近的Internet点商定,让其作为它们的邮件代理。仅从这个地
址,常常无法断定计算机是否真正与Internet相连接。如果要确切知道一台计算机是否与
Internet连接,可使用host命令。
(5)IP地址与host命令
可以在使用正规地址的任何地方使用IP地址。Internet的地址记录系统叫做域名系统或
DNS。DNS是将域名地址与IP数字地址这两个版本来回转换的一种TCP/IP服务。
如果要测试DNS,可以使用host命令。有以下两种格式:
hoststandard-address
hostIP-address
如果你从一个标准地址入手:
DNS将显示IP地址:
host128.54.16.1
反之如果你从一个IP地址入手,DNS将显示标准地址。
只有Internet主机才有IP地址(仿真终端是没有的)。因此,可以使用host命令检查计算
机是否与Internet直接连接。如使用host能测试出IP地址,说明该计算机是与Internet
连接的。
如果指定的地址是未与Internet直接连接的计算机的。将看到:
hostnotfound
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@
当使用这样一个地址时,就等于向邮件路由软件发出了一个信号,让它找出UUCP图示数
据中的名字和指出最佳使用路径。
[2]INTERNET邮件系统
(1)intrenet电子邮件系统基础
<1>传送受理程序
邮件系统是可输送各类信息的综合服务系统:像文献、印刷品、计算机程序等。而唯一所
需的是用ASCII字码(即可用键盘录入的数据)存贮数据。在有些情况下,也可传送非
文本资料,如图像或录音。
SMTP,表示简易邮件传送协议(SimpleMailTransferProtocol),它是TCP/IP系列协议
的一部分。它解释邮件的格式和说明怎样处理投递的邮件。每一台Internet计算机在运行
邮件程序时,可自动地确保邮件以标准格式选址和传送。这个程序称为传送受理程序
(transportagent),它按照SMTP协议工作并将你的邮件联系向外界发送。
在大多数系统中,传送受理程序在“后台”中运行,随时对可能收到的任何要求作出反应。
在Unix系统术语中,这个程序称之为“守护神”,即智能程序(daemon)(是的,完全可以
这样称呼)。
每一个Unix系统都有各种隐放在“后台”的智能程序无声地为你服务。从理论上讲,不论
你的系统使用的是什么传送受理程序,只要它能用SMTP收发邮件文件就行。大多数Unix
系统使用一种叫“传送邮件(ndmail)”的智能程序。
<2>电子邮件系统接口(Interface)
a.用户邮件程序:做为一个用户,你不会直接与你系统中的传送受理程序发生联系;只是
在机器内部通过SMTP运行收发邮件,你使用的这种邮件程序叫作用户邮件程序.最广泛
使用的用户邮件程序是Unix邮件程序。BSD用户邮件程序称为mailx,SystemV用户邮件
程序称为Mail。
基础邮件程序
通用的有ELM(全屏)、PINE(菜单驱动)、MH(文件操作者)、MUSH(Zmail)、RMAIL
(Emacs是一个建立在功能强大的文本编辑程序上的完整工作环境。在Emacs环境中,你
不仅能编辑文本,还能编制扩展程序,阅读Unet(用户网)文章,操作Rmail收发邮件)
C.邮件信头编写
标准格式的邮件是由两部分组成:“信头”和“主体”。信头包括在文件开始处的信息行。主
体实际上是你所表达的信件内容。
下面是一个样本文件。信头格式在操作系统中也许有变动,但主要内容不变。
Fromrick@Mar3114:47:021993(From+地址+时间)
Received:
idAA15594toharley:Wed,31Mar9313:19:25PST
Received:fromfuzzball();
idAA11868
Sendmail4.1/UCSB2.0sun
Wed.3lNar9313:23:58SPSTforharley@
Received:byFUZZBALL(5.57/UCSB-V2)
idAA07200:Wed,31Mar9313:17:40PST
Received:;idAA03169
Sendmail5.67/UCSD-2.2sunviaSMTP
Wed.31Mar9313:23:520800forharley@
Received:(4.l/UCSDGENERIC.3)
idAA25582toharley@;
Wed.31Mar9313:23:51PST
Date:Wed.31Mar9313:23:51PST
From:rick@(RickStout)
MessageId:067ll@tsi
:MailUr'sShell(7.1.27/11/90)
To:harley@
Subject:thisisthesubject
Cc:addie@@
Status:Ro
Harley:IhavetupanappointmentfornextThursdayafternoon.
PIealetmeknowifyoucanattend.
...Rick
来源:rick@1993年3月31日星期三14点47分2秒
接收:
idAA15594toharley:93年3月31日星期三13:19:25PST
接收:fromfuzzball()
idAA11868
传送邮件4.1/UCSB-
93年3月31日早期三13:23:58PST到harley@
接收:由fuzzball(5.57/UCSB-v2)
idAA07200;93年3月31日星期三,时间13:17:40PST
接收:来自;idAA03169
传送邮件通过SMTP5.67/UCSD-2.2sun
93年3月31日星期三时间13:25:520800到harley@
接收:由(4.1/UCSDGENERIC.3)
发送idAA25582至harley@;
93年3月31日星期三;13:23:51PST
日期:93年3月31日星湖三13:23:51PST
来源:rick@(RickStout)
文件标识符:06711@tsi
X-邮件者:MailUr'sShell(7.1.27/11/90)
至:harley@
标题:具体题目
副本(Cc):addie@@
状态:RO
Harley:在下星期四下午,我安排了一次会见,请告知我你是否参加。
Rick
以上例子说明,在信头中的第一行总是单词“From”,该行表明发信人的地址。在我们这
个例子中,文件是从rick@发来的。其它行即不必以同样的顺序显示。这取决于收
发邮件系统是怎样构成的,也取决于在你特别的邮件程序设置的是什么选择。在最初的
“From”行后有十四行包括五条Received说明的技术信息。这些字行表明该文件所取的路
径、时间、日期和操作过程中每一步应使用什么程序。邮件程序常显示一个“状态”行。可
是,几乎没有人知道不同的设计表示什么,这一般查不到。
d.用MIME传送二进制数据(多功能Internet邮件扩展程序)
为了收发二进制数据,你必须具有用来支持MIME的一个用户邮件程序(邮件程序);MIME
标准现已成为Internet电子邮件的主流,我们现在最常使用的电子邮件软件Eudora、Netscap
eMail、InternetMail就是采用MIME方式。MIME定义两种编码万式:Ba64与
QP(Quote-Printable)。QP的规则是对于资料中的7位无须重复编码,仅将8位的数据转成
7位。QP编码适用于ASCII码的及字内容,例如我们的中文文件。而Ba64的编码规则
是将整个文件重新编码成7位,通常用于传送二进制文件。编码的方式不同会影响编码之
后的文件大小。而具有MIME功能的E-mail软件大都能自动判别你的邮件是采用何种编
码,然后自动选择用QP或Ba64来解码。
[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@
其中本地用户名为Jones,是Jones的域标识符。Iocal-part@domain-name还可
能采取其他形式以表示如下含义:
²一个直接的连接(u@host)
²邮件接收方位于一台非SMTP主机,通过一个邮件网关接收邮件
(ur%remote-host@gateway-host)
²多台主机间的应答(@host-b@host-c@hostd)
(2)POP3
首先,POP3服务器启动POP3服务,并监听110端口。当客户机要仅用POP3服务时,
它先与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:+OK2320
²LIST
该命令可以没有参数也可以有一个参数,该参数代表邮件的序
号,但该序号不能是已删除邮件。
该命令仅用于“命令交互状态”。
C:LIST
S:+OK2messages(320octets)
S:1120
S:2200
S:.
......
C:LIST2
S:+OK2200
......
C:LIST3
S:-ERRnosuchmesage,only2messageinmaildrop.
²RETR
该命令必须带有一个邮件序号,该邮件序号不能是已删除邮件。
该命令仅用于“命令交互状态”。
若POP3服务器返回一个成功响应,则随后的响应属于多行响应。在首行“+OK”响应之后,
POP3服务器把对应于该邮件序号的邮件发送到客户端。
C:RETR1
S:+OK120octets
S:
C:RETR5
S:-ERRnosuchmessage.
²DELE
该命令必须带一个邮件序号参数。仅用于“命令交互状态”
POP3服务器把该邮件标志为“已删除”,之后,任何对该邮件的操作都将返回错误。POP3
服务器并不实际删除该邮件,除非POP3会话进“更新状态”。
C:DELE1
S:+OKmessage1deleted
......
C:DELE1
S:-ERRmessage2alreadydeleted
²NOOP
该命令不待参数,实际上也不做任何事情。仅用于“命令交互状态”。
C:NOOP
S:+OK
²RSET
该命今不带参数。仅用于“命令交互状态”。
POP3服务器将所有已被标志为删除的邮件的删除标志取消,并返回成功响应。
C:RSET
S:+OKmaildrophas2messages(320octets)
²QUIT
该命令无参数,仅用于“命令交互状态”。
POP3服务器把所有已标志为删除的邮件删除,并释放在“命令交互状态”中获得的资源,
然后关闭TCP连接,POP3会话结束。
1、概述
SMTP被用来在因特网上传递电子邮件。文件RFC821规定了该协议的所有细节。
协议的原理很简单。无非是一个客户端计算机向服务器发送命令,然后服务器向客户端计
算机返回一些信息。客户端发送的命令以及服务器的回应都是字符串。
首先要与邮件服务器连接,服务器将返回文本。该文本包含一个三位数的代码及描述,例
如:
mail8.6.12/8.6.9readyatWed,22Apr199822:54:41+0300
220ESMTPspokenhere
这些描述可能会因服务器而异。只须要知道代码所代表的意思就行了。代码220表示成功
建立连接,服务器等待你的第一个命令。
向服务器传递的第一个命令是HELO.该命令包含一个参数,即你的邮箱名。
HELOoleg
注意:在RFC821中,HELO是一个可选择性命令,如果服务器不要求该命令的话,你可
以把它忽略掉。
如果命令成功,服务器会返回一个代码为250的回应。
下一步用MAILFROM命令告诉服务器你想发一封邮件。该命令以发信人的邮件地址为参
数。
MAILFROM:oleg@
发完命令后,如果服务器返回一个代码为250回应,你就可以向服务器发送RCPTTO命
令了。
RCPTTO命令以收信人地址为参数,是告诉服务器你想将邮件发到收信人地址处。
RCPTTO:somebody@
如果你想将邮件发给多个收件人的话。你需要多次使用RCPTTO命令,对每个命令,服
务器都会返回代码为250的回应。
现在可以向服务器发送邮件正文了。
用DATA命令告诉服务器以下的内容为邮件正文。在你从服务器收到代码为354的回应后,
你就可以发送邮件正文了。邮件按行发送,每行邮件以一个无回车的换行符结束,只须按
回车键就行了。下面是一个例子:
Subject:Myfirste-mailmessage.
Firstlineofamessage.
Secondline.
注意上面最后一行的最后一个字符是一个小数点。这是正文结束的标志。服务器收到这
个标志后,就会立即返回一个代码为250的回应以及该邮件的唯一ID号。
250WAA10568Messageacceptedfordelivery
任务完成了,可以继续发送下封邮件,也可以断开同服务器的连接。如果要断开同服务器
的连接就用QUIT命令。在这种情况下,服务器会返回一个代码为221的回应并断开连接。
QUIT
ingconnection
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
MAILFROM:
此命令用于开始将邮件发送到一个多个邮箱中。参数域包括回复路径。返回路径中包括了
可选的主机和发送者邮箱列表。当有主机列表时,它是一个回复路径源,它说明此邮箱是
由在表中的主机一一传递发送(第一个主机是最后一个接收到此邮件的主机)过来的。此
表也有作向发送者返回非传递信号的源路径。因为每个传递主机地址都被加在此表起始
处,它就必须使用发送IPCE而不是接收IPCE(如果它们不是一个IPCE的话)清楚的名
称。一些出错信息的回复路径可能就是空的。
此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,并且将此命令的回
复路径信息插入到回复路径缓冲区中。
(2)RCPT(recipient)
RCPTTO:
此命令用于确定邮件内容的唯一接收者;多个接收者将由多个此命令指定。转发路径
中包括一个可选的主机和一个必须的目的邮箱。
此命令给出向前路径标识接收者,如果命令被接收,接收方返回一个250OK应答,并存
储向前路径。如果接收者未知,接收方会返回一个550Failure应答。此过程可能会重复
若干次。
不仅包括邮件,它是主机和目的邮箱的路由表,在其中的第一个主机就是接收命令的
主机。
(3)DATA
DATA
如果命令被接收,接收方返回一个354Intermediate应答,并认定以下的各行都是信
件内容。当信件结尾收到并存储后,接收者发送一个250OK应答。因为邮件是在传送通
道上发送,因此必须指明邮件内容结尾,以便应答对话可以重新开始。SMTP通过在最后
一行仅发送一个句号来表示邮件内容的结束,在接收方,一个对用户透明的过程将此符号
过滤掉,以不影响正常的数据。
注意:邮件内容包括如下提示:Date,Subject,To,Cc,From。
邮件内容指示符确认邮件操作并告知接收者可以存储和再发送数据了。如果此命令被
接收,接收方返回一个250OK应答。DATA命令仅在邮件操作未完成或源无效的情况下
失败。
(4)RSET
RSET
此命令指示当送邮件操作将被放弃。任何保存的发送者,接收者和邮件内容应该被抛
弃,所有缓冲区和状态表应该被清除,接收方必须返回OK应答。
(5)SEND
SENDFROM:〈rever-path>
此命令用于开始一个发送命令,将邮件发送到一个或多个终端上。参数域包括了一个
回复路径,此命令如果成功就将邮件发送到终端上了。
回复路径包括一个可选的主机列表和发送者邮箱。当出现主机列表时,表示这是一个
传送路径,邮件就是经过这个路径上的每个主机发送到这里的(列表上第一个主机是最后
经手的主机)。此表用于返回非传递信号到发送者。因为每个传递主机地址都被加在此表
起始处,它就必须使用发送IPCE而不是接收IPCE(如果它们不是一个IPCE的话)清楚
的名称。一些出错信息的回复路径可能就是空的。
此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,并且将此命令的回
复路径信息插入到回复路径缓冲区中。
(6)SOML(ndormail)
SOMLFROM:〈rever-path>
此命令用于开始一个邮件操作将邮件内容传送到一个或多个终端上,或者传送到邮箱中。
对于每个接收者,如果接收者终端打开,邮件内容将被传送到接收者的终端上,否则就送
到接收者的邮箱中。参数域包括回复路径,如果成功地将信息送到终端或邮箱中此命令成
功。
回复路径包括一个可选的主机列表和发送者邮箱。当出现主机列表时,表示这是一个
传送路径,邮件就是经过这个路径上的每个主机发送到这里的(列表上第一个主机是最后
经手的主机)。
此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,并且将此命令的回
复路径信息插入到回复路径缓冲区中。
(7)SAML(ndandmail)
SAMLFROM:〈rever-path>
此命令用于开始一个邮件操作将邮件内容传送到一个或多个终端上,并传送到邮箱中。如
果接收者终端打开,邮件内容将被传送到接收者的终端上和接收者的邮箱中。参数域包括
回复路径,如果成功地将信息送到邮箱中此命令成功。
回复路径包括一个可选的主机列表和发送者邮箱。当出现主机列表时,表示这是一个
传送路径,邮件就是经过这个路径上的每个主机发送到这里的(列表上第一个主机是最后
经手的主机)。
此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,并且将此命令的回
复路径信息插入到回复路径缓冲区中。
(8)VRFY(verifyvt.证实,查证;证明)
VRFY〈string〉
此命令要求接收者确认参数是一个用户。如果这是(已经知道的)用户名,返回用户的全
名和指定的邮箱。此命令对回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区没有影响。
(9)EXPN(expandvt.扩大;使膨胀)
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
POP的全称是PostOfficeProtocol,即邮局协议,用于电子邮件的接收,现在常用的是
第三版,简称为POP3。通过POP协议,客户机登录到服务器上后,可以对自己的邮件
进行删除,或是下载到本地,下载后,电子邮件客户软件就可以在本地对邮件进行修改、
删除等。
POP服务器一般使用的是TCP的110号端口,
以下对几个常用的POP3命令作一个简单的介绍:
命令参数状态描述
------------------------------------------
USERurname认可此命令与下面的pass命令若成功,将导致状态
转换
PASSpassword认可
APOPName,Digest认可Digest是MD5消息摘要
------------------------------------------
STATNone处理请求服务器发回关于邮箱的统计资料,如邮件
总数和总字节数
UIDL[Msg#]处理返回邮件的唯一标识符,POP3会话的每个标
识符都将是唯一的
LIST[Msg#]处理返回邮件数量和每个邮件的大小
RETR[Msg#]处理返回由参数标识的邮件的全部文本
DELE[Msg#]处理服务器将由参数标识的邮件标记为删除,由
quit命令执行
RSETNone处理服务器将重置所有标记为删除的邮件,用于撤
消DELE命令
TOP[Msg#]处理服务器将返回由参数标识的邮件前n行内容,
n必须是正整数
NOOPNone处理服务器返回一个肯定的响应,不做任何操
作。
------------------------------------------
QUITNone更新退出
POP3协议的基本操作:
1.服务器通过侦听tcp端口110开始POP3服务。
2.当客户需要服务时,它与服务器建立连接,连接建立后,POP3服务器发送确认消息
3.客户与服务器相互交互命令和响应,持续到连接终止。
POP3命令由一个命令和一些参数组成
POP3响应由一个状态码和一个可能跟有附加信息的命令组成。
两种状态码:确定(+OK)和错误(-ERR)
POP3在生命周期中经历的状态:“确认”—“操作”—“更新”
基础的POP3命令有:USERname在确认状态下有效可选的命令:APOPnamedigest
PASSstring
QUIT
STAT在操作状态下有效TOPmsgn
LIST[msg]UIDL[msg]
RETRmsg
DELEmsg
NOOP
REST
QUIT在更新状态下有效
POP3响应有:+OK-ERR
注意:除了STAT,LIST,UIDLD的响应外,其他命令的响应都为+OK和-ERR。响应后的所
有文件将被客户略去。,
.SMTP是工作在两种情况下:一是电子邮件从客户机传输到服务器;二是从某一个服务器
传输到另一个
服务器
是个请求/响应协议,命令和响应都是基于ASCII文本,并以CR和LF符结束。响
应包括一个表示返
回状态的三位数字代码
在TCP协议25号端口监听连接请求
4.连接和发送过程:
a.建立TCP连接
b.客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令
服务器端正希望以OK作为响应,表明准备接收
c.客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行
服务器端则表示是否愿意为收件人接受邮件
d.协商结束,发送邮件,用命令DATA发送
e.以.表示结束输入内容一起发送出去
f.结束此次发送,用QUIT命令退出。
5.另外两个命令:
VRFY---用于验证给定的用户邮箱是否存在,以及接收关于该用户的详细信息。
EXPN---用于扩充邮件列表。
6.邮件路由过程:
SMTP服务器基于域名服务DNS中计划收件人的域名来路由电子邮件。SMTP服务器
基于DNS中的MX记录
来路由电子邮件,MX记录注册了域名和相关的SMTP中继主机,属于该域的电子邮件都应
向该主机发送。
若SMTP服务器收到一封信要发到shur@:
il请求DNS给出主机的CNAME记录,如有,假若CNAME到
,则再次
请求的CNAME记录,直到没有为止
b.假定被CNAME到,然后ndmail请求@域的DNS给出
的MX记录,
il最后请求DNS给出的A记录,即IP地址,若返回值为1.2.3.4
il与1.2.3.4连接,传送这封给shur@的信到1.2.3.4这台服务器的
SMTP后台程序
基本命令集:
命令描述
------------------------------
HELO向服务器标识用户身份
发送者能欺骗,说谎,但一般情况下服务器都能检测到。
MAIL初始化邮件传输
mailfrom:
RCPT标识单个的邮件接收人;常在MAIL命令后面
可有多个rcptto:
DATA在单个或多个RCPT命令后,表示所有的邮件接收人已标识,并初始化
数据传输,以.结束。
VRFY用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁
止此命令
EXPN验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用
HELP查询服务器支持什么命令
NOOP无操作,服务器应响应OK
QUIT结束会话
RSET重置会话,当前传输被取消
--------------------------------
OM命令中指定的地址是称作envelopefrom地址,不需要和发送者自己的地
址是一致的。
RCPTTO与之等同,指明的接收者地址称为envelopeto地址,而与实际的to:行是
什么无关。
9.为什么没有RCPTCC和RCPTBCC:?
所有的接收者协商都通过RCPTTO命令来实现,如果是BCC,则协商发送后在对方
接收时被删掉信封接收者
10.邮件被分为信封部分,信头部分和信体部分
envelopefrom,envelopeto与messagefrom:,messageto:完全不相干。
evnelope是由服务器主机间SMTP后台提供的,而messagefrom/to是由用户提供的。有无
冒号也是区别。
11.怎样由信封部分检查是否一封信是否是伪造的?
ed行的关联性。
现在的SMTP邮件传输系统,在信封部分除了两端的内部主机处理的之个,考虑两个公司
防火墙之间
的部分,若两台防火墙机器分别为A和B,但接收者检查信封received:行时发现经过了
C.则是伪造的。
ed:行中的主机和IP地址对是否对应如:
Receibed:([104.128.23.115]by
....
c.被人手动添加在最后面的received行:
Received:([104.128.23.115])(8.8.5)
Received:(8.7.3)
Received:(8.6.4)
使用MSNMesnger与联机的朋友进行交流
本文发布于:2023-03-09 13:47:14,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1678340834133099.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:UUCP.doc
本文 PDF 下载地址:UUCP.pdf
| 留言与评论(共有 0 条评论) |