您查看的文章来源于http://www.oklinux.cn
我在另一篇文章里说到用Qpopper做POP3服务器,这里介绍使用功能更强大、更安全、更优秀的同时支持IMAP4、POP3协议的Dovecot。
RHEL5光碟自带的Dovecot是一个测试版本,我们可以下载一个稳定版本RPM包,但我推荐使用源码包编译的方式安装配置Dovecot。
(最新)源码包下载、解压、配置、编译、安装:
[root@pps ~]# [url]http://www.dovecot.org/releases/1.1/dovecot-1.1.13.tar.gz[/url]
[root@pps ~]# tar zxf dovecot-1.1.13.tar.gz
[root@pps ~]# cd dovecot-1.1.13
[root@pps dovecot-1.1.13]# ./configure --prefix=/usr/local/dovecot
[root@pps dovecot-1.1.13]# make
[root@pps dovecot-1.1.13]# make install
【注意】在配置阶段(configure)使用"--prefix"指定安装的路径,如果不指定的话,默认安装到/usr/local后Doevecot相关文件“一盘散沙”,像我这样就全都放在/usr/local/dovecot目录下了,易于查找管理,也让人对Dovecot更明了。
============================================================
下面是configure的最后输出信息:
Install prefix ...................... : /usr/local/dovecot
File offsets ........................ : 64bit
I/O loop method ..................... : epoll
File change notification method ..... : inotify
Building with SSL support ........... : yes (OpenSSL)
Building with IPv6 support .......... : yes
Building with pop3 server ........... : yes
Building with mail delivery agent .. : yes
Building with GSSAPI support ........ : no
Building with user database modules . : static prefetch passwd passwd-file sql nss
Building with password lookup modules : passwd passwd-file shadow pam checkpassword sql
Building with SQL drivers ............:
如果显示password查询不支持pam,应该是没有安装pam-dev包所致。
我的RHEL5没有安装RPM包形式的mysql,configure没能检测出我安装在/usr/local目录下的mysql。如果日后有可能需要用到mysql数据库验证,我可以指定"--with-mysql=/usr/local/mysql/lib"来让Dovecot支持mysql。
============================================================
Dovecot安装在/usr/local/dovecot,配置文件是/usr/local/dovecot/etc/dovecot.conf,但安装后只有一些示例配置文件在dovecot/etc目录下,如下所示:
[root@pps ~]# cd /usr/local/dovecot/etc
[root@pps etc]# ls
dovecot-db-example.conf dovecot-ldap-example.conf
dovecot-example.conf dovecot-sql-example.conf
我选择dovecot-example.conf作为蓝本进行修改配置:
[root@pps etc]# cp dovecot-example.conf dovecot.conf
我所启用、修改的选项如下:
#
# /usr/local/dovecot/etc/dovecot.conf
#
# 支持imap imaps pop3 pop3s协议
protocols = imap imaps pop3 pop3s
# 允许不启用TLS情况下使用普通文本方式验证
disable_plaintext_auth = no
# 启用ssl支持
ssl_disable = no
# 指定证书和私钥的位置
ssl_cert_file = /etc/pki/tls/certs/dovecot.pem
ssl_key_file = /etc/pki/tls/certs/dovecot.pem
============================================================
【注意】在源码包doc目录下,可以使用mkcert.sh脚本,根据dovecot-openssl.cnf文件里的信息生成自己签署认证的dovecot.pem文件,证书dovecot.pem生成在/etc/ssl/certs目录下,私钥dovecot.pem生成在/etc/ssl/private目录下。为了使得和我配置的sendmail.pem在同一位置,我将dovecot.pem(包括证书和私钥)放在/etc/pki/tls/certs/dovecot.pem文件里。我没有使用mkcert.sh生成,而是来到/etc/pki/tls/certs目录下执行make dovecot.pem。
============================================================
# 这是登录进程使用的用户,不是访问用户邮件的用户,不一定非得用下面的"mail"用户。
login_user = mail
============================================================
【注意】示例配置文件里有相关的建议,最好使用一个“没其它用途”的用户,默认是dovecot用户。这个用户是用来控制认证进程的访问权限的。当客户端验证成功后,产生新的具有相应用户权限的进程来对邮件进行访问操作。
============================================================
# 根据手册,最好还是“显式”指示邮件位置
# mbox邮件存储格式,如果想支持IMAP4的话,没个系统用户需要有home目录
mail_location = mbox:~/mail:INBOX=/var/mail/%u
============================================================
【注意】如果是采用maildir格式的话,配置文件里默认的例子是mail_location = maildir:~/Maildir,如果是这样就不需要设置什么访问权限了,客户端POP3/IMAP登录成功后,就具备相应的用户权限来访问自家目录下的邮件,如果Maildir不存在的话还会自动建立起来。
如果你指定别的邮件目录,像我以下这样:
mail_location = maildir:/home/Mail/%n/Maildir
除了得事先建立好用户目录,还需要从Mail目录到用户目录具备相应用户的执行权限。
============================================================
# 这里需要给Dovecot指定"mail"组权限去读写INBOX(/etc/mail/%u或别的位置)
mail_privileged_group = mail
============================================================
【注意】如果客户端登录后有足够的权限读写INBOX就不需要mail组用户权限了。