⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 229.htm

📁 unix高级编程原吗
💻 HTM
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://apue.dhs.org"><font face="黑体"><big><big>apue</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center">               ● UNIX网络编程                       (BM: clown)                </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p   align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="100" align="center" valign="top"><br><p align="center">[<a href="index.htm">回到开始</a>][<a href="188.htm">上一层</a>][<a href="230.htm">下一篇</a>]
<hr><p align="left"><small>发信人: zsll (四级), 信区: Linux <br>

标  题: pop3命令原始码及分析[转载] <br>

发信站: 华南网木棉站 (Mon Oct 22 15:36:30 2001), 转信 <br>

  <br>

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

                         Jephe Wu <中国Linux论坛> <br>

  <br>

一 简介: <br>

1. POP适用于C/S结构的脱机模型的电子邮件协议,目前已发展到第三版,称POP3。 <br>

脱机模型即不能在线 操作,不像IMAP4(netscape支持IMAP4) <br>

2. 当客户机与服务器连接并查询新电子邮件时,被该客户机指定的所有将被下载的 <br>

邮件都将被程序下载到 客户机,下载后,电子邮件客户机就可以删除或修改任意邮件, <br>

  <br>

而无需与电子邮件服务器进一步交互。 <br>

3. POP3客户向POP3服务器发送命令并等待响应,POP3命令采用命令行形式,用ASCII码 <br>

  <br>

表示。 服务器响应是由一个单独的命令行组成,或多个命令行组成,响应第一行以 <br>

ASCII文本+OK或-ERR指出相应 的操作状态是成功还是失败 <br>

4. 在POP3协议中有三种状态,认可状态,处理状态,和更新状态。 当客户机与服务器 <br>

  <br>

建立联系时,一旦客户机提供了自己身份并成功确认,即由认可状态转入处理状态, 在 <br>

  <br>

完成相应的操作后客户机发出quit命令,则进入更新状态,更新之后最后重返认可状态 <br>



。如下图 <br>

5. 认可状态的命令语句 <br>

  一般情况下,大多数现有的POP3客户与服务器执行采用ASCII明文发送用户名和口令 <br>

, <br>

在认可状态等 待客户连接的情况下,客户发出连接,并由命令user/pass对在网络上发 <br>

送明 <br>

文用户名和口令给服务器 进行身份确认。一旦确认成功,便转入处理状态。 为了避免 <br>

发送 <br>

明文口令的问题,有一种新的认证方法,命令为APOP,使用APOP,口令在传输之前被加 <br>

密。 <br>

 当第一次与服务器连接时,POP3服务器向客户机发送一个ASCII码问候,这个问候由一 <br>

串字 <br>

符组成对每个客 户机是唯一的,与当时的时间有关,然后,客户机把它的纯文本口令附 <br>

加 <br>

到从服务器接收到的字符串之后, 然后计算出结果字符串的MD5单出函数消息摘要,客 <br>

户机 <br>

把用户名与MD5消息摘要作为APOP命令的参数一起发送 出去。 目前,大多数windows上 <br>

的邮 <br>

件客户软件不支持APOP命令,qpopper支持。 <br>

6. POP3命令码如下: <br>

命令     参数    状态    描述 <br>

------------------------------------------ <br>



USER    username  认可    此命令与下面的pass命令若成功,将导致状态转换 <br>

  <br>

PASS    password  认可 <br>

APOP    Name,Digest 认可    Digest是MD5消息摘要 <br>

------------------------------------------ <br>

STAT    None    处理    请求服务器发回关于邮箱的统计资料,如邮件总数 <br>

和总字节数 <br>

UIDL    [Msg#]   处理     返回邮件的唯一标识符,POP3会话的每个标识符都 <br>

将是唯一的 <br>

LIST    [Msg#]   处理     返回邮件数量和每个邮件的大小 <br>

RETR    [Msg#]   处理    返回由参数标识的邮件的全部文本 <br>

DELE    [Msg#]   处理    服务器将由参数标识的邮件标记为删除,由quit命 <br>

令执行 <br>

RSET    None    处理     服务器将重置所有标记为删除的邮件,用于撤消D <br>

ELE命令 <br>

TOP    [Msg#]    处理    服务器将返回由参数标识的邮件前n行内容,n必须 <br>

是正整数 <br>

NOOP    None    处理     服务器返回一个肯定的响应 <br>

------------------------------------------ <br>

QUIT    None     更新 <br>

a.客户机希望结束这次会话 <br>

b.如果服务器处于‘处理’状态,那么将进入‘更新’状态以删除任何标记为删除的邮 <br>



件 <br>

c.导致由处理状态到更新状态,又重返认可状态的转变 <br>

d.如果这个命令发出时服务器处于‘认可’状态,则结束会话,不进行‘更新’状态。 <br>

  <br>

7. POP3协议在TCP/110端口上等待客户连接请求。 <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>

9. 考虑这种情况,若客户在收取邮件时,假定为15封信等待接收,但由于线路问题,收 <br>

到第10封 <br>

时断线了, 为什么下次收时仍然从第一封开始,也即为什么前10封没有被从服务器上删 <br>

除掉? 任 <br>

何邮件的删除都必须在quit命令发出后对已标记为删除的邮件执行删除操作,由于中途 <br>

断线,仍处 <br>

于 处理状态,没有机会执行quit命令以进行状态转换。 <br>

10. pop3 session is locked by another session, please wait 10 minutes then t <br>

ry again. <br>

由于非正常操作引起POP3程序内部机制锁住该次会话。 <br>

11. Foxmail与OE(outlook express)的处理机制的不同。 a. 假定服务器上有三封邮件 <br>

等待客户机 <br>

等待客户机 <br>

接收。用foxmail与OE的不同之处在于 foxmail每收一封标记删除一封,而OE则等全部接 <br>

收完后再 <br>

全部标记为删除最后执行quit命令。 <br>

b. Foxmail的远程邮件管理是非常优秀的管理工具,假定服务器上有三封信,对第一封 <br>

,我们不想 <br>

接收 想从服务器直接删除;对第二封,想接收但不删除,对第三封,这一次不想接收, <br>

分别标记后 <br>

 最后foxmail发出的命令是 <br>

dele 1 <br>

retr 2 <br>

quit <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>

-- <br>

</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="188.htm">上一层</a>][<a href="230.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -