三个重要的邮件传输协议之POP3( 四 )


...
c: uidl 2
s:ok 2 qhdpyr:00wbw1ph7x7
...
c: uidl 3
s: -err no such message, only 2 messages in maildrop
apop name digest
指定邮箱的字串和md5摘要串 。
仅在pop3确认后的"确认"状态中使用 。通常,每个pop3会话均以user/pass互换开始 。这导致了用户名和口令在网络上的显式传送,这不会造成什么危险 。但是,许多客户经常连接到服务检查信件 。通常间隔时间比较短,这就加大了泄密的可能性 。另 一种提供"确认"过程的方法是使用apop命令 。实现apop命令的服务器包括一个标记确认的时间戳 。例如:在unix上使用apop命令的语法为:process-id.clock@hostname,其中进程-id是进程的十进制的数,时钟是系统时钟的十进制表示,主机名与pop3服务器名一致 。

客户记录下此时间戳,然后以送apop命令 。name语法和user命令一致 。digest是采用md5算法产生的包括时间戳和共享密钥的字串 。此密钥是客户和服务器共知的,应该注重保护此密钥,假如泄密,任何人都能够以用户身份进入服务器 。假如服务器接到apop命令,它验证digest,假如正确,服务器返回"确认",进入"操作"状态;否则,给出"失败"并停留在"确认"状态 。注重:共享密钥的长度增加,解读它的难度也相应增加,这个密钥应该是长字符串 。
ok:邮件锁住并预备好;
-err:拒绝请求 。
s:ok pop3 server ready <1896.697170952@dbc.mtview.ca.us>
c: apop mrose c4c9334bac560ecc979e58001b3e22fb
s:ok maildrop has 1 message (369 octets) 在此例子中,共享密钥

<1896.697170952@dbc.mtview.ca.us>tanstaaf由md5算法生成,它产生了digest值,

c4c9334bac560ecc979e58001b3e22fb
8. pop3命令总结
基础的pop3命令:
user name 在"确认"状态有效
pass string
quit
stat 在"操作"状态有效
list [msg]
retr msg
dele msg
noop
rset
quit 在"更新"状态有效
可选的pop3命令:
apop name digest 在"确认"状态有效
top msg n 在"操作"状态有效
uidl [msg]
pop3 响应:ok -err
注重:除了stat,list和uidl的响应外,其它命令的响应均为" ok"和 "-err" 。响应后的所有文本将被客户略去 。
9. pop3会话实例
s: <等待连接到tcp端口110>
c: <打开连接>
s:ok pop3 server ready <1896.697170952@dbc.mtview.ca.us>
c: apop mrose c4c9334bac560ecc979e58001b3e22fb
s:ok mrose’s maildrop has 2 messages (320 octets)
c: stat
s:ok 2 320
c: list
s:ok 2 messages (320 octets)
s: 1 120
s: 2 200
s: .
c: retr 1
s:ok 120 octets
s: <服务器发送信件1>
s: .
c: dele 1
s:ok message 1 deleted
c: retr 2
s:ok 200 octets
s: <服务器发送信件2>
s: .
c: dele 2
s:ok message 2 deleted
c: quit
s:ok dewey pop3 server signing off (maildrop empty)
c: <关闭连接>
s: <等待下一次连接>

推荐阅读