如何设置一个企业级的Linux POP3服务器

王朝system·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

一: 概述

本文旨在介绍如何使用开放源软件Procmail和Qpopper来设置一台可供企业级客户使用的

POP3服务器,同时保证极好的性能和安全性。重点介绍如何设置Procmail和Qpopper利用

hash spool 目录结构存储用户邮件。

二: 步骤

软件环境为RedHat Linux 6.2

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. 编译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目录,改进服务器性能,特别是有

大量用户时)

注:这样的话,如果用户的信箱为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

#make install

#make install-suid

然后以root身份运行#procmail -v检查用户的邮件路径是不是/usr/mail/r/o/root。

3. 编译Qpopper

假设下载的文件在/root

#cd /root

#tar xvfz qpopper4.0.3.tar.gz

#cd qpopper4.0.3

#./configure --enable-specialauth --enable-hash-spool=2

--enable-spool-dir=/usr/mail

注: --enable-specialauth 使用/etc/shadow 密码认证

--enable-hash-spool=2 用二级hash结构

--enable-spool-dir=/usr/mail 则用户信箱文件为/usr/mail/j/e/jephe

#make

#make install

编辑文件/etc/inetd.conf

注释以pop-3开头的行,然后在后面再添加下面的行:

pop-3 stream tcp nowait.400 root /usr/local/sbin/popper -s -c -R -T120

如果是Redhat 7.1 ,则在/etc/xinetd.d下创建文件pop3,包含下面的内容:

service pop3

{

socket_type = stream

protocol = tcp

wait = no

user = root

server = /usr/local/lib/popper

server_args = qpopper -s

port = 110

}

如果你在/etc/hosts.deny中设置了ALL:ALL,则要在/etc/hosts.allow中输入

popper:ALL

另外,在Redhat 7中在/etc/xinetd.d下面有个文件ipop3,是默认的pop3服务,你应该

删掉这个文件或者注释出该服务。

3. 创建POP3用户

你不需要为mail用户分配home目录,也不需要设置其主目录为/usr/mail/j/e (假定用户

为jephe),用下面的命令创建用户。

#useradd mailuser1 -c "Mail User1" -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

吴阿亭 ( Jephe Wu )

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航