Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

REDHAT AS3下安装qmail+vpopmail+igenus

[复制链接]
Crossday 发表于 2004-11-2 23:59:24 | 显示全部楼层 |阅读模式
本文由bluelotus于2003.06.16所写,Crossday于2004.11.1修正了其中的错误与疏漏,并对版本升级后安装方法的变更做了,并对少许步骤进行了增补。

RedhatAS3+Qmail+smtp-auth+Vpopmail+MySQL+Igenus,实例:http://0874.cn/mail

一、安装环境及准备工作
安装Redhat AS3,安装时选取安装apache、php、mysql,可省去以后自已编译安装的麻烦,mysql要注意选取mysql-devel开发包,mysql的头文件和库文件分别在/usr/include/mysql和/usr/lib/mysql。
安装完Redhat AS3后,修改/etc/httpd/conf/httpd.conf,使web服务正常启用,为mysql添加root用户的密码。如果设置了防火墙,要打开服务器的smtp 25和pop3 110两个端口。

二、安装ucspi-tcp-0.88
1.下载相应软件及补丁,由于redhat AS3的glibc的版本问题,必须打补丁才能正常编译。
cd /usr/local/src
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
wget http://qmail.te8.com/rpms/glibc- ... 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.下载软件及补丁:
cd /usr/local/src
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- ... 3.qmail_local.patch
wget http://members.elysium.pl/brush/ ... pd-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
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/alternatives/mta
ln -s /usr/sbin/qmail.sendmail /etc/alternatives/mta
Redhat AS3已经考虑到了使用其它邮件服务器代替sendmail的情况,因为本身就提供postfix和sendmail两种选择。

