服务器 频道

Linux下构架邮件系统(Qmail)

  【IT168 服务器学院】(一)特点简介

  安全性 为了验证Qmail的安全性,Qmail的支持者甚至出资$1000悬赏寻找 Qmail的安全漏洞,一年以后,该奖金没有被领取,而被捐献给自由软件基金会 。目前,Qmail的作者也出资$500来寻求Qmail的安全漏洞。

  速度:Qmail在一个中等规模的系统可以投递大约百万封邮件,甚至在一 台486一天上能处理超过10万封邮件,起支持并行投递。Qmail支持邮件的并行投 递,同时可以投递大约20封邮件。目前邮件投递的瓶颈在于SMTP协议,通过STMP 向另外一台互联网主机投递一封电子邮件大约需要花费10多秒钟。Qmail的作者 提出了QMTP(Quick Mail Transfer Protocol)来加速邮件的投递,并且在Qmail中得到支持。 Qmail的设计目标是在一台16M的机器上最终达到每天可以投递大约百万级数目的 邮件。

  可靠性:为了保证可靠性,Qmail只有在邮件被正确地写入到磁盘才返回 处理成功的结果,这样即使在磁盘写入中发生系统崩溃或断电等情况,也可以保 证邮件不被丢失,而是重新投递。

  特别简单的虚拟域管理,甚至有一个第三方开发的称为vchkpw的add-on来支持虚 拟POP域。使用这个软件包,POP3用户不需要具有系统的正式帐户。

  使用ezmlm支持用户自控制的邮件列表功能。

  邮件用户和系统帐户隔离,为用户提供邮件帐户不需要为其设置系统帐户 ,从而增加了安全性。

  (以上摘自网上,由于没有找到原作者的署名,如果原作者碰巧看到,请与我联系,谢谢)

  (二) 软件

  * qmail-1.03.tar.gz qmail基本系统包
  * ucspi-tcp-0.88.tar.gz tcpserver服务程序
  * daemontools-0.76.tar.gz 监视工具
  * checkpassword-0.90.tar.gz pop3验证用户程序
  * cmd5checkpw-0.22.tar.gz 系统验证程序
  * vpopmail-5.2.0.tar.gz 虚拟域用户pop3支持
  * vqsignup-0.5.tar.gz web方式用户注册
  * sqwebmail-3.3.7.tar.gz webmail
  * qmailadmin-0.42.tar.gz 虚拟域web方式管理
  * ezmlm-0.53.tar.gz 邮件列表管理
  * autorespond-1.0.0.tar.gz 自动回复程序
  * qmail-smtpd-auth-0.30.tar.gz SMTP认证补丁程序

  (三) 安装配置

  ①. 安装环境准备

  设置服务器工作环境和编译环境;并且准备好所有的软件包;然后设置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

  ## 参考网址
  ## http://cr.yp.to/

  ②. 安装tcpserver服务程序

  tar xvf ucspi-tcp-0.88.tar
  cd ucspi-tcp-0.88
  make
  make setup check

  ③. 系统验证程序(可选)

  # tar zxvf cmd5checkpw-0.22.tar.gz
  # mkdir /usr/man
  # mkdir /usr/man/man8
  # cd cmd5checkpw-0.22
  # make
  # make install

  ④. 安装pop3用户验证程序

  tar xvf checkpassword-0.90.tar
  cd checkpassword-0.90
  make
  make setup check
  chmod 4755 /bin/checkpassword

  ⑤. qmail解包

  # tar xvzf qmail-1.03.tar.gz

  ⑥. SMTP补丁

  tar zxvf qmail-smtpd-auth-0.30.tar.gz
  cd qmail-smtpd-auth-0.30
  cp base64.c base64.h README.auth ../qmail-1.03/
  patch -d ../qmail-1.03 < auth.patch

  ⑦. 安装qmail-1.03

  cd qmail-1.03
  make setup check
  ./config-fast $HOSTNAME
  ## 设定Qmail服务器主机名
  cd ~alias;
  touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
  chmod 644 ~alias/.qmail*
  echo "127.0.0.1:allow,RELAYCLIENT=\"\"" > /etc/tcp.smtp
  sed ''s/Mailbox/Maildir\//'' /var/qmail/boot/home >/var/qmail/rc
  chmod 755 /var/qmail/rc
  csh -cf "/var/qmail/rc &"

  ⑧. 安装虚拟域用户pop3支持

  groupadd vchkpw
  useradd -g vchkpw vpopmail
  su vpopmail
  mkdir ~vpopmail/etc
  echo "127.0.0.1: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
  tar xvzf vpopmail-5.2.1.tar.gz
  cd vpopmail-5.2.1

  ## 修改头文件的连接数据库的主机,用户和密码
  ## 增加mysql的支持
  ## 分别拷贝include和lib到 /usr/local/include/mysql和 /usr/local/lib/mysql

  ./configure --enable-defaultquota=10485760 --enable-deliver-filter=y \
  --enable-default-domain=xxxx.com --enable-mysql=y
  make
  make install-strip
  cd ~vpopmail/bin
  ./vadddomain xxxx.com
  ./vadduser test@xxxx.com
  chmod 6755 ~vpopmail/bin/vchkpw
  ## 如果有必要的话,将cdb文件转换到mysql数据库中
  # ./vconvert -c -s
  this will convert them all from the vpasswd.cdb format to the default
  single table database

  # ./vconvert -c -s virtualdomain1 virtualdomain2 ...
  will convert the list of virtual domains from vpasswd.cdb layout to
  single table database

  ⑨. 更改Sendmail为Qmail

  ###Skip

  # 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 "starting 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
  ;;
  restart)
  $0 stop
  $0 start
  ;;
    *)
  echo -n "Usage: $0 {start | stop | restart}"
  exit 1
     ;;
  esac
  exit 0

  ⑾.安装监视工具

  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运行情况

  ⑿.安装邮件列表管理

  tar zxvf ezmlm-0.53.tar.gz
  cd ezmlm-0.53
  make
  make man
  make setup

  ⒀.安装自动回复程序

  tar zxvf autorespond-2.0.2.tar.gz
  make
  make install

  ⒁. 安装虚拟域web方式管理

  tar zxvf qmailadmin-0.81.tar.gz
  cd qmailadmin-0.81
  # 在安装前首先要考虑满足以下几项要求:
  a.是否拥有一个vpopmail用户vchkpw
  b.cgi-bin目录的所在位置
  c.ezmlm目录的所在位置
  d.autorespond目录的所在位置

  ./configure --enable-cgibindir=/home/boban/public_html/cgi-bin
  make
  make install-strip

  检测安装是否正确,看根据前面设置的用户和密码是否能够成功登录进去。

  ⒂. 安装SqWebMail包

  tar zxvf sqwebmail-3.3.7.tar.gz
  cd sqwebmail-3.3.7
  ./configure --without-authpam --without-authuserdb \
  --without-authpwd --without-authshadow --without-authldap\
  --without-authdaemon --with-authvchkpw \
  --enable-imageurl=/images \
  --enable-cgibindir=/www/html/cmgmail/cgi-bin \
  --enable-imagedir=/www/html/cmgmail/images
  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
  # 运行验证程序
  /usr/local/share/sqwebmail/libexec/authlib/authdaemond start

  ⒃. SqWebmail中文化

  cd sqwebmail/html/
  # 进入sqwebmail网页的目录
  make clone from=en-us to=zh-cn
  echo cn50 zh-cn >zh-cn/LANGUAGE_PREF
  echo zh_CN >zh-cn/LOCALE
  echo gb2312 >zh-cn/CHARSET
  echo chinese >zh-cn/ISPELLDICT
  # 然后把zh-cn下面的网页统统给汉化就行啦

  ⒄. 安装vqsignup

  tar xvfz vqsignup-0.5.tar.gz
  cd vqsignup-0.5
  /* 如果vpopmail安装在默认路径,一下不需要更改 */
  # a. 修改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之前设置该环境变量 */

  ./configure --enable-cgibindir=/home/boban/public_html/cgi-bin --enable-htmldir=/home/boban/public_html/vmail
  make
  make check
  make install-strip
  # 编辑cgi-bin目录下的vqsignup.conf文件
  # 修改"add_domain"的所有行,加上你的真实的域,把其他的行删除掉。
  # 更改vqsignup_text/*.html文件,使包含"result_*"的行的路径指到正确的全路经。
  # 修改vqsignup_text目录下所有的文件,使它们只包含你想支持的域,你也可以定制这些页面,使它们更加好看些。
  # 修改DocumentRoot目录下vqsignup.html文件,使它只包含你想支持的域,你也可以定制这个页面,使它更加好看些。
  # d. 测试试着注册新用户。

  以上在本人PC电脑RedHat 7.3下和RedHat 6.2下分别通过测试!!
  

0
相关文章