基于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 相关文章推荐
第八节 访问方式 [8]
Oct 09 PHP
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
Jul 04 PHP
php中mysql模块部分功能的简单封装
Sep 30 PHP
精美漂亮的php分页类代码
Apr 02 PHP
PHP生成Gif图片验证码
Oct 27 PHP
PHP中的多行字符串传递给JavaScript的两种方法
Jun 19 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
Aug 31 PHP
Yii2创建多界面主题(Theme)的方法
Oct 08 PHP
php array_keys 返回数组的键名
Oct 25 PHP
php监测数据是否成功插入到Mysql数据库的方法
Nov 25 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
Apr 04 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
基于递归实现的php树形菜单代码
2014/11/19 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
lib.utf.js
2007/08/21 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
关于jQuery参考实例2.0 用jQuery选择元素
2013/04/07 Javascript
javascript常用方法汇总
2014/12/02 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
javascript动画算法实例分析
2015/07/31 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
angularjs实现天气预报功能
2020/06/16 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
vue多页面开发和打包正确处理方法
2018/04/20 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
Python3.x中自定义比较函数
2015/04/24 Python
部署Python的框架下的web app的详细教程
2015/04/30 Python
python实现简易动态时钟
2018/11/19 Python
使用python3实现操作串口详解
2019/01/01 Python
Python 格式化打印json数据方法(展开状态)
2020/02/27 Python
Python 如何展开嵌套的序列
2020/08/01 Python
python中的yield from语法快速学习
2020/11/06 Python
python 使用openpyxl读取excel数据
2021/02/18 Python
TUMI新加坡官网:国际领先的商旅箱包品牌
2019/01/12 全球购物
室内设计专业毕业生求职信
2014/05/02 职场文书
鉴定评语大全
2014/05/05 职场文书
建筑工地宣传标语
2014/06/18 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
2015年项目工作总结
2015/04/29 职场文书
简历上的自我评价,该怎么写呢?
2019/06/13 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书
jquery插件实现图片悬浮
2021/04/16 jQuery