POP3 邮局协议-版本3( 二 )


S:OK POP3 server ready
注重:这个消息是一个POP3应答 。POP3服务器应该给出一个“确定”响应作为确认 。
此时POP3会话就进入了“确认”状态 。此时,客户必须向服务器证实它的身份 。在文档中介绍两种可能的处理机制,一种是USER和PASS命令,另一种是在后面要介绍的APOP命令 。
用USER和PASS命令进行确认过程,客户必须首先发送USER命令,假如POP3服务器以“确认”状态码响应,客户就可以发送PASS命令以完成确认,或者发送QUIT命令终止POP3会话 。假如POP3服务器返回“失败”状态码,客户可以再发送确认命令,或者发送QUIT命令 。
当客户发送了PASS命令后,服务器根据USER和PASS命令的附加信息决定是否答应访问相应的存储邮件 。
一旦服务器通过这些数据决定答应客户访问储存邮件,服务器会在邮件上加上排它锁,以防止在进入“更新”状态前对邮件的改变 。假如成功获得了排它锁,服务器返回一个“确认”状态码 。会话进入“操作状态”,同时没有任何邮件被标记为删除 。假如邮件因为某种原因不能打开(例如,排它锁不能获得,客户不能访问相应的邮件或者邮件不能进行语法分析),服务器将返回“失败”状态码 。在返回“失败”状态码后,服务器会关闭连接 。假如服务器没有关闭连接,客户可以重新发送确认命令,重新开始,或者发送QUIT命令 。
在服务器打开邮件后,它为每个消息指定一个消息号,并以八进制表示每个消息的长度 。第一个消息被指定为1,第二个消息被指定为2,以此类推,第N个消息被指定为N 。在POP3命令和响应中,所以的消息号和长度以十进制表示 。
下面是对上述三条命令的
命令格式参数限制响应例子USER name指定邮箱的字符串,这对服务器至关重要仅在USER和PASS命令失败后或在“确认”状态中使用 OK:有效邮箱;
-ERR:无效邮箱
C: USER mrose S:OK mrose is a real hoopy frood
...
C: USER frated
S: -ERR sorry, no mailbox for frated here
PASS string口令仅在“确认”状态中USER命令成功后使用(因为此命令只有一个参数,因此空格不再作为分隔符,而作为口令的一部分) OK:邮件锁住并已经预备好; -ERR无效口令或无法锁住邮件
C: USER mrose S:OK mrose is a real hoopy frood
C: PASS secret
S:OK mrose"s maildrop has 2 messages (320 octets)
...
C: USER mrose
S:OK mrose is a real hoopy frood
C: PASS secret
S: -ERR maildrop already locked
QUIT(无)(无) OKC: QUIT S:OK dewey POP3 server signing off

5. “操作”状态
一旦客户向服务器成功地确认了自己的身份,服务器将锁住并打开相应的邮件,这时POP3会话进入“操作”状态 。现在客户可以重复下面的POP3命令,对于每个命令服务器都会返回应答 。最后,客户发送QUIT命令,会话进入“更新”状态 。
下面是在“操作”状态中可用的命令:
命令参数限制说明响应例子STAT(无)仅在“操作”状态下可用 。服务器以包括邮件信息的响应做为“确认” 。为简化语法分析,所有的服务器要求使用邮件列表的特定格式 。“确认”响应由一个空格,以八进制表示的邮件数目,一个空格和邮件大小 。这是最小实现,高级的实现还需要别的信息 。注重:被标记为删除的信件不在此列 。
OK: nn mmC: STAT S:OK 2 320
LIST [msg]信件数目(可选),假如出现,不包括标记为删除的信件 。仅在“操作”状态下可用 。假如给出了参数,且POP3服务器返回包括上述信息的“确认”,此行称为信息的“扫描表” 。假如没有参数,服务器返回“确认”响应,此响应便以多行给出 。在初的 OK后,对于每个信件,服务器均给出相应的响应 。

推荐阅读