Freebsd环境下基于qmail系统的反病毒反垃圾邮件系统构建

JavaGG 发布于 2009/05/05 16:45
阅读 154
收藏 0

Freebsd 4.7环境下基于qmail系统的反病毒反垃圾邮件系统构建

第一部分:前 言

一. 版权信息
本文档的版权属于作者姜培军[peijun.jiang]所有。转摘时请附带本信息,并且保证本文档的完整性!
关于作者:
作    者:Peijun.Jiang  『姜培军』
 邮件地址:peijun.jiang act tom.com
 出没地方:www.chianunix.net  www.cnfug.org  www.anti-spam.org.cn
       开源UNIX系统爱好者,工组于一家合资软件开发企业任系统管理员职务,负责Mail、Firewall、FTP、WEB等服务的维护工作。

二.更新记录
2003年05月14日        初次成稿
2003年06月05日        对安装设置参数进行合理调整
2003年09月08日        增加了Mail From补丁,加入了批量添加用户账号和Wmail
2003年12月01日        加入简单的DNS设置
2004年01月12日        加入病毒过滤和垃圾邮件过滤

第二部分:安装前的准备
一.所需软件
• ucspi-tcp-0.88.tar.gz          http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
• cmd5checkpw-0.22.tar.gz   http://members.elysium.pl/brush/cmd5checkpw/dist/cmd5checkpw-0.22.tar.gz
• qmail-1.03.tar.gz               http://cr.yp.to/software/qmail-1.03.tar.gz
• qmail-smtpd-auth-0.30.tar.gz http://members.elysium.pl/brush/qmail-smtpd-auth/dist/qmail-smtpd-auth-0.30.tar.gz
• qmail-1.03.patch                 http://www.ckdhr.com/ckd/qmail-103.patch
• vpopmail-5.3.16.tar.gz    http://www.inter7.com/devel/vpopmail-5.3.16.tar.gz
• autorespond.tar.gz      http://www.netmeridian.com/e-huss/autorespond.tar.gz
• ezmlm-0.53.tar.gz                 http://cr.yp.to/software/ezmlm-0.53.tar.gz
• sqwebmail-3.5.0-CN.tar.gz http://www.cooco.net/files/sqwebmail-3.5.0-CN.tar.gz
• Qmail-smtpd.c                       http://www.cooco.net/files/qmail-smtpd.c
• Qmail-smtpd.path                http://www.cooco.net/files/qmail-smtpd.patch
• mysql-3.23.53.tar.gz http://www.mysql.org/Downloads/MySQL-3.23/mysql-3.23.53.tar.gz
• wmail-1.00rc1.20030811-quota.tar.gz http://www.cooco.net/files/wmail-1.00rc1.20030811-quota.tar.gz
• qmailadmin-1.0.6.tar.gz http://www.inter7.com/qmailadmin/qmailadmin-1.0.6.tar.gz
• 汉化文件                                     http://www.cooco.net/files/en-us
二.注意事项
• 所有程序下载后放在/down目录下
• 在安装FreeBSD时请把/home和/var尽量分的大一些,因为/home目录是作为所有用户的邮件存放目录,/var是日志存放目录
• 本文档所有操作都是在root权限下进行的,所以操作时请尽量仔细,不要由于误操作带来不必要的麻烦
第三部分:DNS设定
• 我们使用的是我们母公司的DNS服务器,所以我没有做自己的DNS服务器,只是把相关的A记录和MX记录解析到我相关的IP地址上。使用nslooks –q=mx mail.localhost.com命令可以查看到已经绑定到我们公司的IP地址上。
• 注:mail.localhost.com为我们公司域名,以下相同。
你可以按照以下方法设置自己的DNS服务器:
DNS使用FreeBSD 4.7自带的8.3.3版本,所有的配置文件默认在/etc/namedb目录下。我的DNS服务器IP地址为192.168.80.53,Mail服务器的IP地址为192.168.80.80。解析一个域名localhost.com作为我的邮件服务的域名。
一.打开named的启动开关

    #cd /etc
    #ee rc.conf //加入一下参数
    named_enable="YES"

二. 使用make-localhost来生成反解文件localhost.rev

    #cd /etc/namedb
    #sh /etc/namedb/make-localhost

三. 设置主配置文件

    #mv named.conf named.conf.old
    #touch named.conf
    #ee named.conf //添加一下内容

options {
        directory "/etc/namedb";
        datasize 40M;
        forward only;
        forwarders {
        61.134.1.4; //此IP为我的ISP的DNS地址
        };
};

zone "." {
        type hint;
        file "named.root";
}; 
zone "0.0.127.in-addr.arpa" {
        type master;
        file "localhost.rev";
};
zone "localhost.com"
        type master;
        file "/etc/namedb/hosts/localhost.com.hosts";
};
zone "80.168.192.in-addr.arpa" {
        type master;
        file "/etc/namedb/rev/192.168.80.rev";
};
四. 在/etc/namedb目录下建立hosts目录,来存放正解配置文件

    #mkdir /etc/namedb/hosts
    #cp /etc/namedb/localhost.rev /etc/namedb/hosts/locolhost.com.hosts //使用现成的配置文件进行修改一下就行了
    #ee /etc/namedb/hosts/localhost.com.hosts     //内容如下

$TTL 3600
@        IN        SOA        dns.localhost.com.        root.dns.localhost.com.(
         20031231      //Serial号码
         3600          //DNS刷新时间
         900           //重试间隔时间
         3600000       //到期时间
         3600 )        //Minimum
IN        NS        dns.cnunix.com.cn.
IN        MX        10        mail
dns       IN        A         192.168.80.53
www       IN        A         192.168.80.80
mail      IN        A         192.168.80.80
@         IN        A         192.168.80.80
五. 在/etc/namedb目录下建立reb目录,来存放反解配置文件

    #mkdir /etc/namedb/reb
    #cp /etc/namedb/localhost.rev /etc/namedb/reb/192.168.80.rev
    #ee /etc/namedb/reb/192.168.80.rev //内容如下

$TTL 3600 
@        IN        SOA        dns.localhost.com.        root.dns.localhost.com. (
         20031231
         3600
         900
         3600000
         3600 )
         IN       NS        dns.localhost.com.
53       IN       PTR       dns.localhost.com.
80       IN       PTR       www.localhost.com.
80       IN       PTR       mail.localhost.com.
80       IN       PTR       localhost.com.
六. 更新根服务器

    #cd /etc/namedb
    #fetch ftp://ftp.rs.internic.net/domain/named.root
七.修改/etc/resolv.conf

    #nameserver 192.168.80.53
八.DNS服务器的日常维护命令

    #ndc start    //如果提示new pid is NamedID,说明已经成功启动
    #ndc stop     //停止named服务
    #ndc restart  //重新启动named服务

九. 测试named解析

    #nslookups

    >;www.cnunix.com.cn
    >;mail.cnunix.com.cn
    >;dns.cnunix.com.cn

    如果能解析到192.168.80.53说明正常了

    >;sohu.com
    >;sina.com.cn

    如果能解析到域名相应的IP地址上,说明dns对外面的域名解析也正常。
