solaris8(sparc)上安装Qmail邮件系统及移植(linux to solaris)

发表于:2007-05-26来源:作者:点击数: 标签:
看到有个朋友在问solaris下邮件系统的安装配置,所以发到这里来供大家参考。 原创:solaris8(sparc)上安装Qmail邮件系统及移植(linuxtosolaris) 作者: cq vrboymail:chengang@chinacfc.com 前言:linux和freebsd下安装配置qmail的文档很多,而solaris下的文

看到有个朋友在问solaris下邮件系统的安装配置,所以发到这里来供大家参考。
原创:solaris8(sparc)上安装Qmail邮件系统及移植(linux to solaris)
作者:cqvrboy   mail:chengang@chinacfc.com
前言:linux和freebsd下安装配置qmail的文档很多,而solaris下的文档较少且不是很全.正好公司为了优化资源,利用闲置设备(有十几台SUN小型机和工作站闲置,好浪费),让我把X86下的相关应用移植到SUN平台(好累啊)。我花了一周时间终于成功把Linux下的qmail系统移植到了solaris下(还有weblogic,helix server等要移植),现在把过程贴出来给用得着朋友作个参考。帖子中难免出现错误和疏漏,希望大家指正。我在安装过程中参考了zengpx,llzqq,artxing,帕萨特等几位朋友的帖子,在此表示感谢。
参考文章:
zengpx:Apache-2.0.45+php-4.3.1+mysql-4.1.0安装
llzqq:SOLARIS+QMAIL+VPOPMAIL+IGENUS+QMAILAMDIN
artxing:在solaris9下安装qmail+vpopmail+mysql的详细过程 
帕萨特:solaris下安装qmail-scanner 


############################################## 
#                安装准备工作                #
##############################################  

#首先要安装solaris 8的编译环境,去http://www.sunfreeware.com/下载一下软件:  
1.autoconf-2.13-sol8-sparc-local.gz  
2.automake-1.4-sol8-sparc-local.gz  
3.bison-1.28-sol8-sparc-local.gz  
4.gclearcase/" target="_blank" >cc-3.2.2-sol8-sparc-local.gz  
5.gzip-1.3-sol8-sparc-local  
6.make-3.79.1-sol8-sparc-local.gz  
7.tar-1.13-sol8-sparc-local.gz 
8.libgcc-3.2.2-sol8-sparc-local.gz 
9.ncurse 
10.flex-2.5.4-sol8-sparc-local.gz 
11.sed-4.0-sol8-sparc-local.gz 

#设置环境变量: 
vi /etc/profile 
PATH=/usr/local/sbin:/usr/local/bin:/usr/ccs/bin:/usr/sbin:/sbin:/bin:/usr/local/mysql/bin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ucb 

#退出重启系统使变量生效,按照下列步骤安装软件: 
1.pkgadd -d gzip-1.3-sol8-sparc-local  
2.gunzip autoconf-2.13-sol8-sparc-local.gz  
3.gunzip automake-1.4-sol8-sparc-local.gz  
4.gunzip gcc-3.2.2-sol8-sparc-local.gz  
5 gunzip bison-1.28-sol8-sparc-local.gz  
6.pkgadd -d autoconf-2.13-sol8-sparc-local  
7.pkgadd -d automake-1.4-sol8-sparc-local  
8.pkgadd -d gcc-3.2.2-sol8-sparc-local  
9.pkgadd -d make-3.79.1-sol8-sparc-local  
10.pkgadd -d tar-1.13-sol8-local  
pkgadd -d nucrse 
pkgadd -d flex 
10.gunzip tar-1.13.tar.gz  
11.tar xvf tar-1.13.tar  
12.cd tar-1.13  
13../configure --prefix=/usr/local/gnutar  
14. make  
15. make install 
16. cp /usr/local/gnutar/bin/tar /usr/local/bin/gtar 
#注:必须要用GNU的tar来解下载的gz包,用solaris自带的tar解包在编译的时候会有问题。

#把libgcc包中所有的文件从/usr/local/lib拷贝到/usr/lib中,其中包含 
libgcc_s.so  
libstdc++.la  
libstdc++.so.5.0.0  
libgcc_s.so.1  
libstdc++.so  
libstdc++.so.5.0.1  
libstdc++.a  
libstdc++.so.5 
libstdc++.so.5.0.2 

