POP3协议简介

由于要些一个POP3邮箱的收信程序,所以看了一下POP3协议,将其中的核心部分翻译了一下。

POP3协议中的命令包含不区分大小写的关键字并可能跟随1个或多个参数。所有命令以CRLF结尾。关键字和参数包含可打印的ASCII字符。每个关键字和参数由单个SPACE字符分隔。关键字长度为3或4个字符。每个参数长度最多40个字符。

POP3协议中的响应包含一个状态指示器和一个可能跟随附加信息的关键字。所有响应以CRLF结尾。包含结束的CRLF在内,响应的长度最多为512个字符。目前有2个状态指示器:正确的(“+OK”)和错误的(“-ERR”)。服务器必须以大写的形式发“+OK”和“-ERR”。

某些命令的响应是多行的。在这种情况下,在发送第一行的响应和CRLF后,会发送以CRLF结尾的附加行。当响应的所有行发送完之后,最后一行包含一个结束字节(046,“.”)和CRLF。因此一个多行的响应的结束标记是五个字节(“CRLF.CRLF”)。当检查一个多行的响应时,如果该行是以结束字节开始,并且接着的字节不是CRLF,则把第一个字节(结束字节)去掉。

AUTHORIZATION状态
一旦打开客户端的TCP连接,POP3服务器发送一行欢迎信息,可能是任何正确的响应。如:+OK POP3 server ready。此时POP3的会话处于AUTHORIZATION状态。

TRANSACTION状态
此状态下的命令:
STAT:服务器响应关于邮箱的相关信息。响应形式如下:+OK,空格,邮箱中的信件数目,空格,邮箱大小(以字节为单位),附加信息(可选),CRLF。
LIST [msg]:参数msg:信件编号,不能引用被标记为删除的信件。如果不带参数,响应中每行包含信件的信息。响应形式如下:信件编号,空格,信件的准确大小(以字节为单位),附加信息(可选),CRLF。
举例:
C: LIST
S: +OK 2 messages (320 octets)
S: 1 120
S: 2 200

RETR msg:参数msg:信件编号,不能引用被标记为删除的信件。服务器响应信件的内容(多行)。

DELE msg:参数msg:信件编号,不能引用被标记为删除的信件。将编号为msg的信件标记为删除,任何引用该信件编号的命令都将出错。服务器在UPDATE状态中执行实际的删除。

NOOP:服务器不做任何事情,只是返回响应+OK。

RSET:解除任何被标记为删除的信件。

UPDATE状态:
客户端发送QUIT命令,服务器进入UPDATE状态。
QUIT:服务器删除所有标记为删除的信件,并响应此操作的状态。

可选的POP3命令:
TOP msg n:参数msg:信件编号;n:行数。
如果服务器给出正确的响应,则响应的格式如下:+OK,信件头,空行,n行的信件体。

UIDL [msg]:参数msg:信件编号。
响应形式:信件编号,空格,信件的唯一编号。

USER name:参数name:标识邮箱的字符串。
即便没有邮箱存在,服务器也可能返回正确的响应。如果邮箱存在但是不支持普通文本的密码认证,服务器也可能返回错误的响应。

PASS string:参数string:密码。
空格被识别为密码的一部分。

APOP name digest:参数name:标识邮箱的字符串;digest:MD5字符串。
支持APOP命令的服务器会在欢迎信息中包含时间戳。时间戳的语法对应于RFC822中的“msg-id”。客户端注意到时间戳,发送APOP命令。name参数与USER命令中的相同,digest参数是对时间戳加上共享密钥应用MD5算法[RFC1321]计算所得。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值