免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 51764 | 回复: 239

[Mail] Redhat9.0下安装qmail+igenus实录 [复制链接]

论坛徽章:
0
发表于 2003-06-17 14:20 |显示全部楼层
在REDHAT9.0下安装igenus
bluelotus 2003.06.16
Redhat9.0+Qmail+smtp-auth+Vpopmail+MySQL+Igenus,实例:http://0874.cn/mail

一、安装环境及准备工作
安装Redhat9.0,安装时选取安装apache、php、mysql,可省去以后自已编译安装的麻烦,mysql要注意选取mysql-devel开发包,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的版本问题,必须打补丁才能正常编译。
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
wget http://qmail.te8.com/rpms/glibc-2.3.1/ucspi-tcp-0.88.a_record.patch
wget http://qmail.te8.com/rpms/glibc-2.3.1/ucspi-tcp-0.88.errno.patch
wget http://qmail.te8.com/rpms/glibc-2.3.1/ucspi-tcp-0.88.nobase.patch
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.下载软件及补丁:
wget http://cr.yp.to/software/qmail-1.03.tar.gz
wget http://www.ckdhr.com/ckd/qmail-103.patch
wget http://www.qmail.org/qmailqueue-patch
wget http://www.shupp.org/patches/qmail-maildir++.patch
wget http://qmail.te8.com/rpms/glibc-2.3.1/qmail-1.03.errno.patch
wget http://qmail.te8.com/rpms/glibc-2.3.1/qmail-1.03.qmail_local.patch
wget http://members.elysium.pl/brush/qmail-smtp-auth/dist/qmail-smtpd-auth-0.31.tar.gz
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
# make setup check
# ./config-fast test.mydomain.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/alternative/mta
#ln -s /usr/sbin/qmail.sendmail /etc/alternative/mta
Redhat9.0已经考虑到了使用其它邮件服务器代替sendmail的情况,因为本身就提供postfix和sendmail两种选择。

四、安装vpopmail
1.下载vpopmail的稳定版
wget http://www.inter7.com/vpopmail/vpopmail-5.2.1.tar.gz
2.建立目录:
#mkdir /home/vpopmail
#mkdir /home/vpopmail/etc
3.添加用户和组:
#groupadd  vchkpw
#useradd -g vchkpw vpopmail
4.添加mysql的vpopmail用户,用于操作vpopmail数据库
#mysql -u root -p    //进入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
/*  =========================== vmysql.h ============================== */
#define MYSQL_UPDATE_SERVER "localhost" (mysql服务器名)
#define MYSQL_UPDATE_USER "vpopmail" (用户名)
#define MYSQL_UPDATE_PASSWD "12345678" (改成你设置的密码)

#define MYSQL_READ_SERVER "localhost" (mysql服务器名)
#define MYSQL_READ_USER "vpopmail" (用户名)
#define MYSQL_READ_PASSWD "12345678" (改成你设置的密码)
/*==================================================================*/
6.创建tcp.smtp文件(或者使用/etc/tcp.smtp)
# vi /home/vpopmail/etc/tcp.smtp
/*==================== 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=mydomain.com \\定义虚拟域名
--enable-passwd=n \\是否使用系统密码验证方式
--enable-defaultquota=52428800s \\定义缺省邮箱大小,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
wget http://members.elysium.pl/brush/cmd5checkpw/dist/cmd5checkpw-0.22.tar.gz
#tar zxvf cmd5checkpw-0.22.tar.gz
#cd cmd5checkpw-0.22
#make
#make install
注意,因为使用vpopmail,所以checkpassword不用安装。

六、生成qmail的启动脚本
#cp /var/qmail/boot/home /var/qmail/rc
# vi /var/qmail/rc     //对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/binPATH" \
qmail-start ./Maildir/ splogger qmail  &
/* ============================================*/
#vi /var/qmail/smtp        //编辑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 hostname /home/vpopmail/bin/vchkpw /bin/true /bin/cmd5checkpw /bin/true 2>;&1 | /var/qmail/bin/splogger smtpd 3 &
/* ====================================================== */
#vi /var/qmail/pop3       //编辑pop3服务的启动脚本
/* ====================== pop3 =========================== */
#!/bin/sh