############################################## 
#                安装apache+php+mysql        #
############################################## 
分别下载以下软件(均为源代码包) 
Apache-2.0.49 (www.apache.org)  
php-4.3.1 (www.php.net)  
mysql-4.1.0 (www.mysql.com)  

################  安装准备 #################### 
mkdir /usr/local/mysql  
mkdir /usr/local/apache 

# 建立mysql组及用户 
groupadd -g 201 mysql  
useradd -u 1001 -g mysql -d /export/home/mysql -m -s /bin/tcsh -c "MySQL Administrator" mysql  
passwd mysql //设置用户口令 

# 解压缩文件 
/usr/local/gnutar/bin/tar -zxvf /bak/mysql-4.1.0.tar.gz  
/usr/local/gnutar/bin/tar -zxvf /bak/httpd-2.0.45.tar.gz  
/usr/local/gnutar/bin/tar -zxvf /bak/php-4.3.1.tar.gz  

#################################安装 mysql-4.1.0#################################     
cd mysql-4.1.0  
CC=gcc CFLAGS="-O6" CXX=gcc CXXFLAGS="-O6 -felide-constructors -fno-exceptions -fno-rtti" 
./configure --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld --disable-nls --prefix=/usr/local/mysql --with-mysqld-user=mysql --with-charset=gb2312 --with-extra-charsets=all 

/usr/local/bin/make  
/usr/local/bin/make install  
/usr/local/mysql/bin/mysql_install_db 

chown -R root /usr/local/mysql  
chgrp -R mysql /usr/local/mysql  
chown -R mysql /usr/local/mysql/var 

chmod 777 /usr/local/mysql/lib/mysql/libmysqlclient.a  
cp support-files/my-medium.cnf /etc/my.cnf 

# 设置引导文件 
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld 
cd /etc/rc2.d 
ln -s ../init.d/mysqld S90mysql 
ln -s ../init.d/mysqld K90mysql 

# load lib 
ln -s /usr/local/mysql/include/mysql /usr/include/mysql 
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql 
echo /usr/lib/mysql >> /etc/ld.so.conf 
ldconfig #(无法执行,没有此命令)

# 启动数据库 
cd /usr/local/mysql/bin 
./mysql_safed --user=mysql & 

# 连接测试 
cd /uca/local/mysql/bin 
./mysql -u root 
  
Welcome to the MySQL monitor. Commands end with ; or \g.  
Your MySQL connection id is 1 to server version: 3.23.44  

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.  

mysql>  

################################# mysql 安装完毕 #################################


############################### 安装 Apache-2.0.49############################
cd httpd-2.0.49  
CC=gcc CFLAGS="-O6" CXX=gcc CXXFLAGS="-O6 -felide-constructors -fno-exceptions -fno-rtti" 
./configure --prefix=/usr/local/apache --enable-mods-shared=all --enable-module=rewrite
make  
make install  

# 创建符号连接  
cp /usr/local/apache/bin/apachectl /etc/init.d/httpd 
ln -s /etc/init.d/httpd /etc/rc3.d/S90http 
ln -s /etc/init.d/httpd /etc/rc3.d/K90http 
ln -s /usr/local/apache/bin/apachectl /bin/apache  
ln -s /usr/local/mysql/bin/mysql /bin/mysql  

################################# 安装php-5.0.1 #################################

cd  php-5.0.1 
CC=gcc CFLAGS="-O6" CXX=gcc CXXFLAGS="-O6 -felide-constructors -fno-exceptions -fno-rtti"  
./configure --with-charset=gb2312 --with-extra-charsets=all --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache/bin/apxs --enable-track-vars --enable-force-cgi-redirect --enable-pic --enable-inline-optimiation --enable-memory-limit --enable-bcmath
make  
make install  
cp php.ini-dist /usr/local/lib/php.ini 
cp php.ini-dist /usr/local/apache/conf/php.ini  


############################################## 
#              修改配置文件                  #
##############################################
----------------------  
vi /usr/local/apache/conf/httpd.conf  
# 加入以下行(装载php4模块并指定.php 文件)  
# LimitRequestBody (指定php处理的请求数据大小,以下指定为 20M)  

