作者:artxing
QQ:artxing 5213598
一、准备工作
安装solaris9,(这个不用我说了吧,在solaris版有很多贴子讲这个.不会的可以去那里找.)设置主机名为mail.wangxu.com.
然后去这里下载安装中需要用到的软件包集合
http://info.868cn.com/download/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不用安装.#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等,我就不再罗列,有兴趣话,大家自行安装.