第四部分:基本服务安装过程
一.安装webmin
webmin是一个让你很方便的远程管理服务器的程序,所有管理工作都是基于Web方式进行的,支持中文等多个国家的语言。我主要使用他进行我的Mysql数据库和qmail邮件的队列的管理,我一直使用,很方便也很实用。

     #cd /down     
    #tar zxvf webmin-1.070.tar.gz
    #mv webmin-1.070 /usr/local/webmin
    #cd /usr/local/webmin
    #./setup.sh 
    
      根据提示输入安装路径、web访问端口、设置管理用户和密码等,也可以使用默认设置一路回车。  
二.Mysql的安装与设置
1.安装mysql

    本文档的数据库是基于二进制包的方式安装的,作者以前也曾经使用过ports方式的安装方法,所以本文两种安装方法都提供给大家,以供大家选择。不过作者建议使用二进制包的方式安装,这样在安装mysql的过程中可以根据自己的需要定制参数。

  1.1、使用ports安装

  #cd /usr/ports/database/mysql323-server
  #make install
  #cd work/mysql-3.23.52
  #scripts/mysql_install_db
  #cp support-files/my-medium.cnf /etc/my.cnf
  #/usr/local/bin/safe_mysqld &    //启动mysql服务 

  1.2、使用二进制代码安装

  A.建组和用户

    #pw groupadd mysql
    #pw useradd mysql –g mysql –s /nonexitent

  B.进行编译

    #cd /down
    #tar zxvf mysql-3.23.53.tar.gz
    #cd mysql-3.23.53
    #./configure --prefix=/usr/local/mysql
    #make
    #make install
2.设置Mysql 

  2.1、运行脚本、添加目录

     #scripts/mysql_install_db
     #mkdir /usr/local/mysql/var

  2.2、更改文件和目录权限

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

  2.3、复制mysql的配置文件到/etc目录下 

    #cp ./support-files/my-medium.cnf /etc/my.cnf

  2.4、添加启动脚本

    #echo "/usr/local/mysql/bin/safe_mysqld --user=mysql –-skip-networking &" >;>; /etc/rc.local
    备注:--skip-networking参数是限制只有本机可以连接mysql,增加mysql的安全性。

  2.5、启动mysql服务

    #/usr/local/mysql/bin/sase_mysqld --user=mysql --skip-networking &

  2.6、更改root的密码
    #/usr/local/mysql/bin/mysqladmin -u root password '123456'

  2.7、拷贝mysql的lib文件和incdule文件到系统目录下

    #cp /usr/local/mysql/lib/mysql/* /usr/lib
    #cp /usr/local/mysql/incdule/mysql/* /usr/incdule 
    备注:拷贝mysql的lib文件和头文件到系统的目录下是为了防止无法找到mysql的lib目录和incdule目录而产生的错误。

  2.8、添加vpopmail操作mysql的用户

    #/usr/local/mysql/bin/mysql -u root -p123456
   mysql>;create database vpopmail; 
   mysql>;grant all on vpopmail.* to vpopmail@localhost identified by "123456"; 
三.安装TCPSERVER
这个程序包是类似于inetd的命令行方式的构造客户/服务器应用的工具程序,它设计的目的就是用以完全取代inetd而获得更好的性能和安全性。Tcpserver提供对并行进程数量的限制以防止内存和CPU资源被耗尽,Tcpserver还提供TCP访问控制,类似于tcp-wrappers/tcpd的hosts.deny和hosts.allow方式,但是速度要快很多。 

1、安装

    #cd /down
    #tar zxvf ucspi-tcp-0.88.tar.gz
    #cd ucspi-tcp-0.88
    #make setup check

2、生成cdb文件

    #cd /etc
    #touch tcp.smtp
    #ee tcp.smtp     //加入一下内容
      127.0.0.1:allow,RELAYCLIENT=""
    #/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
四.安装cmd5checkpw
cmd5checkpw和checkpassword完全兼容,cmd5checkpw只是增加了对CRAM-MD5的认证模式的支持,目前的最新版本是0.22,需要注意的是以前的版本有安全漏洞,一定要使用最新的版本。

    #cd /down
    #mkdir /usr/man
    #mkdir /usr/man/man8
    #tar zxvf cmd5checkpw-0.22.tar.gz
    #cd cmd5chedkpw-0.22
    #make
    #make install 
    如果你不需要对/etc/passwd中的用户开放mail,则不需要安装checkpassword,因为我不需要,所以我没有安装。如果你要使用,可以参考一下方法:

    #cd /down
    #tar zxvf checkpassword-0.90.tar.gz 
    #cd checkpassword-0.90 
    #make setup check 
五.安装Qmail
  qmail是一个基于UNIX操作系统的邮件传输代理[Mail Transfer Agent,MTA],它采用标准的简单邮件传输协议[Simple Mail Transfer Protocol,SMTP]与Internet上的其他邮件传输代理[MTA]进行交换信息。qmail目前的版本是1.03,于1998年发布。目前qmail仍然在开发中,下一个版本2.0还没有确定具体的发布时间。前几天又推出了1.04版本,该版本增加了一些qmail常用的一些补丁,有兴趣的朋友可以试一下这个版本。

1.创建qmail目录、组和用户

  1.1、创建目录:

    #mkdir /var/qmail
    #mkdir /var/qmail/alias 

  1.2、添加qmail运行的组用户:

    #pw groupadd nofiles
    #pw groupadd qmail
    #pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent
    #pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent
    #pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent
    #pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent
    #pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent
    #pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent
    #pw useradd qmails -g qmail -d /var/qmail -s /nonexistent


