邮局协议(Post Office Protocol,POP)
目录 |
邮局协议是一个专为用户保存邮件的邮件服务器协议,它是MTS上负责“接收”电子邮件的通信协议。
1984年制定了POP(RFC918),以后完善为POP3(RFC1939)。
邮局协议(POP3)是一个非常简单但功能很有限的读取协议,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则遵循POP3协议,接收邮件服务器的电子邮件。
POP适用于C/S结构的脱机模型,脱机模型不能在线操作。POP3客户向POP3服务器发送命令并等待响应,POP3命令采用命令行形式,用ASCII码表示。
服务器响应是由一个单独的命令行或多个命令行组成,响应第一行以ASCII文本+OK或_ERR指出相应的操作状态是成功还是失败。
在POP3协议中有三种状态:验证状态,处理状态,和更新状态。当客户机与服务器建立联系时,一旦客户机提供了自己身份并成功确认,即验证状态转入处理状态;在完成相应的操作后客户机发出quit命令,则进入更新状态;更新之后重返验证状态,如图1所示。邮局协议(POP)是一个客户方的启动协议,它的作用和SMTP正好相反:SMTP用于把邮件从一台机器转发到另一台机器,而POP则用于接收新邮件。
POP的工作方式很象每天检查邮箱中是否有新邮件,如果有的话,则接收新邮件。唯一的区别是用户很可能希望更频繁地检查新邮件而不是每天一次。每15分钟检查一次是一个比较现实的值。
客户机定期询问邮件服务器是否有新邮件到达。如果服务器中有新邮件,则客户机将下载这些邮件。邮件下载后是否还要在服务器中保留一份副本,由POP的配置方案决定。
当接收完所有的新邮件之后,客户机可以将发送队列中待发送的邮件送往邮件服务器进行发送。服务器上的MTA(很可能是sendmail)负责发送邮件。
1.服务器上的POP
POP服务器上必须运行一个特殊进程,叫做popd,表示POP Daemon。守护进程是一个服服务器进程,它运行在控制终端上,通常处理客户连接。
当popd收到来自邮件服务器的请求后,它检查用户帐号名和被请求的邮件账号口令。如果口令正确,则下载邮件,并根据客户机的设置处理用户在服务器上邮箱中邮件(删除成保留)。
2.客户机上的POP
现在的MUA中都集成了POP的特征。对Netscape Communicator Messenger来说,按下GetMsg按钮即。而在Microsoft Outlook Express中,应按下Send and Receive按钮。在这两种情况下客户机都会向邮件服务器询问服务器收到邮件的情况。
·邮件服务器的位置
·用户帐号名
·用户账号口令
在用户请求下裁邮件时,这些信息将自动传输给邮件服务器。
邮局协议(POP)对于代理系统来说是非常简单的,因为它采用单个连接。内置的支持代理的POP客户程序很少,主要原因是POP多用于局减网,而很少用于因特网。如果你能找到UNIX的POP客户程序的源代码,而将其修改成支持代理的POP客户程序是相当简单的,要找到用于PC机的POP源程序要困难一些,但是修改是容易的。
没有一个简单的方法为内部程序和外部服务器的连接来进行配置,除非所有的客户程序连接到同一台服务器。如果是这样的话,可以在自己的堡垒主机的POP3端口上运行一个公用的TCP代理程序(如TISFWTK提供的plug-gw),将所有的POP请求连接到一个单独的POP服务器,然后再配置你的客户程序,以访问在堡垒主机上的“POP服务器”(实际上是一个代理程序)。
如果不提供访问多个POP服务器,而且能够确定所有客户程序是从一个给定的IP地址或域名来的,并连接到一个特定的服务器,那么可以用pJug-gw程序来设置较复杂的规则,根据连接请求的来源,将它连接到合适的服务器上。如果同一个客户机或多个客户机上有多个用户需要通过防火墙访问不同的POP服务器,目前还没有简单的方法来做到这一点。但可以通过编写一个特殊的POP代理服务程序运行在堡垒主机上以认证用户,决定用户所要连接的服务器,并提供连接。可由POP服务器认证用户,然后扮演传统代理服务器的角色进行数据传输,但必须使用密钥来完成此项服务。
POP3的优点是:消息是一次性下载到本地计算机上的,因此可以方便地进行脱机阅读。同时还可以指定是否要在服务器上保留消息副本。POP3是比较普及的协议,大部分邮件服务器都支持它。POP3的缺点是:必须将本地收件箱与服务器邮箱进行同步。在每次连接时,都要下载新的消息。如果使用多台计算机,则可能有某些消息驻留在一台机器上,而另外一些消息驻留在其他机器上。当使用慢速链路连接时,POP3没有IMAP好用。另外,POP3不支持多个地址。