POP3命令与分析
POP3(Post Office Protocol 3)即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。POP3协议是TCP/IP协议族中的一员,,由RFC 1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。
具体协议内容可以查阅:http://www.ietf.org/rfc/rfc1939.txt 中文版:http://www.cnpaf.net/Class/POP3/200408/122.html
当客户机与服务器建立联系时,一旦客户机提供了自己身份并成功确认,即由认可状态转入处理状态,在完成相应的操作后客户机发出quit命令,则进入更新状态,更新之后最后重返认可状态。如下:
等待连接 身份确认 quit命令
—— |AUTHORIZATION|————— |TRANSACTION|——————|UPDATE|
|________________________________________________________|
重返认可状态
POP3命令码如下:
命令 参数 状态 描述
----------------------------------------------------------------------------
USER username AUTHORIZATION 此命令与下面的pass命令若成功,将导致状态转换
PASS password AUTHORIZATION
APOP Name Digest AUTHORIZATION Digest是MD5消息摘要
----------------------------------------------------------------------------
STAT None TRANSACTION 请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数
UIDL [Msg#] TRANSACTION 返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的
LIST [Msg#] TRANSACTION 返回邮件数量和每个邮件的大小
RETR [Msg#] TRANSACTION 返回由参数标识的邮件的全部文本
DELE [Msg#] TRANSACTION 服务器将由参数标识的邮件标记为删除,由quit命令执行
RSET None TRANSACTION 服务器将重置所有标记为删除的邮件,用于撤消DELE命令
TOP msg n TRANSACTION 服务器将返回由参数标识的邮件前n行内容,n必须是正整数
NOOP None TRANSACTION 服务器返回一个肯定的响应
------------------------------------------
QUIT None UPDATE
这里使用telnet命令来对126邮箱进行操作参数分别是邮件服务器地址和端口(110)
使用user 用户名 pass 密码进行登录,也可以采用APOP方式登录。
使用stat命令能够得到邮箱的邮件信息,邮件数和大小。
list命令将显示整个邮箱的邮件的编号n和大小(若未指定编号)
uidl命令返回邮件的唯一标识符
top命令指定返回n号邮件的前m行,邮件内容分析参见前一篇,邮件MIME格式分析
retr 命令将收取指定编号的邮件的完整内容。
dele命令,在此时并不会删除邮件,只有在QUIT时才会删除,任何邮件的删除都必须在quit命令发出后对已标记为删除的邮件执行删除操作,若发生访问中断,没有发出quit命令,那么虽然执行过dele命令,邮件仍不会被删除。
rset命令,取消删除邮件的命令,重置邮件状态
总结POP3协议的优势和不足
POP作为Internet上邮件的第一个离线协议标准,允许用户从服务器上把邮件下载到本地主机上,同时删除保存在邮件服务器上的邮件,从而使用户不必长时间地与邮件服务器连接,很大程度上减少了服务器和网络的整体开销。
但 POP3有其天生的缺陷,即当用户接收电子邮件时,所有的信件都从服务器上清除并下载到客户机。在整个收信过程中,用户无法知道邮件的具体信息,只有照单全收入硬盘后,才能慢慢浏览和删除。这使用户几乎没有对邮件接收的控制决定权。一旦碰上邮箱被轰炸,或有比较大的邮件,用户不能通过分析邮件的内容及发信人地址来决定是否下载或删除,从而造成系统资源的浪费。而IMAP协议不但可以克服POP3的缺陷,而且还提供了更强大的功能。