2、安装编译Qmail

  2.1、补丁程序介绍

    A:qmail-103.patch 
    这个补丁程序主要是为了解决某些DNS响应不完全遵循RFC标准,返回大于512Byte的DNS应答包时可能产生的问题,这
    种情况发生在发送邮件到一个有数量庞大的MX记录的大型邮件服务器上时,这个时候检查qmail的日志会发现以下出错信息:
     deferral:CNAME_lookup_failed_temporarily._(#4.4.3)/

    B:qmail-smtpd.c 
    该补丁是更正smtp认证问题的程序。

    C: qmail-smtpd.patch
    该补丁是解决mail from和auth user name不一致也能发信的补丁,感谢网友gadfly提供! 

    D:qmail-1.03.patch 
    该补丁是使qmail支持SMTP认证的补丁。

  2.2、打patch并编译安装qmail

    #cd /down
    #tar zxvf qmail-1.03.tar.gz

    #patch –d ./qmail-1.03 < qmail-103.patch

    #tar zxvf qmail-smtpd-auth-0.30.tar.gz
    #cd qmail-smtpd-auth-0.30
    #cp README.auth base64.c base64.h ../qmail-1.03
    #patch –d ../qmail-1.03 < auth.patch

    #cd ..
    #cp qmail-smtpd.c ./qmail-1.03
    #patch –d ./qmail-1.03 < qmail-smtpd.patch

    #cd ./qmail-1.03
    #make setup check
    #config-fast localhost.com

3、设置投递方式

    #cp /var/qmail/boot/home /var/qmail/rc
    #ee /var/qmail/rc    //修改rc为以下内容

    exec env - PATH="/var/qmail/bin:$PATH" \ 
    qmail-start ./Maildir/ splogger qmail

4、添加不能接收邮件的系统帐户的别名 

    #touch /var/qmail/alias/.qmail-root
    #touch /var/qmail/alias/.qmail-postmaster
    #touch /var/qmail/alias/.qmail-mailer-daemon

    #echo postmaster >; /var/qmail/control/bouncefrom   //设置投递失败返回邮件的发送者为postmaster

5、停止sendmail服务 

    #ee /etc/rc.conf

    sendmail_enable="NO"
    sendmail_flags="-bd" 
    sendmail_outbound_enable="NO" 
    sendmail_submit_enable="NO" 
    sendmail_msp_queue_enable="NO"

    #chmod 0 /usr/sbin/sendmail
    #mv /usr/sbin/sendmail /usr/sbin/sendmail.old

    连接qmail的sendmail外壳文件到系统的sendmail目录
    #ln –s /var/qmail/bin/sendmail /usr/sbin/sendmail
    #ln –s /var/qmail/bin/sendmail /usr/lib/sendmail   
六.vpopmail介绍、安装及配置
1、介绍

     vpopmail是qmail的一个非常重要的扩展软件包,它是由Inter7公司[http://www.inter.com]开发的,主要针对qmail本身支持虚拟邮件域,但是配置和用户管理非常复杂和麻烦而设计的。它的特点是实现了qmail所有的用户帐号只使用操作系统的一个用户帐号,所有的的vpopmail相关的进程都以一个GID/UID来运行,让邮件系统的帐户和操作系统的用户分离,提高了邮件系统的安全性。它支持基于域名和IP地址的虚拟邮件域,每个虚拟邮件域之间互相独立,通过使用平衡树填充的技术,vpopmail可支持2300万个虚拟邮件域,每个虚拟邮件域可支持2300万个邮件帐户。Vpopmail还支持LDAP、Oracle、Sybase、Mysql、PostgreSQL等用户认证信息存储方式,使得建立和维护百万级用户的大型邮件系统很方便的实现。

2、实现虚拟域的原理

    qmail对邮件域有本地(local)和虚拟(virtual)的概念。本地域是实现匹配/etc/passwd系统帐号,而虚拟域则匹配在qmail的配置文件virtualdomains中的各个域。Vpopmail利用qmail的users/assign和virtualdomains文件。users/assign文件被编译成users/cdb的格式,它利用一个哈系数据库来加快查找速度,若任意一个模式得到匹配,qmail就使用文件中定义的uid和gid传送该邮件到文件中定义的目录。Vpopmail利用该方法实现使qmail以单一的vpopmail/vchkpw身份来传输用户所有的虚拟域的邮件,从而实现了将邮件传输到~vpopmail/domains/;目录下的不同用户。
    对于qmail来说,qmail-local程序一旦从users/assign得到相关的信息,则其运行标准的.qmail文件操作。一般来说,.qmail-;文件被用来完成邮件的转发、别名、或者调用其他程序如ezmlm等。若没有找到匹配,则qmail-local查找.qmail-default文件,这是qmail-local邮件投递机制中的最后一步,qmail利用该文件激活vedlivermail程序,该程序以两个参数被调用,第一个当前没有作用,主要使用来向后兼容的,第二个参数使用来在一个虚拟域用户没有被找到时缺省投递,一般来说,缺省投递可以时将邮件投递到某个目录或者某个邮件地址返回没有此用户的返回信件。

3、安装

  3.1、建立目录

    #mkdir /home/vpopmail 
    #mkdir /home/vpopmail/etc

  3.2、建立组及用户

    #pw groupadd vchkpw
    #pw useradd vpopmail –g vchkpw

  3.3、安装vpopmail

    #cd /down
    #tar zxvf vpopmail-5.3.16.tar.gz
    #cd vpopmail-5.3.16

    #ee vmysql.h  //修改以下内容

    #define MYSQL_UPDATE_SERVER "localhost"  //mysql服务器名
    #define MYSQL_UPDATE_USER "vpopmail"     //访问Mysql数据库的用户名
    #define MYSQL_UPDATE_PASSWD "123456"     //访问Mysql数据库的vpopmail用户的密码
    #define MYSQL_READ_SERVER "localhost"    //mysql服务器名
    #define MYSQL_READ_USER "vpopmail"       //用户名
    #define MYSQL_READ_PASSWD "123456"       //密码
    
    或者使用Mysql的root用户与密码也可以!

  3.4、创建tcp.smtp文件

    或者使用/etc/tcp.smtp文件也可以。

    #ee /home/vpopmail/etc/tcp.smtp 

     127.0.0.1:allow,RELAYCLIENT=""

  3.5、编译安装

    #./configure 
     --prefix=/home/vpopmail     //指定安装路径 
     --enable-mysql=y            //是否应用Mysql数据库 
     --enable-incdir=/usr/local/include/mysql     //Mysql数据库include文件所在目录 
     --enable-libdir=/usr/local/lib/mysql         //Mysql数据库lib文件所在目录 
     --enable-default-domain=localhost.com        //定义虚拟域名 
     --enable-passwd=n                  //是否使用系统密码验证方式 
     --enable-defaultquota=52428800     //定义缺省邮箱大小,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地址查找虚拟域名 
     --enable-roaming-users=n       //是否支持外地用户的SMTP的RELAY
     --enable-sqwebmail-pass=y      //sqwebmail的密码支持

    #make 
    #make install-strip

    #chmod +s /home/vpopmail/bin/vchkpw
七.pop3和smtp的启动脚本
1、创建pop3启动脚本

    #mkdir /etc/qmail
    #cd /etc/qmail
    #touch pop.sh
    #chmod 755 pop.sh

    #ee pop.sh   //添加一下内容

 #!/bin/sh
/usr/local/bin/tcpserver -c 100 -v –l localhost.com -H -U -R 0 pop3 \ /var/qmail/bin/qmail-popup localhost.com /home/vpopmail/bin/vchkpw \ /var/qmail/bin/qmail-pop3d Maildir & 

2、创建smtp启动脚本

    #touch smtp.sh
    #chmod 755 smtp.sh

    #ee smtp.sh 添加一下内容: 

     #!/bin/sh
     LOG_AUTH=1
     export LOG_AUTH
     QMAILUID=`id -u qmaild`
     QMAILGID=`id -g qmaild`
/usr/local/bin/tcpserver -H -R -l localhost.com -t 1 -c 100 -v -p –x /etc/tcp.smtp.cdb \ -u $QMAILUID -g $QMAILGID 0 smtp /var/qmail/bin/qmail-smtpd /home/vpopmail/bin/vchkpw \ /usr/bin/true /bin/cmd5checkpw /usr/bin/true &

    注意:如果使用的patch是0.31,在qmail-smtpd后面加入localhost.com,就可以解决auth的问题了 
3、qmail启动脚本

    #mkdir start.sh
    #chmod 755 start.sh

    #ee start.sh   //加入一下内容: 
     #!/bin/sh
     csh -cf '/var/qmail/rc &'
     /etc/qmail/pop.sh
     /etc/qmail/smtp.sh
    #echo "/etc/qmail/start.sh">;>; /etc/rc.local   //设置系统启动时自动启动qmail及相关脚本

4、重新启动系统 

    #reboot

5、检查是否能够添加虚拟域 

    #cd /home/vpopmail/bin
    #./vadddomain localhost.com

    如果添加失败一定要删除虚拟域,然后查看mysql数据库是否有vpopmail表,如果没有请检查mysql用户vpopmail是否拥有对数据库拥有全部权限(或者修改vpopmail源文件的vmysql.h使用root用户访问数据库),然后重新安装vpopmail程序。

    #./vdeldomain localhost.com
八.重新编译mysql数据库
1、修改mysql数据库

    在修改之前记得使用vdeldomain命令删除你添加过的所有的邮件域。

    #/usr/local/mysql/bin/mysql –u root –p123456

     use vpopmail;
     drop table vpopmail;
     create table vpopmail (
     pw_id int(5) unsigned NOT NULL auto_increment, 
     pw_name varchar(32) NOT NULL default '', 
     pw_domain varchar(64) NOT NULL default '', 
     pw_passwd varchar(40) NOT NULL default '', 
     pw_uid int(11) default NULL, 
     pw_gid int(11) default NULL, 
     pw_gecos varchar(64) default NULL, 
     pw_dir varchar(160) default NULL, 
     pw_shell varchar(20) default NULL, 
     pw_clear_passwd varchar(16) default NULL, 
     PRIMARY KEY (pw_id), 
     KEY pw_name (pw_name,pw_domain) 
     ) TYPE=MyISAM; 
     quit

2、重新添加虚拟域和用户 

    #cd /home/vpopmail/bin
    #./vadddomain localhost.com 
    输入postmaster密码,这是以后使用qmailadmin管理虚拟域localhost.com的密码

    #./vadduser test 
    输入密码test 

3、测试qmail 

    使用客户端Foxmail或者Outlook测试邮件账户test@localhost.com, 用户名test(或者test@localhost.com,因为localhost.com作为默认域名,所以不用输入test后面的@localhost.com),密码test,选择smtp需要认证,测试该账户能不能进行收发邮件。如果你完全按照以上的方法操作,并且没有任何错误的话,我想你一定没有问题的。祝你好运^_^。 
    至此,一个带smtp认证、mail from校验、支持多虚拟域的基本的邮件系统已经设置完成。如果你想加入更多的功能,请接着往下做,我会一步一步的带你完成。

第五部分:安装qmailadmin
一.安装apache
1、安装

    #cd /down
    #tar zxvf apache_1.3.26.tar.gz
    #cd apache_1.3.26
    #./configure --prefix=/usr/local/apache --with-mysql=/usr/local/bin --enable-shared=max
    #make
    #make install

2、启动

    #/usr/local/apache/bin/apachectl start
    #echo “/usr/local/apache/bin/apachectl start” >;>; /etc/rc.local   //设置Apache随系统一起启动
二.安装qmailadmin
1、安装设置ezmlm

  1.1、安装

    #cd /down
    #tar zxvf ezmlm-0.53.tar.gz
    #cd ezmlm-0.53
    #make
    #make man
    #make setup

  1.2、ezmlm加入mysql支持的方法

    A: 创建ezmlm数据库

     #/usr/local/mysql/bin/mysql -u root –p
     mysql>;create database ezmlm; 

    B: 设置ezmlm加入mysql支持

     #tar -zxvf ezmlm-0.53.tar.gz
     #tar -zxvf ezmlm-idx-0.40.tar.gz
     #mv ezmlm-idx-0.40/* ezmlm-0.53/
     #cd ezmlm-0.53
     #patch < idx.patch
     #cd sub_mysql

     #ee sub_mysql/conf_sqlcc
      -I/usr/local/mysql/include/mysql 
     #ee sub_mysql/conf_sqld
      -L/usr/local/mysql/lib/mysql -lmysqlclient -lnsl -lm –lz

     #cd .. 
     #make mysql
     #make clean
     #make man
     #make ch_GB
     #make setup 
      以上只是提供一个网友的设置ezmle加入mysql支持的方法,由于我得邮件列表不算太大,所以我就没有尝试安装,而仅仅只是安装了
   ezmle。如果你需要mysql支持,你可以尝试一下!  

2、安装autorespond

    #cd /down
    #tar zxvf autorespond.tar.gz
    #cd /autorespond
    #gcc -Wall -o autorespond autorespond.c 
    #cp autorespond /usr/local/bin/autorespond

3、安装qmailadmin

    qmailadmin是一个web方式的vpopmail管理软件,使用它你可以很方便的添加/删除用户、更改用户密码、设置邮件转发和自动回复以及管理邮件列表等等功能,只要你使用它,你一定会爱上它的,因为它确实能给你的管理工作带来方便。
#cd /down
    #tar zxvf qmailadmin-1.0.6.tar.gz
    #cd qmailadmin-1.0.6
    #./configure
    #make
    #make install-strip

4、汉化qmailadmin的管理页面

    #cd /down
    #cp en-us /usr/local/share/qmailadmin/html/en

5、测试qmailamdin

    http://mail.localhost.com/cgi-bin/qmailadmin

    输入域:localhost.com
    输入postmaster的密码,也就是你添加虚拟域localhost.com时输入的密码
第六部分:安装webmail
一.Sqwebmail的安装与设置
1、安装sqwebmail

    #cd /down
    #tar zxvf sqwebmail-3.5.0-cn.tar.gz
    #cd sqwebmail-3.5.0

    #./configure --without-authpam --with-db=db --enable-webpass=yes --without-authpwd \
     --without-authshadow --without-authmysql --with-authldap --with-authuserdb --with-authpwd \
     --with-authvchkpw --without-authdaemon

    #make configure-check
    #make 
    #make install-strip
    #make install-configure 

2、特殊设置

    如果你需要同时使用系统用户和虚拟用户两种验证方式,需要进行一下设置:

    #echo “authvchkpw authshadow” >; /usr/local/share/sqwebmail/authmodulelist

    经过上面的设置以后,你的系统用户采用shadow验证,虚拟域采用vchkpw验证,禁止其他验证方式。

3、测试sqwebmail

    http://mail.localhost.com/cgi-bin/sqwebmail

    使用用户test,密码test,登陆进出以后就可以测试收发邮件了!

4、修改Apache

    #cd /usr/local/apache/htdocs
    #touch index.html

    #ee index.html  //输入一下内容: 
     ;
     ;
     ;MAIL SYSTEM;
     ;
     ;
     ;
     ;
     ;

    经过以上修改以后,你就可以通过:

     http://mail.localhost.com

    直接来访问sqwebmail了,这样就方便多啦:) 
二.安装Wmail
1、安装Wmail

    #cd /down
    #tar zxvf wmail-1.00rc1.20030811-quota.tar.gz 
    #cd wmail-1.00rc1.20030724
    #./install

    默认安装到/home/wmail目录下。你也可以通过修改wmail的原代码目录中的install文件来修改安装的目录和定制编译参数。

2、配置Wmail

    修改/home/wmail/html/zh-cn的index.html和invalid.html相关项为以下内容: 
     ;

3、修改Apache 

    编辑apache的httpd.conf文件,在最后加入以下内容:

    NameVirtualHost 192.168.80.80

    ;
      SetEnv SQWEBMAIL_TEMPLATEDIR /home/wmail/html
      ScriptAlias "/cgi-bin/" "/home/wmail/www/cgi-bin/"
    ;
       AllowOverride All
       Options +Includes
    ;
      ServerAdmin postmaster@localhost.com
      DocumentRoot /home/wmail/www
      ServerName mail2.localhost.com
    ;

4、测试Wmail

    http://mail2.localhost.com

    使用用户test,密码test,登陆进出以后就可以测试收发邮件了!
三.Sqwebmail和Wmail共存的设置 

    经过以上对Wmail的设置以后,你会发现sqwebmail和qmailadmin使用它们的URL无法登陆啦,这是因为设置了虚拟主机的问题引起的,使sqwebmail和qmailadmin无法找到CGI路径的原因。所以还需要对sqwebmail和qmailadmin的访问地址进行虚拟主机设置,只要在Apache的配置文件httpd.conf中的最后面加入以下内容就OK.

    ;
      ScriptAlias "/cgi-bin/" "/usr/local/apache/cgi-bin"
    ;
      AllowOverride All
      Options +Includes
    ;
      ServerAdmin postmaster@localhost.com
      DocumentRoot /usr/local/apache/htdocs
      ServerName mail.localhost.com
    ; 

    经过这样设置以后,各个访问的URL如下:

    Sqwebmail:     http://mail.localhost.com
    QmailAdmin:    http://mail.localhost.com/cgi-bin/qmailadmin
    Wmail:         http://mail2.localhost.com 
第七部分:使用shell批量添加用户
一. 第一种方法
1.在/home目录下建立文件adduser.sh

    #touch adduser.sh
    #chmod 755 adduser.sh

2、编辑adduser.sh

    #ee adduser.sh  //加入一下内容:

    #!/usr/bin
    while read line 
    do 
    echo $line 
    /home/vpopmail/bin/vadduser $line $line 
    done < user 

3、建立文件账户列表文件

    #touch user
    #ee user  //格式如下

     peijun.jiang
     user
     user1
     user2
     ......

4、执行adduser.sh

    #./adduser.sh

    这样user文件中的用户就添加到默认域中了,用户名和密码相同。

备注:该方法是由网友 红袖天香 提供!
二. 第二种方法
1、建立batchuseradd.sh文件

    #cd /home
    #touch batchuseradd.sh
    #chmod 755 batchuseradd.sh

    #ee batchuseradd.sh  //内容如下:

    #!/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/vadduser 
    while read username passwd 
    do 
    $addcmd $username@$domain $passwd 
    done < $datafile

2、建立datafile文件

    #touchu datafile
     
    #ee datafile  //格式如下:

    user1 passwd1
    user2 passwd2
    user3 passwd3
    .....  ......

    #chmod u+x datafile

3、使用方法 

    #./batchuseradd localhost.com datafile 

备注:该方法是由网友 gadfly 提供! 
第八部分:病毒扫描和垃圾邮件过滤设置
本文所使用的是一个专门为qmail设计的邮件扫描程序,他可以实现一下功能:
1.可以同时和多个其他商业的病毒扫描器集成在一起扫描邮件中的病毒
2.可以过滤含有特定字符或者特征的邮件,比如含有特定的字符串和内容,或者来自特定夺得发送者,以及含有特定后缀文件名的文件等等。
它的工作原理是在邮件在压入邮件队列以后对邮件进行扫描,qmail-scanner要替换的
是qmail-queue程序,从原理上来说处理效率应该不错。
一. 安装Clamav
1.下载Clamav
# cd /down/
# fetch http://download.sourceforge.net/clamav/clamav-0.65.tar.gz
# tar zxvf clamav-0.65.tar.gz

   2.添加所需的组和用户
# pw groupadd clamav
# pw useradd clamav -g clamav -d /nonexistent -c "Clam Antivirus" -s /sbin/nologin
   
3.安装Clamav
# cd clamav-0.65
# ./configure
# make install

   4.测试Clamav
# clamscan --recursive --log=/tmp/clamscan.log ./  //扫描当前目录,测试clamscn是否运行

   5.升级Clamav
# freshclam --verbose   //升级clamscan病毒库

   6.创建freshclam日志记录文件
    # touch /var/log/freshclam.log
# chmod 644 /var/log/freshclam.log
# chown clamav:clamav /var/log/freshclam.log
  
7.创建Clamav自动启动脚本
#touch /usr/local/etc/rc.d/clamav.sh //内容如下
#!/bin/sh
#
# Startup / shutdown script for Clam Antivirus

case "$1" in
       start)
           /usr/local/bin/freshclam -d -c 2 -l /var/log/freshclam.log
           echo -n ' freshclam'
           ;;

       stop)
           /usr/bin/killall freshclam >; /dev/null 2>;&1 \
           && echo -n ' freshclam'
           ;;

          *)
           echo ""
           echo "Usage: `basename $0` { start | stop }"
           echo ""
           exit 64
           ;;
