当前位置:Linux教程 - Linux - 中小企业服务器配置方案 第四章(2)

中小企业服务器配置方案 第四章(2)

作 者: 汤海京



( E-mail:[email protected] )

第四章 邮件服务器

第二节 Qmail服务器


2.1 简介

Qmail是一种可以完全替代Sendmail-binmail体系的新一代Unix邮件系统.Qmail与Sendmail比起来有很多特性,包括:

安全
----Qmail将Mail处理过程分为多个过程,尽力避免用root用户运行.同时Qmail禁止对特权用户(root,deamon等)直接发
信.
可靠
----Qmail的直接投递保证Email在投递过程中不会丢失. Qmail同时支持新的更可靠的信箱格式Maildir,保证系统在突然崩溃情况下不至破坏整个信箱.
高效
----在运行于奔腾的BSD/OS上,Qmail每天可以轻松的投递200000封信件.
简单
----Qmail要比其他的Internet Mail系统小得多.Qmail通过统一的向前机制完成forwarding,alias和maillist等功能,Qmail使用简单高效队列来处理投递.Qmail-smtpd可以由inetd启动,节省了一定资源.

Qmail支持:

host and user masquerading
full host hiding
virtual domains
null clients
list-owner rewriting
relay control
double-bounce recording
arbitrary RFC 822 address lists
cross-host mailing list loop detection

2.2 所需资源

2.2.1 所需包
qmail-1.03.tar.gz       Qmail基本系统包
ucspi-tcp-0.88.tar.gz     tcpserver等服务程序
daemontools-0.70.tar.gz    监视工具
checkpassword-0.90.tar.gz   pop3验证用户程序
vpopmail-4.9.8.tar.gz     虚拟域用户pop3支持
vqsignup-0.4          web方式用户注册
sqwebmail-1.2.4.tar.gz     webmail
qmailadmin-0.42.tar.gz     虚拟域web方式管理
ezmlm-0.53.tar.gz       邮件列表管理
autorespond-1.0.0.tar.gz    自动回复程序

2.2.2 下载网址
http://www.qmail.org
http://www.inter7.com/qmail


2.3 安装过程


安装Qmail基本包
添加Qmail所必须的用户和组
mkdir /var/qmail
groupadd nofiles
useradd -g nofiles -d /var/qmail/alias alias
useradd -g nofiles -d /var/qmail qmaild
useradd -g nofiles -d /var/qmail qmaill
useradd -g nofiles -d /var/qmail qmailp
groupadd qmail
useradd -g nofiles -d /var/qmail qmailq
useradd -g nofiles -d /var/qmail qmailr
useradd -g nofiles -d /var/qmail qmails

安装Qmail包
cd /usr/local/src
tar xvzf qmail-1.03.tar.gz
cd qmail-1.03
make setup check
./config-fast $HOSTNAME
# 设定Qmail服务器主机名
cd ~alias;touch .qmail-postmaster .qmail-mailer-
daemon .qmail-root
sed ''s/Mailbox/Maildir//'' /var/qmail/boot/home >
/var/qmail/rc
chmod 755 /var/qmail/rc



安装tcpserver等服务程序
cd /usr/local/src
tar xvzf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
make
make setup check

安装pop3验证用户程序
cd /usr/local/src
tar xvzf checkpasswd-0.90.tar.gz
cd checkpasswd-0.90
make
make setup check
chmod og-rx /bin/checkpassword


安装虚拟域用户pop3支持
groupadd vchkpw
useradd -g vchkpw vpopmail
mkdir ~vpopmail/etc
echo ""127.0.0.:allow,RELAYCLIENT="""""" > ~vpopmail/etc/tcp.smtp
echo ""192.168.0.:allow,RELAYCLIENT="""""" >> ~vpopmail/etc/tcp.smtp
echo "":allow"" > /etc/tcp.smtp
/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
cd /usr/local/src
tar xvzf vpopmail-4.9.8.tar.gz
cd vpopmail-4.9.8
make clean
./configure --enable-hardquota=10485760 --enable-deliver-filter=y
make
make install-strip
cd /home/vpopmail/bin
./vadddomain weboa.com.cn weboa
./vadduser [email protected] thj


更改Sendmail为Qmail
killall -TERM sendmail
mv /usr/lib/sendmail /usr/lib/sendmail.org
mv /usr/sbin/sendmail /usr/sbin/sendmail.org
mv /etc/rc.d/init.d/sendmail /etc/rc.d/init.d/sendmail.org
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
cp /root/qmail/qmail-start /etc/rc.d/init.d/ -f
cp /root/qmail/databytes /var/qmail/control/ -f
ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc3.d/S98qmail


制作Qmail控制脚本
#!/bin/sh
case ""$1"" in
start)
echo ""start qmail:""
/var/qmail/rc &
echo ""start smtp service:""
  /usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb 0 smtp
