基于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 curl模拟浏览器采集阿里巴巴的实现代码
Apr 20 PHP
php下通过IP获取地理位置的代码(小偷程序)
Jun 09 PHP
php学习笔记之 函数声明(二)
Jun 09 PHP
浅谈php中mysql与mysqli的区别分析
Jun 10 PHP
一个PHP二维数组排序的函数分享
Jan 17 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
Jul 30 PHP
php出现web系统多域名登录失败的解决方法
Sep 30 PHP
WordPress中自定义后台管理界面配色方案的小技巧
Dec 29 PHP
PHP序列化操作方法分析
Sep 28 PHP
Netbeans 8.2与PHP相关的新特性介绍
Oct 08 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
Mar 06 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
Mar 11 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
基于mysql的bbs设计(四)
2006/10/09 PHP
php编写批量生成不重复的卡号密码代码
2015/05/14 PHP
php+MySQL实现登录时验证登录名和密码是否正确
2016/05/10 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
javascript中类的定义方式详解(四种方式)
2015/12/22 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
基于JavaScript实现焦点图轮播效果
2017/03/27 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
JavaScript实现缓动动画
2020/11/25 Javascript
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
Python实现二叉搜索树
2016/02/03 Python
简单实现python数独游戏
2018/03/30 Python
pandas多级分组实现排序的方法
2018/04/20 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
2019/06/21 Python
澳大利亚男士西服品牌:M.J.Bale
2018/02/06 全球购物
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
Erwin Müller穆勒家居瑞士官网:您整个家庭的邮购公司
2019/12/28 全球购物
abstract class和interface有什么区别?
2012/01/03 面试题
C语言开发工程师测试题
2016/12/20 面试题
教师岗位职责范本
2013/12/29 职场文书
培训演讲稿范文
2014/01/12 职场文书
上课迟到检讨书
2014/01/19 职场文书
我为自己代言广告词
2014/03/18 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
公民代理授权委托书
2014/09/24 职场文书
会计电算化实训报告
2014/11/04 职场文书
员工自我评价范文
2015/03/11 职场文书
2015年度培训工作总结范文
2015/04/02 职场文书