在REDHAT9.0下安装qmail+igenus+qmailadmin

经过这些天在chinaunix的学习,参照peng 和bluelotus写的qmail安装贴子,再加上gadfly以及论坛里大家的支持,终于自己也配置了一套邮件系统.再经过今天的又一次安装确认无误后,把自己的安装过程写成一篇贴子,希望能对后来者有所帮助.谢谢peng,谢谢bluelotus,谢谢gadfly,谢谢论坛里的每一个帮助过我的人.

我把下文中所提到的软件打成了一个包,下载地址为:[url=http://class.868cn.com/download/qmail.rar]http://class.868cn.com/download/qmail.rar[/url]


在REDHAT9.0下安装igenus 
 
Redhat9.0+Qmail+smtp-auth+Vpopmail+MySQL+Igenus+ezmlm+autorespond+qmailadmin

一、安装环境及准备工作
安装Redhat9.0,设置主机名为mail.wangxu.com,安装时选取安装apache、php、mysql,可省去以后自已编译安装的麻烦,mysql要注意选取mysql-devel开发包,或者在装完系统后再单独把它装上.
启动mysql server: 
# /etc/rc.d/init.d/mysqld start 
设置mysql root口令: 
# mysqladmin -u root -p password wangxu(设置你的密码) 
Enter passwod:(直接回车) 

mysql的头文件和库文件分别在/usr/include/mysql和/usr/lib/mysql。 
安装完Redhat9.0后,修改/etc/httpd/conf/httpd.conf,使web服务正常启用,为mysql添加root用户的密码。如果设置了防火墙,要打开服务器的smtp 25和pop3 110两个端口。 

二、安装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.建组及用户: 
# 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 mail.wangxu.com 
5.添加别名用户: 
# touch /var/qmail/alias/.qmail-root 
# touch /var/qmail/alias/.qmail-postmaster 
# touch /var/qmail/alias/.qmail-mailer-daemon 
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界面发信不成功,我就在这里困了好几天.如果用igenus在web界面发信不成功,就手工用/usr/sbin/sendmail发信看看有没有问题.
 

四、安装vpopmail 
1.下载vpopmail的稳定版 
2.建立目录: 
#mkdir /home/vpopmail 
#mkdir /home/vpopmail/etc 
3.添加用户和组: 
#groupadd vchkpw 
#useradd -g vchkpw vpopmail 
4.添加mysql的vpopmail用户,用于操作vpopmail数据库 
#mysql -u root -pwangxu //进入mysql命令行 
mysql>create database vpopmail; 
mysql>grant all on vpopmail.* to vpopmail@localhost identified by "密码"; 
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 "wangxu" (改成你设置的密码) 

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

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 --enable-incdir=/usr/include/mysql --enable-libdir=/usr/lib/mysql --enable-default-domain=wangxu.com --enable-passwd=n --enable-defaultquota=5242880 --enable-tcprules-prog=/usr/local/bin/tcprules --enable-vpopuser=vpopmail --enable-vpopgroup=vchkpw --enable-ip-alias-domains=n
\\下面是我使用的参数 
--prefix=/home/vpopmail \\指定安装路径 
--enable-mysql=y \\是否应用Mysql数据库 
--enable-incdir=/usr/include/mysql \\Mysql数据库include文件所在目录 
--enable-libdir=/usr/lib/mysql \\Mysql数据库lib文件所在目录 
--enable-default-domain=mydomain.com \\定义虚拟域名 
--enable-passwd=n \\是否使用系统密码验证方式 
--enable-defaultquota=5242880 \\定义缺省邮箱大小,10485760为10MB,20971520为20MB,52428800s为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地址查找虚拟域名 
# make 
# make install-strip 
8.创建虚拟域 
# cd /home/vpopmail/bin 
# ./vadddomain 域名 (密码) (在mysql数据库vpopmail中自动生成vpopmail表单) 
(如果使用与机器名相同的虚拟域名,应先生成一个其它的虚拟域名,不然会有问题,无法自动生成vpopmail数据库) 
# ./vadduser 用户名 密码 (会自动往表vpopmail中添加用户数据,用户名要带域名,如demo@demo.com) 
如果不成功的话,则必须先删除创建的域,./vdeldomain 域名 

五、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 
//这里有个问题,我第一次make install时它提示没有/usr/sbin/man8这个目录,所以不能复制文件.我就手动新建个这个目录.编译就可以通过.至于这样会不会有什么不好的后果,我也不太清楚.

注意,因为使用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 

QMAILDUID=qmaild 
NOFILESGID=nofiles 

/usr/local/bin/tcpserver -H -R -l 0 -t 1 -v -p -x /home/vpopmail/etc/tcp.smtp.cdb -u $QMAILDUID -g $NOFILESGID 0 smtp /var/qmail/bin/qmail-smtpd mail.wangxu.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 mail.wangxu.com -U -H -R 0 pop3 /var/qmail/bin/qmail-popup mail.wangxu.com(换成你的主机名) /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir & 

//这里要注意,这三个文件中的命令最好写在一行.我之前试过不在一行,好象不能启动服务.
#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中设置邮件帐号时,用户名后要加上域名,如demo@demo.com。smtp是带认证的,在outlook中也要作相应设置。建议先将qmail测试正常后再安装igenus。如果qmail出现问题,可查看mysql中的vpopmail数据库,/var/log下的mysqld和maillog日志记录,这样容易很快找出问题。 

八、安装并运行igenus 
1.到http://www.igenus.org下载最新的安装包,我用的是igenus_2_20030516_snap.tgz 
#tar zxvf igenus_2_20030516_snap.tgz -C /var/www/html //redhat下apache的缺省document root 
2.建temp文件夹 
cd /var/www/html/igenus 
mkdir temp 
chmod -R 0755 temp 
chown -R vpopmail:vchkpw temp 
3.修改httpd.conf 
#vi /etc/httpd/conf/httpd.conf 
Group Apache 
User Apache 
修改为: 
Group vchkpw 
User vpopmail 

AddDefaultCharset ISO-8859-1
修改为
AddDefaultCharset GB2312    //使默认页面为中文

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

$CFG_BASEPATH = "/var/www/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; 

//以下几步是我自己做的修改登陆页面后的文件以及加上的注册功能,也可以不必做,直接用http://mail.wangxu.com/igenus就可以访问网站.

6.将index.php,signup.php,submit.php,help.php复制到/var/www/html/下
修改 这几个文件中有关域名的地方,将它改成自己的域名.
7.修改/var/www/html/igenus/logout.php文件
将其中的header("Location: login.php");
修改为header("Location: ../index.php");
8.如果需要,用vadddomain和vadduser添加新域名和新用户。 
最后打开浏览器,输入http://mail.wangxu.com/,就可以访问网站了。

九、编辑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
1.注意:为了启用maillist的MySQL支持,你必须首先: 
建立mysql管理用户:(Ex:user:ezmlm,pass:ezmlm) 
# mysql -u root –pwangxu 
>use mysql; 
>insert into user values('localhost','ezmlm','','y','y','y','y','y','y','y','y','y','y','y','y','y', 'y'); 
>update user set password=password('ezmlm') where user='ezmlm'; 
>FLUSH PRIVILEGES; 
>exit; 
建库:(Ex:database:ezmlm) 
# 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 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支持
修改conf-sqlcc文件
内容为:-I/usr/include/mysql

修改conf-sqlld 
内容为: -L/usr/lib/mysql -lmysqlclient -lnsl -lm -lz

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

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

修改conf-qmail
第一行:/var/qmail
 
# make setup

3.在你建立一个基于MySQL的maillist之前,你必须保证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 | 
+------------------------+ 

你可以用一下命令察看! 
# mysqlshow -u root -pwangxu ezmlm 

十一、安装autorespond 
(对于qmailadmin-0.74版以上,必须使用2.0以上的版本) 
# 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-0.80 
在安装之前先确认: 
你是否已经安装了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。)
# cd qmailadmin-1.0.6 
# cd qmailadmin-1.0.6 
#./configure --enable-cgibindir=/var/www/cgi-bin --enable-htmldir=/var/www/igenus --enable-ezmlmdir=/var/qmail/bin 
# make 
# make install-strip 
# mkdir /var/www/html/images
# mkdir /var/www/html/images/qmailadmin
# mv images/*.* /var/www/html/images/qmailadmin/    //复制images下的图片到/var/www/html/images/qmailadmin下

现在,重起你主机系统,你可以设置一下你的outlook或者foxmail.接受邮件了。也可以通过webmail访问你的mail系统了。 
http://mail.wangxu.com 通过webmail接受你的邮件信息 
http://mail.wangxu.com/cgi-bin/qmailadmin 通过web方式管理和添加用户了 


本贴中前面关于qmail和igenus的安装,主要参考的bluelotus的<Redhat9.0下安装qmail+igenus实录>;而后面的qmailadmin的安装,则主要参考的peng的<qmail邮件系统(二)安装>.中间还有些细节,是我参照论坛中某些贴子的回复所加.

本人只是转载,希望没有侵犯到大家的版权.呵呵~~     

本贴中有什么错误的地方,希望大家能指正.再次谢谢大家.
posted on 2005-04-18 00:05  lhx  阅读(583)  评论(0编辑  收藏  举报