您的位置: 网站首页 > 千军万马 > Linux操作系统 > 第8章 电子邮件服务器配置 > 【8.4 POP3服务】

8.4 POP3服务

 

8.4  POP3服务

Sendmail并不处理最终的投递,当然也不会处理如何把邮件提交给最终用户的任务。一般来说,用户总是在Windows客户机器上处理各种电子邮件,因此需要一个服务程序负责将Sendmail存储的邮件转交给Windows或其他任何客户机器。有两种基本的方法:一种是将邮件传送到客户的本地机器上处理,这是通过所谓的邮局协议实现的;另一种是允许用户远程操作其邮箱并且实现对邮件的浏览和管理,这是通过所谓的IMAP协议。

8.4.1  POP3协议

POP3即邮局协议3,这是目前邮件客户传输的标准协议之一。几乎所有的邮件客户程序都会支持这个协议。POP3是主要用于接收邮件的。

POP3服务程序通常可以从许多程序包中得到。与Fedora发行版一起提供的通常是POPIMAP放在一起的服务器程序,例如IMAP-4.5-4。可以用rpm程序安装这个产品。安装后,POP3D服务程序放在/usr/sbin下,名字是IPOP3D

IPOP3D程序通常是由inetd服务程序启动,不过默认的情况下这个服务是关闭的。为了打开这个服务,用户必须确认/etc/services文件中有的内容:

pop-3 110/tcp # POP version 3

pop-3 110/udp

然后在/etc/inetd.conf中加入:

pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d

重新启动inetd,就可以使用POP服务了。

IMAP程序包中还包括IMAP服务器,IMAP方式用得比较少,但是它也有自己的优点,因为IMAP服务是直接操作服务器的文件夹,不需要把文件下载到本地,因此可以避免POP服务把邮件副本弄得遍地都是。这对于没有自己的确定计算机的用户特别重要。支持IMAP的邮件客户程序并不是很多,但通常使用的Outlook可以操作IMAP。要使用IMAP服务,在/etc/services里面加上以下代码:

imap2 143/tcp imap # Interim Mail Access Proto v2

imap2 143/udp imap

然后在/etc/inetd.conf里面加上以下代码,重新启动inetd就可以了。

imap stream tcp nowait root /usr/sbin/tcpd imapd

安装了POP支持之后,可以直接telnet110端口看POP服务是否正常运行了,例如:

[root@localhost /etc]$ telnet 202.199.248.19 110

Trying 202.199.248.19...

Connected to 202.199.248.19.

Escape character is ^].

+OK POP3 mail.asnc.edu.cn v7.59 server ready

信息表示POP3服务已经就绪。用户可以接着实验看看能否浏览邮箱:

user newone

+OK User name accepted, password please

pass test

+OK Mailbox open, 3 messages

list list

+OK Mailbox scan listing follows

1 40934

2 29619

3 6001

返回信息说明已经一切正常,可以提供服务了。

8.4.2  安全性和其他问题

如同上面说的一样,SMTP发送信件的时候不需要知道用户口令。相反,POP3程序在允许用户接受邮件之前必须首先确认用户口令。在一般情况下,POP3客户/服务器之间用明文传送用户名和口令。这是一种不太可靠的方式,因为一个恶意的分析者可能通过以太网监听用户的用户口令。

解决问题的办法之一是使用qpopper程序,它提供了一些高级的选项,特别是支持以加密方式在客户和服务器之间转发口令字,以及对POP3使用与账号登录不同的认证口令。用户可以自己到网上下载qpopper程序并且编译安装。

另外一个问题是Sendmail的虚拟域。虚拟域功能是非常有用的,但是它却有一个很严重的问题,就是POP3服务程序并不能正确地支持Sendmail的虚拟域。通常这种情况意味着用户必须自己编写一个POP3服务程序。不过用户使用某些基于Web的信件浏览程序来解决这个问题。