SOLARIS+QMAIL+VPOPMAIL+IGENUS+QMAILAMDIN

weixin_38058113 2004-06-04 10:23:02

本人声明如需转载请保留如下信息:

作者:  LLZQQ
MAIL: LLZQQ@126.COM
FROM:WWW.CHINAUNIX.NET

一、准备工作:  

安装gcc、make、autoconf、automake等编译工具,建立网络连接,配置域名。

二、安装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.建目录:
# 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  

# gzip -d qmail-1.03.tar.gz
# tar xvf qmail-1.03.tar  
# gzip -d qmail-smtpd-auth-0.31.tar.gz
# tar xvf qmail-smtpd-auth-0.31.tar  
# 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-1.03.qmail_local.patch  
# patch -p1 < ../qmail-maildir++.patch
# patch -p1 < ../qmail-1.03.errno.patch

修改qmail-smtpd.c将函数straynewline中的451改为553.(在53行)  
查找“http://”两次,改其中的url如下(这样可以使QMAIL更安全些):

void straynewline() { out("451 See http://nero.3322.org.\r\n"
out("214 llzqq home page: http://nero.3322.org\r\n"

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

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  

1.建立目录:  
# mkdir /export/home/vpopmail  
# mkdir /export/home/vpopmail/etc  

2.添加用户和组:  
# groupadd vchkpw  
# useradd -g vchkpw -s /bin/false -m -d /export/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(4, \  
pw_dir char(160), <===== 58  
pw_shell char(20), \  
primary key (pw_name, pw_domain ) "  
========================= vmysql.h========================

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

# vi /export/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=/export/home/vpopmail
--enable-mysql=y
--enable-incdir=/opt/sfw/mysql/include/mysql --enable-libdir=/opt/sfw/mysql/lib/mysql --enable-default-domain=nero.3322.org
--enable-passwd=n
--enable-defaultquota=52428800s --enable-tcprules-prog=/usr/local/bin/tcprules --enable-tcpserver-file=/export/home/vpopmail/etc/tcp.smtp --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 nero.3322.org

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

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

2.安装cmd5checkpw  
# gzip -d cmd5checkpw-0.22.tar.gz
# tar xvf cmd5checkpw-0.22.tar
# cd cmd5checkpw-0.22  
# make  
# mkdir /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/binPATH" 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 /export/home/vpopmail/etc/tcp.smtp.cdb -u $QMAILDUID -g $NOFILESGID 0 smtp /var/qmail/bin/qmail-smtpd nero.3322.org /export/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 -H -R 0 pop3 /var/qmail/bin/qmail-popup nero.3322.org
/export/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  

查看qmail的服务进程是否已完全正常启动
# ps -ef | grep qmail

九、建立开机启动脚本:

# 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 -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:"
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

十、安装IGENUS

# gzip -d igenus_2_20030516_snap.tgz
# tar vxf igenus_2_20030516_snap.tar
# mv igenus /var/www/html/
# cd /var/www/html/igenus  
# mkdir temp
# chmod -R 0755 temp  
# chown -R vpopmail:vchkpw temp

其他关于IGENUS的详细设置略。

十一、建立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;
...全文
23 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复

477

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