esac

# chmod 744 /usr/local/etc/rc.d/clamav.sh

更改/usr/local/etc/clamav.conf文件,去掉下面选项前面的#:
#Example  前面加上#
LogFile /tmp/clamd.log       去掉前面的#
LogFileMaxSize 2M          去掉前面的#
LogTime                   去掉前面的#
PidFile /var/run/clamd.pid     去掉前面的#
DataDirectory /var/lib/clamav  去掉前面的#,并且修改路径为/usr/local/share/clamav

7.添加自动升级脚本
   # crontab –e
   0 8 * * * /usr/local/bin/freshclam --quiet -l /var/log/freshclam.log

 8.添加自动扫描/home目录
# corntab –e
0   6   *   *   *   root   /usr/local/bin/clamscan --recursive
                            --infected
                            --exclude /usr/local/share/clamav/viruses.db
                            --exclude /usr/local/share/clamav/viruses.db2
                            --log=/var/log/clamscan.log
/home

二. SpamAssassin

 1.安装Perl模块
   使用webmin或者perl –MCPAN –e shell
   Time::HiRes
   File::Spec
   Getopt::Long
   Pod::Parser
   HTML::Tagset
   HTML::Parser
   MIME::Base64
   MIME::QuotedPrint
   Net::Cmd
   Net::Ping
   Net::DNS
   Digest::SHA1
   File::Copy
   Digest::Nilsimsa
   URI::Escape
  
   2.安装SpamAssassin
