3. 基本操作 (Basic Operation)
最初,服务器主机通过侦听TCP端口110来启动POP3服务。当客户端主机希望使用该服务时,它会与服务器主机建立TCP连接。建立连接后,POP3服务器发送问候语。然后客户端和POP3服务器交换命令和响应(分别),直到连接关闭或中止。
POP3中的命令由不区分大小写的关键字组成,可能后跟一个或多个参数。所有命令以CRLF对终止。关键字和参数由可打印的ASCII字符组成。关键字和参数之间由单个SPACE字符分隔。关键字长度为三或四个字符。每个参数最多可达40个字符。
POP3中的响应由状态指示符和关键字组成,可能后跟附加信息。所有响应以CRLF对终止。响应最多可达512个字符,包括终止CRLF。目前有两个状态指示符:正面("+OK")和负面("-ERR")。服务器必须 (MUST) 以大写形式发送"+OK"和"-ERR"。
某些命令的响应是多行的。在这些情况下(下面明确指出),在发送响应的第一行和CRLF后,发送任何附加行,每行以CRLF对终止。当响应的所有行都已发送时,发送最后一行,由终止八位字节(十进制代码046,".")和CRLF对组成。如果多行响应的任何行以终止八位字节开头,则该行通过在响应的该行前添加终止八位字节来进行"字节填充 (byte-stuffed)"。因此,多行响应以五个八位字节"CRLF.CRLF"终止。检查多行响应时,客户端检查该行是否以终止八位字节开头。如果是并且CRLF之后还有其他八位字节,则剥离该行的第一个八位字节(终止八位字节)。如果是并且CRLF紧跟在终止字符之后,则POP服务器的响应结束,包含".CRLF"的行不被视为多行响应的一部分。
POP3会话在其生命周期中经历多个状态。一旦打开TCP连接并且POP3服务器发送了问候语,会话进入授权状态 (AUTHORIZATION state)。在此状态下,客户端必须向POP3服务器标识自己。一旦客户端成功完成此操作,服务器获取与客户端邮件投递箱相关的资源,会话进入事务状态 (TRANSACTION state)。在此状态下,客户端请求POP3服务器执行操作。当客户端发出QUIT命令时,会话进入更新状态 (UPDATE state)。在此状态下,POP3服务器释放事务状态期间获取的任何资源并告别。然后关闭TCP连接。
服务器必须 (MUST) 通过以负面状态指示符响应来响应无法识别、未实现或语法无效的命令。服务器必须 (MUST) 通过以负面状态指示符响应来响应在会话处于不正确状态时发出的命令。客户端没有通用方法来区分未实现可选命令的服务器和不愿意或无法处理该命令的服务器。
POP3服务器可以 (MAY) 具有不活动自动注销计时器。此类计时器必须 (MUST) 至少持续10分钟。在该间隔期间从客户端接收任何命令应足以重置自动注销计时器。当计时器过期时,会话不会进入更新状态——服务器应关闭TCP连接而不删除任何消息或向客户端发送任何响应。
术语表 (Glossary):
- CRLF: 回车换行 (Carriage Return Line Feed)
- AUTHORIZATION state (授权状态): 初始身份验证阶段
- TRANSACTION state (事务状态): 主要操作阶段
- UPDATE state (更新状态): 最终清理阶段
- byte-stuffed (字节填充): 转义特殊字符的方法
- status indicator (状态指示符): "+OK"或"-ERR"响应代码
- maildrop (邮件投递箱): 服务器上的用户邮箱
RFC 2119关键字:
- MUST (必须): 绝对要求
- MAY (可以): 可选