文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>别人编写的,自己加工过的qmail安装文章,在RH9上..

别人编写的,自己加工过的qmail安装文章,在RH9上..

时间:2004-10-19  来源:蓝火人

谢谢所有帮助过我的人。
Redhat9.0+Qmail+smtp-auth+Vpopmail+MySQL+Igenus+ezmlm+autorespond+qmailadmin+sqwebmail+antivir-mailgate安装笔记 

cloud/2003.10.23
mail:[email protected]
声明:这个文档不是我原创的,甚至还有抄袭的哦(不要告我亲权哟^~^),只是我在学习qmail时做的一些整理,基本上齐全的收集了安装时常见的一些问题和解决方法。个人水平有限,不能保证其完全可用。(基本上没什么问题,就缺最后测试一次了,因我装了sqwebmail后我的验证坏掉了,一直没法搞定,有时间需要重新安装系统测试,测试后我会重新编辑此笔记的,文中有错误的地方希望大家指出,共同学习,谢谢

首先,如果你的mysql是自己编译安装,并指定了安装目录的话,那么先复制mysql的库文件和include文件到/usr/lib和/usr/include目录下,否者安装后,如果能发信,不能收信,一般也是由于找不到mysql的库文件造成的。apache请使用vpopmail和vchpkw的用户/组运行。主要讲下如何安装mail服务器,其他的apache,php,mysql就不多说了,不懂的朋友请查下我以前的帖子。
# cp /web/mysql/lib/mysql/* /usr/lib/
# cp /web/mysql/include/mysql/* /usr/include/

●安装ucspi-tcp-0.88
1.下载相应软件及补丁,由于redhat9.0的glibc的版本问题,必须打补丁才能正常编译。
2.安装ucspi-tcp-0.88
#tar zxvf ucspi-tcp-0.88.tar.gz
#cd ucspi-tcp-0.88
#patch -p1 < ../ucspi-tcp-0.88.a_record.patch
#patch -p1 < ../ucspi-tcp-0.88.errno.patch
#patch -p1 < ../ucspi-tcp-0.88.nobase.patch
#make
#make setup check

●安装qmail
1.下载软件及补丁:
2.建立目录:
# mkdir /var/qmail
# mkdir /var/qmail/alias
3.建组及用户:
嫌麻烦也可以在qmail源码目录找到一个INSTALL.ids的文件,用sed或者其他什么编辑器提取出适合你系统的命令,保存为一个新文件,source filename就ok了。
# groupadd nofiles
# groupadd qmail
# useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent
# useradd qmaild -g nofiles -d /var/qmail -s /nonexistent
# useradd qmaill -g nofiles -d /var/qmail -s /nonexistent
# useradd qmailp -g nofiles -d /var/qmail -s /nonexistent
# useradd qmailq -g qmail -d /var/qmail -s /nonexistent
# useradd qmailr -g qmail -d /var/qmail -s /nonexistent
# useradd qmails -g qmail -d /var/qmail -s /nonexistent
4.打补丁及编绎安装qmail
#tar zxvf qmail-1.03.tar.gz
#tar zxvf qmail-smtpd-auth-0.31.tar.gz
#cp qmail-smtpd-auth-0.31/base64.* qmail-1.03 //安装smtp-auth补丁,支持smtp认证
#patch -d qmail-1.03 < qmail-smtpd-auth-0.31/auth.patch
#cd qmail-1.03
#patch -p1 < ../qmail-103.patch
#patch -p1 < ../qmailqueue-patch
#patch -p1 < ../qmail-maildir++.patch
#patch -p1 < ../qmail-1.03.errno.patch
#patch -p1 < ../qmail-1.03.qmail_local.patch
#vi qmail-smtpd.c //将函数straynewline中的451改为553
//将451改为553是为避免当其它服务器给你发来无效格式的邮件时,你的服务器陷入循环应答。当你的服务器收到无效格式的邮件时,一般会发送:"I am not going to accept that message at the moment,you can try again later",对方服务器收到后,几秒钟后又会发送同样的邮件给你,造成多次的重复。改为553后,你的服务器将直接发送:"I am not going to accept that message,don't try sending it again.",告诉对方的服务器不要再发这封无效的信件。

# make setup check
# ./config-fast ljy.com.cn

5.添加别名用户:
# touch /var/qmail/alias/.qmail-root
# touch /var/qmail/alias/.qmail-postmaster
# touch /var/qmail/alias/.qmail-mailer-daemon
# chmod 644 /var/qmail/alias/.qmail*
# echo postmaster > /var/qmail/control/bouncefrom 退回邮件
# echo ljy.com.cn > /var/qmail/control/helohost 主机名(解决新浪拒收邮件问题)
# echo 52428800 > /var/qmail/control/databytes 接收邮件的最大容量 (0=无限制)??
# echo 40 > /var/qmail/control/concurrencylocal 本地同时投递邮件的数目
# echo 40 > /var/qmail/control/concurrencyremote 、、同时投递至远程主机的数目
注意:
/var/qmail/control/locals中必须有缺省域名,否则投递失败的邮件将不知所踪。

6.如果存在postfix和sendmail,停用现在的mail服务
#/etc/rc.d/init.d/sendmail stop
#cp /var/qmail/bin/sendmail /usr/sbin/qmail.sendmail
#rm -f /etc/alternatives/mta
#ln -s /usr/sbin/qmail.sendmail /etc/alternatives/mta

# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
#chmod 777 /usr/sbin/sendmail //这里特别要注意检查/usr/sbin/sendmail的属性.不然会导致装完后用igenus在web界面发信不成功

●安装vpopmail
1.下载vpopmail的稳定版
2.建立目录:
#mkdir /home/vpopmail
#mkdir /home/vpopmail/etc:

3.添加用户和组:
#groupadd vchkpw
#useradd -g vchkpw vpopmail
4.添加mysql的vpopmail用户,用于操作vpopmail数据库

设置mysql root口令

# mysqladmin -u root -p password 123456(设置你的密码) 
Enter passwod:(直接回车)
#mysql -u root –p123456 //进入mysql命令行
mysql>create database vpopmail;
mysql>grant all on vpopmail.* to vpopmail@localhost identified by "123456";

mysql>quit
??????5.编译安装vpopmail
#tar zxvf vpopmail-5.2.1.tar.gz
#cd vpopmail-5.2.1
#vi vmysql.h

#define MYSQL_UPDATE_SERVER "localhost" (mysql服务器名)
#define MYSQL_UPDATE_USER "vpopmail" (用户名)
#define MYSQL_UPDATE_PASSWD "123456" (改成你设置的密码)

#define MYSQL_READ_SERVER "localhost" (mysql服务器名)
#define MYSQL_READ_USER "vpopmail" (用户名)
#define MYSQL_READ_PASSWD "123456" (改成你设置的密码)

6.创建tcp.smtp文件(或者使用/etc/tcp.smtp)
# vi /home/vpopmail/etc/tcp.smtp

127.0.0.1:allow,RELAYCLIENT=""
:allow

#cd /home/vpopmail/etc
#tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp
7.进行编译:

# ./configure --prefix=/home/vpopmail 指定安装路径
--enable-mysql=y 是否应用Mysql数据库
--enable-incdir=/usr/include/mysql  Mysql数据库include文件所在目录
--enable-libdir=/usr/lib/mysql Mysql数据库lib文件所在目录
--enable-default-domain=ljy.com.cn 定义虚拟域名
--enable-passwd=n 是否使用系统密码验证方式
--enable-defaultquota=52428800 定义缺省邮箱大小,10485760为10MB,20971520为20MB,52428800为50MB
--enable-tcprules-prog=/usr/local/bin/tcprules 指定tcprules目录
--enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp 指定tcprules应用规则文件
--enable-vpopuser=vpopmail vpopmail的用户
--enable-vpopgroup=vchkpw vpopmail的组
--enable-ip-alias-domains=n 在虚拟域中允许通过反向IP地址查找虚拟域名
--enable-sqwebmail-pass=y sqwebmail密码验证支持
????######--enable-hardquota=10000000  限制磁盘限额为10M就需要使用下面这个配置参数,若磁盘限额超出,将拒绝接受该用户的新邮件,并返回一封拒绝信息邮件,其中的信息可以定制
??# make
??# make install-strip
8.创建虚拟域
# cd /home/vpopmail/bin
# ./vadddomain 域名 (密码) (在mysql数据库vpopmail中自动生成vpopmail表单,生成的密码是postmaster@域名帐户的密码,以后登陆qmailadmin就是使用postmaster登陆的)
# ./vadduser 用户名 密码 (会自动往表vpopmail中添加用户数据,用户添加到默认的域里面。如果要添加到其他的虚拟域,用户名要带域名,如[email protected])
如果不成功的话,则必须先删除创建的域,./vdeldomain 域名 不要使用手工操作mysql删除域和用户帐号,否则会引起系统帐户的紊乱)

