Postfix+MailScanner+Sophos+Spamassassin+Procmail+MailScanner-MRTG+openwebmail+snmp RH90&RHEL30安装笔
****************************************************
Postfix 使用
1.SASL smtp认证(提供user在家或出外的smtp认证服务)
2.Procmail信件过滤(基本过滤)
3.Spamassassin自我学习的垃圾信过滤
4.Mailscanner信件扫瞄闸道
5.Sophos欧洲最大的扫毒软体
6.SNMP(MRTG需用到)
7.MailScanner-MRTG(用来监控邮件处理及系统流量)
8.Openwebmail
mail system for RedHat 9.0 &RHEL3.0 Total solution安装笔记
--written by Dandy
*****************************************************
1.所有相关的套件--Postfix,Procmail,SASL,Spamassasin在Redhat 9.0都已内建,版本如下:
postfix-1.1.11-11
procmail-3.22-9
spamassassin-2.44-11.8.x
cyrus-sasl-2.1.10-4
剩下只有Mailscaner跟Sophos需download来安装,请到以下download(今天是2004/09/27,版本可能会不同):
Sophos AntiVirus For Linux v3.86.0
http://downloads.sophos.com/dp/full/l....glibc.2.2.tar.Z (p.s.:Sophos依glibc分成数个版本,像libc5使用libc5.tar.Z,redhat 7.0之前的glibc2.2之前使用标准的libc6.glibc.tar.Z,
Redhat9.0&RedHat Enterprise 3.0则使用libc6.glibc2.2.tar.Z)
Perl SAVI Module--是一个Sophos本身的perl模组
http://www.csupomona.edu/~henson/...AVI-Perl/dist/ Sophos ide update --自动更新病毒码
http://www.ijs.si/software/sophos-ide-u...update_1.2.tar.gz Sophie--一个使用 Sophos Anti Virus Library 的扫毒介面(非必要安装)
http://www.vanja.com/tools/sop...04rc2.tar.gz Mailscanner 4.33.3-1 for RedHat Linux (and other RPM-based Linux distributions)
http://freshmeat.net/redir/mailscanner/17417...-4.33.3-1.rpm.tar.gz MailScanner MRTG--用来监控邮件处理流量
mailscanner-mrtg-0.09.03-1.noarch
ftp://fr2.rpmfind.net/linux/sourceforge/m/ma/mailsc...tg-0.09.03-1.noarch.rpm Openwebmail 2.41.1
http://openwebmail.org/openwebmail/download/red...bmail-2.41-1.i386.rpm http://openwebmail.org/openwebmail/download/redhat/rp...-Iconv-1.2-RH80.i386.rpm http://openwebmail.org/openwebmail/download/redhat/rpm...ss-Zlib-1.21-RH9.i386.rpm http://openwebmail.org/openwebmail/download/redhat/rpm/pack...SpeedyCGI-2.21-RH9.i386.rpm ---------------------------------------------------------------------------------------------------------------------------------------------
2.因postfix和sasl套件在redhat9.0中已全部都有安装,
先停掉原先预设的sendmail
]#/etc/rc.d/init.d/sendmail stop
将postfix加入启动的服务
]#chkconfig --add postfix
启动ntsysv,将sendmail换成postfix,这样重新开机时便会是postfix,而不会是sendmail
]#ntsysv
再来设定 Postfix,编辑 /etc/postfix 目录下的 main.cf 此设定档。
请先使用文字编辑器开启 /etc/postfix/main.cf 设定档,在档尾的部份开始新增设定,将以下加入main.cf
#SMTP sasl Auth
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated permit_auth_destination permit_mynetworks,check_relay_domain reject
smtpd_client_restrictions = permit_sasl_authenticated,reject_rbl_client relay.ordb.org
smtpd_sasl_security_options = noanonymous
#Block
#smtpd_sender_restrictions = reject_unknown_sender_domain
#smtpd_client_restrictions = check_client_access regexp:/etc/postfix/access, reject_rbl_client relay.ordb.org
编辑/etc/postfix/access加入
/\.dynamic\..+\.tw/ REJECT We can't allow dynamic IP to relay!
-----------------------------------------------------------------------------------------------------------
<ps>
smtpd_sasl_auth_enable = yes //开启 smtp 认证
broken_sasl_auth_clients = yes //保持client端的相容性,例如MSOE4
smtpd_recipient_restrictions = permit_sasl_authenticated permit_auth_destination rejec //表示允许 sasl 认证,允许认证目的主机,接收本postfix为最后一站的信件。
smtpd_client_restrictions = permit_sasl_authenticated //允许用户端sasl认证
smtpd_sasl_security_options = noanonymous //允许任何非匿名的使用者
smtpd_sasl_local_domain = $myhostname //sasl的本地网域
smtpd_sender_restrictions = reject_unknown_sender_domain //阻挡网域名称错误的主机
smtpd_client_restrictions = check_client_access regexp:/etc/postfix/access //阻挡动态IP的主机,在access里设定
-----------------------------------------------------------------------------------------------------------
3.设定身份认证方式
SASL 所提供的密码认证方式共分为四种:
* PAM :使用系统的 pam 模组做为认证,在Redhat上可使用此方式
* shadow :利用系统的 /etc/shadow 档做为其身份认证的方式。但也因此则需要修改 /etc/shadow 档的存取权限,需改为 644,安全性有较大问题 。
* pwcheck :方式同 shadow 认证,但不须修改 /etc/shadow 档的存取权限,而须在每次开机时执行 pwcheck 。您也可在 /etc/rc.d/rc.local 档中加入执行叙述,适用于FreeBSD。
* sasldb :SASL本身自带的认证方法,是使用 sasl 资料库来存放使用者的帐号与密码,使用指令 saslpasswd 来新增或修改使用者帐号与密码。
saslpasswd -c -u 11way.com dandy //新增sasl用户
sasldblistusers //list sasl用户
请修改/usr/lib/sasl/smtpd.conf,修改pwcheck_method: 为你要的方式,Redhat建议使用PAM,节省建sasl帐号时间.
pwcheck_method: PAM
<ps>若是RHEL 3.0,请将/usr/lib/sasl2/smtpd.conf copy到/usr/lib/sasl再做修改
---------------------------------------------------------------------------------------------------------------------------------------------
4.由于有chroot的问题,所以sasl认证会失败,请修改 /etc/postfix/master.cf
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (50)
# ==========================================================================
smtp inet n - y - - smtpd
改成
smtp inet n n n - - smtpd
---------------------------------------------------------------------------------------------------------------------------------------------
5.postfix reload重新读取postfix设定档
. 测试 SASL
测试的方法同样是使用 telnet ,利用 telnet 指令连到 Postfix 主机端上,请执行如下的指令:
# telnet sun.xx.com 25
接着请输入下列指令:
EHLO master.planetnet.net
请注意 Postfix 所回应的讯息,如果您的设定均无误,那么应该会显示出类似下列的讯息:
250-master.planetnet.net
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250-AUTH=LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250-XVERP
250 8BITMIME
最重要的两行,在第六行与第七行,显示目前 Postfix 系统所支援的认证协定。如果您执行的结果有出现这两行即表示您的 Postfix 已可使用 SASL 认证。
---------------------------------------------------------------------------------------------------------------------------------------------
6.设定outlook或outlook express,设定smtp外寄邮件伺服器需要认证.
---------------------------------------------------------------------------------------------------------------------------------------------
7.基本的信件过滤:postfix+procmail+spamassassin(使用MailScanner启动Spamassassin请跳过此项)
最简单的方式就是在/etc/procmailrc加入
:0fw
| /usr/bin/spamassassin
或(大于2MB的信不检查)
:0fw
* < 2000000
| /usr/bin/spamassassin
或使用独立的常驻程式spamc(会有较高的效能)
:0fw
| /usr/bin/spamc -s 200000
---------------------------------------------------------------------------------------------------------------------------------------------
8.完整的信件过滤是由MailScanner代替postfix执行递送程式,仅启动MTA子程式,将所收到的邮件档案先暂存在另外一个资料夹(mqueue.in或hold).
然后呼叫Spamassassin和Sophos来检查垃圾信及病毒信后,MailScanner再进行后续处理(加上spam或virus或删除等动作),然后再放回
/var/spool/mail原来的信件目录.
---------------------------------------------------------------------------------------------------------------------------------------------
9.安装Sophos AntiVirus For Linux ,Sophos提供的试用版并无使用限制,也可自动更新病毒码,商业用途请购买使用授权,费用并不太高
下载后解开安装:
]#tar zxvf llinux.intel.libc6.glibc.2.2.tar.Z
]#cd sav-install/
]#useradd sweep -g sweep
]# ./install.sh
安装完的目录如下:
执行档- binaries in /usr/local/bin
扫毒引擎- the shared library in /usr/local/lib
病毒码- the virus data in /usr/local/sav
说明文件- manual pages in /usr/local/man
<ps>如果在redhat 9.0下装了llinux.intel.libc6.tar.Z的版本,后面要安装的Sophie会产生找不到SAVIsweepFile in -lsavi的错误,当然其他的相关系统也就无法运作
---------------------------------------------------------------------------------------------------------------------------------------------
10.安装Perl SAVI Module
]#tar zxvf SAVI-Perl-0.15.tar
]#cd SAVI-Perl-0.15
修改Makefile.PL如下:
'LIBS' => ['-L/usr/local/Sophos/lib -R/usr/local/Sophos/lib -lsavi'],
作一个link让-lsavi能work:
]#cd /usr/local/lib
]#ln -s libsavi.so.3.2.07.071 libsavi.so (版本号可能会有少许差异)
安装测试:
]#perl Makefile.PL
]#make
]#make test
]#make install
OK,现在说明一下MailScanner和Sophos的关系,Sophos本身扫毒程式除了病毒引擎ide之外,另外还有自己的mail gate界面和自己的扫毒程式sweep,
MailScanner支援Sophos的方式有以下两种:
1.Virus Scanners = sophos --收信时呼叫sweep来扫瞄
2.Virus Scanners = sophossavi --直接呼叫SAVI透过sophos的lib来做扫瞄
可能是因为第二种方式比较快,所以MailScanner官方网站建议使用SAVI,若用第一种方式,需修改Incoming Queue Dir 和Qutgoing Queue Dir 的路径
---------------------------------------------------------------------------------------------------------------------------------------------
11. 安装 Sophos ide update 自动更新病毒码:
解压缩到/usr/local/bin
]#tar zxvf sophos-ide-update_1.2.tar.gz
将sophos-ide-update.pl复制到/usr/local/bin
一定要执行一次,要不然MailScanner启动Sophos时会抓不到IDE病毒引擎.
<ps>由于是由MailScanner来启动postfix/spamassassin/sophos,所以自动启动的postfix跟spamd请停掉
---------------------------------------------------------------------------------------------------------------------------------------------
11-1. 安装Sophie ,Sophie是一个使用 Sophos Anti Virus Library 的扫毒介面程式,若server未提供file server的服务,mail server是用不到的.
解压缩到/usr/local/bin
]#tar zxvf sophie-3.04rc2.tar.gz
]#./configure --with-savilib=/usr/local/lib
]#make
]#mv sophie /usr/local/bin
会产生sophie 这个 binary file(可执行档),将这个档案搬到/usr/local/bin
将原目录下的 etc/sophie.cfg 和sophie.savi 复制到 /etc 之下,
并且将 sophie.cfg内的maxproc 的参数调整为 0,
然后就可以执行 sophie -v 看有没有抓到扫毒引擎和病毒码了,
]#cd etc
]#mv sophie.cfg sophie.savi /etc
]#cd /etc
]#vi sophie.cfg
->maxprox 20改为0
]#/usr/local/bin/sophie -v
---------------------------------------------------------------------------------------------------------------------------------------------
12.安装MailScanner
MailScanner支援Postfix的详细说明:
http://www.sng.ecs.soton.ac.uk/mai...l/postfix.shtml 先别高兴,这是支援Postfix 2.x版的安装方式,由于Redhat 9预设的Postfix 1.x版并不支援header_checks map: HOLD的map方式,
所以以下会分成两个版本来进行.
先解压缩
]#tar zxvf MailScanner-4.33.3-1.rpm.tar.gz
安装(在此再次强调,安装linux时最好选择Everything,将所有套件全部装进去,以rh8.0/9.0来说,才不过占了4-5G,比起后来缺东缺西的痛苦,会快乐得多)
]#./install.sh
<p.s.>会等待需多点时间,因为除了MailScanner外还会有其他必须要用到的套件,大部份是perl的套件
---------------------------------------------------------------------------------------------------------------------------------------------
13-1.MailScanner for Postfix 2.x的设定方式
安装完成后,MailScanner会自动帮你启动,但是因为预设启动的是sendmail,不是postfix,所以这时并未启动,先设定MailScanner.
vi /etc/postfix/main.cf
加入这行:
header_checks = regexp:/etc/postfix/header_checks
然后在/etc/postfix下增加一个header_checks检查档:
]#vi /etc/postfix/header_checks
加入这行:
/^Received:/ HOLD
编辑MailScanner的设定档
]#vi /etc/MailScanner/MailScanner.conf
修改以下项目,请依自己需求修改:
-----------------------------------------------------------
Incoming Queue Dir = /var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming
Run As User = postfix
Run As Group = postfix
MTA = postfix
Expand TNEF = no (Sophos/McAfee设定为 "no",其它是"yes")
Use SpamAssassin = yes
SpamAssassin User State Dir =/var/spool/MailScanner/spamassassin
Virus Scanning = yes
Virus Scanners = sophossavi
Sophos IDE Dir = /usr/local/sav
Sophos Lib Dir = /usr/local/lib
Monitors For Sophos Updates = /usr/local/sav/*ides.zip
Deliver Unparsable TNEF = yes (使用outlook的user可能需要)
Allow IFrame Tags = yes (允许IFrame标签的信件)
Allow Script Tags = yes (允许Script标签的信件,一些像outlook内有信纸功能的邮件需插入Script Tags)
Allow Object Codebase Tags = yes (允许 HTML中的 <Object Codebase=...> 标签包含在邮件中)
Attachment Encoding Charset = ISO-8859-1 (将感染通知讯息以附件寄送,并编码为ISO-8859-1,若Warning Is Attachment = no,不以附件寄送,可能产生乱码)
Still Deliver Silent Viruses = no (通知收信者有人寄送Silent Virus[伪造地址病毒]给你)
Quarantine Silent Viruses = no (不隔离Silent Virus,以免占空间)
Mark Infected Messages = no (通知收信者去阅读那些替代原本被感染的附件的感染报告档案)
Mark Unscanned Messages = no (若档案未经扫瞄,通知你的使用者不要去使用这个邮件。)
Rebuild Bayes Every = 3600
SpamAssassin Auto Whitelist = yes
-----------------------------------------------------------
增加目录
]#mkdir /var/spool/postfix/hold --MailScanner 该扫描的邮件目录
]#mkdir /var/spool/MailScanner/spamassassin
]#chown postfix.postfix /var/spool/postfix/hold
修改/var/spool/MailScanner里目录的属性
]#chown postfix.postfix /var/spool/MailScanner/incoming
]#chown postfix.postfix /var/spool/MailScanner/quarantine
]#chown postfix.postfix /var/spool/MailScanner/spamassassin
关掉postfix,启动MailScaner,
]#/etc/rc.d/init.d/postfix stop
]#/etc/rc.d/init.d/MailScanner start
工作原理如下:
SMTP 25--->MailScanner启动Postfix MTA--->HOLD Queue(/var/spool/postfix/hold)
--->Spam & Virus Check--->MDA(Procmail)--->/var/spool/mail
|
|--->/var/spool/MailScanner/spamassin or quarantine & send notify
---------------------------------------------------------------------------------------------------------------------------------------------
13-2.MailScanner for Postfix 1.x的设定方式
Mailscanner在postfix 1.x跟2.x的工作原理稍有不同,由于Postfix 1.x不支援MailScanner启动Postfix的Hold Queue动作,
因此要启动两个postfix,分别做为incoming跟delivery的动作,工作原理如下:
SMTP 25--->Postfix.in->Queue in /var/spool/postfix.in--->MailScanner启动
--->Spam & Virus Check--->Postfix--->MDA(Procmail)--->/var/spool/mail
|
|--->/var/spool/MailScanner/spamassin or quarantine & send notify
所以会看到两个postfix的master process,MailScanner for Postfix 2.x版只有一个.
9998 ? S 0:00 [master]
10001 ? S 0:00 \_ [pickup]
10003 ? S 0:01 \_ [nqmgr]
10065 ? S 0:00 [master]
10070 ? S 0:00 \_ [pickup]
10071 ? S 0:00 \_ [nqmgr]
10084 ? S 0:00 [MailScanner]
10085 ? S 2:46 \_ [MailScanner]
10089 ? S 3:05 \_ [MailScanner]
先copy一份postfix的设定档
]#cp -rp /etc/postfix /etc/posfix.in
修改/etc/postfix.in/main.cf,加入此行,以确保incoming的postfix不拒收任何信,并将queue_directory由/var/spool/postfix改为postfix.in
defer_transports = smtp local virtual relay
queue_directory = /var/spool/postfix.in
将正常的Postfix的SMTP功能停掉,以确保所有的SMTP都是走incoming postfix进出的:
修改 /etc/postfix/master.cf,修改此行,前面加上"#":
#smtp inet n n n - - smtpd
接下来将 /var/spool/postfix, 复制一份postfix.in,作为incoming postfix的目录
]#cp -rp /var/spool/postfix /var/spool/postfix.in
增加spamassassin的目录
mkdir /var/spool/MailScanner/spamassassin
修改/var/spool/MailScanner里目录的属性
]#chown postfix.postfix /var/spool/MailScanner/incoming
]#chown postfix.postfix /var/spool/MailScanner/quarantine
]#chown postfix.postfix /var/spool/MailScanner/spamassassin
编辑MailScanner的设定档
]#vi /etc/MailScanner/MailScanner.conf
修改以下项目,请依自己需求修改:
-----------------------------------------------------------
Incoming Queue Dir = /var/spool/postfix.in/deferred
Outgoing Queue Dir = /var/spool/postfix/incoming
Run As User = postfix
Run As Group = postfix
MTA = postfix
Expand TNEF = no (Sophos/McAfee设定为 "no",其它是"yes")
Use SpamAssassin = yes
SpamAssassin User State Dir =/var/spool/MailScanner/spamassassin
Virus Scanning = yes
Virus Scanners = sophossavi
Sophos IDE Dir = /usr/local/sav
Sophos Lib Dir = /usr/local/lib
Monitors For Sophos Updates = /usr/local/sav/*ides.zip
Deliver Unparsable TNEF = yes (使用outlook的user可能需要)
Allow IFrame Tags = yes (允许IFrame标签的信件)
Allow Script Tags = yes (允许Script标签的信件,一些像outlook内有信纸功能的邮件需插入Script Tags)
Allow Object Codebase Tags = yes (允许 HTML中的 <Object Codebase=...> 标签包含在邮件中)
Attachment Encoding Charset = ISO-8859-1 (将感染通知讯息以附件寄送,并编码为ISO-8859-1,若Warning Is Attachment = no,不以附件寄送,可能产生乱码)
Still Deliver Silent Viruses = no (通知收信者有人寄送Silent Virus[伪造地址病毒]给你)
Quarantine Silent Viruses = no (不隔离Silent Virus,以免占空间)
Mark Infected Messages = no (通知收信者去阅读那些替代原本被感染的附件的感染报告档案)
Mark Unscanned Messages = no (若档案未经扫瞄,通知你的使用者不要去使用这个邮件。)
Rebuild Bayes Every = 3600
SpamAssassin Auto Whitelist = yes
-----------------------------------------------------------
关掉postfix,启动MailScaner,
]#/etc/rc.d/init.d/postfix stop
]#/etc/rc.d/init.d/MailScanner start
检查MailScanner的启动状况
]#check_MailScanner
MailScanner running with pid 10084 10085 10089 10990
---------------------------------------------------------------------------------------------------------------------------------------
14-1.设定Spamassassin,在此又发生一个问题,RedHat 9.0所附的Spamassassin是
spamassassin-2.44-11.8.x,此版似乎不支援下列几个参数,包含sa-learn跟bayes也无法使用:
#use_bayes 1
#bayes_path /var/spool/MailScanner/spamassassin
#auto_learn 1
#use_razor2 1
#use_dcc 1
#use_pyzor 1
#always_add_headers 0
#report_safe 0
所以呢,设定到此,再次分成两部份来讨论,如果是不想使用sa-learn自动学习和bayes贝氏过滤法的user,MailScanner还有Auto Whiltelist可以用,
加上一些手动的规则设定,应该也足以应付大部份的spam,如果想升级,设定参数和方式会有所不同,以下分述:
(1)由于spamassassin是由MailScanner来控制启动,所以设定档local.cf现在改成MailScanner的设定档spam.assassin.prefs.conf
下列参数可能会对我们的设定有帮助:
Spam Score Character = * (以s代替spamassassin的分数,老实说,个人觉得score比较好用,你也可以用*代替)
SpamScore Number Instead Of Stars = yes (用分数代替几颗星,这是原本Spamassassin的方式)
Spam Checks = yes
Use SpamAssassin = yes
SpamAssassin Auto Whitelist = yes (自动加入Whitelist,就是非spam清单)
Required SpamAssassin Score = 6 (超过6分就动作)
High SpamAssassin Score = 10 (超过10就执行高度动作)
(2)spam.assassin.prefs.conf的设定
auto_whitelist_path /var/spool/MailScanner/spamassassin/auto-whitelist
auto_whitelist_file_mode 0600
#bayes_path /var/spool/MailScanner/spamassassin/bayes
#bayes_file_mode 0600
ok_locales zh en
ok_languages zh en
skip_rbl_checks 1 --如果不想使用RBL过滤规则的话,此项启动,因RBL除真正是垃圾信外,还涉及一些被relay的转信站,使用RBL可能会漏掉一些重要的信
#use_bayes 1 --使用Bayes
(3)filename.rules.conf的设定,请自行修改,我只修改接收.chm的附档,因为公司会用到.
allow \.chm$
---------------------------------------------------------------------------------------------------------------------------------------
14-2.安装新版的Spamassassin
下载新版的spamassassin-3.0.0-0_18 for RH9
ftp://ftp.pbone.net/mirror/atrpms.physik.fu-berlin.de/dist/...n-3.0.0-0_18.rh9.at.i386.rpm ]#rpm -Uvh spamassassin-3.0.0-0_18.rh9.at.i386.rpm
在设定Spamassassin之前,我们可能也要先安装Spamassassin所支援的下列模组,
这些工具都是利用 cryptographic hash 或 checksum 和特征比对的方式,作为判断垃圾信件的依据.
-------------RPM package-----------------------
DCC(Distributed Checksum Clearinghouse)
ftp://ftp.pbone.net/mirror/atrpms.physik.fu-berli....2.53-6.rh9.at.i386.rpm Pyzor
ftp://ftp.pbone.net/mirror/atrpms.physik.fu-berlin.d....4.0-2.rh9.at.noarch.rpm http://download.atrpms.net/production/package...s-59-1.at.noarch.rpm -------------RPM package-----------------------
Razor
ftp://ftp.pbone.net/mirror/atrpms.physik.fu-berlin.de/dis...ents-2.61-7.rh9.at.i386.rpm 另外再加这几个rpm,Spamassassin才装得上
ftp://ftp.pbone.net/mirror/www.spenneberg.org/Firewall/Am...-SSLeay-1.25-rh9_1.i386.rpm http://crash.fce.vutbr.cz/crash-hat/1/perl-Net...ay-1.25-1.noarch.rpm ftp://ftp.pbone.net/mirror/atrpms.physik.fu-berlin.de/dist/rh9/p...t-SSL-0.95-1.rh9.at.noarch.rpm ftp://ftp.pbone.net/mirror/atrpms.physik.fu-berlin.de/dis...-DNS-0.46-2.rh9.at.i386.rpm 开始设定:
(1)先设定/etc/mail/spamassassin/local.cf
-----------------------------------------------------------------------------
use_bayes 1
bayes_path /var/spool/MailScanner/spamassassin/bayes
auto_learn 1
skip_rbl_checks 0
use_razor2 1
use_dcc 1
use_pyzor 1
always_add_headers 0
dcc_add_header 0
report_safe 0
use_terse_report 0
spam_level_stars 1
dns_available yes
ok_languages zh en
ok_locales zh en
whitelist_from *@Newsletters.Microsoft.com
# From addr like <some chinese>@mydomain,将以下的mai\l.com\.tw改成您的domain
header __FROM_8BIT_LOCAL From:addr =~ /[a-zA-Z0-9_-]*[\x80xff][a-zA-Z0-9_-]*\@mail\.com\.tw/i
header __TO_8BIT_LOCAL To:addr =~ /[a-zA-Z0-9_-]*[\x80-\xff][a-zA-Z0-9_-]*\@mail\.com\.tw/i
header __CC_8BIT_LOCAL Cc:addr =~ /[a-zA-Z0-9_-]*[\x80-\xff][a-zA-Z0-9_-]*\@mail\.com\.tw/i
meta LOCAL_8BIT_USER (__FROM_8BIT_LOCAL || __TO_8BIT_LOCAL || __CC_8BIT_LOCAL)
describe LOCAL_8BIT_USER From or To a chinese@mydomain
score LOCAL_8BIT_USER 3.0
-----------------------------------------------------------------------------
确认各参数正常运作,各相关模组也正常
]#spamassassin --lint -D
(2)再来设定MailScanner.conf,下列参数可能是您有兴趣的:
Spam Score Character = * (以s代替spamassassin的分数,老实说,个人觉得score比较好用,你也可以用*代替)
SpamScore Number Instead Of Stars = yes (用分数代替几颗星,这是原本Spamassassin的方式)
Spam Checks = yes
Use SpamAssassin = yes
SpamAssassin Auto Whitelist = yes (自动加入Whitelist,非spam清单)
Required SpamAssassin Score = 6 (超过6分就动作)
High SpamAssassin Score = 10 (超过10分就执行高度动作)
Rebuild Bayes Every = 0 (每隔几秒重建Bayes资料库)
Wait During Bayes Rebuild = no (是否需等待重建完成)
(3)spam.assassin.prefs.conf的设定
auto_whitelist_path /var/spool/MailScanner/spamassassin/auto-whitelist
auto_whitelist_file_mode 0600
bayes_path /var/spool/MailScanner/spamassassin/bayes
bayes_file_mode 0600
ok_locales zh en
ok_languages zh en
skip_rbl_checks 1 --如果不想使用RBL过滤规则的话,此项启动,因RBL除真正是垃圾信外,还涉及一些被relay的转信站,使用RBL可能会漏掉一些重要的信
use_bayes 1 --使用Bayes
(4)filename.rules.conf的设定
allow \.chm$
(5)自动学习
先建立两个帐号,spam跟nospam
]#useradd spam
]#useradd nospam
以后是垃圾信就转信到spapm的帐号,非垃圾信被加上{spam?}就转到nospam去,然后用下列指令学习:
]# sa-learn -D --showdots --spam --mbox /var/mail/spam
]# sa-learn -D --showdots --ham --mbox /var/mail/nospam
也可以使用以下的Script:
######################################
#!/bin/sh
SPAM=/var/mail/spam
NOTSPAM=/var/mail/nospam
LOGFILE=/var/log/learn.spam.log
PREFS=/etc/MailScanner/spam.assassin.prefs.conf
SALEARN=/usr/bin/sa-learn
date >> $LOGFILE
if [ -f $SPAM ]; then
BOX=${SPAM}.processing
mv $SPAM $BOX
sleep 5 # Wait for writing current message to complete
$SALEARN --prefs-file=$PREFS --spam --mbox $BOX >> $LOGFILE 2>&1
rm -f $BOX
fi
if [ -f $NOTSPAM ]; then
BOX=${NOTSPAM}.processing
mv $NOTSPAM $BOX
sleep 5 # Wait for writing current message to complete
$SALEARN --prefs-file=$PREFS --ham --mbox $BOX >> $LOGFILE 2>&1
rm -f $BOX
fi
######################################
把以上的内容存成spam-learn。
] # chmod 755 spam-learn
] # mv spam-learn /etc/cron.daily
] # /etc/init.d/crond restart
---------------------------------------------------------------------------------------------------------------------------------------
15.SNMP的设定
snmp从RH9.0后就改为net-snmp,所以跟之前设定略有差别,请修改下列设定档:
]#vi /etc/snmp/snmpd.conf
com2sec local localhost public
com2sec mynetwork 192.168.0.0/24 public
group MyRWGroup v1 local
group MyROGroup v1 mynetwork
group MyRWGroup v2c local
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
view all included .1 80
access MyROGroup "" any noauth prefix all none none
access MyRWGroup "" any noauth prefix all all all
syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root (configure /etc/snmp/snmp.local.conf)
pass .1.3.6.1.4.1.4413.4.1 /usr/bin/ucd5820stat
<ps>请注意,mailscanner-mrtg使用v2c的界面取得数据,group MyRWGroup v2c local此行一定要有.
修改完请重新启动,/etc/rc.d/init.d/snmpd restart
测试snmp,
]#snmpwalk localhost -c public -v 1
测试mailscanner-mrtg使用的v2c uptime
]#snmpwalk -v 2c -c public localhost uptime
---------------------------------------------------------------------------------------------------------------------------------------
16.Mailscanner-MRTG
rpm -ivh mailscanner-mrtg-0.09.03-1.noarch
可能会稍微久一点.
修改设定档
vi /etc/MailScanner/mailscanner-mrtg.conf
修改下列参数:
MTA = postfix
Incoming Queue Dir = /var/spool/postfix.in/deferred或/var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming
MailScanner Work Directory = /var/spool/MailScanner/incoming-->/var/
Spool Directory = /var/spool/mailscanner-mrtg-->/var/
------------------------------------
<ps>此两项是用df指令来获得磁碟空间,所以要求实际mount point,可以看看原来MailScanner Work Directory和Spool Directory
是在那个磁区底下,直接设定即可,因为其重点在于监控这两个目录所在空间是否不足,官方网站提出使用tmpfs另外分出两个挂载点,
个人觉得并不是非常好的解法,因为无法提供正确空间的使用数据,仅能够消除错误的log而已,请参考.
以我的例子,此两个目录都在/var的mount point上,所以都设成/var.
------------------------------------
Use SNMP = yes
SNMP Community = public
------------------------------------
若SNMP未启动,会有cpu ,memory,iptraffic 三项图形无法获得数据.
<ps>mailscanner-mrtg所提供的数据由/usr/sbin/mailscanner-mrtg而来,共有下列几项:
loadavg : 主机平均负载
cpu : CPU 使用率
memory : 记忆体用量
iptraffic : 伺服器网路流量
inqueue : 等待传送出去的档案数量
outqueue : 等待传出的档案数量
quarantine : 隔离区的档案/信件数量
rootusage : 在根目录(/)上的磁碟用量
spoolusage : 在Spool Filesystem上的磁碟用量
tmpfsusage : 在Work Filesystem上的磁碟用量
mailscanner : MailScanner 子程序数量
mta : MTA 递送程序
mail :信件递送
mailbytes : 邮件传输量
virus : 未通过病毒或内容检测的信件
spam : 垃圾邮件数量
virusratio : 病毒或内容禁止信件占所有邮件的比率
spamratio : 垃圾信件占所有邮件的比率
batchsize : 每一批次平均处理的信件数量
speed : 处理速度
再来修改/etc/mrtg/mailscanner-mrtg.cfg
Workdir: /var/www/html/mailscanner-mrtg <--流量网页产生目录
IconDir: /mrtg/
WriteExpires: Yes
Interval: 5
Refresh: 300
Language: big5 <--设定为中文
产生index.html网页
]# indexmaker --output=/var/www/html/mailscanner-mrtg/index.html /etc/mrtg/mailscanner-mrtg.cfg
<ps>在RH9.0有个indexmaker的bug,原文如下:
This is caused by an incompatibility between MRTG and PERL 5.8 which MRTG uses to generate files.
The MRTG site claims this was fixed in version 2.9.22, but this version of MRTG seems to fail under RedHat.
Indexmaker MRTG_LIB Errors With RedHat 9 and 8.0
RedHat versions 8 and 9 give an error like this when running indexmaker.
简单来说就是perl5.8和mrtg-2.9.17-13的相容性问题,不过还是可以用,如过觉得碍眼,请修改这个档案:
]#vi /usr/lib/mrtg2/MRTG_lib.pm
将@ISA = qw(Exporter $VERSION);
改为
@ISA = qw(Exporter);
若另有Malformed UTF-8 character (unexpected end of string) at /usr/bin/../lib/mrtg2/locales_mrtg.pm line 614的错误,是另外一个locale的bug,
请先执行 export LANG=C 再重跑 mrtg 命令。
再来测试参数档,需连续run三次才不会有错误产生.
mrtg /etc/mrtg/mailscanner-mrtg.cfg
不过若有错误产生,主要是SNMP跟tmpfs的参数未设好,请再仔细检查.
完成后可以在以下看到流量:
http://your.mail.com/...ner-mrtg <ps>在RHEL3.0由于将MRTG有独立设定存取模组,所以请修改以下档案,可以解决mrtg icon无法出来的问题:
]#vi /etc/httpd/conf.d/mrtg.conf
Allow from localhost -->Allow from all
从localhost改为全部可以浏览
---------------------------------------------------------------------------------------------------------------------------------------
17.Openwebmail安装
openwebmail需要先安装下列4个套件:
perl-CGI
perl-Compress-Zlib
perl-Text-Iconv
perl-suidperl
其中 perl-CGI和perl-suidperl-5.8.0应该已经存在,所以再新增其他两个:
]#rpm -Uvh perl-Text-Iconv-1.2-RH80.i386.rpm
]#rpm -Uvh perl-Compress-Zlib-1.21-RH9.i386.rpm
然后开始装openwebmail
]#rpm -ivh openwebmail-2.41-1.i386.rpm
装完后请修改/var/www/cgi-bin/openwebmail/etc/defaults/dbm.conf,修改下列三项:
dbm_ext .db
dbmopen_ext .db
dbmopen_haslock yes
然后执行起始设定:
]#/var/www/cgi-bin/openwebmail/openwebmail-tool.pl --init
若要设定中文界面为预设界面,请修改下列档案:
]#vi /var/www/cgi-bin/openwebmail/etc/openwebmail.conf
-->default_language zh_TW.Big5
---------------------------------------------------------------------------------------------------------------------------------------
18.其他小细节
MailScanner有三个定时启动的成序,可依环境自行搬到该执行的周期:
清除隔离档案--预设每天一次
/etc/cron.daily/clean.quarantine
检查MailScanner--预设每小时一次
/etc/cron.hourly/check_MailScanner
更新病毒码--预设每小时一次
/etc/cron.hourly/update_virus_scanners
若Apache的MRTG出来的网页以UTF为主,切换麻烦的话, 请修改/etc/httpd/conf/httpd.conf
将AddDefaultCharset ISO-8859-1修改如下
AddDefaultCharst Big5
语言顺序
LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv tw
改成
LanguagePriority tw en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv
---------------------------------------------------------------------------------------------------------------------------------------