LoadModule php4_module modules/libphp4.so  
<Files *.php>  
SetOutputFilter PHP  
SetInputFilter PHP  
LimitRequestBody 20971520  
</Files>  
AddType application/x-httpd-php .php .php3
AddType application/x-httpd-php-source .phps

#注解以下行(在文本前加#),使apache显示中文,具体原因未知  
ForceLanguagePriority Prefer Fallback  
AddDefaultCharset ISO-8859-1  

#加入默认的引导文件index.php(找到DirectoryIndex,修改如下:)  
DirectoryIndex index.php index.html index.html.var   

# 设置你的服务器的域名或IP地址及监听端口 
ServerName 192.168.0.10:80 

#指定网站目录(假设为 /apache 目录)  
DocumentRoot "/apache"  

#把Group改一下,改成  
Group=nobody  
默认的是Group=-1,在SOLARIS上不行。 


###编辑php.ini配置文件 
------------------------- 
vi /usr/local/apache/conf/php.ini  
#找到并修改以下参数  
max_execution_time = 600 ;最大运行时间 600 秒  
max_input_time = 600 ;最大输出时间 600秒  
memory_limit = 20M ;最大内存限制 20M  
file_uploads = On ;允许上载文件  
upload_max_filesize = 20M ;最大文件大小 20M  
post_max_size = 20M ;php可接受的 post 方法大小 20M  
session.auto_start = 1 ;session自动启动  


### 安全性 
------------------------- 
  提高mysql的安全性 

1.修改/etc/init.d/mysqld,使其只监听localhost的埠,将如下的一行  
    $bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file&  
  修改为:  
    $bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file --bind-address=127.0.0.1&  
2.为mysql的root账号设置密码 
    # /usr/local/mysql/bin/mysqladmin -u root password "root用户的密码" 
    # /usr/local/mysql/bin/mysqladmin -u root reload 
   
 提高apache的安全性 
   
1.新建包含文件目录inc_doc: 
    # mkdir /usr/lcoa/apache/inc_doc 
2.设置PHP初始化文件的搜索路径,使PHP程序在inc_doc目录中搜索包含文件: 
    # vi /usr/local/apache/conf/php.ini  
  添加或修改: 
    include_path="/usr/local/apache/inc_doc" 
  或添加或修改: 
    include_path="other/include_doc/path:/usr/local/apache/inc_doc" 



### 运行 #### 
--------------------- 
#启动mysql  
/usr/local/mysql/bin/safe_mysqld --user=mysql &  
#停止mysql  
/usr/local/mysql/bin/mysqladmin shutdown  

#启动apache  
/etc/init.d/httpd start  
#停止apache  
/etc/init.d/httpd stop  

### 测试 ###  
mkdir /apache  
echo "<?" >/apache/index.php  
echo "phpinfo();" >>/apache/index.php  
echo "?>" >>/apache/index.php  
#生成/apache/index.php 文件  

在浏览器上输入 solaris 机器网址,php 的配置信息将显示出来。


############################################## 
#              安装qmail及相关软件           #
############################################## 

####################安装patch工具####################

 gzip –d patch-2.5.4-sol8-intel-local.gz 
 pkgadd –d patch-2.5.4-sol8-intel-local 
 mv /usr/bin/patch /usr/bin/patch.bak 
 cp /usr/local/bin/patch /usr/bin/patch 

####################安装ucspi-tcp-0.88#################### 

 gzip -d ucspi-tcp-0.88.tar.gz 
 tar xvf ucspi-tcp-0.88.tar 
 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.03-patched.tar.gz #################### 
#注:aka.com.cn提供的已打patch,可直接使用qmail-acl_policy
#1.建目录: 
 mkdir /var/qmail 
 mkdir /var/qmail/alias 
#2.建组及用户: 
 groupadd nofiles 
 groupadd qmail 
 useradd -g nofiles -m -d /var/qmail/alias -s /bin/false alias 
 useradd -g nofiles -m -d /var/qmail -s /bin/false qmaild 
 useradd -g nofiles -m -d /var/qmail -s /bin/false qmaill 
 useradd -g nofiles -m -d /var/qmail -s /bin/false qmailp 
 useradd -g qmail -m -d /var/qmail -s /bin/false qmailq 
 useradd -g qmail -m -d /var/qmail -s /bin/false qmailr 
 useradd -g qmail -m -d /var/qmail -s /bin/false qmails 

