基于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 相关文章推荐
浅谈Windows下 PHP4.0与oracle 8的连接设置
Oct 09 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
Nov 01 PHP
sql注入与转义的php函数代码
Jun 17 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
Jun 05 PHP
thinkphp判断访客为手机端或PC端的方法
Nov 24 PHP
通过php修改xml文档内容的方法
Jan 23 PHP
PHP CodeIgniter框架的工作原理研究
Mar 30 PHP
PHP安装memcached扩展笔记
May 28 PHP
php微信公众平台示例代码分析(二)
Dec 06 PHP
浅谈Laravel队列实现原理解决问题记录
Aug 19 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 PHP
浅析PHP中json_encode与json_decode的区别
Jul 15 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
通过html表格发电子邮件
2006/10/09 PHP
PHP学习 变量使用总结
2011/03/24 PHP
php实现用户在线时间统计详解
2011/10/08 PHP
php笔记之:php数组相关函数的使用
2013/04/26 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
使用TextRange获取输入框中光标的位
2006/10/14 Javascript
取得窗口大小 兼容所有浏览器的js代码
2011/08/09 Javascript
Function.prototype.bind用法示例
2013/09/16 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
20条学习javascript的编程规范的建议
2014/11/28 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
简介JavaScript中的getSeconds()方法的使用
2015/06/10 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
js 两个日期比较相差多少天的实例
2017/10/19 Javascript
vue路由前进后退动画效果的实现代码
2018/12/10 Javascript
使用Vue开发自己的Chrome扩展程序过程详解
2019/06/21 Javascript
详解微信小程序「渲染层网络层错误」的解决方法
2021/01/06 Javascript
python实现绘制树枝简单示例
2014/07/24 Python
Python实现抓取网页并且解析的实例
2014/09/20 Python
Python实现数通设备端口使用情况监控实例
2015/07/15 Python
Python利用公共键如何对字典列表进行排序详解
2018/05/19 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
2018/11/10 Python
python3使用matplotlib绘制散点图
2019/03/19 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
HTML5中使用postMessage实现Ajax跨域请求的方法
2016/04/19 HTML / CSS
汽车专业人才自我鉴定范文
2013/12/29 职场文书
授权委托书格式模板
2014/04/03 职场文书
校车安全责任书
2014/08/25 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
大学生学习十八届五中全会精神心得体会
2016/01/05 职场文书
MySQL笔记 —SQL运算符
2022/01/18 MySQL