一:概述
本文旨在介绍如何使用开放源软件Procmail和Qpopper来配置一台可供大量用户使用的POP3服务器,重点在于如何保持最佳的服务器性能。
二:步骤
软件环境为RedHatLinux7.1
1.下载最新版的Procmail和Qpopper
Procmail最新版本现在是3.21可从
http://www.procmail.org/procmail-3.21.tar.gz下载。
Qpopper最新版本现在是4.0可从
http://www.eudora.com/qpopper_general/下载
2.编译Qpopper
假设下载的文件放在/root
#cd/root
#tarxvfzqpopper4.0.3.tar.gz
#cdqpopper4.0.3
#./configure--enable-hash-spool=2
--enable-log-login
--enable-server-mode
--enable-fast-update
--enable-shy
--enable-spool-dir=/usr/mail
--enable-specialauth
注释:
--enable-specialauth使用/etc/shadow密码认证
--enable-hash-spool=2使用二级hash结构
--enable-spool-dir=/usr/mail则用户信箱文件为/usr/mail/j/e/jephe
--enable-log-login记录下成功的POP3登录进入syslog
--enable-server-mode和--enable-fast-update
不要让qpopper在用户存取信箱时拷贝信箱文件到临时文件
减少磁盘I/O,增强性能
--enable-shy让服务器响应时不要显示版本信息,增强安全性
#make
#makeinstall
编辑文件/etc/inetd.conf
在/etc/xinetd.d下创建文件pop3,包含下面的内容:
servicepop3
{
socket_type=stream
protocol=tcp
wait=no
user=root
server=/usr/local/lib/popper
server_args=qpopper-F-S-s-c-R-T120
port=110
}
注释:
-Fenablefastupdate
-Senableservermode(在用户对该服务器没有shell存取时做)
-s打开LOG功能
-c忽略用户名的大小写
-R不对连接进来的IP地址做反向域名检查
-T设定超时时间
这样设定之后,如果用户jephe收取信件时,则先锁定信箱文件/usr/mail/j/e/jephe创建锁文件.jephe.pop,检查信件数目,退时出更新状态,生成.jephe.cache文件。
否则正常模式下是先把/usr/mail/j/e/jephe拷贝成.jephe.pop,最后用户检查信箱完毕再拷贝回来,增加了I/O处理时间
如果不是redhat7.1则在/etc/inetd.conf中注释以pop-3开头的行,然后在后面再添加下面的行:pop-3streamtcpnowait.400root/usr/local/sbin/popper-F-S-s-c-R-T120
nowait:400中的400是指每分钟最多可接受的连接请求数目
如果你在/etc/hosts.deny中设置了ALL:ALL,则要在/etc/hosts.allow中输入
popper:ALL
3.编译Procmail
假设下载的文件放在/root
#cd/root
#tarxvfzprocmail-3.21.tar.gz
#cdprocmail-3.21
#visrc/authenticate.c
改#defineMAILSPOOLDIR行后面的/var/spool/mail为"/usr/mail/"(这里我用的是
/usr/mail)
改#defineMAILSPOOLHASH后面的0为2(用二级hash目录,改进服务器文件系统性能,特别是有大量用户时)
注:这样的话,如果用户的信箱为jephe@domain.com,则文件应存在
/usr/mail/j/e/jephe
#mv/var/spool/mail/var/spool/mail.bak
注:先换名这个目录,因为可能当编译时如果能找到该目录,则优先用该目录及hash层次结构,这样的话将存储用户邮件到文件/var/spool/mail/j/e/jephe.如果你就想用这个目录,就不用改上面的MAILSPOOLDIR行。
#make
#makeinstall
#makeinstall-suid
然后以root身份运行#procmail-v检查用户的邮件路径确认为/usr/mail/r/o/root。
4.创建POP3用户
你不需要为mail用户分配home目录,也不需要设置其主目录为/usr/mail/j/e(假定用户为jephe),用下面的命令创建用户。
#useraddjephe-c"JepheWu"-gmail-d/dev/null-s/bin/false
再可以写一个批命令用chpasswd给每个用户以同样的password.
a.首先用passwd为mailuser1设置密码,假定为"abc123",检查/etc/shadow中的密
码,我的机器上"abc123"
为$1$G22Plicn$r5.bSe0U7DbaHN7tCevTR/
b.创建一个新文件/tmp/password,每行包括一个用户名:密码,可从/etc/passwd用下面的命令取得
cat/etc/passwd|awk-F:{print$1}|sed-e
s/$/:$$1$G22Plicn$r5.bSe0U7DbaHN7tCevTR//g
c.然后运行chpasswd</tmp/password
5.FAQ
a.编译qpopper后,仍需在命令行上使用-F-S参数以启动服务器模式和快速更新,请放-F在-S的前面
上一篇:在Linux下实现设备的配置(上)
下一篇:Linux的路由器和防火墙配置