# cd /down
# fetch http://spamassassin.taint.org/released/Mail-SpamAssassin-2.61.tar.gz
# tar -zxvf Mail-SpamAssassin-2.61.tar.gz
# cd Mail-SpamAssassin-2.61
# perl Makefile.PL
# make
# make install

   3.测试SpamAssassin
# spamassassin -t < sample-spam.txt >; spam.out
# cat /spam.out

X-Spam-Status: Yes, hits=14.7 required=5.0
        tests=ALL_CAPS_HEADER,CALL_FREE,DATE_IN_PAST_24_48,
              DRASTIC_REDUCED,FROM_HAS_MIXED_NUMS,HOME_EMPLOYMENT,
              INVALID_DATE,INVALID_MSGID,LINES_OF_YELLING,
              MSGID_HAS_NO_AT,NO_REAL_NAME,ONCE_IN_LIFETIME,REMOVE_SUBJ,
              SMTPD_IN_RCVD,SPAM_PHRASE_21_34,UNDISC_RECIPS
        version=2.61
X-Spam-Flag: YES
X-Spam-Level: **************
X-Spam-Checker-Version: SpamAssassin 2.61 (1.115.2.20-2002-10-15-exp)

# spamassassin -t < sample-nonspam.txt >; nonspam.out

X-Spam-Status: No, hits=0.9 required=5.0
        tests=GAPPY_TEXT,LINES_OF_YELLING,PGP_SIGNATURE,
              SPAM_PHRASE_02_03,TO_BE_REMOVED_REPLY
        version=2.61
