基于qmail的完整WEBMAIL解决方案安装详解


Posted in PHP onOctober 09, 2006

安装平台:Linux,Solaris
版本:qmail-1.03
安装的机器: 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方式用户注册
软件来源:
http://www.qmail.org
http://www.inter7.com/qmail
每个包安装前务必先仔细阅读INSTALL和FAQ,很多问题在FAQ都有解决方法。

安装步骤:

1. #mkdir /var/qmail

2. # 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. #tar xzvf qmail-1.03.tar.gz
进入qmail目录后,仔细阅读一下README和INSTALL文件.然后开始编译qmail
#make setup check

4. #cd qmail-1.03
#./config

5. 建立系统别名
# (cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root)
# chmod 644 ~alias/.qmail*

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

 编辑 /var/qmail/rc

 修改其中 ./Mailbox 成为 ./Maildir ,如下:

 # !/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 q

 其中 splogger qmail 指令是用来将纪录文件纪录于 / 中。

 建立样板

 $ /var/qmail/bin/maildirmake /etc/skel/Maildir

 $ echo ./Maildir/ > ~/.qmail

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

7. 安装 ucspi-tcp-0.88

 # tar zxvf ucspi-tcp-0.88.tar.gz

 # cd ucspi-tcp-0.88

 # make

 # make setup check

 执行档将被安装于 /usr/local/bin 中。

8. 安装 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

9. 安装 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)

10. 安装 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
# make
# make install-strip

# crontab -e
40 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null

# cd /home/vpopmail/bin
# ./vadddomain mydomain.com mydomain
append mydomain.com to /var/qmail/control/rcpthosts

11.停止sendmail 服务

 # killall -TERM 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)

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

 建立 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.*之外的所有地址,都将被拒绝转送信件。

 

 接下来,转换 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。

 设定 SMTP 及 POP3 daemon 之启动

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

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

 smtp 25/tcp mail

 # pop-3 110/tcp #pop version 3

 # pop-3 110/udp

 pop3 110/tcp

 pop3 110/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

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

3.1. 在你开始以前还有几件事需要考虑.
a. 你是否有vpopmail 用户而且已经安装了vchkpw
b. 你的 cgi bin 目录的位置
c. 你的 ezmlm 目录的位置
d. 你的 autorespond 目录的位置
如果这些部分你有忽略,那先暂停继续,先把这些搞定吧!!

3.2 install

# ./configure
# make
# make install-strip

浏览器中打开路径http://mail.mydomain.com/cgi-bin/qmailadmin
用户postmaster;域mydomain.com;口令:mydomain

WebMail -- 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
浏览器中打开路径http://mail.mydomain.com/cgi-bin/sqwebmail

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

按照INSTALL安装

PHP 相关文章推荐
php面向对象全攻略 (十) final static const关键字的使用
Sep 30 PHP
基于MySQL分区性能的详细介绍
May 02 PHP
深入apache host的配置详解
Jun 09 PHP
基于PHP Socket配置以及实例的详细介绍
Jun 13 PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
Jun 13 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
May 19 PHP
PHP内置过滤器FILTER使用实例
Jun 25 PHP
php准确计算复活节日期的方法
Apr 18 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
Mar 01 PHP
thinkPHP框架RBAC实现原理分析
Feb 01 PHP
PHP中单例模式的使用场景与使用方法讲解
Mar 18 PHP
thinkphp5.1 框架钩子和行为用法实例分析
May 25 PHP
一段php加密解密的代码
Oct 09 #PHP
PHP开发文件系统实例讲解
Oct 09 #PHP
用PHP读取IMAP邮件
Oct 09 #PHP
php+oracle 分页类
Oct 09 #PHP
使用无限生命期Session的方法
Oct 09 #PHP
图象函数中的中文显示
Oct 09 #PHP
使用php+xslt在windows平台上
Oct 09 #PHP
You might like
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
PHP实现的多彩标签效果代码分享
2014/08/21 PHP
php自定文件保存session的方法
2014/12/10 PHP
php事件驱动化设计详解
2016/11/10 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
2020/04/26 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
IE下通过a实现location.href 获取referer的值
2014/09/04 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
2017/01/05 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
Angularjs处理页面闪烁的解决方法
2017/03/09 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
2017/12/07 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
vueScroll实现移动端下拉刷新、上拉加载
2019/03/22 Javascript
vue滚动tab跟随切换效果
2020/06/29 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
基于javascript实现贪吃蛇小游戏
2019/11/25 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
windows下Virtualenvwrapper安装教程
2017/12/13 Python
Python Requests库基本用法示例
2018/08/20 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
Python第三方包PrettyTable安装及用法解析
2020/07/08 Python
html5 worker 实例(二) 图片变换效果
2013/06/24 HTML / CSS
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
国际商务专业学生个人的自我评价
2013/09/28 职场文书
医学院学生求职简历的自我评价
2013/10/24 职场文书
中学生在校期间的自我评价分享
2013/11/13 职场文书
数控机械专业个人的自我评价
2014/01/02 职场文书
土建施工员岗位职责
2014/07/16 职场文书
会议邀请函
2015/01/30 职场文书
2015年机关党建工作总结
2015/05/22 职场文书
三八节活动主持词
2015/07/04 职场文书