一、安装环境及准备工作
1、下载文件包,在此不加详细说明,可以下载一个大大的包(包括很多东东)
2、安装Redhat9.0 最好全部安装省的麻烦了
3、解压下载的本文所附的压缩包文件,并进入此目录
二、安装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
注:以上各步可以采用install_ucspi_tcp.sh完成
三、安装qmail
1.建立目录:
mkdir /var/qmail
mkdir /var/qmail/alias
2.建组及用户:
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
3.打补丁及编绎安装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 //安装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-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
4.添加别名用户:
touch /var/qmail/alias/.qmail-root
touch /var/qmail/alias/.qmail-postmaster
touch /var/qmail/alias/.qmail-mailer-daemon
5.如果存在postfix和sendmail,停用现在的mail服务
/etc/rc.d/init.d/sendmail stop
cp /var/qmail/bin/sendmail /usr/sbin/qmail.sendmail
rm -f /etc/alternative/mta
ln -s /usr/sbin/qmail.sendmail /etc/alternative/mta
四、安装vpopmail
1.建立目录:
mkdir /home/vpopmail
mkdir /home/vpopmail/etc
2.添加用户和组:
groupadd vchkpw
useradd -g vchkpw vpopmail
3.添加mysql的vpopmail用户,用于操作vpopmail数据库
mysql -u root -p //进入mysql命令行
mysql> grant all on vpopmail.* to vpopmail@localhost identified by "密码";
4.编译安装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" (改成你设置的密码)
/*==================================================================*/
5.创建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
6.进行编译:
./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地址查找虚拟域名
make
make install-strip
以上各步可以通过执行
install_vpopmail.sh
7.创建虚拟域
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
tar zxvf cmd5checkpw-0.22.tar.gz
cd cmd5checkpw-0.22
make
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/bin:$PATH"
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 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.建temp文件夹
cd /var/www/html/igenus
mkdir temp
chmod -R 0755 temp
chown -R vpopmail:vchkpw temp
2.修改httpd.conf
vi /etc/httpd/conf/httpd.conf
Group Apache
User Apache
修改为:
Group vchkpw
User vpopmail
3.修改config_inc.php文件
cd /usr/local/apache/htdocs/igenus/config
vi config_inc.php
/* =============== config_inc.php ==================== */
$CFG_BASEPATH = "/usr/local/apache/htdocs/igenus";
$CFG_MYSQL_HOST = 'localhost';
$CFG_MYSQL_USER = 'vpopmail';
$CFG_MYSQL_PASS = '12345678'; /改成你的密码
$CFG_MYSQL_DB = 'vpopmail';
$CFG_TEMP = $CFG_BASEPATh."/temp";
/* ============================================== */
4.重新编制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(128) NOT NULL default '',
UNIQUE KEY id (id),
KEY pw_id (pw_id)
) TYPE=MyISAM;
mysql>quit;
5.用vadddomain和vadduser添加新域名和新用户。
九、防病毒邮件过滤
邮件过滤的方法有很多种,比如:maidrop procmail等。本文采用procmail进行邮件过滤。而网上很多做法都是针对sendmail的,针对
qmail比较少。所以写了这篇东东,以供大家参考,由于我对于procmail也是刚刚开始接触,如有不当之处,请指正。
具体做法如下:
1、安装procmail
如果你的操作系统发行版本中没有带procmail,那就需要安装了
下载地址:http://www.procmail.org/通过这个网站可以找到许多链接,也可以通过google搜寻,对于procmail还是有很多介绍的。
2、制作procmailrc文件
通过编辑器创建此文件,我是放在/etc/下的,也可以放在其他路径。下边的例子首先做如下假设:
域名:test.com
用户名:eastfreeman
procmailrc文件放置路径:/etc/
vpopmail安装路径:/home/vpopmail/
则procmailrc文件如下:
###start procmailrc#####
LOGFILE=/var/log/procmail.log
VERBOSE=ON
VIRTUALHOME=`/home/vpopmail/bin/vuserinfo -d $EXT@test.com`
MAILDIR=$VIRTUALHOME/Maildir
:0 B
* ^Content-Type:.*
* name=.*/.(hta|com|pif|exe|scr)
/dev/null
:0 HB
* ^Subject:.*(Re: improved)
/dev/null
:0
*
/home/vpopmail/domains/test.com/$EXT/Maildir/new
###end procmailrc###
主要的内容解释一下:
LOGFILE---------------日志文件位置
VIRTUALHOME-----------虚拟域路径
MAILDIR---------------邮件路径
:0 B------------------一个过滤规则开始
* ^Content-Type:.*----过滤附件
* name=.*/.(hta|com|pif|exe|scr)---附件扩展名为hta com pif exe scr的邮件
/dev/null------------------发送至空目录(意为删除),也可以指定到特定目录存储
:0 HB------------------一个过滤规则开始
* ^Subject:.*(Re: improved)----过滤主题
/dev/null-----------------发送至空目录(意为删除),也可以指定到特定目录存储
:0----------------------开始规则
*-----------------------经过过滤的其他邮件
/home/vpopmail/domains/test.com/$EXT/Maildir/new--------全部放到new目录中
这样就实现了过滤
3、修改.qmail-default文件,如果只是对一个用户的进行过滤,请修改.qmail-eastfreeman这个文件
将原来的:| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox
修改为:| preline /usr/bin/procmail -p -m /etc/procmailrc
4、重启qmail,发送一个带 exe附件的邮件看看如何。