X-Spam-Level
:
   3.创建SpamAssassin启动脚本
     # touch /usr/local/etc/rc.d/spamd.sh  //内容如下
#!/bin/sh
#
# Startup / shutdown script for SpamAssassin daemon

case "$1" in
    start)
        /usr/bin/spamd -a -d -v -u vpopmail -F 0 && echo -n 'spamd'
        ;;

    stop)
        spamdpid=`ps -ax | grep spamd | grep -v grep | grep -v sh | awk '{ print $1 }'`
        if [ "$spamdpid" != "" ]; then
                kill $spamdpid >; /dev/null 2>;&1
                echo -n " spamd"
        fi
        ;;

    *)
        echo "Usage: `basename $0` {start|stop}" >;&2
        ;;
esac

exit 0
# chmod 744 /usr/local/etc/rc.d/spamd.sh
# /usr/local/etc/rc.d/spamd.sh start

三. Maildrop
# cd /usr/ports/mail/maildrop
# make
# make install
# cd /usr/ports/archivers/zip
# make install

http://telia.dl.sourceforge.net/sourceforge/tnef/tnef-1.2.3.tar.gz
TNEF是一个从"application/ms-tnef". 类型中找出MIME附件的程序.这仅仅是微软系统中的一种附件
# ./configure
# make
# make install


四. Qmail-scan

1. qmail-queue补丁程序
# cd /down
# fetch http://www.qmail.org/qmailqueue-patch
# patch –d ./qmail-1.03 < qmailqueue-patch
# killall qmail-send
# make setup check
# csh –cf ‘/var/qmail/rc &’

2. 安装qmail-scanner
# cd /down
# fetch http://telia.dl.sourceforge.net/sourceforge/qmail-scanner/qmail-scanner-1.20.tgz
# tar -zxvf qmail-scanner-1.20.tgz
# cd qmail-scanner-1.20
# pw groupadd qscand
# pw useradd qscand –c “Qmail-Scanner Account” –g qsand –s /bin/false
# ./configure –help
# ./configure --admin "user" --domain "test.com" --scanner clamscan,verbose_spamassassin  --lang en_GB –install
# chmod 4755  /var/qmail/bin/qmail-scanner-queue.pl
# chown -R qmailq:qmail /var/spool/qmailscan/
# chown qmailq:qmail /var/qmail/bin/qmail-scanner-queue.pl
# /var/qmail/bin/qmail-scanner-queue.pl -r  //查看qmailscan当前包含的特征
# /var/qmail/bin/qmail-scanner-queue.pl –g  //保存qmailscan定义特征的修改,使他生效。
# chmod 4511 /usr/bin/suidperl
如果提示:can’t do setuid,那就就是suidperl没有设置set位,或者没有安装perlsetuid。

3.设置qmail使用qmail-scan
在smtp启动脚本中添加:
PATH=$PATH:/usr/local/bin:/var/qmail/bin 
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl" 
export PATH QMAILQUEUE
然后重新启动smtp服务

4.测试安装
# cd /usr/local/qmail-scanner/qmail-scanner-1.20
# ./contrib/test_installation.sh -doit
这个脚本会设定的管理员邮件地址发送3个邮件,第一个邮件是一般的正常邮件,第二个邮件中会包含eicar.com测试病毒,第三个邮件同样包含eicar.com测试病毒,不过所附带的文件名不是eicar.com。
如果qmail-scanner安装正确,管理员就应该可以收到关于后面的两个邮件的警告邮件。
如果系统出错,可以查看/var/spool/qmailscan/qmail-queue.log日志文件。
qmail-scanner的特征过滤在/var/spool/qmailscan/quarantine-atachments.txt

五. SpamAssassin的使用
建立SpamAssassin的学习系统
#sa-learn --rebuild -D -p user_prefs
sa-learn --dump all可以查看自学习的数据信息

spamassassin的过滤模板在/etc/mail/spamassassin/local.cf,修改为:

required_hits 5.0
rewrite_subject 1
subject_tag ********SPAM********
report_safe 1
defang_mime 0
rewrite_subject 0
report_header 1
use_terse_report 1
use_bayes 1
auto_learn 1
skip_rbl_checks 1
use_razor2 0
use_dcc 0
use_pyzor 0

score SUBJ_FULL_OF_8BITS 0.0
score BASE64_ENC_TEXT 0.0
score BAYES_99 0.1
score BAYES_90 0.1
score SUBJ_ILLEGAL_CHARS 0.1
score FROM_ILLEGAL_CHARS 0.5
score HEAD_ILLEGAL_CHARS 0.5
score MIME_BASE64_TEXT 0.5
ok_locales en zh

六. 使用Maildrop调用SpamAssassin
在/home/vpopmail/domains/localhost.com/建立mailfilter文件
# touch mailfilter
# chown vpopmail:vchkpw mailfilter
# chmod 700 mailfilter
mailfilter内容如下:

VPOP="| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox"
VHOME=`/home/vpopmail/bin/vuserinfo -d $EXT@$HOST`

if ( $SIZE < 262144 )
{
        exception {
                xfilter "/usr/bin/spamc -f -u $EXT@$HOST"
        }
}

if (/^X-Spam-Flag: YES/)
{
        # try filtering it using user-defined rules
        exception {
                include $VHOME/Maildir/.mailfilter
        }
        # then try delivering it to a Spam folder
        exception {
                # to "$VPOP"
                to "$VHOME/Maildir/.Spam/"
        }
        # ah well, I guess they'll just have to live with disappointment
        exception {
                to "$VPOP"
        }
}
else
{
        exception {
                include $VHOME/Maildir/.mailfilter
        }
        exception {
                to "$VPOP"
        }
}