#3.打补丁及编绎安装qmail 

 gtar xzvf qmail-1.03-patched.tar.gz 
 cd qmail-1.03 
#修改qmail-smtpd.c将函数straynewline中的451改为553.(在53行) 

 make setup check 
#出现错误后,修改auto-ccld.sh文件中CC,LD成你所用的环境就可以了。 
 ./config-fast mail.mydomain.com 

#4.添加别名用户: 
 touch /var/qmail/alias/.qmail-root 
 touch /var/qmail/alias/.qmail-postmaster 
 touch /var/qmail/alias/.qmail-mailer-daemon 

#5.如果存在postfix和sendmail,停用现在的mail服务 
 ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail 
 chmod 777 /usr/sbin/sendmail 

####################安装vpopmail-5.2.1 ####################
#注:vpopmail比较新的是5.4.6,vpopmail的表结构和5.2.1有点不一样,考虑到我的系统需要移植,所以偷懒装的5.2.1。
#1.建立目录: (注:solaris下home目录默认是不可写的,需要修改/etc/下auto_home,auto_master,也可以把vpopmail安装到/export/home)
 mkdir /home/vpopmail 
 mkdir /home/vpopmail/etc 

#2.添加用户和组: 
 groupadd vchkpw 
 useradd -g vchkpw -s /bin/false -m -d /home/vpopmail vpopmail 

#3.添加mysql的vpopmail用户,用于操作vpopmail数据库 

mysql -u root –p****** 
mysql>create database vpopmail; 
mysql>grant all on vpopmail.* to vpopmail@localhost identified by "password"; 

#4.编译安装vpopmail 

 gzip -d vpopmail-5.2.1.tar.gz 
 tar xvf vpopmail-5.2.1.tar 
 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 "*****" (改成你设置的密码)   

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

在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 ) "   
========================= vmysql.h======================== 

#5.创建tcp.smtp文件(或者使用/etc/tcp.smtp)   

 vi /home/vpopmail/etc/tcp.smtp   

127.0.0.1:allow,RELAYCLIENT=""   
:allow   

 cd /export/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=mydomain.com --enable-passwd=n --enable-defaultquota=10485760s --enable-tcprules-prog=/usr/local/bin/tcprules --enable-vpopuser=vpopmail --enable-vpopgroup=vchkpw --enable-ip-alias-domains=n 

#如果不能编译成功,需要改下面两个文件中的“cc -s”为“gcc -s” 
./cdb/conf-cc 
./cdb/conf-ld 

 make   
 make install-strip 

#7.创建虚拟域   
 cd /export/home/vpopmail/bin   
 ./vadddomain mydomain.com 

#如果不成功的话,则必须先删除创建的域(vdeldomain 域名), 
 ./vadduser admin@mydomain.com
 ./vadduser test@mydomain.com
#如果添加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的属性   
 cd /home/vpopmail/bin 
 chmod 4755 vchkpw   
 chown root:sys vchkpw   

如果使用带验证的smtp,smtp进程要调用密码验证程序,则必须要使用 setuid 和setgid。提高vchkpw的权限,才能完成setgid操作。   

#2.安装cmd5checkpw   
gtar xzvf cmd5checkpw-0.22.tar.gz 
cd cmd5checkpw-0.22   
make  
mkdir /usr/man/man8 
vi Makefile
修改:cp cmd5checkpw /usr/local/qmail/bin/ ; cp cmd5checkpw.8 /usr/local/qmail/man/man8/
为:cp cmd5checkpw /var/qmail/bin/ ; cp cmd5checkpw.8 /usr/man/man8/ 
make install   

#################### 生成qmail的启动脚本 ####################

