1. POP适用于C/S结构的脱机模型的电子邮件协议,目前已发展
到第三版,称POP3。脱机 模型即不能在线操作,不像IMAP4
(netscape支持IMAP4) 
2. 当客户机与服务器连接并查询新电子邮件时,被该客户机指
定的所有将被下载的邮件 都将被程序下载到客户机,下载后,
电子邮件客户机就可以删除或修改任意邮件,而无需与电子邮件
服务器进一步交互。 
3. POP3客户向POP3服务器发送命令并等待响应,POP3命令采用
命令行形式,用ASCII码 表示。 
服务器响应是由一个单独的命令行组成,或多个命令行组成,响
应第一行以ASCII文本+ OK或-ERR指出相应 的操作状态是成功还
是失败 
4. 在POP3协议中有三种状态,认可状态,处理状态,和更新状态。 
当客户机与服务器建立联系时,一旦客户机提供了自己身份并成
功确认,即由认可状态转入处理状态, 在完成相应的操作后客
户机发出quit命令,则进入更新状态,更新之后最后重返认可
状态。如下图 
等待连接 身份确认 quit命令 
—— |认可|————— |处理|——————|更新| 
       |__________________________________| 
                 重返认可状态 
5. 认可状态的命令语句 
一般情况下,大多数现有的POP3客户与服务器执行采用ASCII明
文发送用户名和口令,在 认可状态等 
待客户连接的情况下,客户发出连接,并由命令user/pass对在网络上发送明文用户名和 口
令给服务器 
进行身份确认。一旦确认成功,便转入处理状态。 
为了避免发送明文口令的问题,有一种新的认证方法,命令为
APOP,使用APOP,口令在 传输之前被加密。 
当第一次与服务器连接时,POP3服务器向客户机发送一个ASCII
码问候,这个问候由一串字符组成对每个客户机是唯一的,与当
时的时间有关,然后,客户机把它的纯文本口令附加到从服务器接 
收到的字符串之后,然后计算出结果字符串的MD5单出函数消息
摘要,客户机把用户名与MD5消息摘要作为APOP命令的参数一起
发送出去。 
目前,大多数windows上的邮件客户软件不支持APOP命令,qpopper支持。 
6. POP3命令码如下: 
命令 参数 状态 描述 
------------------------------------------ 
USER username 认可 此命令与下面的pass命令若成功,将导致状态转换 
PASS password 认可 
APOP Name,Digest 认可 Digest是MD5消息摘要 
------------------------------------------ 
STAT None 处理 请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数 
UIDL [Msg#] 处理 返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的 
LIST [Msg#] 处理 返回邮件数量和每个邮件的大小 
RETR [Msg#] 处理 返回由参数标识的邮件的全部文本 
DELE [Msg#] 处理 服务器将由参数标识的邮件标记为删除,由quit命令执行 
RSET None 处理 服务器将重置所有标记为删除的邮件,用于撤消DELE命令 
TOP [Msg#] 处理 服务器将返回由参数标识的邮件前n行内容,n必须是正整数 
NOOP None 处理 服务器返回一个肯定的响应 
------------------------------------------

解决方案 »

  1.   

    在SMTP发送操作中有三步,操作由MAIL命令开始给出发送者标识。一系列或更多的RCPT命令紧跟其后,给出了接收者信息,然后是DATA命令列出发送的邮件内容,最后邮件内容指示符确认操作。过程中的第一步是MAIL命令,< reverse-path >包括源邮箱。MAIL <SP> FROM:<reverse-path> <CRLF>此命令告诉接收者新的发送操作已经开始,请复位所有状态表和缓冲区。它给出反向路径以进行错误信息返回。如果请求被接收,接收方返回一个250 OK应答。<reverse-path>中不止包括了邮箱,它包括了主机和源邮箱的反向路由,其中的第一个主机就是发送此命令的主机。过程中的第二步是发送RCPT命令。RCPT <SP> TO:<forward-path> <CRLF>此命令给出向前路径标识接收者,如果命令被接收,接收方返回一个250 OK应答,并存储向前路径。如果接收者未知,接收方会返回一个550 Failure应答。此过程可能会重复若干次。<forward-path>不仅包括邮件,它是主机和目的邮箱的路由表,在其中的第一个主机就是接收命令的主机。过程中的第三步是发送DATA命令。DATA <CRLF>如果命令被接收,接收方返回一个354 Intermediate应答,并认定以下的各行都是信件内容。当信件结尾收到并存储后,接收者发送一个250 OK应答。因为邮件是在传送通道上发送,因此必须指明邮件内容结尾,以便应答对话可以重新开始。SMTP通过在最后一行仅发送一个句号来表示邮件内容的结束,在接收方,一个对用户透明的过程将此符号过滤掉,以不影响正常的数据。注意:邮件内容包括如下提示:Date, Subject, To, Cc, From。邮件内容指示符确认邮件操作并告知接收者可以存储和再发送数据了。如果此命令被接收,接收方返回一个250 OK应答。DATA命令仅在邮件操作未完成或源无效的情况下失败。上面所述的过程是一个发送操作。这些命令只能以上面的顺序使用。