/var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger
smtpd 3 &
echo ""start pop3 service:""
  /usr/local/bin/tcpserver -H -R 0 pop3 /var/qmail/bin/
qmail-popup $HOSTNAME /home/vpopmail/bin/vchkpw
/var/qmail/bin/qmail-pop3d Maildir &
;;
stop)
  echo ""stop qmail:""
killall -9 tcpserver
killall -9 qmail-lspawn
;;
*)
exit 1
;;
esac
exit 0


安装监视工具
cd /usr/local/src
tar zxvf daemontools-0.70.tar.gz
cd daemontools-0.70
   make
   make setup check
#执行文件将安装于/usr/local/bin中。
#安装本工具后可以用 # mkdir /var/run/qmail
          # supervise /var/run/qmail /var/qmail/rc
来启动qmail,还可以用svc来关闭或重启qmail,用svstat监视qmail运行情况


Qmail之Web解决方案
安装邮件列表管理
cd /usr/local/src
tar zxvf ezmlm-0.53.tar.gz
make
make man
make setup

安装自动回复程序
cd /usr/local/src
tar zxvf daemontools-0.70.tar.gz
gcc -Wall -o autorespond autorespond.c
cp autorespond /usr/local/bin/autorespond

安装虚拟域web方式管理
cd /usr/local/src
tar zxvf qmailadmin-0.42.tar.gz
cd qmailadmin-0.42.tar.gz
  在安装前首先要考虑满足以下几项要求:
  a.是否拥有一个vpopmail用户vchkpw
  b.cgi-bin目录的所在位置
  c.ezmlm目录的所在位置
  d.autorespond目录的所在位置
  如果能够达到以上要求,可以继续安装
  ./configure
  make
  make install-strip
  检测安装是否正确:浏览器中打开路径
  http://mail.weboa.com.cn/cgi-bin/qmailadmin,
  看根据前面设置的用户和密码是否能够成功登录进去。

安装WebMail包
cd /usr/local/src
tar zxvf sqwebmail-1.2.4.tar.gz
cd sqwebmail-1.2.4.tar.gz
./configure --without-authpam --without-authuserdb
enable-webpass=no --without-authpwd
--without-authshadow
   make configure-check
   make
   #当make时报错找不到db.h
   可以 cp /usr/include/db1/db.h /usr/include/db.h
   make check
   make install-strip
   make install-configure
   检测安装是否正确:浏览器中打开路径
   http://mail.weboa.com.cn/cgi-bin/sqwebmail

安装vqsignup
tar xvfz vqsignup-0.4.tar.gz
cd vqsignup-4.0
修改Makefile文件:
FLAGS=-I/home/vpopmail/include
修改-I/home/vpopmail/include指到真实的vpopmail/include目录
修改下面的这行
$(CC) $(FLAGS) -o $(BIN) $(OBJS) -L/home/vpopmail/lib -lvpopmail -lcrypt
修改 -L/home/vpopmail/lib 为真的vpopmail lib的目录

编译
make

安装
拷贝signup.cgi和signup.conf文件到cgi-bin目录下
切换目录到cgi-bin目录下
chown vpopmail signup.cgi
chgrp vchkpw signup.cgi
chmod ug+s signup.cgi
chmod ugo+r signup.conf
拷贝vqsignup_html目录到cgi-bin目录下,确信对所有用户可读
拷贝vqsignup.html文件到DocumentRoot目录下,确信能够被访问。编辑cgi-bin目录下的vqsignup.conf文件
修改""add_domain""的所有行,加上你的真实的域,把其他的行删除掉.更改vqsignup_text/*.html文件,使包含""result_*""的行的路径指到正确的全路经。
修改vqsignup_text目录下所有的文件,使它们只包含你想支持的域,你也可以定制这些页面,使它们更加好看些。
修改DocumentRoot目录下vqsignup.html文件,使它只包含你想支持的域,你也可以定制这个页面,使它更加好看些。

测试
用你的浏览器访问http://your web server/your sub dir/vqsignup.htm, 试着注册新用户,如果成功的话,那么就恭喜你了。如果有错误,请返回安装步骤仔细查看文件的权限和vqsignup.html里的值是否正确。

2.4 其他参考资料

Adam McKenna所编写qmail-HOWTO
http://www.flounder.net/qmail/qmail-howto.html

qmail FQA (內含于qmail 1.03 Source Code)
  http://www.qmail.org/
http://www.linuxaid.com.cn/solution/上有几篇比较好的安装文档
http://www.linuxforum.net/cgi-bin/perl/wwwthreads.pl上的qmail讨论也不错

2.5小结

Qmail配置工作虽然较Sendmail来说已经大大简化,但要想真正建立一个功能强大、运行稳定的邮件服务器,掌握其灵活的配置,认真阅读其How-to和FAQ还是极有必要的。关于Dot-forward、邮件列表等其他非常有用的方法和使用技巧,限于篇幅就不再介绍了,建议大家参考软件包中的有关文档。