服务器 频道

新手入门:了解邮件服务与相关协议<四>

  【IT168 服务器学院】POP3

  RFC 1939个定义的POP3是一个极为简单的邮件访问协议。正因为它过于简单,其功能也相当有限。POP3开始于用户代理(客户)打开一个到POP3服务器(服务器)端口号110的TCP连接。POP3服务器与邮件服务器运行在相同的服务器主机上,前者从用户的邮箱中读取并可能删除邮件消息,后者往用户的邮箱中写入邮件消息。TCP连接建立好之后,POP3依次经历授权队证、处理和更新3个阶段。在授权阶段,用户代理分别发出一个用户名和一个口令以认证下载邮件消息的用户。在处理阶段,用户代理获取邮件消息,并可以标记待删除的邮件消息或去掉这些标记,获取邮件统计信息。更新阶段发生在用户代理发出quit命令以结束当前POP3会话之后,期间POP3服务器删除己加过删除标记的邮件消息。

  在POP3会话期间,用户代理发出命令,PoP3服务器则对每个命令响应以一个应答。可能的应答有两个:指出刚才的命令执行成功的+oK(有时后跟一个解释性消息)和指出刚才的命令执行有误的-ERR。

  授权阶段共有两个基本命令:user <用户名>和pass<口令>。我们可以便用telnet工具指定使用POP端口号110直接登录到某台POP3服务器主机,并发出这些命令来展示它们的用法。假设mailserver是你的邮件服务器主机的名字,这个过程大体如下;


  telnet mailserver 110
  +OK POP3 server ready
  user alice
  +OK
  pass password
  +OK user successfully logged on

  当然要是写错了某个命令,POP3服务器将返回一个-ERR应答。

  下面查看一下处理阶段。使用POP3的用户代理可由用户配置成“下载并删除”或“下载并保留”两种模式之一。POP3用尸代理发出的一系列命令取决于自己运行在哪种模式。在下载井删除模式中,用户代理会发出list,retr和dele命令。作为例子,我们假设用户的邮箱中已存有两个邮件消息,共POP3处理阶段大体如下(其中前面标以“C:”的是用户代理发出的命令,前面标以“S:”的是POP3服务器返回的应答):

  C:list
  S:1 498
  S:2 912
  S:.
  C:retr 1
  S:(blab ......
  S: ............
  S: ......)
  S:.
  C:dele 1
  C:retr 2
  S:(... ...
  S:...
  S:......)
  S:.
  C:dele 2
  C:quit
  S:+OK POP3 server signing off

  用户代理首先要求POP3服务器列出存放在自己的邮箱中的每个邮件消息的大小,接着依次取回并删除每个邮件消息。需注意的是,授权阶段结束之后,用户代理只能发出4个命令:list,retr,deie,quitt。这些命令的具体语法定义在RFC 1939中。处理完quit命令后,POP3服务器进入更新阶段,把邮件消息1和2从相应的邮箱中删除。

  下载并删除模式存在一个问题,也就是收信人可能希望从不止一台主机访问自已的邮箱,如既能从办公室PC机访问.也能从家庭PC机访问,还能从使携机访问。下裁并删除模式将导致同一用户的邮件消息散布到他的多台主机上;例如,要是他先在家里的PC机上阅读了某个邮件消息,以后就没法在使携机上阅读同一个邮件消息了。下裁并保留模式则恰好相反,用户代理把己从POP3服务器下载的邮件消息继续保留在邮件服务器中。这种模式下,用户可以在不同的时间从不向的主机访问同样的邮件消息。

  在用户代理和邮件服务器之间的POP3会话期间,POP3务器维护一定的状态信息:具体地说,它跟踪哪些邮件消息己被标记成待删除。不过POP3服务器不会跨会话保存状态信息。例如,每次会话开始之时没有任何邮件消息被标记成待删除。这种不跨会话保存状态信息的处理办法极大地简化了PoP3服务器软件的实现。

0
相关文章