版本2 邮局协议( 三 )


"=ccc"ccc是对应的邮件的长度
RETR
该命令确定用户已经做好接收邮件的预备.它必须跟一个确认命令.服务器
会断开连接,假如发送一个长度为零的消息(例如一个不存在的消息).该命令的要害字是"
RETR",后面跟一个CRLF.
可能的应答:
数据流或关闭连接
ACKS
该命令确认用户已经接收到邮件.该命令结束邮件数据的传输.邮件数据被保
存在邮箱中,邮件指针增加1.服务器返回下一个邮件数据长度或零(假如下一个邮件不存在
或已经被删除).该命令的要害字是"ACKS",后跟CRLF
可能的应答:
"=ccc"ccc是下一个邮件的长度
ACKD
该命令确认用户已经接收到邮件,结束邮件数据的传输,假如用户有对邮箱的
写权限则将对应的邮件从邮箱中删除.事实上,只有在会话结束,邮箱被释放或用户选择另
外一个邮箱时才会发生改变.假如用户没有对邮箱的写权限,则邮箱不发生改变.服务器的应
答是相同,不管邮件是否被删除.然后,服务器将邮件指针指向下一个邮件,并返回它的长度.
相应的,假如邮件不存在或已经被删除,则返回零长度.该命令的要害字是"ACKD"然后是
CRLF.
可能的应答:
"=ccc"ccc是下一个邮件的长度
NACK
用户用该命令向服务器报告它未收到数据.该命令结束邮件数据的传送.将邮件数
据保存在邮箱中,保持邮件指针不变.服务器返回当前邮件的长度.因为当前邮件必然存在,
所以邮件长度是一个大于零的数.该命令的要害字是"NACK",然后是CRLF.
可能的应答:
"=ccc"ccc是当前邮件的长度.
QUIT
该命令表明用户已经完成会话.服务器将发送一个"OK"应答给用户,并关闭连接.
该命令的要害字是"QUIT",然后是CRLF.
可能的应答:
" OK"并关闭连接
服务器回答
GREETING
任何一个连接被建立时,服务器都将发送该应答给用户.该消息由一个加号,然后
是协议的名字(POP2),服务器的名字,文本,CRLF组成.
" "
加号意味着成功的连接.后面跟文本和CRLF.
"-"
减号意味着连接失败.和加号一样,后面跟文本和CRLF.
"="
等号返回命令中指定的邮件的长度.后面跟一个数字,然后是文本和CRLF.
"#"
该符号返回指定邮箱或文件夹中的邮件总数.后面跟一个数字,然后是文
本和CRLF.
TIMEOUTS
任何一个类似的协议中都有TIMEOUTS.假如不想让其中一方陷入无穷的等待
中.用户希望较快的应答,因此应该由一个短的超时时间.它被称作T1.
对一些服务器来说,应该有时间计算邮箱中的邮件数或邮件的长度或重整存
储的数据以用来传输.因此,超时时间应该大于这些时间.在命令RETR中也应该考虑这个问
题.
服务企业不希望无期地等待用户的下一个命令,因此服务企业由一个超时时间
T2.
当一个用户给客户机编一段程序,使它自动的给服务器发送命令时,可以很合理
的想象,此时服务器的T2时间应该很小.
相应的,假如是一个人在给服务器发送命令,服务器的T2时间应该很大.
讨论
TOPS-20上的服务器的评价:
该情况下,邮箱是一个简单的文件.信邮件被链接在文件后面.不同邮件间有
一个分割行.
这种服务器的非凡之处是它的删除操作.只有当用户拥有对文件的写权限时,
才能进行该操作.要注重避免两个问题:(1)阻止其它用户对文件的写操作;(2)防止意外删除
用户为看的邮件.
一个建议
当一个邮箱被选中时,假如用户有写权限,给邮箱重新起一个临时名.这样新邮件就
会被放在临时文件中.对临时邮箱进行所有的POP2操作.这样当POP2会话结束或大卡另一个

推荐阅读