Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1538717
  • 博文数量: 416
  • 博客积分: 10061
  • 博客等级: 上将
  • 技术积分: 3287
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-05 11:12
个人简介

技术在于专研

文章分类

全部博文(416)

文章存档

2021年(3)

2015年(34)

2013年(2)

2012年(1)

2011年(2)

2010年(5)

2007年(344)

2006年(25)

分类: LINUX

2007-09-24 09:59:56

qmail+vpopmail+sqwebmail是非常优秀的Web mail解决方案,本文将详细介绍具体的安装过程,希望可以帮助你顺利实现Web mail系统。

  一. 安装环境

  安装平台:RedHat Linux

  安装的机器: mail.mydomain.com

  软件包:

  qmail-1.03 qmail基本系统
  ucspi-tcp-0.88 tcpsever等服务程序
  daemontools-0.70监视工具
  checkpassword-0.81 pop3验证用户的程序
  ezmlm-0.53 邮件列表管理
  vpopmail-4.9.6-1虚拟域用户pop3支持
  qmailadmin-0.35 虚拟域web管理
  autorespond-1.0.0 自动回复程序
  sqwebmail-1.2.0 webmail
  vqsignup-0.4 web方式用户注册

  软件来源:

  
  

  注意:每个包安装前务必先仔细阅读INSTALL和FAQ,很多问题在FAQ都有解决方法。

  二. 安装步骤

  1. 安装qmail

  1)创建qmail安装目录

  #mkdir /var/qmail

  2)添加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 qmail -d /var/qmail qmailq
  #useradd -g qmail -d /var/qmail qmailr
  #useradd -g qmail -d /var/qmail qmails

3)解压、解包和编译

  (假设这些包都下载到/var/tmp目录下)

  #cd /var/tmp
  #tar xzvf qmail-1.03.tar.gz
  #cd qmail-1.03

  进入qmail目录后,仔细阅读一下README和INSTALL文件.然后开始编译qmail

  #make setup check

  4)配置

  #./config

  5)建立系统别名

  #(cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root)
  #chmod 644 ~alias/.qmail*

  可以在这些别名文件中指定管理用户来接受这些系统邮件,如

  #echo 'admin' > ~alias/.qmail*

  6)建立启动文件和用户的maildir

  #cp /var/qmail/boot/home /var/qmail/rc
  #chmod 755 /var/qmail/rc

  编辑 /var/qmail/rc

  修改其中./Mailbox成为./Maildir以支持maildir的pop收信方式,如下:

  # !/bin/sh
  # Using splogger to send the log through syslog.
  # Using qmail-local to deliver messages to ~/Maildir by default.
  exec env - PATH="/var/qmail/bin:$PATH"\
  qmail-start ./Maildir splogger qmail

  其中splogger qmail指令是用来将日志文件记录在/中。

  建立maildir的方法:

  $/var/qmail/bin/maildirmake /etc/skel/Maildir
  $echo ./Maildir/ > ~/.qmail

  注意Maildir必须为该使用者所有,可以chown变更,并以chmod 700 Maildir设定权限。

2. 安装ucspi-tcp-0.88

  #tar zxvf ucspi-tcp-0.88.tar.gz
  #cd ucspi-tcp-0.88
  #make
  #make setup check

  执行文件将被安装在/usr/local/bin中。

  3. 安装checkpassword

  #tar zxvf checkpassword-0.81.tar.gz
  #cd checkpassword-0.81
  #make
  #make setup check
  #chmod og-rx /bin/checkpassword

  执行文件checkpassword将被安装在/bin中。

  如果不对/etc/passwd中的用户开放mail,则不需要装checkpassword,而只要装vpopmail就行了。

  4. 安裝daemontools

  #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 FAQ)
5. 安装vpopmail

  #groupadd vchkpw
  #useradd -g vchkpw vpopmail
  #mkdir ~vpopmail/etc
  #echo ":allow" > ~vpopmail/etc/tcp.smtp
  #tar zvfz vpopmail-4.9.6-1.tar.gz
  #cd vpopmail-4.9.6-1
  #./configure --enable-roaming-users=y --enable-default-domain=mydomain.com --enable-passwd=n

   (注:--enable-roaming-users=y表示允许漫游的用户使用该邮件系统)

  #make
  #make install-strip

  #crontab -e(编辑cron文件,如下)

  40 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null
  #cd /home/vpopmail/bin
  #./vadddomain mydomain.com mydomain

  添加mydomain.com到/var/qmail/control/rcpthosts中。

  6. 停止sendmail 服务

  #killall -9 sendmail (Linux)

  接着以qmail的sendmail libraby取代原有 sendmail

  #mv /usr/lib/sendmail /usr/lib/sendmail.old
  #mv /usr/sbin/sendmail /usr/sbin/sendmail.old
  #ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
  #ln -s /var/qmail/sbin/sendmail /usr/sbin/sendmail

  移除sendmail启动程序,以 Linux 为例:

  移除inetd.conf中的sendmail之设定,以及/etc/rc.d/init.d下的sendmail启动文件。(Linux)

  7. 启动qmail SMTP ,POP3 daemon系统服务

  1)建立 SMTP 转信规则

  建立 /etc/tcp.smtp 內容为

  :allow

  此为接受任何Client端所发出子转送信件