修改.qmail-default内容如下:
maildrop mailfilter


第九部分:附  录
1.Qmail的主要配置文件
qmail的配置文件是由多个文件组成的,不是集中在一个文件中,每个文件控制相应部分的功能和属性,一个可执行程序可能有多个配置文件控制,所有的配置文件共同决定了qmail运行的实现和模式。这些配置文件都在qmail的control目录中,本文的配置文件位于/var/qmail/control目录中

1.1、badmailfrom

    这个配置文件是控制邮件系统拒绝接收的邮件地址和邮件域,主要是为了防止垃圾邮件。如果一个邮件地址或者邮件域被列入到这个文件中,系统就会拒绝接收这个邮件地址发来的邮件,或者拒绝邮件域下所有邮件地址发来的邮件。不过这个配置文件只是一般的垃圾邮件防范手段,对于比较全面的垃圾邮件过滤技术还要靠第三方软件来实现。该文件的格式如下:

    11@11.com //拒绝这个地址发来的邮件
    22@2w.com
    @33.com //拒绝这个邮件域下的所有帐号发来的邮件
    @44.com

1.2、boucefrom

    bouceform是定义当邮件投递失败时系统返回给发送者一个包含失败信息的邮件时的发送者。如果不存在这个文件,默认的发送者是MAILER-DAEMON。比如本文的

    echo postmaster >; /var/qmail/control/bouncefrom

    就是定义投递者为postmaster,这样所有投递失败的返回邮件的发送者就成了postmaster。

1.3、concurrencylocal

    这个文件定义了qmail可以同时投递的本地邮件的个数。这个参数的缺省值是10,也就是说系统允许同时有10个邮件在本地投递。concurrencylocal这个参数的最大值是由编译时的conf-spawn参数来决定的,缺省值是120,最大值是255。

1.4、concurrencyremote

    这个参数定义了qmail可以同时投递的远端邮件的个数,这个参数的缺省值是20。这个参数的最大值也是由conf-spawn来决定的。

1.5、defaultdomain

    它主要用于邮件用户在投递给同一邮件服务器的邮件用户时的邮件投递处理,比如邮件服务器cnunix.com.cn用户user发送邮件给另一个邮件用户user1@cnunix,这实qmail-inject会将defaultdomain中定义的邮件域名加入到这个邮件的目标地址中,qmail会自动认为这个邮件的目标地址是user1@cnunix.com.cn,并按照这个地址进行投递。当这个文件不存在的时候,qmail会从配置文件me中读取这个参数。如果系统变量QMAILDEFAULTDOMAIN已经设置,defaultdomain定义的参数将被忽略。

1.6、defaulthost

    它和defaultdomain类似,当邮件系统接收到没有目标主机名的邮件时,这个设置文件定义了系统往这个邮件中加入的目标主机名名称。在缺省情况下,qmail-inject会将defaulthost中定义的名称加入到没有定义投递邮件地址的邮件的目标主机名中,如果defaulthost不存在,加入的目标主机名将时字符串“defaulthost”,defaulthost主要用于邮件用户在投递给同一邮件服务器的邮件进行投递处理。如果系统变量QMAILDEFAULTHOST已经设置,defaulthost定义的参数将被忽略。

1.7、databyes

    它定义了qmail-smtpd所允许接收的邮件的最大字节数。这个参数的缺省值为0,表示对接收邮件的字节数没有限制。如果要限制最大的接收为10M,操作如下:

    echo 10485760 >; /var/qmail/control/databytes

    这是任何大于10M的邮件都会被拒绝。这个参数最好设置上,以避免恶意的对你服务器发送大量的超大邮件,产生邮件服务器负荷过大,甚至系统崩溃的危险。

1.8、doublebouncehost

    这个配置文件定义了出现“双重反弹”的时候,系统转发的邮件的主机名称。“双重反弹”就是当系统因为投递失败将邮件返回给发送者时,发送者又将此邮件返回,这个时候qmail将会把这个邮件转发到另一个邮件地址,一般这个地址就是管理员的地址。doublebouncehost就是定义这个转发的邮件地址的主机名部分,而这个邮件地址的用户名部分是由doublebouceto来定义的,因此这两个配置文件一般都是结合起来使用的。当doublebouncehost不存在的时候,系统将会从配置文件me中读取这个参数。

1.9、doublebounceto

    这个参说是结合blebouncehost来使用的,当这个参数不存在的时候,系统缺省值是postmaster用户。

1.10、helohost

    这个配置文件定义了当程序qmail-remote和远程邮件系统建立连接时所使用的主机名。如果这个配置文件不存在,系统将会从配置文件me中读取这个参数值,如果me不存在,qmail-remote将不能正常运行工作。

1.11、locals

    这个配置文件是定义本地邮件域的,在qmail-send处理邮件投递时,将会使用locals定义的值和邮件的目标地址进行比较,如果相同,系统就会将这个邮件投递到本地交给qmail-lspawn来处理。如果一个邮件的目标主机名在locals找不到,系统将会把这个邮件投递到远端邮件服务器系统,即使这个邮件的目标地址可能是本地邮件系统的。如果locals不存在,系统将会从配置文件me中读取这个参数,如果me不存在,qmail-send将不能正常运行。

1.12、me

    这个配置文件是qmail系统十分重要的一个文件,如果这个文件不存在,qmail系统将无法运行。me是用来定义本地邮件服务器的主机名的,上面已经介绍到了,有多个配置文件是和me有关联的,如果那些配置文件不存在系统默认会从me中读取参数值的。me这个配置文件一般都是在qmail系统安装时使用configure-fast来创建的,在上面qmail系统安装的时候已经使用过了这个参数。

1.13、queuelifetime

    这个配置文件是定义一个邮件在邮件队列中存活的时间,缺省值为7天(604800s),这个期限掉了以后qmail-send将会进行最后一次的投递尝试,如果投递失败,该邮件将会从邮件队列中删除。

1.14、rcphosts

    这个配置文件也是qmail一个十分重要的文件,这个文件是定义系统允许转发邮件的邮件域,如果这个文件不存在或者为空,你的系统将会接收Internet上所有的域的邮件转发,即你的系统是Open relay。配置文件rcpthosts最多可以支持50个主机名和域名,如果超个这个数字,就需要保存到他的扩充配置文件morercphosts中,然后使用qmail的命令程序qmail-newmrh(在本系统中,该文件在/var/qmail/bin目录下)来生成二进制的morercpthosts.cdb文件,这样qmail-smtpd才可以从这个二进制文件中读取信息。

1.15、virtualdomains

    这也是qmail的一个非常重要的配置文件,它定义了qmail的虚拟邮件域,qmail结合vpopmail的虚拟域管理功能可以定义多个虚拟邮件域。