# cp /var/qmail/boot/home /var/qmail/rc   
对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 &   
=====================================rc===================================== 
编辑smtp服务的启动脚本 
# 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 /usr/local/bin/rblsmtpd -t 60 -r cblplus.anti-spam.org.cn /var/qmail/bin/qmail-smtpd mydomain.com /home/vpopmail/bin/vchkpw /bin/true /bin/cmd5checkpw /bin/true 2>&1 | /var/qmail/bin/splogger smtpd 3 &
====================================smtp==================================== 
编辑pop3服务的启动脚本 
# vi /var/qmail/pop3  
====================================pop3==================================== 
#!/bin/sh  
/usr/local/bin/tcpserver  -l mydomain.com -U -H -R 0 pop3 /var/qmail/bin/qmail-popup mydomain.com /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &  
====================================pop3==================================== 
#注:这三个文件中的命令最好写在一行. 
 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中设置邮件帐号时,用户名后要加上域名,如chengang@mydomain.com。smtp是带认证的. 

############### 建立开机启动脚本 ############### 

# vi /etc/init.d/qmail 
==================================qmail============================== 
#! /bin/sh 
# chkconfig: 2545 90 90 
# description: qmail (include smtp and pop3) auto start/stop scripts. 

case "$1" in 
start) 
echo "start qmail:" 
/var/qmail/rc & 
echo "." 
echo "start smtp service:" 
/var/qmail/smtp 
echo "." 
echo "start pop3 service:" 
/var/qmail/pop3 
echo "." 
;; 
stop) 
echo "stop qmail:" 
pkill qmail-send 
pkill qmail-clean 
pkill qmail-rspawn 
pkill qmail-lspawn 
pkill splogger 
pkill tcpserver 
;; 
*) 

exit 1 
;; 
esac 
exit 0 
==================================qmail============================== 

 chmod 744 /etc/init.d/qmail 
 chown root:sys /etc/init.d/qmail 
 ln -s /etc/init.d/qmail /etc/rc3.d/S82qmail 
 ln -s /etc/init.d/qmail /etc/rc2.d/K82qmail 

##################  安装autorespond  ##################
 gtar xzvf autorespond-2.0.2.tgz 
 cd autorespond-2.0.2  
 vi Makefile  
将其中的INSTALL_DIR =修改为 /var/qmail/bin  
 make   
 make install   
 cp autorespond /usr/local/bin 


##################  安装QMAILADMIN  ##################
 gtar xzvf qmailadmin-1.0.6.tgz  
 cd qmailadmin-1.0.6 
 ./configure  
--enable-cgibindir=/home/wmail/www/cgi-bin  
--enable-htmldir=/home/wmail/www  
--disable-ezmlmdir 

 make   
 make install-strip 

#生成admin表 

