设为首页收藏本站
ORF反垃圾邮件系统

邮件服务器-邮件系统-邮件技术论坛(BBS)

 找回密码
 会员注册

QQ登录

只需一步,快速开始

查看: 12889|回复: 8

POP3协议命令原始码及工作原理

[复制链接]
发表于 2003-6-23 16:56:56 | 显示全部楼层 |阅读模式
<br>
<a target=_blank href=http://www.linuxforum.net>http://www.linuxforum.net</a> Jephe Wu (2001-04-21 18:17:49) <br>
一 简介: <br>
<br>
1. POP适用于C/S结构的脱机模型的电子邮件协议,目前已发展到第三版,称POP3。脱机模型即不能在线 <br>
   操作,不像IMAP4(netscape支持IMAP4) <br>
<br>
2. 当客户机与服务器连接并查询新电子邮件时,被该客户机指定的所有将被下载的邮件都将被程序下载到 <br>
   客户机,下载后,电子邮件客户机就可以删除或修改任意邮件,而无需与电子邮件服务器进一步交互。 <br>
<br>
3. POP3客户向POP3服务器发送命令并等待响应,POP3命令采用命令行形式,用ASCII码表示。 <br>
   服务器响应是由一个单独的命令行组成,或多个命令行组成,响应第一行以ASCII文本+OK或-ERR指出相应 <br>
   的操作状态是成功还是失败 <br>
<br>
4. 在POP3协议中有三种状态,认可状态,处理状态,和更新状态。 <br>
   当客户机与服务器建立联系时,一旦客户机提供了自己身份并成功确认,即由认可状态转入处理状态, <br>
   在完成相应的操作后客户机发出quit命令,则进入更新状态,更新之后最后重返认可状态。如下图 <br>
<br>
 等待连接        身份确认         quit命令 <br>
   ——  |认可|————— |处理|——————|更新| <br>
           |__________________________________| <br>
                  重返认可状态 <br>
<br>
5. 认可状态的命令语句 <br>
   一般情况下,大多数现有的POP3客户与服务器执行采用ASCII明文发送用户名和口令,在认可状态等 <br>
待客户连接的情况下,客户发出连接,并由命令user/pass对在网络上发送明文用户名和口令给服务器 <br>
进行身份确认。一旦确认成功,便转入处理状态。 <br>
    为了避免发送明文口令的问题,有一种新的认证方法,命令为APOP,使用APOP,口令在传输之前被加密。 <br>
当第一次与服务器连接时,POP3服务器向客户机发送一个ASCII码问候,这个问候由一串字符组成对每个客 <br>
户机是唯一的,与当时的时间有关,然后,客户机把它的纯文本口令附加到从服务器接收到的字符串之后, <br>
然后计算出结果字符串的MD5单出函数消息摘要,客户机把用户名与MD5消息摘要作为APOP命令的参数一起发送 <br>
出去。 <br>
    目前,大多数windows上的邮件客户软件不支持APOP命令,qpopper支持。 <br>
<br>
6. POP3命令码如下: <br>
 命令          参数       状态     描述 <br>