1.16、smtproutes

    这个配置文件是定义qmail邮件系统的静态SMTP路由表信息的,他的格式应该是:

    HOST: targetHOST    //HOST可以是主机名或者域名。这行所表示的是意思是将所有目标是HOST的邮件转发到targetHOST邮件服务器中,这个是最常规的表示方式。

    下面给一些例子和一些特殊的表示方法:

    cnunix.com.cn:cnunix.com   //这行表示的意思是将所有发往cnunix.com.cn的邮件全部转发到cnunix.com这个邮件服务器。qmail不会在cnunix.com.cn邮件服务器中投递时查询DNS中的MX记录,直接投递到cnunix.com邮件服务器中,加快了投递的速度。

    .cnunix.net:     //这行表示强迫qmail对DNS的MX记录进行查询,因为没有定义转发的主机名,qmail将在DNS中查询任何以.cnunix.net结尾的邮件服务器

    :mail.cnunix.com.cn:2525    //这行定义表示所有发往该机器的所有邮件都将会转发到mail.cnunix.com.cn这个邮件服务器,并且转发到对方的2525端口,这个方式一般都是做邮件网关时用的到的。

注意:smtproutes如果设置不正确或者DNS的变动会产生邮件的循环投递。

1.17、timeoutconnect

    这个配置文件定义了qmail-remote在和远端SMTP服务器在SMTP连接断开以前接受一个新的连接等待的最大时间(单位为秒s),默认值为一分钟(60s)。如果你的网络连接速率比较低,就需要相应的调整这个参数到一个适合的值。

1.18、timeoutremote

    这个配置文件定义了qmail-remote等待远端的SMTP服务器相应时等待的最大时间,默认值为20分钟(1200s),如果到达这个最大值没有相应,qmail才和对方断开连接并且把失败的记录写到qmail的日志中。

1.19、smtpgreeting

    这个配置文件定义了用户在登录SMTP服务时显示的系统欢迎信息。修改这个信息可以掩盖一些你的系统的本身的信息,可以相对的迷惑一下登录者:)

2. vpopmail参数附录
一般选项:

2.1、--enable-roaming-users=n|y

    当pop3认证通过后,是否打开对该用户的邮件转发(mail relay),缺省是关闭的。若设置该选项为y,当某个用户通过了pop3认证,则将其IP地址加入许可通过该邮件服务器进行relay的列表中。一个名为clearopensmtp的cronjob程序可以用来实现在这一段时间以后从允许转发邮件地址列表中将该IP地址清除。这个选项要求以-x /etc/tcp.smtp.cdb选项来使用tcpserver运行smtp服务器。

2.2、--enable-hardquota=size|n 

    size为具体的数字。设置或打开磁盘限额功能,NOQUOTA缺省为50M,这里=后面的数字单位为字节,如果要限制磁盘限额为10M就需要使用下面这个配置参数:

    --enable-hardquota=10000000

    若磁盘限额超出,将拒绝接受该用户的新邮件,并返回一封拒绝信息邮件,其中的信息可以定制。

2.3、--enable-default-domain=name

    该选项为设定缺省域名,推荐将所有的域都设置为虚拟域,并选中一个作为缺省域。对于缺省域的用户,其通过接受邮件时,只需要在用户名中设置其邮件用户名即可,对于其他非缺省域的用户,则需要将用户名设置为;@;的格式才能通过pop3接受信件。

2.4、--enable-ip-alias-domains=y|n

    允许通过反向解析来查看虚拟域。缺省情况下,每个域使用基于虚拟域的名字,也就是用户必须在pop3用户名中提供相应的域信息,也就是;@;.当然也可以使用enable-default-domain配置选项来覆盖该要求。Vpopmail同样支持基于IP地址的虚拟域,若该选项打开则用户不需要在pop3用户名中提供@;,vpopmail自动对该用户连接的服务器IP地址进行反向解析,若解析得到一个域名,则vpopmail使用该名字作为域,例如:IP:x.x.x.x对应域名test.com,用户设置pop3服务器的IP地址进行反向DNS查询,得到test.com域名,用户使用test作为用户名,vpopmail使用test.com。

2.5、--enable-relay-clear-minutes=360

    允许漫游用户通过邮件服务器的转发邮件的时间段。 若--enable-roamin-users=y,则该选项设置clearopensmtp应该保持该IP在允许列 表中的时间,缺省是3小时。

Mysql options:

2.6、--enable-mysql=n|y

    使用mysql,缺省是no.允许通过将账号存放在mysql数据库中来认证用户。

  注意:在配置和编译以前需要修改文件vmysql.h,正确的设置mysql服务器的Name/Ip, mysql用户和mysql用户密码。该用户必需要拥有创建数据库和在其中创建表格的权限。

2.7、--enable-sqlincdir=

    sql头文件的目录,缺省为/usr/local/mysql.

2.8、--enable-sqllibdir=/usr/lib/mysql

    库文件libmysqlclient.a的目录,缺省为/usr/lib/mysql 

2.9、--enable-sqllibs=mysqlclient

    mysql库名,缺省为libmysqlclient.a. 

2.10、--enable-large-site=n|y

    缺省值为no,使用该选项是为了适应大量用户的情况。缺省的vpopmail将所有的域信息存放在同一个table-vpopmail中,这对于一般情况下具有很好的效率。但是对于大量用户的系统,则需要将该选项设置为yes。这时候,vpoomail将为每个域创建一个table。最主要的区别是域名不存放在数据库中,因为表格包含了域名。对于大于500,000+的用户,这可以节省大量的磁盘空间。但是对于有大量虚拟域的系统可能会影响mysql的性能。

Vpasswd/cdb options

2.11、--enable-ucspi-dir=dir

    编译好ucspi-tcp包的目录位置,使用该目录来设定ucspi-tcp软件包的路径,缺省为../ucspi-tcp-0.84。vpopmail需要使用该目录中的头文件和两个.a文件。 

Logging options 

2.12、--enable-logging=e|y|n 

    打开(y)或关闭(n)使用syslog进行log,或e仅仅log错误信息。设置log级别,缺省仅仅记录pop认证错误信息。

2.13、--enable-log-name=vpopmail

    设置log名
User/group options
2.14、--enable-vpopuser=vpopmail

    若使用其他的用户来安装该软件包,则在该选项中指定组名。 

2.15、--enable-vpopgroup=vchkpw

    若使用其他的组来安装该软件包,则在该选项中指定组名。

2.16、--enable-admin-email=email-address

    系统管理员的电子邮件地址。
Directory and file location options
2.17、--enable-tcpserver-file=/etc/tcp.smtp tcpserver –x

    使用的邮件转发配置文件的存放目录,缺省为/etc

2.18、--enable-qmaildir=dir

    qmail的安装目录指定,缺省为/var/qmail。

2.19、--enable-tcprules-prog=/usr/local/bin/tcprules

    tcprules程序的安装位置,缺省为/usr/local/bin

2.20、--enable-apop-file=/etc/apop-secrets

    apop密钥存放目录
Other options
2.21、--enable-apop=y|n

    允许或禁止apop认证,缺省是yes

2.22、--enable-passwd=y|n

    允许或禁止/etc/passwd(或shadow)认证。覆盖自动配置,缺省的配置程序将自动检测系统是使用passwd或shadow密码,通过设置该选项为no,可以禁止所有的/etc/passwd账号认证。



加载中
返回顶部
顶部