• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

在solaris9下安装qmail+vpopmail+mysql的详细过程

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 27次 | 进入软件测试论坛讨论

领测软件测试网
在solaris9下安装qmail+vpopmail+mysql的详细过程 

作者:artxing 
QQ:artxing 5213598 

一、准备工作 
安装solaris9,(这个不用我说了吧,在solaris版有很多贴子讲这个.不会的可以去那里找.)设置主机名为mail.wangxu.com. 

然后去这里下载安装中需要用到的软件包集合 
http://61.143.101.47/qmail/solaris9-qmail.tar 

由于solaris安装后并没有gcc,make等,所以必须首先安装它们.安装方法参考南非蜘蛛的这篇贴子. 
http://chinaunix.net/jh/6/16434.html 

gcc,make等安装完之后要安装patch-2.5.4-sol8-intel-local.gz(由于http://sunfreeware.com没有for solaris9的,我就下了个for solaris8的,也可以用) ,至于为什么要装它,我下面再说. 
安装完patch后, 
#mv /usr/bin/patch /usr/bin/patch.bak 
#cp /usr/local/bin/patch /usr/bin/patch (用新安装的patch替换以前系统自带的patch) 

同时注意,我所提供的软件包集合中的软件都是已经gunzip过的,直接拿来pkgadd就可以了. 

autoconf,automake,bison,最好也安装,下面编译mysql可能需要它们. 

二、安装mysql 

1.安装ncurses 
# tar xvf ncurses-5.3.tar 
# cd ncurses-5.3 
# ./configure 
# make 
# make install 
2.编译安装mysql 
# tar xvf mysql-4.0.16.tar 
# useradd -g mysql mysql 
# cd mysql-4.0.13 
CC=gcc CFLAGS="-O3 -fomit-frame-pointer -DHAVE_CURSES_H" \ 
CXX=gcc \ 
CXXFLAGS="-O3 -fomit-frame-pointer -felide-constructors \ 
-fno-exceptions \ 
-fno-rtti -DHAVE_CURSES_H" \ 
# ./configure --prefix=/usr/local/mysql 
# make 
# make install 
# scripts/mysql_install_db 
# chown -R root /usr/local/mysql 
# chown -R mysql /usr/local/mysql/var 
# chgrp -R mysql /usr/local/mysql 
# cp support-files/my-medium.cnf /etc/my.cnf 

3.启动mysql 

# /usr/local/mysql/bin/mysqld_safe --user=mysql & 
334 
Starting mysqld daemon with databases from /usr/local/mysql/var 
# ps 
PID TTY TIME CMD 
333 pts/1 0:00 sh 
334 pts/1 0:00 mysqld_s 
如果看到类似的信息,就说明mysql已经正常启动了. 

这里可以把/usr/local/mysql/bin加到path中,方便下面运行mysql指令. 

4.设置mysql启动脚本 

#cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld 
#ln -s /etc/init.d/mysqld /etc/rc2.d/Kmysqld 
#ln -s /etc/init.d/mysqld /etc/rc2.d/Smysqld 

5.修改mysql的root密码 
# mysqladmin -u root -p password wangxu(设置你的密码) 
Enter passwod:(直接回车) 

6.mysql的include和lib文件的路径,接下来编译vpopmail时要指定它们 
include文件:/usr/local/mysql/include/mysql 
lib文件:/usr/local/mysql/lib/mysql 


三、安装ucspi-tcp-0.88 
#tar xvf ucspi-tcp-0.88.tar 
#cd ucspi-tcp-0.88 
#patch -p1 < ../ucspi-tcp-0.88.a_record.patch (这里如果之前没有安装patch包的话,你会无法打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 -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 
# useradd -g qmail -d /var/qmail qmailq 
# useradd -g qmail -d /var/qmail qmailr 
# useradd -g qmail -d /var/qmail qmails 

4.打补丁及编绎安装qmail 

#tar xvf qmail-1.03.tar 
#tar xvf qmail-smtpd-auth-0.31.tar 
#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-1.03.qmail_local.patch 
#vi qmail-smtpd.c //将函数straynewline中的451改为553 


# 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服务 

我是直接删除了sendmail的 
#pkginfo |grep sendmail //找到sendmail的pkg包的名称 
#pkgrm 包名 

# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail 
#chmod 777 /usr/sbin/sendmail 

五、安装vpopmail 
1.建立目录: 
#mkdir /home/vpopmail 
#mkdir /home/vpopmail/etc 

2.添加用户和组: 
#groupadd vchkpw 
#useradd -g vchkpw vpopmail 
3.添加mysql的vpopmail用户,用于操作vpopmail数据库 
#mysql -u root -pwangxu //进入mysql命令行 
mysql>create database vpopmail; 
mysql>grant all on vpopmail.* to vpopmail@localhost identified by "wangxu(换成你的密码)"; 
4.编译安装vpopmail 
#tar xvf vpopmail-5.2.1.tar 
#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" (改成你设置的密码) 

同时注意vmysql.h的第54行和58行 
#define TABLE_LAYOUT "pw_name char(32) not null, \ 
pw_domain char(64) not null, <===== 54 
pw_passwd char(40), \ 
pw_uid int, pw_gid int, \ 
pw_gecos char(48), \ 
pw_dir char(160), <===== 58 
pw_shell char(20), \ 
primary key (pw_name, pw_domain ) " 

这里少了两个 \,需要手动添加上,以后编译时才能通过.但这里有个问题,在linux和freebsd下是不需要修改这里的.所以在这里困扰了一段时间,后来在google搜索了一下,才找到处理办法. 


5.创建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 

6.进行编译: 
# ./configure --prefix=/home/vpopmail --enable-mysql=y --enable-incdir=/usr/local/mysql/include/mysql --enable-libdir=/usr/local/mysql/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/local/mysql/include/mysql \\Mysql数据库include文件所在目录 
--enable-libdir=/usr/local/mysql/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 

7.创建虚拟域 
# cd /home/vpopmail/bin 
# ./vadddomain 域名 (密码) (在mysql数据库vpopmail中自动生成vpopmail表单) 
(如果使用与机器名相同的虚拟域名,应先生成一个其它的虚拟域名,不然会有问题,无法自动生成vpopmail数据库) 
# ./vadduser 用户名 密码 (会自动往表vpopmail中添加用户数据,用户名要带域名,如demo@demo.com) 
如果不成功的话,则必须先删除创建的域,./vdeldomain 域名 

如果添加domain时,提示Domain already exists,但却删除domain又提示Domain does not exist.则采用下面的处理方法. 
删除/var/qmail/control目录下rcpthosts,virtualdomains文件中有关domain的信息;同时删除/var/qmail/user目录下assign文件中有关domain的信息;然后运行/var/qmail/bin/qmail-newu.这时候就可以正常添加domain了. 


六、smtp-auth的设置 

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

2.安装cmd5checkpw 
#tar xvf cmd5checkpw-0.22.tar 
#cd cmd5checkpw-0.22 
#make 
#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 
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 -ef | grep qmail //查看qmail的服务进程是否已完全正常启动 
如果qmail已正常启动,用outlook测试qmail的smtp和pop3是否正常,注意由于vpopmail支持虚拟域名,所以在outlook中设置邮件帐号时,用户名后要加上域名,如wangxu@wangxu.com。smtp是带认证的. 


文档说明: 

这份文档,是我参考了大量的网友的文章而写成的,在solaris9下测试通过.其间也请教了多位论坛中的朋友,谢谢他们.可能中间有什么问题,请大家帮忙指正,有什么问题请回复. 

对于这篇文档,网友可以转载,转载时请注明出处. 

至于qmail系统中其他的qmailadmin,webmail等,我就不再罗列,有兴趣话,大家自行安装.

 chlinux 回复于:2003-11-10 08:48:11
真是及时雨呀

 metor78 回复于:2003-11-10 09:01:03
不错!顶!

 laobi333 回复于:2003-11-10 09:06:20
好文章,顶!试试!

 houji 回复于:2003-11-10 11:09:40
好文章,花了不少功夫,建议加精华。

 dfhawk 回复于:2004-02-02 16:00:12
solaris下/home目录里不能建目录的,请问你vpopmail是怎么编译过去的

 dfhawk 回复于:2004-02-02 16:00:12
solaris下/home目录里不能建目录的,请问你vpopmail是怎么编译过去的

 dfhawk 回复于:2004-02-02 16:00:29
solaris下/home目录里不能建目录的,请问你vpopmail是怎么编译过去的

 gonglifeng 回复于:2004-02-26 15:16:14
mysql 编译通不过make 时libstdc++.so.5:打开失败

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网