mysql -u root –p****** 
mysql>use vpopmail; 
mysql>CREATE TABLE `admin` (  
`id` tinyint(3) unsigned NOT NULL auto_increment,  
`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',  
PRIMARY KEY (`id`),  
UNIQUE KEY `domain` (`domain`)  
) TYPE=MyISAM PACK_KEYS=1 AUTO_INCREMENT=1 ; 

################### 使用hzqbbc的qmail-acl_policy ###################
#我用了qmail-acl_policy,效果相当不错,能过滤掉大部分垃圾邮件。在此对hzqbbc表示感谢!

1.Patch
  补丁建立在Aka wmail的qmail软件包之上, 如果使用该软件包的用户可直接
将补丁打进qmail源码包,重新编译后拷贝新的qmail-smtpd覆盖老的即可。

  如果不是使用该qmail软件包,则补丁有可能无法打进去。解决的办法是手工
将代码拷贝到qmail-smtpd.c相应的部位,并重新编译。

Notes:(by denny)
  需要说明的是:希望大家先用WMAIL的qmail-1.03-patched.tar.gz 文件解开
后配置安装,qmail运行正常,可以收发信。并且smtp做好,测试

  假设本软件包和qmail-1.03在当前目录,则运行:
$ tar zxvf   qmail-1.03-patched.tar.gz
$ cd  qmail-1.03
$ patch -p0< ../qmail-acl_policy.patch/qmail-acl_policy.patch

2.Complie & install
  运行make并关闭当前运行的qmail, 然后将新的qmail-smtpd覆盖旧的qmail-
smtpd即可。

$ make
$ /path/to/qmail_stop
$ cp -f qmail-smtpd /var/qmail/bin/

3.Config
  将本补丁包里的acl_server.pl拷贝到/var/qmail/bin里
  echo "bin/acl_server.pl" > /var/qmail/control/acl_server
  生成配置文件后,简单执行一下acl_server.pl看系统是否报错,如果没有证明
  一切ok。如果报错,检查相关的Perl 包安装是否正确.

  参考的测试方法,在命令行下运行:
  $ perl -e 'use IO::Socket'
  $ echo $?
  如果IO::Socket库安装正确,则echo $?语句返回0,否则返回非0值。

4.Start up 


############################################## 
#      安装 qmail-scanner1.23+clamAV0.75     #
##############################################
一、安装包的准备 
1. maildrop 
下载地址: http://prdownloads.sourceforge.net/courier/ 
我用的版本: maildrop-1.5.2.20030423.tar.gz
2.qmail-scanner 
下载地址: http://sourceforge.net/projects/qmail-scanner/ 
我用的版本: qmail-scanner-1.23.tgz
3. Time-HiRes 
下载地址: http://search.cpan.org/~jhi/Time-HiRes-1.59/ 
我用的版本:Time-HiRes-1.59.tgz 
4. Berkeley DB 
下载地址: a) 源码: http://www.sleepycat.com/update/snapshot/db-4.2.52.NC.tar.gz 
b) pkg: sunfreeware.hknet.com下载 
For 8: db-3.1.17-sol8-sparc-local.gz 
For 9: db-3.3.11-sol8-sparc-local.gz 
我用的版本:上面的都下载了,用源码以失败告终(详细情况看后文),最后用的pkg 
5. DB_File 
下载地址: http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/DB_File-1.808.tar.gz 
我用的版本:DB_File-1.808.tar.gz 
6. tnef 
下载地址: http://optusnet.dl.sourceforge.net/sourceforge/tnef/tnef-1.2.3.1.tar.gz 
我用的版本: tnef-1.2.3.1.tar.gz 
二、开始安装 
1. 确认打了 qmail-queue 的patch 

2. maildrop 
gzip xxx 
tar xxx 
cd xxx 
./configure --prefix=xxxx 
make 
make install 

3. Time-HiRes 
gzip 
tar 
perl Makefile.PL 
make 
make test 
make install 
可能遇到的问题: 
1) sh: cc: 没找到 
#确认 cc在你的$PATH中 默认:/usr/ucb/cc 
2) cc: unrecognized option `-KPIC' 
#做下列操作 
mv /usr/ucb/cc /usr/ucb/cc_orgi 
ln -s /usr/local/bin/gcc /usr/ucb/cc 
vi Makefile 
36行 CCCDLFLAGS = -KPIC 改成 CCCDLFLAGS = -fPIC 
264行 OPTIMIZE = -xO3 -xdepend 改成 OPTIMIZE = -O3 

4. Berkeley DB 
a) 源码: 
cd db-4.1.25/build_unix 
setenv CC gcc 
../dist/configure 
make install 
cp /usr/local/BerkeleyDB.4.2/include/db* /usr/local/include/ #这步不做也可以 
b) pkg: 
pkgadd -d xxxx 

5. DB_File 
gzip 
tar 
perl Makefile.PL 
make 
make install 
可能遇到的问题: 
1), 2)同Time-HiRes,但是 
mv /usr/ucb/cc /usr/ucb/cc_orgi 
ln -s /usr/local/bin/gcc /usr/ucb/cc 没有必要做了! 
3)安装Berkeley DB时如果没有做 cp ,有可能会找不到db.h 
办法1 # vi config.in 
修改 
INCLUDE = /usr/local/BerkeleyDB/include 
LIB = /usr/local/BerkeleyDB/lib 的BerkeleyDB实际路径 
办法2 #在 perl Makefile.PL之前 
执行下列操作: 
DB_FILE_INCLUDE=/usr/local/BerkeleyDB.3.3/include
DB_FILE_LIB=/usr/local/BerkeleyDB.3.3/lib 
export DB_FILE_INCLUDE DB_FILE_LIB 

