安装环境:centos5.2(32位)
软件列表:
1, Centos 服务器操作系统
2, Postfix 邮件服务器系统的smtp服务器,在邮件服务器系统中充
当MTA角色.
3, Mysql 开源数据库,用于存储邮件系统虚拟域,虚拟帐户信息.
4, apache web 服务器软件,用于extman 对邮件系统的后台管
理,extmail的web邮件收发.
5, php extman和extmail需要使用php解析
6, cyrus-sasl 用于实现身份验证的smtp服务器
7, courier-authlib 现实带验证的pop3服务器
8, courier-imap 用于实现pop3,imap收邮件功能
9,extman 用于邮件服务器的后台管理
10,extmail 用于实现webmail
11,DBD-mysql 用于解决依赖关系,extmail将会用到
12,unix-syslog 用于解决依赖关系,extmail将会用到
13,BerkeleyDB 用于提供数据库效率
14, openssl 提供安全的邮件服务器连接
15, maildrop 用于替代postfix的mta功能,邮件投递代理,将收到
的邮件转发到用户的邮箱目录(本次试验未配置此功能)
作者:曲宝全 2009 年10 月19 日
2 / 37
16,clamav 反病毒工具
17,SpamAssassin 反垃圾邮件过滤器
18,amavisd-new 是一个连接MTA和内容检测工具z
安装过程
一 安装和配置cyrus-sasl
1. 安装cyrus-sasl
(1)首先先要卸载系统已经安装cyrus-sasl
[root@postfix conf]# rpm -q cyrus-sasl
cyrus-sasl-2.1.22-4
[root@postfix conf]# rpm -e cyrus-sasl –nodeps
(2)编译安装cyrus-sasl2.1.22
tar zxvf cyrus-sasl-2.1.22.tar.gz
cd cyrus-sasl-2.1.22
./configure --prefix=/usr/local/sasl2 \
--disable-gssapi --disable-anon --disable-digest \
--enable-plain --enable-login \
--enable-sql --with-mysql=/usr/local/mysql/ \
--with-mysql-includes=/usr/local/mysql/include/mysql/ \
--with-mysql-libs=/usr/local/mysql/lib/mysql/ \
--with-authdaemond=/usr/local/courier-authlib/var/spool/authdaemon/socket
##########一定要加上--enable-login因为SASL2默认不支持login这种验证方式,
而OUTLOOK是通过login来进行SMTP验证得#####################
作者:曲宝全 2009 年10 月19 日
3 / 37
make
make install
2. 配置sasl
(1) 创建运行时需要的目录并调试启动
mkdir -pv /var/state/saslauthd
在/var/目录下建一个目录给saslauthd进程存在临时数据。假如没有这些目录,运行
saslauthd时,会提示出错。
(2) 接着为确保CYRUS-SASL2函数库知道怎样验证所收来的SASL认证请求,必须创建
一个SASL的配置文档。配置文档名为smtpd.conf位于/usr/local/sasl2/lib/sasl2这个
目录,在该文档中您定义您希望使用的认证数据库方法,以下这个例子使用
saslauthd来验证认证请求.
vi /usr/local/sasl2/lib/sasl2/smtpd.conf
添加以下内容
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
3. 启动并测试
/usr/local/sasl2/sbin/saslauthd -a shadow pam
/usr/local/sasl2/sbin/testsaslauthd -u root -p root(用户密码)
例如:[root@postfix sasl2]# /usr/local/sasl2/sbin/testsaslauthd -u root -p 123456
0: OK "Success."
假如出现以上信息,就说明saslauthd正常运行了。
(testsaslauthd程式默认是没有编译的,您需要在源码目录树的saslauthd子目录中运行
作者:曲宝全 2009 年10 月19 日
4 / 37
make testsaslauthd命令生成。 )
4. 添加连接库 postfix编译安装会用到,否则报错.
echo "/usr/local/sasl2/lib" >> /etc/ld.so.conf
echo "/usr/local/sasl2/lib/sasl2" >> /etc/ld.so.conf
ldconfig
5. .添加库连接到/usr/lib 因为postfix会到/usr/lib目录下去找SASL2库,而我
们是把程式安装在/usr/local/sasl2中,所以我们要在/usr/lib目录下做一个
链接:
ln -s /usr/local/lib/sasl2 /usr/lib/sasl2
6. 设置为开机启动
echo “/usr/local/sasl2/sbin/saslauthd” -a shadow pam >>/etc/rc.local
二 安装配置courier-authlib
1. 安装courier-authlib
tar -jxvf courier-authlib-0.62.4.tar.bz2
cd courier-authlib-0.62.4
./configure --prefix=/usr/local/courier-authlib --without-authpam --without-authdap
--without-authshadow --without-vchkpw --with-authmysql
--with-mysql-libs=/usr/local/mysql/lib/mysql
--with-mysql-includes=/usr/local/mysql/include/mysql
make
make install
2. 配置courier-authlib
作者:曲宝全 2009 年10 月19 日
5 / 37
(1)cd /usr/local/courier-authlib/
chmod 755 var/spool/authdaemon/
(2)cd etc/authlib/
cp authdaemonrc.dist authdaemonrc
cp authmysqlrc.dist authmysqlrc
(3)vi authdaemonrc
修改/etc/authdaemonrc 文件为:
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=10
(4)vi authmysqlrc
修改/etc/authmysqlrc 为以下内容
MYSQL_SERVER localhost
MYSQL_PORT 3306 (指定你的mysql监听的端口,这里使用默认的3306)
MYSQL_USERNAME extmail (这时为后文要用的数据库的所有者的用户名)
MYSQL_PASSWORD extmail (密码)
MYSQL_SOCKET /tmp/mysql.sock
MYSQL_DATABASE extmail
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD '501' 501为postfix用户uid
MYSQL_GID_FIELD '501' 501为postfix组gid
作者:曲宝全 2009 年10 月19 日
6 / 37
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD concat('/var/mailbox/',homedir)
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD concat('/var/mailbox/',maildir)
3. 设置开机自启动
(1)cp /srv/courier-authlib-0.62.4/courier-authlib.sysvinit /etc/init.d/courier-authlib
chmod 755 /etc/init.d/courier-authlib
(2) chkconfig --add courier-authlib
(3) chkconfig --level 345 courier-authlib on
4. 启动服务
/etc/init.d/courier-authlib start
5. 看是否启动成功
[root@postfix ~]# netstat -an |grep 110
unix 2 [ ACC ] STREAM LISTENING 11090 /var/state/saslauthd/mux
unix 2 [ ] DGRAM 11089
三 安装配置Postfix
1 安装Postfix
(1) 创建相关的用户和组否则make install得时候会报错
groupadd postfix -g 501
groupadd postdrop
useradd postfix -u 501 -g postfix -G postdrop
(2) 解压安装
作者:曲宝全 2009 年10 月19 日
7 / 37
tar -zxvf postfix-2.6.0.tar.gz
cd postfix-2.6.0
make -f Makefile makefiles 'CCARGS=-DHAS_MYSQL
-I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL
-I/usr/local/sasl2/include/sasl' 'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient
-lz -lm -L/usr/local/sasl2/lib -lsasl2'
#这里注意啦! -lmysqlclient -lz –lm这三个开头是L的小写,不是i的大写
make
make install (过程见文档)
2. 配置potfix
(1) 生成别名二进制文件,这个步骤如果忽略,会造成postfix效率极低:
newaliases
(2) 编辑主配置文件设置一些基本参数
cd /usr/local/postfix
vi /etc/postfix/main.cf
修改以下几项为您需要的配置
myhostname = postfix.qubaoquan.com
myorigin = qubaoquan.com
mydomain = qubaoquan.com
mydestination = $myhostname, localhost.$mydomain, localhost,
$mydomain mynetworks = 192.168.10.0/24, 127.0.0.0/8
inet_interfaces = all
作者:曲宝全 2009 年10 月19 日
8 / 37
local_recipient_maps =(去掉前面的注释)
上述配置中,需要特别注意的是mydomain和myhostname,这2个项的值不要设置
成一样,否则postfix将不能正确启动,虚拟邮箱不可用。
myorigin参数用来指明发件人所在的域名;
mydestination参数指定postfix接收邮件时收件人的域名,即您的postfix系统要接
收到哪个域名的邮件;
myhostname 参数指定运行postfix邮件系统的主机的主机名,默认情况下,其值
被设定为本地机器名;
mydomain参数指定您的域名,默认情况下,postfix将myhostname的第一部分删
除而作为mydomain的值;
mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用
户是远程的还是本地的,如果是本地网络用户则允许其访问;
inet_interfaces 参数指定postfix系统监听的网络接口; 注意: 在postfix的配置
文件中,参数行和注释行是不能处在同一行中的;
(3) 为postfix开启基于cyrus-sasl的认证功能
使用以下命令验正postfix是否支持cyrus风格的sasl认证,如果您的输出为以下结果,则是
支持的:
/usr/local/postfix/sbin/postconf -a
cyrus
dovecot
查看是否已经加入了mysql支持
[root@postfix ~]# /usr/local/postfix/sbin/postconf -m
作者:曲宝全 2009 年10 月19 日
9 / 37
btree
cidr
environ
hash
mysql
nis
proxy
regexp
static
unix
vi /etc/postfix/main.cf
在最后添加以下内容:
############################CYRUS-SASL############################
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_invalid
_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_
sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipeli
ning,reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_application_name = smtpd
作者:曲宝全 2009 年10 月19 日
10 / 37
smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!
让postfix重新加载配置文件
/usr/local/postfix/sbin/postfix reload
(4) 配置postfix以支持虚拟域和虚拟用户
1、编辑/etc/postfix/main.cf,添加如下内容:
########################Virtual Mailbox Settings########################
virtual_mailbox_base = /var/mailbox
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_uid_maps = static:501 #501为你添加的postfix用户uid
virtual_gid_maps = static:501 #501为你添加的postfix组gid
virtual_transport = virtual
maildrop_destination_recipient_limit = 1
maildrop_destination_concurrency_limit = 1
要注意的地方是 virtual_uid_maps及virtual_gid_maps的值,它是postfix用户的uid和postfix
组的gid, 与前面的文件/usr/local/authlib/etc/authlib/authmysqlrc 的
"MYSQL_UID_FIELD""MYSQL_GID_FIELD"一定要保持一致
##########################QUOTA Settings########################
message_size_limit = 14336000
virtual_mailbox_limit = 20971520
作者:曲宝全 2009 年10 月19 日
11 / 37
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace
quota, please Tidy your mailbox and try again later.
virtual_overquota_bounce = yes
2、添加为支持虚拟域和虚拟用户所用到的配置文件,以下4个配置文件是不存在的,需
要创建. 编辑/etc/postfix/mysql_virtual_alias_maps.cf ,添加如下内容:
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = alias
select_field = goto
where_field = address
3, 编辑/etc/postfix/mysql_virtual_domains_maps.cf ,添加如下内容:
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = domain
作者:曲宝全 2009 年10 月19 日
12 / 37
select_field = description
where_field = domain
4. 编辑/etc/postfix/mysql_virtual_mailbox_limit_maps.cf ,添加如下内容:
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = mailbox
select_field = quota
where_field = username
5. 编辑/etc/postfix/mysql_virtual_mailbox_maps.cf ,添加如下内容:
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = mailbox
select_field = maildir
where_field = username
说明: 1、这里用到的数据库及用户的建立可以后文中的extmail说明部分来实现,您可以
参照那一部分来理解这里指定的数据库及其用户名等;
2、以上新建文件亦可以从extman安装文件中获得,您也可以由此不用手动输入;
3、虚拟用户邮箱目录我这里沿用了/var/mailbox,你可以指定为别的目录,比如常
作者:曲宝全 2009 年10 月19 日
13 / 37
见到的/var/spool/mail,或者/home/domains等;但如果这里做了修改,请在后文中用到时
作了相应的修改;
3. 注册Postfix为系统服务
vi /etc/init.d/postfix(内容见附件)
chmod +x /etc/init.d/postfix
chkconfig --add postfix
chkconfig --levels 2345 postfix on
service postfix start
四 安装配置courier-imap
1. 安装courier-imap
tar -jxvf courier-imap-4.5.1.tar.bz2
cd courier-imap-4.5.1
./configure --prefix=/usr/local/courier-imap --enable-unicode --disable-root-check
--with-trashquota --without-ipv6
CPPFLAGS='-I/usr/local/courier-authlib/include'
LDFLAGS='-L/usr/local/courier-authlib/lib/courier-authlib'
COURIERAUTHCONFIG='/usr/local/courier-authlib/bin/courierauthconfig'
make
make install
2. 复制配置文件
cd /usr/local/courier-imap/
cp ./etc/imapd.dist ./etc/imapd
作者:曲宝全 2009 年10 月19 日
14 / 37
cp ./etc/imapd-ssl.dist ./etc/imapd-ssl
cp ./etc/pop3d.dist ./etc/pop3d
cp ./etc/pop3d-ssl.dist ./etc/pop3d-ssl
3. 配置Courier-IMAP,为用户提供pop3服务:
vi ./etc/pop3d
POP3DSTART=YES
注:如果你想为用户提供IMAP服务,则需在"/usr/local/courier-imap/etc/imapd"
文件中设置"IMAPDSTART=yes";其它类同;
4. 设置开机启动
cd /srv/courier-imap-4.5.1/
cp courier-imap.sysvinit /etc/rc.d/init.d/courier-imapd
chmod 755 /etc/rc.d/init.d/courier-imapd
chkconfig --add courier-imapd
chkconfig --level 2345 courier-imapd on
service courier-imapd start
5. 新建虚拟用户邮箱所在的目录
新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户:
mkdir –pv /var/mailbox
chown -R postfix /var/mailbox
6. 重新配置SMTP 认证
vi /usr/local/sasl2/lib/sasl2/smtpd.conf
确保其为以下内容:
作者:曲宝全 2009 年10 月19 日
15 / 37
pwcheck_method: authdaemond
log_level: 3
mech_list:PLAIN
LOGIN authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
7. 重新启动sasal服务
killall -9 saslauthd
/usr/local/sasl2/sbin/saslauthd -a shadow pam
五 安装配置webmail系统(extmail+extman)
1. 安装extmail
tar -zxvf extmail.tar.gz
cp -rf extmail-1.0.9 /usr/local/apache/htdocs/extmail
cd /usr/local/apache/htdocs/extmail
cp webmail.cf.default webmail.cf
2. 配置extmail
vi webmail.cf
部分修改选项的说明:
SYS_CONFIG = /usr/local/apache/htdocs/extmail/
SYS_LANGDIR = /usr/local/apache/htdocs/extmail/lang
SYS_TEMPLDIR = /usr/local/apache/htdocs/extmail/html
SYS_MESSAGE_SIZE_LIMIT = 5242880 #用户可以发送的最大邮件
SYS_USER_LANG = en_US 语言选项,
可改作: SYS_USER_LANG = zh_CN
SYS_MAILDIR_BASE = /home/domains 此处即为您在前文所设置的用户邮件的存放
作者:曲宝全 2009 年10 月19 日
16 / 37
目录
可改作: SYS_MAILDIR_BASE = /var/mailbox
SYS_MYSQL_USER = db_user
SYS_MYSQL_PASS = db_pass
以上两句句用来设置连接数据库服务器所使用用户名、密码和邮件服务器用到的数据
库,这里修改为:
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
SYS_MYSQL_HOST = localhost 指明数据库服务器主机名, 这里默认即可
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock 连接数据库的sock文件位置
这里修改为: SYS_MYSQL_SOCKET = /tmp/mysql.sock
SYS_MYSQL_TABLE = mailbox
SYS_MYSQL_ATTR_USERNAME = username
SYS_MYSQL_ATTR_DOMAIN = domain
SYS_MYSQL_ATTR_PASSWD = password 以上用来指定验正用户登录里所用到的
表,以及用户名、域名和用户密码分别对应的表中列的名称这里默认即可
SYS_AUTHLIB_SOCKET = /var/spool/authdaemon/socket 此句用来指明
authdaemo socket文件的位置
这里修改为: SYS_AUTHLIB_SOCKET =
/usr/local/courier-authlib/var/spool/authdaemon/socket
3. 安装Extman
tar -zxvf extman-1.0.0.tar.gz
作者:曲宝全 2009 年10 月19 日
17 / 37
cp -r extman-1.0.0 /usr/local/apache/htdocs/extman
cd /usr/local/apache/htdocs/extman
mkdir /var/tmp/extman
chown postfix.postfix /var/tmp/extman
chown -R postfix.postfix cgi
4 配置Extman
vi webman.cf
修改如下配置
SYS_CONFIG = /usr/local/apache/htdocs/extman/
SYS_LANGDIR = /usr/local/apache/htdocs/extman/lang
SYS_TEMPLDIR = /usr/local/apache/htdocs/extman/html
SYS_MAILDIR_BASE = /home/domains 此处即为您在前文所设置的用户邮件的存
放目录
可改作: SYS_MAILDIR_BASE = /var/mailbox/
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
此处修改为: SYS_MYSQL_SOCKET = /tmp/mysql.sock
SYS_SESS_DIR = /var/tmp/extman/
SYS_CAPTCHA_ON = 0 (关闭显示校验码或者安装perl-GD模块)
5 建立数据库
使用extman源码目录下docs目录中的extmail.sql和init.sql建立数据库:
cd docs/
mysql -u root -p <extmail.sql
作者:曲宝全 2009 年10 月19 日
18 / 37
mysql -u root -p &lt;init.sql
6 修改Apache编写虚拟主机
(1) vi /usr/local/apache/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf(去掉之前注释)
(2 ) cd /usr/local/apache/conf/extra/
vi httpd-vhosts.conf(内容修改如下)
NameVirtualHost *:80
&lt;VirtualHost *:80>
ServerName mail.qubaoquan.com
DocumentRoot /usr/local/apache/htdocs/extmail/html/
ScriptAlias /extmail/cgi/ /usr/local/apache/htdocs/extmail/cgi/
Alias /extmail/ /usr/local/apache/htdocs/extmail/html/
</VirtualHost>
<VirtualHost *:80>
ServerName admin.qubaoquan.com
DocumentRoot /usr/local/apache/htdocs/extman/html/
ScriptAlias /extman/cgi/ /usr/local/apache/htdocs/extman/cgi/
Alias /extman/ /usr/local/apache/htdocs/extman/html/
</VirtualHost>
7 重新启动Apache
service httpd stop
service httpd start
作者:曲宝全 2009 年10 月19 日
19 / 37
8 安装Unix-Syslog(前提系统已经安装了perl)
tar zxvf Unix-Syslog-0.100.tar.gz
cd Unix-Syslog-0.100
perl Makefile.PL
make
make install
9 安装DBD-Mysql
tar zxvf DBD-mysql-4.012.tar.gz
cd cd DBD-mysql-4.012
perl Makefile.PL --libs="-L/usr/local/mysql/lib/mysql -lmysqlclient -L/usr/lib -lz "
--cflags=-I/usr/local/mysql/include/mysql
--mysql_config=/usr/local/mysql/bin/mysql_config
make
make install
10 在浏览器中输入以下连接进行访问: mail.qubaoquan.com 或者
admin.qubaoquan.com
进入邮件服务器,添加域与添加用户邮箱。默认管理帐号为:root@extmail.org 密码为:
extmail*123*。
六 安装配maildrop
1、安装
(1)将courier-authlib的头文件及库文件链接至/usr目录(编译maildrop时会到此
目录下找此些相关的文件):
作者:曲宝全 2009 年10 月19 日
20 / 37
ln -sv /usr/local/courier-authlib/bin/courierauthconfig /usr/bin
ln -sv /usr/local/courier-authlib/include/* /usr/include
(2)maildrop需要pcre的支持,因此,接下来将首先安装pcre
tar jxvf pcre-7.3.tar.bz2
cd pcre-7.3
./configure
make
make install
(3)创建maildrop所需的用户和组
groupadd -g 1001 vmail
useradd -g vmail -u 1001 -M -s /sbin/nologin vmail
(4)开始安装maildrop
tar jxvf maildrop-2.0.4.tar.bz2
cd maildrop-2.0.4
./configure
--enable-sendmail=/usr/sbin/sendmail
--enable-trusted-users='root vmail'
--enable-syslog=1 --enable-maildirquota
--enable-maildrop-uid=1001
--enable-maildrop-gid=1001
--with-trashquota --with-dirsync
make
作者:曲宝全 2009 年10 月19 日
21 / 37
make install
(5)检查安装结果,请确保有"Courier Authentication Library extension
enabled."一句出现:
maildrop -v
maildrop 2.0.4 Copyright 1998-2005 Double Precision, Inc.
GDBM extensions enabled.
Courier Authentication Library extension enabled.
Maildir quota extension enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.
2、新建其配置文件/etc/maildroprc文件,首先指定maildrop的日志记录位
置:
vi /etc/maildroprc
添加:
logfile "/var/log/maildrop.log"
touch /var/log/maildrop.log
chown vmail.vmail /var/log/maildrop.log
3、配置Postfix
(1 ) 编辑master.cf
vi /etc/postfix/master.cf
启用如下两行
maildrop unix - n n - - pipe
作者:曲宝全 2009 年10 月19 日
22 / 37
flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
注意:定义transport的时候,即如上两行中的第二行,其参数行必须以空格开头,否则会出
错。
(2) 编辑main.cf
vi /etc/postfix/main.cf
virtual_transport = virtual
修改为:
virtual_transport = maildrop
将下面两项指定的UID和GID作相应的修改:
virtual_uid_maps = static:501
virtual_gid_maps = static:501
修改为:
virtual_uid_maps = static:1001
virtual_gid_maps = static:1001
4、编辑/usr/local/courier-authlib/etc/authlib/authmysqlrc
vi /usr/local/courier-authlib/etc/authlib/authmysqlrc
MYSQL_UID_FIELD '501'
MYSQL_GID_FIELD '501'
更改为:
MYSQL_UID_FIELD '1001'
MYSQL_GID_FIELD '1001'
注意:没有此处的修改,maildrop可能会报告 “signal 0x06”的错误报告。
作者:曲宝全 2009 年10 月19 日
23 / 37
5、编辑/usr/local/apahce/conf/httpd.conf,修改运行用户:
如果启用了suexec的功能,则将虚拟主机中指定的
SuexecUserGroup postfix postfix
修改为:
SuexecUserGroup vmail vmail
如果没有使用上面的功能,则修改User和Group指令后的用户为vmail
将前文中的如下项
User postfix
Group postfix
修改为:
User vmail
Group vmail
6、将用户邮件所在的目录/var/mailbox和extman的临时目录
/var/tmp/extman/的属主和属组指定为vmail
chown -R vmail.vmail /var/mailbox
chown -R vmail.vmail /var/tmp/extman/
7, 重启postfix和apache,authlib
/etc/init.d/courier-authlib restart
/etc/init.d/httpd restart
/usr/local/postfix/sbin/postfix stop
/usr/local/postfix/sbin/postfix start
8 进行发信测试后,如果日志中的记录类同以下项,则安装成功
作者:曲宝全 2009 年10 月19 日
24 / 37
Sep 16 12:04:43 Ixor postfix/pipe[14266]: 46B491A5CB: to=<marion@test.com>, relay=maildrop,
delay=2306, delays=2306/0.04/0/0.07, dsn=2.0.0, status=sent (delivered via maildrop service)
七 安装配置clamav-0.95.2.tar.gz
1、安装zlib-1.2.3
tar zvxf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure --prefix=/usr --shared
make
make test
2、安装clamav-0.95.2.tar.gz
(1)添加ClamAV运行所需的组和用户:
groupadd clamav
useradd -g clamav -s /sbin/nologin -M clamav
(2)添加配合amavisd-new使用的用户amavis
groupadd amavis
useradd -g amavis -s /sbin/nologin -M amavis
(3 ) 开始安装clamav
tar zxvf clamav-0.95.2.tar.gz
cd clamav-0.95.2
./configure --prefix=/usr/local/clamav --with-dbdir=/usr/local/clamav/share
--sysconfdir=/etc/clamav
make
作者:曲宝全 2009 年10 月19 日
25 / 37
make install
3、配置Clam AntiVirus:
(1) 编辑主配置文件:
vi /etc/clamav/clamd.conf
注释掉第八行的Example,如下:
# Example
找到如下行
#LogFile /tmp/clamd.log
#PidFile /var/run/clamd.pid
LocalSocket /tmp/clamd.socket
#DatabaseDirectory /var/lib/clamav
#User clamav
修改为:
LogFile /var/log/clamav/clamd.log
PidFile /var/run/clamav/clamd.pid
LocalSocket /var/run/clamav/clamd.socket
DatabaseDirectory /usr/local/clamav/share
User amavis
启用以下选项
LogSyslog yes
LogFacility LOG_MAIL
LogVerbose yes
作者:曲宝全 2009 年10 月19 日
26 / 37
StreamMaxLength 20M (后面的数值应该与邮件服务器允许的最大附件值相一致)
编辑更新进程的配置文件
TCPSocket 3310(tcp监听端口)
(3) vi /etc/clamav/freshclam.conf
注释掉Example,如下:
# Example
找到如下行
#DatabaseDirectory /var/lib/clamav
#UpdateLogFile /var/log/freshclam.log
PidFile /var/run/freshclam.pid
分别修改为:
DatabaseDirectory /usr/local/clamav/share
UpdateLogFile /var/log/clamav/freshclam.log
PidFile /var/run/clamav/freshclam.pid
启用以下选项:
DatabaseMirror db.XY.clamav.net (这里也可以把XY改成您的国家代码来实现,比如,我们
用cn来代替)
LogSyslog yes
LogFacility LOG_MAIL
LogVerbose yes
4、建立日志所在的目录、进程与socket所在的目录,并让它属于clamav
用户:
作者:曲宝全 2009 年10 月19 日
27 / 37
mkdir -v /var/log/clamav
chown -R amavis.amavis /var/log/clamav
mkdir -v /var/run/clamav
chmod -R 777 /var/run/clamav
chown -R amavis.amavis /var/run/clamav
(2) 建立freshlog的日志文件
touch /var/log/clamav/freshclam.log
chown clamav.clamav /var/log/clamav/freshclam.log
5、配置crontab,让Clam AntiVirus每小时检测一次新的病毒库:
crontab -e
添加:
37 * * * * /usr/local/clamav/bin/freshclam
6、配置库文件搜索路径:
echo “/usr/local/clamav/lib” &gt;&gt; /etc/ls.so.conf
ldconfig -v
7、配置clamav开机自动启动
vi /etc/init.d/clamd(见附件)
8 编辑/etc/rc.d/init.d/clamd,将服务进程的路径指向刚才的安装目录
vi /etc/rc.d/init.d/clamd
找到如下行
progdir="/usr/local/sbin"
修改为:
作者:曲宝全 2009 年10 月19 日
28 / 37
progdir="/usr/local/clamav/sbin"
9. 启动clamd
chkconfig --add clamd
chkconfig –levels 2345 clamd on
service clamd start
八 安装配置装Spamassassin-3.2.5
1. 安装依赖的perl相关包
推荐使用CPAN自动安装(你的主机要能连上Internet),它能够自动下载安装,
并能解决安装过程中的依赖关系。您可以使用类同的以下的命令来进行安装:
[root@postfix clamav-0.91.2]# cpan
Terminal does not support AddHistory.
cpan shell -- CPAN exploration and modules installation (v1.7602)
ReadLine support available (try 'install Bundle::CPAN')
cpan&gt; install Digest::SHA1(Digest::SHA1为要安装的包名称)
所需安装的依赖包列表如下:
Digest::SHA1
HTML::Parser
Net::DNS
LWP (aka libwww-perl)
HTTP::Date
IO::Zlib
Archive::Tar
作者:曲宝全 2009 年10 月19 日
29 / 37
2、安装Spamassassin-3.2.5
tar jxvf Mail-SpamAssassin-3.2.5.tar.bz2
cd Mail-SpamAssassin-3.2.5
perl Makefile.PL
make
make istall
3、编辑主配置文件/etc/mail/spamassassin/local.cf
required_hits 10.0(视为垃圾邮件的分数默认为5.0)
rewrite_subject 1
required_score 5.0
rewrite_header Subject *****SPAM*****(垃圾邮件加入的信头)
report_safe 1
use_bayes 1
bayes_auto_learn 1
skip_rbl_checks 1
use_razor2 0
use_pyzor 0
ok_locales all(接受所以语言)
4、测试spamassassin
spamassassin -t < sample-nonspam.txt > nonspam.out
spamassassin -t < sample-spam.txt > spam.out
查看测试结果:
作者:曲宝全 2009 年10 月19 日
30 / 37
less nonspam.out
less spam.out
5、检查配置文件
spamassassin -d –lint
6、 添加中文过滤规则
unzip china-mailfiter.zip
cd china-mailfiter
cp ./* /usr/share/spamassassin/
wget -N -P /usr/share/spamassassin
http://www.ccert.edu.cn/spam/sa/Chinese_rules.cf
7、创建启动脚本并且注册为系统服务
vi /etc/init.d/spamd(内容见附件)
chmod +x /etc/init.d/spamd
chkconfig --add spamd
chkconfig --levels 2345 spamd on
service spamd start
8、 看是否启动
[root@postfix 2007-07-06]# netstat -nltp |grep spamd |grep -v grep
tcp 0 0 127.0.0.1:783 0.0.0.0:* LISTEN
18728/spamd –d
9、 设置自动化任务叫其自动更行中午过来规则
crontab -e
0 0 1 * * root wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa
作者:曲宝全 2009 年10 月19 日
31 / 37
/Chinese_rules.cf;kill -HUP `cat /var/run/spamd.pid`
九 、安装amavisd-new-2.6.1
1、依赖关系的解决
以下为官方声明所必须的软件包列表,你可以采用类同安装Spamassassin一节中的perl模
块的安装方法进行安装
Archive::Zip (Archive-Zip-x.xx) (1.14 or later should be used!)
Compress::Zlib (Compress-Zlib-x.xx) (1.35 or later)
Convert::TNEF (Convert-TNEF-x.xx)
Convert::UUlib (Convert-UUlib-x.xxx) (1.08 or later, stick to new versions!)
MIME::Base64 (MIME-Base64-x.xx)
MIME::Parser (MIME-Tools-x.xxxx) (latest version from CPAN - currently 5.420)
Mail::Internet (MailTools-1.58 or later have workarounds for Perl 5.8.0 bugs)
Net::Server (Net-Server-x.xx) (version 0.88 finally does setuid right)
Digest::MD5 (Digest-MD5-x.xx) (2.22 or later)
IO::Stringy (IO-stringy-x.xxx)
Time::HiRes (Time-HiRes-x.xx) (use 1.49 or later, older can cause problems)
Unix::Syslog (Unix-Syslog-x.xxx)
BerkeleyDB
Crypt::OpenSSL::RSA
Mail::DKIM::Verifier
2、安装amavisd-new-2.6.1
(1)创建运行时目录,并赋予amavis用户(前文中所建)
作者:曲宝全 2009 年10 月19 日
32 / 37
mkdir -pv /var/amavis/{tmp,var,db,home}
chown -R amavis:amavis /var/amavis
chmod -R 777 /var/amavis
(2)解压amavisd
tar zxvf amavisd-new-2.6.1.tar.gz
cd amavisd-new-2.6.1
(3)拷贝服务端至$PATH中指定的目录,推荐拷贝至/usr/local/sbin:
cp amavisd /usr/local/sbin/
chown root /usr/local/sbin/amavisd
chmod 755 /usr/local/sbin/amavisd
(4)拷贝主配置文件至/etc,并修改相应的权限:
cp amavisd.conf /etc
chown root:amavis /etc/amavisd.conf
chmod 640 /etc/amavisd.conf
(5)创建amavisd运行中所需要的隔离区域:
mkdir -v /var/virusmails
chown amavis:amavis /var/virusmails/
chmod 777 /var/virusmails/
3、编辑主配置文件
(1)vi /etc/amavisd.conf
确保您的如下选项的值如下文所示:
$daemon_user = 'amavis';
作者:曲宝全 2009 年10 月19 日
33 / 37
$daemon_group = 'amavis';
$mydomain = 'benet.org'; (此处可更改为您集体的域)
$virus_admin = "postmaster\@$mydomain";
$mailfrom_notify_admin = "postmaster\@$mydomain";
$mailfrom_notify_recip = "postmaster\@$mydomain";
$mailfrom_notify_spamadmin = "postmaster\@$mydomain";
$mailfrom_to_quarantine = '';
virus_admin_maps =&gt; ["postmaster\@$mydomain"] (指定报告病毒和垃圾邮件时发送系统
邮件的用户身份)
spam_admin_maps =&gt; ["postmaster\@$mydomain"]
启用ClamAV,(大概在第355行)去掉如下行前的注释符:
#['ClamAV-clamd',
# \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd"],
# qr/\bOK$/, qr/\bFOUND$/,
# qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
# ['Mail::ClamAV', \&ask_clamav, "*", [0], [1], qr/^INFECTED: (.+)/],
并将如上行中的/var/run/clamav/clamd修改为:/var/run/clamav/clamd.socket(357行

4. 安装配置BerkeleyDB(可以不装)
(1)安装
tar zxvf db-4.5.20.tar.gz
cd db-4.5.20/build_unix
作者:曲宝全 2009 年10 月19 日
34 / 37
../dist/configure --prefix=/usr/local/BerkeleyDB
make
make install
(2)配置
修改相应的头文件指向
mv /usr/include/db4 /usr/inculde/db4.OFF
rm /usr/include/db_cxx.h
rm /usr/include/db.h
rm /usr/include/db_185.h
ln -sv /usr/local/BerkeleyDB/include /usr/include/db4
ln -sv /usr/local/BerkeleyDB/include/db.h /usr/include/db.h
ln -sv /usr/local/BerkeleyDB/include/db_cxx.h /usr/include/db_cxx.h
配置库文件搜索路径
echo "/usr/local/BerkeleyDB/lib" &gt;&gt; /etc/ld.so.conf
ldconfig –v
5、测试启动amavisd
您也可以按如下命令调试启动
/usr/local/sbin/amavisd debug
6 将amavisd注册为系统服务
(1)cd /srv/amavisd-new-2.6.1
cp amavisd_init.sh /etc/init.d/amavisd
chmod +x /etc/init.d/amavisd
作者:曲宝全 2009 年10 月19 日
35 / 37
(2) 修改执行路径
vi /etc/rc.d/init.d/amavisd
prog="/usr/local/sbin/amavisd"
(3)注册服务并启动
chkconfig --add amavisd
chkconfig --levels 2345 amavisd on
service amavisd start
7、修改postfix的配置,让它能调用amavisd,以实现病毒及垃圾邮件的
过滤
(1)vi /etc/postfix/master.cf
在文末添加如下内容:
##########################################
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
#
#################################################
amavisfeed unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20
#
作者:曲宝全 2009 年10 月19 日
36 / 37
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o smtpd_restriction_classes=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters
-o local_header_rewrite_clients=
说明:注意每行“-o”前的空格(前面必须要有一个空格);
(2)vi /etc/postifx/main.cf
在文末添加如下行:
content_filter=amavisfeed:[127.0.0.1]:10024
作者:曲宝全 2009 年10 月19 日
37 / 37
8、让postfix重新加载主配置文件,并查看启动情况
postfix reload && tail -f /var/log/maillog
9、查看amavisd是否在监听10024端口,并测试服务启动情况:
[root@postfix run]# netstat -nltp |grep 10024
tcp 0 0 127.0.0.1:10024 0.0.0.0:* LISTEN
30744/amavisd (mast
10、postfix重新加载配置文件后将授权并激活"127.0.0.1:10025"端口,一
个正常的服务连接应该类同下面所
[root@postfix run]# netstat -nltp |grep 10025
tcp 0 0 127.0.0.1:10025 0.0.0.0:* LISTEN
30712/master