一、POP3简介
POP3(Post Office Protocol version3),即“邮局协议版本3”。是TCP/IP协议族中的一员,由RFC1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件
二、POP3详解
1、通信过程
1)、建立和pop3邮件服务器建立连接 通常是tcp连接,不同邮箱有不同的邮件服务器地址,本文以126邮箱为例,邮件服务器地址为 pop3.126.com 端口为 110 ,建立连接后邮件服务器会回复连接成功;
2)、客户端向服务器端发出各种命令,来请求各种服务(如查询邮箱信息,下载某封邮件等)。
3)、服务端解析用户的命令,做出相应动作并返回给客户端一个响应。
4)、通常步骤2和3会交替进行,来获取邮件的数据。
5)、完成通讯,退出。
2、三个状态
POP3协议中有三种状态,认正状态,处理状态,和更新状态。 命令的执行可以改变协议的状态,而对于具体的某命令,它只能在具体的某状态下使用,这些请参看表1和RFC193。
客户机与服务器刚与服务器建立连接时,它的状态为认证状态;一旦客户机提供了自己身份并被成功地确认,即由认可状态转入处理状态; 在完成相应的操作后客户机发出QUIT命令(具体说明见后续内容),则进入更新状态,更新之后又重返认可状态;当然在认可状态下执行QUIT命令,可释放连接。状态间的转移如图 1所示。
-
---建立连接---|认可|--认证成功--|处理|--执行QUIT--|更新|
|_______ -QUIT结束_________________|
3、POP3命令
命令 | 参数 | 使用状态 | 含义 |
---|---|---|---|
USER | Username(邮箱地址) | 认证 | 向服务器发送用户名也就是邮箱的地址 |
PASS | Password(邮箱的登录密码) | 认证 | 向服务器发送邮箱的密码 验证成功后邮箱服务器会返回登录成功的消息 |
STAT | (无) | 处理 | 请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数 |
UIDL |
[Msg#](邮件号,下同) |
处理 |
返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的 |
LIST |
[Msg#] |
处理 |
返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的 |
RETR |
[Msg#] |
处理 |
返回由参数标识的邮件的全部文本 |
DELE |
[Msg#] |
处理 |
服务器将由参数标识的邮件标记为删除,由QUIT命令执行 |
TOP |
[Msg#] |
处理 |
服务器将返回由参数标识的邮件的邮件头+前n行内容,n必须是正整数 |
NOOP |
None |
处理 |
服务器返回一个肯定的响应,用于测试连接是否成功 |
QUIT |
None |
处理、认证 |
1) 如果服务器处于“处理”状态,么将进入“更新”状态以删除任何标记为删除的邮件,并重返“认证”状态。 2)如果服务器处于“认证”状态,则结束会话,退出连接 |
三、实例讲解
1、命令行操作
root@ubuntu:~# telnet pop3.126.com 110
Trying 123.125.50.23...
Connected to pop3.126.idns.yeah.net.
Escape character is '^]'.
+OK Welcome to coremail Mail Pop3 Server (126coms[753e2252bd59b8c4a1c2eb6d5fe57cb3s])
user [email protected]
+OK core mail
pass ****************
+OK 1827 message(s) [310767720 byte(s)]
list 1
+OK 1 19993
uidl 1
+OK 1 1tbiEwqK8EntOtumLAAAss
retr 1
+OK 19993 octets
Received: from smtpcom.263xmail.com (unknown [211.150.64.23])
by mx6 (Coremail) with SMTP id JMmowLDLbATnVpBLQGv2RA--.5983S2;
Fri, 05 Mar 2010 08:57:11 +0800 (CST)
Received: from smtpcom.263xmail.com (localhost.localdomain [127.0.0.1])
by smtpcom.263xmail.com (Postfix) with ESMTP id 19A8B6B199
for <*********@126.com>; Fri, 5 Mar 2010 08:57:15 +0800 (CST)
X-ABS-CHECKED:1
X-KSVirus-check:0
。。。。。。。。。。。。。(中间省略)
------=_NextPart_000_0018_01CABC41.D85CD8A0--
.
quit
+OK core mail
Connection closed by foreign host.
2、网络抓包查看协议
四、结束语
本文主要介绍POP3基本协议的使用,这只是协议的传输部分,如果想实现连接,解析还需要依赖其他的模块,在此不一一介绍,以后有机会分享