6. TNEF 
gzip 
tar 
cd 
./congfiure 
make 
make install 
7. qmail-scanner 
gzip 
tar 
cd 
SUIDPERL=/usr/bin/perl 
export SUIDPERL #suidperl 在linux下有,在solaris下没找到,只好这样了 
qmail-scanner
./configure --qmail-queue-binary /var/qmail/bin/qmail-queue  --admin postmaster --domain mydomain.com --notify sender,admin --local-domains mydomain.com --lang en_GB --debug yes --unzip yes --scanners clamscan  --log-details no --install
修改qmail-scanner-queue.pl中的 
my $clamscan_options="-r --disable-summary --max-recursion=10 --max-space=1000000";为 
my $clamscan_options="-r --mbox --disable-summary --max-recursion=10 --max-space=1000000"; 

可能出现的问题: 
1) 没打qmail-queue的patch ,赶紧打上
2)如果安装maildrop时指定 prefix了,有可能找不到reformime ,将 maildrop的 bin路径放到$PATH中 
3)Error: Could not load Log module 
Radius/LogSYSLOG.pm: Can't locate syslog.ph in @INC(did you run h2ph?) (@INC contains…… 
做下列操作: 
cd /usr/include 
find /usr -name "h2ph" 
/usr/perl5/5.00503/bin/h2ph * sys/* 
cd /usr/include 
/usr/perl5/bin/h2ph -r -l . 
vi /usr/perl5/site_perl/5.005/sun4-solaris/_h2ph_pre.ph 
将第2行注释掉,即: 
unless (defined &) { sub () { "" } } 变成 #unless (defined &) { sub () { "" } } 

至此,solaris下qmail的安装完毕。

############################################## 
#      从linux移植vpopmail数据到solaris      #
##############################################
1、移植mysql里面的vpopmail数据库;
停掉qmail,把linux下mysql下vpopmail数据库文件打包传到solaris系统mysql数据库目录下,解包。
注:因为mysql版本不一致的缘故吧,vpopmail表pw_passwd的密码加密后不一致,没办法,只得用一个脚本把密码统统改过
具体过程:
把原来的vpopmail的数据按域名导出到文件mydomainuserlist,文件格式如下:
user1 password1
user2 password2
……………………
usern passwordn

然后用教本passwdmailuser修改密码,脚本如下
    #!/bin/sh 
    #batchadduser.sh: batch add mail user.  
    #install step.  
    #chmod u+x batchadduser  
    #./batchadduser.sh domain datafile  
    if [ $# -lt 2 ]  
    then  
    echo "usage: $0 domain datafile"  
    exit 1  
    fi  
    domain=$1  
    datafile=$2  
    addcmd=/home/vpopmail/bin/vpasswd  
    while read username passwd  
    do  
    $addcmd $username@$domain $passwd  
    done < $datafile 

执行脚本:passwdmailuser   mydomainuserlist
2、移植用户邮件
把linux下/home/vpopmail/domains/打包,传到solaris相应目录,解包;
3、启动qmail,测试。

 solaris小兵 回复于:2004-11-12 11:51:23
绝对要顶!
感谢楼主!

 C.Arthur 回复于:2004-11-12 11:55:51
刚才也有人问类似的问题,现在有好的解决方案了啊,呵呵
原创精华支持!

 cqvrboy 回复于:2004-11-12 14:30:50
^_^,我终于有个精华贴了。
谢谢版主!

 tma 回复于:2004-11-14 08:48:30


 neptun 回复于:2004-11-14 11:24:50
收藏了,,,好文章。。。

 jyhuang 回复于:2004-11-14 11:57:09
谢谢,再有个SENDMAIL和WEBLOGIC的就好了。

 cqvrboy 回复于:2004-11-15 09:38:48
WEBLOGIC的我还有些问题没解决好,等弄好了我再发安装配置的帖子。
SENDMAIL配起来麻烦,也没有Qmail和Postfix好,我也没有配过了。
不过在mail版有SENDMAIL方面的帖子。

 jyhuang 回复于:2004-11-15 14:32:37
期待兄弟的WEBLOGIC

 prosuc 回复于:2005-08-12 11:51:54
谢谢,已经收藏了。

 xingshb 回复于:2005-08-12 14:12:26
辛苦了,我都看累了!
先目染目染啊!以后有机会再实践实践!

原文转自:http://www.ltesting.net