●smtp-auth的设置
1.修改vchkpw的属性
#chmod 4755 vchkpw
#chown root.root vchkpw
如果使用带验证的smtp,smtp进程要调用密码验证程序,则必须要使用 setuid 和setgid。提高vchkpw的权限,才能完成setgid操作。
2.下载安装cmd5checkpw
#tar zxvf cmd5checkpw-0.22.tar.gz
#cd cmd5checkpw-0.22
#make
#mkdir /usr/man
#mkdir /usr/man/man8
#make install

注意,因为使用vpopmail,所以checkpassword不用安装。

●生成qmail的启动脚本
#cp /var/qmail/boot/home /var/qmail/rc
# vi /var/qmail/rc //对rc文件进行修改,以决定投送方式:

#!/bin/sh

# Using splogger to send the log through syslog.
# Using dot-forward to support sendmail-style ~/.forward files.
# Using qmail-local to deliver messages to ~/Mailbox by default.

exec env - PATH="/var/qmail/bin:$PATH" qmail-start ./Maildir/ splogger qmail &

#vi /var/qmail/smtp //编辑smtp服务的启动脚本

#!/bin/sh
# -c 100指同时并行连接数为100
QMAILDUID=qmaild
NOFILESGID=nofiles

/usr/local/bin/tcpserver -H -R -c 100 -l 0 -t 1 -v -p -x /home/vpopmail/etc/tcp.smtp.cdb -u $QMAILDUID -g $NOFILESGID 0 smtp /var/qmail/bin/qmail-smtpd tjh.com /home/vpopmail/bin/vchkpw /bin/true /bin/cmd5checkpw /bin/true 2>&1 | /var/qmail/bin/splogger smtpd 3 &

