pop3的基本流程-阿里云开发者社区

开发者社区> 开发与运维> 正文

pop3的基本流程

简介:
1."确认"状态 

TCP连接由POP3客户打开,POP3服务器发送一个单行的确认。这个消息可以是由CRLF结 
束的任何字符。例如,它可以是:  
S: +OK POP3 server ready 
注意:这个消息是一个POP3应答。POP3服务器应该给出一个"确定"响应作为确认。 
此时POP3会话就进入了"确认"状态。此时,客户必须向服务器证明它的身份。在文档中介绍 
两种可能的处理机制,一种是USER和PASS命令,另一种是在后面要介绍的APOP命令。 
用USER和PASS命令进行确认过程,客户必须首先发送USER命令,如果POP3服务器以"确认"状 
态码响应,客户就可以发送PASS命令以完成确认,或者发送QUIT命令终止POP3会话。如果POP3服 
务器返回"失败"状态码,客户可以再发送确认命令,或者发送QUIT命令。 
当客户发送了PASS命令后,服务器根据USER和PASS命令的附加信息决定是否允许访问相应的 
存储邮件。 
一旦服务器通过这些数据决定允许客户访问储存邮件,服务器会在邮件上加上排它锁,以防 
止在进入"更新"状态前对邮件的改变。如果成功获得了排它锁,服务器返回一个"确认"状态码。 
会话进入"操作状态",同时没有任何邮件被标记为删除。如果邮件因为某种原因不能打开(例如, 
排它锁不能获得,客户不能访问相应的邮件或者邮件不能进行语法分析),服务器将返回"失败" 
状态码。在返回"失败"状态码后,服务器会关闭连接。如果服务器没有关闭连接,客户可以重新 
发送确认命令,重新开始,或者发送QUIT命令。 
在服务器打开邮件后,它为每个消息指定一个消息号,并以八进制表示每个消息的长度。第 
一个消息被指定为1,第二个消息被指定为2,以此类推,第N个消息被指定为N。在POP3命令和响应
中,所以的消息号和长度以十进制表示。 

2. "操作"状态 
  
一旦客户向服务器成功地确认了自己的身份,服务器将锁住并打开相应的邮件,这时POP3会 
话进入"操作"状态。现在客户可以重复下面的POP3命令,对于每个命令服务器都会返回应答。最 
后,客户发送QUIT命令,会话进入"更新"状态。 
 
3."更新"状态 

当客户在"操作"状态下发送QUIT命令后,会话进入"更新"状态。(注意:如果客户在"确认"状 
态下发送QUIT后,会话并不进入"更新"状态。) 
如果会话因为QUIT命令以外的原因中断,会话并不进入"更新"状态,也不从服务器中删除任何 
信件。
见下面的例子:
recv  buf0 100
 "+OK infosec.com.cn POP MDaemon 6.8.5 准备好 <MDAEMON-F200601201105.AA05442"
 "
[email]25MD3966@infosec.com.cn[/email]>\r\n"
send  buf1 11
 "USER libh\r\n"
recv  buf2 24
 "+OK libh... 收信人确定\r\n"
send  buf3 13
 "PASS 112358\r\n"
recv  buf4 59
 "+OK 
[email]libh@infosec.com.cn[/email] 的邮箱共有 0 封邮件(0 个八字节)。\r\n"
send  buf5 6
 "STAT\r\n"
recv  buf6 9
 "+OK 0 0\r\n"
send  buf7 6
 "QUIT\r\n"
recv  buf8 63
 "+OK 
[email]libh@infosec.com.cn[/email] infosec.com.cn POP 服务注销(邮箱为空)\r\n"




本文转自 fish_yy 51CTO博客,原文链接:http://blog.51cto.com/tester2test/137531,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章