四、安装vpopmail
1.下载vpopmail的稳定版
cd /usr/local/src
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地址查找虚拟域名
========================================
cd /usr/local/src/vpopmail-5.2.1
./configure --prefix=/home/vpopmail --enable-mysql=y --enable-incdir=/usr/include/mysql --enable-libdir=/usr/lib/mysql --enable-default-domain=mydomain.com --enable-passwd=n --enable-defaultquota=52428800s --enable-tcprules-prog=/usr/local/bin/tcprules --enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp --enable-vpopuser=vpopmail --enable-vpopgroup=vchkpw --enable-ip-alias-domains=n

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
cd /usr/local/src
wget http://members.elysium.pl/brush/ ... checkpw-0.22.tar.gz
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文件进行修改,以决定投送方式:
/* ================= 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 -l localhost -t 1 -v -p 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.0.2_20040901_release.tgz
mkdir /home/www/igenus #假设安装到这里
tar zxvf igenus_2.0.2_20040901_release.tgz -C /home/www/igenus
2. 创建目录,用于临时数据和文件管理功能。
mkdir /home/temp #为/home/www/igenus的上级的上级的temp
mkdir /home/netdisk #为/home/www/igenus的上级的上级的netdisk
chmod -R 755 /home/temp /home/netdisk
chown vpopmail:vchkpw /home/netdisk /home/tempch
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_HTML_SIGN 和 $CFG_PLAIN_SIGN,以在WebMail发出的邮件能够显示自己的个性提示
5.重新编制Mysql数据库表格
#mysql -u root -p
use vpopmail;
alter table vpopmail drop primary key;
alter table vpopmail add column pw_id int(5) NOT NULL primary key auto_increment;

CREATE TABLE address (
  id int(11) unsigned NOT NULL auto_increment,
  pw_id int(5) 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 PACK_KEYS=1 ;

CREATE TABLE admin (
  id int(10) unsigned NOT NULL auto_increment,
  site_id int(10) unsigned NOT NULL default '0',
  domain varchar(128) NOT NULL default '',
  quota smallint(5) unsigned NOT NULL default '0',
  total smallint(5) unsigned NOT NULL default '0',
  createtime timestamp(14) NOT NULL,
  login char(1) NOT NULL default '',
  cur_total smallint(5) NOT NULL default '0',
  cur_quota smallint(5) NOT NULL default '0',
  gid varchar(11) NOT NULL default '',
  expiration_time timestamp(14) NOT NULL,
  flag int(10) unsigned NOT NULL default '0',
  maxmsg int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (id),
  UNIQUE KEY domain (domain)
) TYPE=MyISAM PACK_KEYS=1 ;

CREATE TABLE card (
  id int(5) unsigned NOT NULL auto_increment,
  pw_id int(5) unsigned NOT NULL default '0',
  LinkMan varchar(64) NOT NULL default '',
  CompanyName varchar(100) NOT NULL default '',
  Address varchar(255) NOT NULL default '',
  Position varchar(32) NOT NULL default '',
  PhoneNumber varchar(16) NOT NULL default '',
  Mobile varchar(12) NOT NULL default '',
  Email varchar(128) NOT NULL default '',
  Partaker varchar(32) NOT NULL default '',
  Memo varchar(255) NOT NULL default '',
  PRIMARY KEY  (id)
) TYPE=MyISAM ;

CREATE TABLE lastauth (
  user char(32) NOT NULL default '',
  domain char(64) NOT NULL default '',
  remote_ip char(18) NOT NULL default '',
  timestamp bigint(20) NOT NULL default '0',
  PRIMARY KEY  (user,domain)
) TYPE=MyISAM;

CREATE TABLE logs (
  pw_id int(5) default '0',
  ip varchar(15) NOT NULL default '',
  action varchar(15) NOT NULL default '',
  time datetime default NULL,
  content varchar(64) NOT NULL default '',
  email varchar(128) NOT NULL default ''
) TYPE=MyISAM;

CREATE TABLE message (
  id int(5) unsigned NOT NULL auto_increment,
  title varchar(255) NOT NULL default '',
  body text NOT NULL,
  createtime datetime NOT NULL default '0000-00-00 00:00:00',
  updatetime datetime NOT NULL default '0000-00-00 00:00:00',
  pw_domain varchar(64) NOT NULL default '',
  UNIQUE KEY id (id)
) TYPE=MyISAM ;

CREATE TABLE personal (
  id int(11) unsigned NOT NULL auto_increment,
  pw_id int(5) NOT NULL default '0',
  truename varchar(10) NOT NULL default '',
  fax varchar(20) NOT NULL default '',
  telephone varchar(15) NOT NULL default '',
  sex int(1) NOT NULL default '0',
  year int(4) NOT NULL default '0',
  MONTH int(2) NOT NULL default '0',
  DAY int(2) NOT NULL default '0',
  education varchar(4) NOT NULL default '',
  marital int(1) NOT NULL default '0',
  occupation varchar(15) NOT NULL default '',
  companyname varchar(30) NOT NULL default '',
  province varchar(6) NOT NULL default '',
  PRIMARY KEY  (id)
) TYPE=MyISAM PACK_KEYS=1 ;

CREATE TABLE scheduler (
  id int(11) unsigned NOT NULL auto_increment,
  begin_time int(11) unsigned default NULL,
  end_time int(11) unsigned default NULL,
  title varchar(255) NOT NULL default '',
  body varchar(255) NOT NULL default '',
  pw_id int(11) unsigned NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM ;

CREATE TABLE stow (
  id int(5) unsigned NOT NULL auto_increment,
  pw_id int(5) unsigned NOT NULL default '0',
  Name varchar(128) NOT NULL default '',
  http varchar(255) NOT NULL default 'http://',
  memo varchar(255) NOT NULL default '',
  PRIMARY KEY  (id)
) TYPE=MyISAM ;
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
platinum 发表于 2004-11-3 07:37:00 | 显示全部楼层
vpopmail的版本有点低,现在是5.4.x,安装方法和老版本不太一样了
没有加入clamav杀毒模块,加上那个就更好了
没有qmailadmin,管理起来可能有些麻烦
回复

使用道具 举报

szboy 发表于 2004-11-7 16:43:19 | 显示全部楼层
这个教程到底是FOR 9.0的还是AS3的?
回复

使用道具 举报

AngelSing 发表于 2004-11-8 13:54:33 | 显示全部楼层
我在redhat 9下面安装到vpopmail建立虚拟域的时候出现麻烦
./vadddomain: error while loading shared libraries: libmysqlclient.so.12: cannot open
shared object file: No such file or directory
出现这个错误,是什么原因?

评分

1

查看全部评分

回复

使用道具 举报

 楼主| Crossday 发表于 2004-11-22 15:01:57 | 显示全部楼层
你没装mysql-cliend或mysql-devel包所致 另外9.0和AS3都可以
回复

使用道具 举报

AngelSing 发表于 2004-11-23 18:08:33 | 显示全部楼层
其实我觉得解决办法很方便的,如果是装的MYSQL源码编译安装,不需要再装的,你可以直接把 /usr/local/mysql/lib/mysql/(当然你的MYSQL安装路径可能和我的不一样)copy到/usr/lib下面就OK了!
回复

使用道具 举报

aikede 发表于 2006-1-5 18:51:44 | 显示全部楼层
安装vpopmail完了,添加用户时/home/vpopmail/bin/vadduser XX@XXXX.com.cn
出现如下错误
Error: Illegal username

[ 本帖最后由 aikede 于 2006-1-5 18:52 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-6-11 05:28 , Processed in 0.163298 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表