#vi /var/qmail/pop3 //编辑pop3服务的启动脚本

#!/bin/sh

/usr/local/bin/tcpserver -l tjh.com -U -c 100 -H -R 0 pop3 /var/qmail/bin/qmail-popup tjh.com /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &


//这里要注意,这三个文件中的命令在一行,最好直接复制,绝对可用,我自己的启动脚本copy过来的。
#chmod 755 /var/qmail/rc
#chmod 755 /var/qmail/smtp
#chmod 755 /var/qmail/pop3

运行qmail并测试
#/var/qmail/rc
#/var/qmail/smtp
???#/var/qmail/pop3
#ps aux | grep "qmail" //查看qmail的服务进程是否已完全正常启动
如果qmail已正常启动,用outlook测试qmail的smtp和pop3是否正常,注意由于vpopmail支持虚拟域名,所以在outlook中设置邮件帐号时,用户名后要加上域名,如[email protected]。smtp是带认证的,在outlook中也要作相应设置。建议先将qmail测试正常后再安装igenus。如果qmail出现问题,可查看mysql中的vpopmail数据库,/var/log下的mysqld和maillog日志记录,这样容易很快找出问题。
需要注意的是:
如果你在X下用X的kmail客户端测试,smtp的验证要选择LOGIN,POP的验证选择纯文本(APOP是错的,虽然有时候mail客户端会自动检测条到APOP上面),如果有好几个验证方式给你选择的话。
如果能发信,但收不到,这个时候看一下/var/log/maillog会找到答案的,一般是由于找不到libmysqlclient.so.12这个mysql库文件造成的,前面我之所以要copy到/usr/lib下就是因为这个问题经常卡我(因我都是编译安装程序的,所以程序的位置都指定了的)

●安装并运行igenus
1.到http://www.igenus.org下载最新的安装包
#tar zxvf igenus_2_20030516_snap.tgz -C /var/www/html

2.建temp文件夹
cd /var/www/html/igenus
mkdir temp
chmod -R 0755 temp
chown -R vpopmail:vchkpw temp
3.修改httpd.conf
#vi /web/httpd/conf/httpd.conf
Group Apache
User Apache
修改为:
Group vchkpw
User vpopmail

AddDefaultCharset ISO-8859-1
修改为
AddDefaultCharset GB2312 //使默认页面为中文,2.x的apache需要修改

#/etc/rc.d/init.d/httpd restart //重启apache,使修改生效
4.修改config_inc.php文件
# cd var/www/html/igenus/config
# vi config_inc.php

$CFG_BASEPATH = "/www/htdocs/html/igenus";