------------------------------------------ <br>
USER          username    认可     此命令与下面的pass命令若成功,将导致状态转换 <br>
PASS          password    认可      <br>
APOP          Name,Digest 认可     Digest是MD5消息摘要 <br>
------------------------------------------ <br>
STAT          None        处理     请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数 <br>
UIDL          [Msg#]      处理     返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的 <br>
LIST          [Msg#]      处理     返回邮件数量和每个邮件的大小 <br>
RETR          [Msg#]      处理     返回由参数标识的邮件的全部文本 <br>
DELE          [Msg#]      处理     服务器将由参数标识的邮件标记为删除,由quit命令执行 <br>
RSET          None        处理     服务器将重置所有标记为删除的邮件,用于撤消DELE命令 <br>
TOP           [Msg#]      处理     服务器将返回由参数标识的邮件前n行内容,n必须是正整数 <br>
NOOP          None        处理     服务器返回一个肯定的响应 <br>
------------------------------------------ <br>
QUIT          None        更新      <br>
<br>
a.客户机希望结束这次会话 <br>
b.如果服务器处于‘处理’状态,那么将进入‘更新’状态以删除任何标记为删除的邮件 <br>
c.导致由处理状态到更新状态,又重返认可状态的转变 <br>
d.如果这个命令发出时服务器处于‘认可’状态,则结束会话,不进行‘更新’状态。 <br>
<br>
7. POP3协议在TCP/110端口上等待客户连接请求。 <br>
<br>
8. 若密码为明文,我如何监听? <br>
下面的命令在服务器运行后在屏幕上显示POP3连接及命令发送的过程: <br>
#sniffit -a -A. -p 110 -b -s 192.169.11.12  <br>
   note: 192.168.11.12是客户机IP地址 <br>
         你需要事先安装sniffit这个端口监听程序 <br>
<br>
9. 考虑这种情况,若客户在收取邮件时,假定为15封信等待接收,但由于线路问题,收到第10封时断线了, <br>
   为什么下次收时仍然从第一封开始,也即为什么前10封没有被从服务器上删除掉? <br>
    <br>
任何邮件的删除都必须在quit命令发出后对已标记为删除的邮件执行删除操作,由于中途断线,仍处于 <br>
处理状态,没有机会执行quit命令以进行状态转换。 <br>
<br>
10. pop3 session is locked by another session, please wait 10 minutes then try again. <br>
<br>
由于非正常操作引起POP3程序内部机制锁住该次会话。 <br>
<br>
11. Foxmail与OE(outlook express)的处理机制的不同。 <br>
  <br>
a. 假定服务器上有三封邮件等待客户机接收。用foxmail与OE的不同之处在于 <br>
   foxmail每收一封标记删除一封,而OE则等全部接收完后再全部标记为删除最后执行quit命令。 <br>
<br>
       Foxmail           OE <br>
  ------------------------------- <br>
       retr 1            retr 1 <br>
       dele 1            retr 2 <br>
       retr 2            retr 3 <br>
       dele 2            dele 1 <br>
       retr 3            dele 2 <br>
       dele 3            dele 3 <br>
       quit              quit <br>
b. Foxmail的远程邮件管理是非常优秀的管理工具,假定服务器上有三封信,对第一封,我们不想接收 <br>
   想从服务器直接删除;对第二封,想接收但不删除,对第三封,这一次不想接收,分别标记后 <br>
   最后foxmail发出的命令是 <br>
<br>
    dele 1 <br>
    retr 2 <br>
    quit <br>
<br>
c. 若没有foxmail,正好有几封很大的信堵住了,我不想接收,想直接删除它,或者想查看这两封是谁发的? <br>
<br>
    直接在windows的DOS窗口下用命令行操作,如: <br>
  # telnet my.isp.net  110 <br>
   user 'username' <br>
   pass 'password' <br>
   list <br>
   dele 3 <br>
   dele 5 <br>
   quit <br>
<br>
<br>
Jephe Wu <br>
发表于 2007-4-8 08:46:38 | 显示全部楼层
看了,有帮助。谢谢
发表于 2007-7-18 12:51:45 | 显示全部楼层
好东西啊………………
发表于 2007-7-23 09:50:38 | 显示全部楼层
谢谢,呵。。。学习
发表于 2008-2-24 13:29:18 | 显示全部楼层
有没有smtp的啊
急需看下smtp的
发表于 2008-3-6 16:17:08 | 显示全部楼层

回复 1楼 的帖子

登录web邮箱,设置Pop账号并测试成功。
执行pop收取时,发现目标邮箱的邮件只有在没被打开,也没被任何pop服务器收取过才能被成功pop收取过来。
请问是什么原因?

注:
该web邮箱是coremail邮件系统
测试过多个pop目标邮箱账号都是如此
使用其他系统进行pop收取没有出现这些限制
发表于 2008-6-2 17:44:08 | 显示全部楼层
仔细体味一下!!!真是好东西 !!!
发表于 2010-3-29 20:10:48 | 显示全部楼层
很有收获谢谢了。
发表于 2010-3-31 20:32:15 | 显示全部楼层
学习了, 谢谢
您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

小黑屋|手机版|Archiver|邮件技术资讯网    

GMT+8, 2019-11-17 10:06

Powered by Discuz! X3.2

© 2001-2016 Comsenz Inc.

本论坛为非盈利中立机构,所有言论属发表者个人意见,不代表本论坛立场。内容所涉及版权和法律相关事宜请参考各自所有者的条款。
如认定侵犯了您权利,请联系我们。本论坛原创内容请联系后再行转载并务必保留我站信息。此声明修改不另行通知,保留最终解释权。
*本论坛会员专属QQ群:邮件技术资讯网会员QQ群
*本论坛会员备用QQ群:邮件技术资讯网备用群

快速回复 返回顶部 返回列表