若要拒绝某些IP所发出的Relay则修改 /etc/tcp.smtp如下

  1.2.3.4:allow,RELAYCLIENT=""
  127.:allow, RELAYCLIENT=""

  如此,除1.2.3.4及127.*之外的所有地址,都将被拒绝转送信件。

  2)转换tcp.smtp成为cdb格式

  #/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

  注意:若对tcp.smtp有任何变更,都必須经过tcprules转换成为cdb文件才会生效。


  另外,tcp.smtp 若为空白,则表示拒绝所有的转送,因为预设的规则为deny。

  至此,转送规则已建立,稍后将依此规则启动qmail-smtpd。

  3)设定SMTP及POP3 daemon的启动

移除inetd.conf中有关smtp及pop3的设定(加上#号)

  编辑/etc/services,改为以下设定:

  smtp25/tcpmail
  # pop-3 110/tcp #pop version 3
  # pop-3 110/udp
  pop3110/tcp
  pop3110/udp
  
  启动 SMTP:

  /usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb \
  -u UID -g GID 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 \
  | /var/qmail/bin/splogger smtpd 3 &

  其中UID和GID为前述新增 qmail系统账号qmaild的User ID,以及nofiles的group ID。
  /var/qmail/bin/splogger那一行会将log文件写在/var/log/maillog中。
  启动 POP3:
编辑启动档加入以下设定:

  tcpserver -H -R 0 pop3 \
  /var/qmail/bin/qmail-popup mail.mydomain.com \
  /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &

  在/etc/rc.d/init.d下建立文件qmail,内容如下:
  -------------------------------------------
  #! /bin/sh

  case "$1" in
  start)
  echo -n "start qmail:"

  /var/qmail/rc &
  echo "."

  echo -n "start smtp service:"
  /usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb \
  -u UID -g GID 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 \
  | /var/qmail/bin/splogger smtpd 3 &
  echo "."

  echo -n "start pop3 service:"
  tcpserver -H -R 0 pop3 \
  /var/qmail/bin/qmail-popup mail.mydomain.com \
  /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &
  echo "."
  ;;
  stop)
  echo -n "stop qmail:"
  echo "."
  ;;
  *)
  exit 1
  ;;
  esac

  exit 0

  -----------------------------------------------------
  #cd ../rc3.d
  #ln -s ../init.d/qmail S98qmail

  (注:这里的启动文件没有写全)

8. qmailadmin--WEB方式管理qmail

  1)ezmlm的安装

  $make
  $make man
  #make setup

  2)autorespond的安装

  gcc -Wall -o autorespond autorespond.c
  cp autorespond /usr/local/bin/autorespond

  3)qmailAdmin的安装

  在安装前首先要考虑满足以下几项要求:

  a.是否拥有一个vpopmail用户vchkpw
  b.cgi-bin目录的所在位置
  c.ezmlm目录的所在位置
  d.autorespond目录的所在位置

  如果能够达到以上要求,可以继续安装

  #./configure
  #make
  #make install-strip

  检测安装是否正确:浏览器中打开路径
看根据前面设置的用户和密码是否能够成功登录进去。

  9. SqWebmail--一种Webmail解决方案

  1)安装SqWebmail

  #tar xvfz sqwebmail-1.2.0.tar.gz
  #cd sqwebmail-1.2.0
  #./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

  检测安装是否正确:浏览器中打开路径

  2)安装vqsignup

  #tar xvfz vqsignup-0.4.tar.gz
  #cd vqsignup-4.0

  按照INSTALL安装(?)

  安装这个软件包可能比较麻烦,需要一些耐心。
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的目录

  b. 编译

  #make

  c. 安装

  拷贝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文件,使它只包含你想支持的域,你也可以定制这个页面,使它更加好看些。

  d. 测试

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


阅读(692) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~