$CFG_MYSQL_HOST = 'localhost';
$CFG_MYSQL_USER = 'vpopmail';
$CFG_MYSQL_PASS = '12345678'; 改成你的密码
$CFG_MYSQL_DB = 'vpopmail';

$CFG_TEMP = $CFG_BASEPATh."/temp";

5.重新编制Mysql数据库表格
#mysql -u root -p
mysql>use vpopmail;
mysql>alter table vpopmail drop primary key;
mysql>alter table vpopmail add column pw_id int(5) NOT NULL primary key auto_increment;
mysql>create table address (
id int(11) unsigned NOT NULL auto_increment,
pw_id int(5) unsigned NOT NULL default '0',
name varchar(64) NOT NULL default '',
email varchar(128) NOT NULL default '',
UNIQUE KEY id (id),
KEY pw_id (pw_id)
) TYPE=MyISAM;

mysql>CREATE TABLE stow (
id int(11) unsigned NOT NULL auto_increment,
pw_id int(5) NOT NULL default '0',
name varchar(64) NOT NULL default '',
http varchar(128) NOT NULL default '',
memo varchar(255) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM PACK_KEYS=1; //收藏夹的表

mysql>quit;

●编辑qmail自启动脚本

#vi /etc/rc.d/init.d/qmail //编辑自动运行脚本

#! /bin/sh
# chkconfig: 2345 90 90
# description: qmail (include smtp and pop3) auto start/stop scripts.

. /etc/rc.d/init.d/functions

case "$1" in

start)
echo -n "start qmail:"
/var/qmail/rc &
echo "."

echo -n "start smtp service:"
/var/qmail/smtp
echo "."

echo -n "start pop3 service:"
/var/qmail/pop3
echo "."
;;

stop)
echo "stop qmail:"
killproc qmail-send
killproc qmail-clean
killproc qmail-rspawn
killproc qmail-lspawn
killproc splogger
killproc tcpserver
;;

*)
exit 1
;;
esac

exit 0

#chmod 755 /etc/rc.d/init.d/qmail
#chkconfig --add qmail
OK,行了,现在只要你启动系统就会自动运行了。

●igenus在安装和使用过程中出现错误的解决方法。
1.登录时出现的错误。
编辑/usr/loal/lib/php.ini,修改:
register_globals = On
2.发邮件时出现528错误,其实这是php在编译过程中找不到/usr/sbin/sendmail文件造成的,qmail使用/var/qmail/bin/sendmail发信。解决如下:
a.添加链接
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
b.停止apache运行
c.重新编译php即可

●安装ezmlm and ezmlm-idx使qmail支持邮件列表功能
1.注意:为了启用maillist的MySQL支持,你必须首先:
建立mysql管理用户:(Ex:user:ezmlm,pass:ezmlm)
# mysql -u root –p123456
>use mysql;
>create database ezmlm;
>grant all on ezmlm.* to ezmlm@localhost identified by "ezmlmpassword";
>flush privileges;
>exit;
# mysqladmin -u root -pwangxu create ezmlm
2.ezmlm-idx包含有对ezmlm的修正和补充,他们是一个整体。
#cd /home/software
# tar -zxvf ezmlm-0.53.tar.gz
# tar -zxvf ezmlm-idx-0.40.tar.gz
# mv -Rf ezmlm-idx-0.40/* ezmlm-0.53/ //将ezmlm-idx-0.40下的文件覆盖到ezmlm-0.53下
# cd ezmlm-0.53
# patch < idx.patch
# patch < ../ezmlm-idx-0.53.400.unified_41.patch
# make mysql #MySQL 支持
# make clean
# make man
# make ch_GB #汉字GB2312支持
修改vi conf-sqlcc文件
内容为:-I/usr/include/mysql

修改vi conf-sqlld
内容为: -L/usr/lib/mysql -lmysqlclient -lnsl -lm -lz
-lz是增加zip压缩支持

修改vi conf-bin
第一行:/var/qmail/bin/ezmlm

修改vi conf-man
第一行:/var/qmail/man

修改vi conf-qmail
第一行:/var/qmail

# make setup

修改/var/qmail/bin/ezmlm/ezmlmrc将"To:##L@##H"修改为"To:<#L#>@<#H#>",主要是修改用邮件客户端收到信之后,收件人地址显示格式错误。
邮件列表收到的信息乱码解决方法:
在/home/vpopmail/domains/cloud.com/maillistname/下建立一个charset的文件
#touch charset
#chown vpopmail:vchkpw charset
#chmod go-r charset
#vi charset 添加一行gb2312
这样你发一份邮件到[email protected] 你收到的信息将可以正确的显示中文了!

