分类: LINUX
2011-04-02 15:07:58
今天抽空学习了一下pop的命令,了解了一下pop的收信过程,主要命令如下:
USER username
PASS password
以上认证过程通过后,服务端会返回以下信息:
+OK 3 message(s) [40789 byte(s)]
告诉客户端该账号下有三封邮件,总大小为40789 byte
接着客户端继续发送以下命令:
STAT
此时服务端返回以下信息:
+OK 3 40789
接着客户端继续发送以下命令:
UIDL
此命令主要列出邮箱的中每封邮件的唯一id号
+OK 3 40789
1 1tbiNgAUp00Q05cGGwACsD
2 1tbiNgAUp00Q05cGGwABsA
3 1tbiNgAUp00Q05cGGwAAsB
.
紧接着客户端发送以下命令:
LIST
服务端回应:
+OK 3 40789
1 2252
2 2227
3 36310
.
也就是每封邮件的大小
接着客户端发送以下命令:
RETR 1
此时服务端回应:
+OK 2252 octets
接下就是整封邮件的原文
最后邮件接受完后,客户端发送以下命令:
QUIT
服务端回应:
+OK
其中还有DELE和RSET两个命令未体验,DELE主要是删除一封邮件,但在未执行QUIT命令之前,该封邮件未真正删除,而RSET命令将标记为DELE的邮件恢复;
通过多次发现,当有新邮件进入用户邮箱后,使用UIDL命令返回的邮件列表每次新邮件都在旧邮件的前面,也就是id号最新的邮件永远为1;
这样当客户端保存了UIDL返回的信息后,通过比对,即可确定需要RETR的邮件,所以每次我们看到POP客户端返回的邮件都是最新的邮件列表。