/usr/local/bin/tcpserver -H -R 0 pop3 /var/qmail/bin/qmail-popup hostname /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正常工作后,安装igenus只用了10分钟,非常顺利。如果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
#/etc/rc.d/init.d/httpd restart   //重启apache,使修改生效
4.修改config_inc.php文件
# cd /var/www/html/igenus/config
# vi config_inc.php
/* =============== 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(12 NOT NULL default '',
UNIQUE KEY id (id),
KEY pw_id (pw_id)
) TYPE=MyISAM;
mysql>;quit;
6.如果需要,用vadddomain和vadduser添加新域名和新用户。
最后打开浏览器,输入http://你的网站/igenus,说Good Luck!吧。   

九、编辑qmail自启动脚本
因为自己编写的脚本比较简陋,怕让高手笑话,所以没有写到文章里,但既然有人一再问这个问题,也就厚着脸皮献丑了。写到这,应该算是比较完整了吧。
#vi /etc/rc.d/init.d/qmail //编辑自动运行脚本
===================== 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,行了,现在只要你启动系统就会自动运行了。只是脚本比较简陋,所以不好意思拿出来,不过正常工作没问题。

论坛徽章:
0
发表于 2003-06-17 15:30 |显示全部楼层

Redhat9.0下安装qmail+igenus实录

1.修改vchkpw的属性
#chmod 4755 vchkpw
#chown root.root vchkpw
如果使用带验证的smtp,smtp进程要调用密码验证程序,则必须要使用 setuid 和setgid。提高vchkpw的权限,才能完成setgid操作。

我的做法是调整 smtpd 运行的 uid 和 gid 以适应 vpopmail 。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-06-17 16:23 |显示全部楼层

Redhat9.0下安装qmail+igenus实录

#vi qmail-smtpd.c //将函数straynewline中的451改为553

这是什么道理?

论坛徽章:
0
发表于 2003-06-17 16:42 |显示全部楼层

Redhat9.0下安装qmail+igenus实录

将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.",告诉对方的服务器不要再发这封无效的信件。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-06-17 17:17 |显示全部楼层

Redhat9.0下安装qmail+igenus实录

哦,理解了,将暂时错误改成永久错误

论坛徽章:
0
发表于 2003-06-17 18:46 |显示全部楼层

Redhat9.0下安装qmail+igenus实录

不错啊,强

论坛徽章:
0
发表于 2003-06-17 20:19 |显示全部楼层

Redhat9.0下安装qmail+igenus实录

想请问一下楼主,你说安装mysql时"要注意选取mysql-devel开发包",但我在自定义安装rh9.0的时候,sql中只有一个mysql-server的包啊,安装完成之后用rpm看了下,只有mysql-server,mod_auth_mysql,mysql,php-mysql四个,不知道这样是不是算安装完整啦,mysql-devel是不是需要再安装过????

论坛徽章:
0
发表于 2003-06-17 20:24 |显示全部楼层

Redhat9.0下安装qmail+igenus实录

还有你所说的mysql的头文件在/usr/include/mysql下,而我安装的rh9.0的/usr/include下根本没有mysql是不是我没安装完整????

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-06-17 20:26 |显示全部楼层

Redhat9.0下安装qmail+igenus实录

到你的光盘上找找看吧。

最好把mysql-shared, mysql-devel和mysql-client都装上

论坛徽章:
0
发表于 2003-06-17 20:29 |显示全部楼层

Redhat9.0下安装qmail+igenus实录

不好意思,我安装redhat9.0的时候也没安装mysql-devel,可能的确是没这个选项,我记不清了。应该是在安装完redhat9.0后,单独安装mysql-devel,你可以在第二张光盘上找到mysql-devel-3.23.54a.rpm。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP