当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > 设置一个高容量的Linux POP3服务器

Unix/Linux
mysql+httpd+gd+php+zend
automake 小回顾
unix黑客精神的最好诠释
www
sun t3存储的设置
RPM简明中文手册
Linux爱好者入门教程 序章 (持续更新)
第一章 Linux基础知识 (飘心)
linux下进程与线程
浅谈如何学习linux
第二章 Linux安装
硬件安装指南
Windows 2000 的桌面不見了的解決方法
部分的ADSL路由器默认帐号密码
如何设定安全log服务器呢?
iptables 规则速查
网友学习 Linux 的七点忠告
sniffer的含义及原理
Linux编程白皮书 第二章 内存管理
Linux编程白皮书 第二章 内存管理 2.1.1 请求调页 --2.1.5 访问控制

Unix/Linux 中的 设置一个高容量的Linux POP3服务器


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 159 ::
收藏到网摘: n/a

  一: 概述 
本文旨在介绍如何使用开放源软件Procmail和Qpopper来配置一台可供大量用户使用的POP3服务器,重点在于如何保持最佳的服务器性能。 
二: 步骤 
软件环境为RedHat Linux 7.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 
#tar xvfz qpopper4.0.3.tar.gz 
#cd qpopper4.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 
#make install 
编辑文件/etc/inetd.conf 
在/etc/xinetd.d下创建文件pop3,包含下面的内容: 
service pop3 

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 

注释:
-F enable fast update
-S enable server mode (在用户对该服务器没有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处理时间
如果不是redhat 7.1则在/etc/inetd.conf中注释以pop-3开头的行,然后在后面再添加下面的行: pop-3 stream tcp nowait.400 root /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 
#tar xvfz procmail-3.21.tar.gz 
#cd procmail-3.21 
#vi src/authenticate.c 
改#define MAILSPOOLDIR行后面的/var/spool/mail为 "/usr/mail/" (这里我用的是
/usr/mail) 
改#define MAILSPOOLHASH 后面的0 为 2 (用二级hash目录,改进服务器文件系统性能,特别是有大量用户时)
注:这样的话,如果用户的信箱为[email protected],则文件应存在
/usr/mail/j/e/jephe 
#mv /var/spool/mail /var/spool/mail.bak 
注:先换名这个目录,因为可能当编译时如果能找到该目录,则优先用该目录及hash层次结构,这样的话将存储用户邮件到文件/var/spool/mail/j/e/jephe.如果你就想用这个目录,就不用改上面的MAILSPOOLDIR行。 
#make 
#make install 
#make install-suid 
然后以root身份运行#procmail -v检查用户的邮件路径确认为/usr/mail/r/o/root。 
4. 创建POP3用户 
你不需要为mail用户分配home目录,也不需要设置其主目录为/usr/mail/j/e (假定用户为jephe),用下面的命令创建用户。 
#useradd jephe -c "Jephe Wu" -g mail -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