3.在你建立一个基于MySQL的maillist之前,你必须保证ezmlm库中已存在一个对应的表(其实我发现没有表,ezmlm会自动建立,只是会提示错误):
Ex:你想建一个基于MySQL的maillist:testlist
# /var/qmail/bin/ezmlm/ezmlm-mktab -d testlist | mysql -uezmlm -pezmlm -f ezmlm
这样就在ezmlm库中为testlist建立了一系列相关表格:
+------------------------+
| Tables |
+------------------------+
| testlist |
| testlist_allow |
| testlist_allow_slog |
| testlist_cookie |
| testlist_deny |
| testlist_deny_slog |
| testlist_digest |
| testlist_digest_cookie |
| testlist_digest_mlog |
| testlist_digest_slog |
| testlist_mlog |
| testlist_mod |
| testlist_mod_slog |
| testlist_slog |
+------------------------+

你可以用一下命令察看! (也不需要这样麻烦的,安装了qmailadmin后可以使用qmailadmin管理邮件列表了)
# mysqlshow -uezmlm -pezmlm ezmlm

●安装autorespond (自动回信机器人)
# tar zxvf autorespond-2.0.2.tar.gz
# cd autorespond-2.0.2
修改Makefile文件
将其中的INSTALL_DIR =修改为 /var/qmail/bin
# make
# make install
# cp autorespond /usr/local/bin

●安装qmailadmin
在安装之前先确认:
你是否已经安装了vpopmail,并使用vchkpw 。
是否已经安装ezmlm。
是否已经安装autorespond。
确认以上的工作已完成,可以开始安装qmailadmin。
# cd /home/software
# tar zxvf qmailadmin-1.0.6.tar.gz
# cp en-us qmailadmin-1.0.6/html/en
# cp en-us qmailadmin-1.0.6/html/en-us
(注:以上两步,是为了汉化qmailadmin。en-us取自iceblood的qmail安装包)
# cd qmailadmin-1.0.6
# cd qmailadmin-1.0.6
#./configure --enable-cgibindir=/www/cgi-bin --enable-htmldir=/www/htdocs/igenus --enable-ezmlmdir=/var/qmail/bin/ezmlm (确保你的ezmlm程序文件在此目录下)
# make
# make install-strip
# mkdir -p /www/htdocs/images/qmailadmin
# mv images/*.* /www/htdocs/images/qmailadmin/ //复制images下的图片到/www/htdocs/images/qmailadmin下

●安装sqwebmail
1、 安装sqwebmail

#cd /down
#tar zxvf sqwebmail-3.5.0-cn.tar.gz
#cd sqwebmail-3.5.0
#./configure --with-db=db(如果你没有安装GDBM库,那么请加上这个,默认系统如果找到了GDBM库会使用GDBM库的)
--enable-webpass=yes
--without-authpam
--without-authpwd
--without-authshadow
--without-authldap
--without-authuserdb
--without-authpwd
--with-authvchkpw
--with-authdaemon 激活web页面修改密码功能模块
--enable-cgibindir=/var/www/cgi-bin
--enable-imagedir=/var/www/html/sqwebmail
--disable-utf7-folder-encoding 去掉IMAP文件夹编码支持
--with-cachedir=/tmp/sqwebmail 缓存目录
--with-cacheowner=bin 缓存目录所有者 (default: bin)
--enable-mimetypes=/var/www/html
--enalbe-mimecharset=gb2312
--enable-unicode=gb2312
#make configure-check
#make
#make install-strip
#make install-configure
#/usr/local/share/sqwebmail/libexec/authlib/authdaemond start
注意,以后必须启动这个进程进行身份验证,我发现安装sqwebmail后,这个进程不启动那么我的邮件系统就没法登陆,总是说密码验证错误,qmailadmin倒可以登陆。
su -c "/usr/local/share/sqwebmail/cleancache.pl" bin

现在,重起你主机系统,你可以设置一下你的outlook或者foxmail.接受邮件了。也可以通过webmail访问你的mail系统了。
http://localhost
http://localhost/cgi-bin/sqwebmail/sqwebmail
通过webmail接受你的邮件信息,sqwebmail我只是装上测试一下,看看效果,不过它对中文支持比较差,也没有比较好的中文版本,所以我觉得还是用igenus比较好。
http://localhost/cgi-bin/qmailadmin 通过web方式管理和添加用户了

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载