一、防垃圾邮件及防病毒软件安装的介绍
一般来说,从广域网传到我们的服务器上的邮件,经过服务器的 postfix 直接传给用户,并不做任何处理。这样会使我们的服务器很不安全,我们的邮件系统成了公用的邮件引擎。
现在我们利用 Amavisd-new (内容过滤)引擎 来做防病毒及防垃圾邮件处理。
过程说明:
广域网发过来的邮件同样会交给 postfix 引擎处理,但是我们配置了 Amavisd-new 内容过滤引擎,邮件会按照箭头指向流动, Amavisd-new 首先会把邮件交给 clamd 处理, clamd 会检查邮件及其附录内容是否包含病毒,如果检查有病毒, clamd 会把邮件放到一个病毒目录下面,并且向病毒邮件管理员 (virusalert@mediawoz.cn) 发信,说:您收到一份病毒邮件 , 同时把病毒邮件放到 /var/virusmails/ 。如果邮件没有病毒, clamd 会重新把邮件发给 Amavisd-new 过滤器; Amavisd-new 过滤器再把邮件交由 spamd 处理, spamd 会检查邮件是否为垃圾邮件,这里有 N 种对垃圾邮件的处理方式,在 spmad 里有配置。配置 spmad 会详细介绍。如果不是垃圾邮件, spamd 会再次把邮件发给 Amavisd-new ,此时 Amavisd-new 会把过滤的结果传给 postfix ,在经过 postfix 交给用户。
下面我们开始配置。
二、 postfix 的配置
因为 postfix 会把邮件交由 Amavisd-new 处理。所以我们要在 /etc/postfix/main.cf 里做相应的修改。在上次配置好的 main.cf 中添加两行
[root@mail postfix]# vi /etc/postfix/main.cf
#======================= content filter =====================
soft_bounce=yes
content_filter = smtp-amavis:[127.0.0.1]:10024
添加下面的文件内容
[root@mail postfix]# vi /etc/postfix/master.cf
#
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd
#submission inet n - n - - smtpd
# -o smtpd_enforce_tls=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#smtps inet n - n - - smtpd
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#628 inet n - n - - qmqpd
pickup fifo n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
#qmgr fifo n - n 300 1 oqmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
smtp unix - - n - - smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix - - n - - smtp
-o fallback_relay=
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - n - - showq
error unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent. See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop unix - n n - - pipe
flags=DRhu user=postfix argv=/usr/local/bin/maildrop -d ${recipient}
#
# The Cyrus deliver program has changed incompatibly, multiple times.
#
old-cyrus unix - n n - - pipe
flags=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user}
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
cyrus unix - n n - - pipe
user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}
#
# See the Postfix UUCP_README file for configuration details.
#
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
#
# interface used to communicate with amavisd-new
#
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
三、 clamd 的配置
1 、所需要的软件包
视频: http://www.boobooke.com/v/bbk1106/
下载地址
http://www.rpmfind.net/linux/rpm2html/search.php?query=clamav-db // clamav-db
http://www.rpmfind.net/linux/rpm2html/search.php?query=clamd // clamd
http://fr2.rpmfind.net/linux/rpm2html/search.php?query=clamav // clamav
[root@mail postfix]# ls –l
-rw-r--r-- 1 root root 2763940 Feb 4 14:29 clamav-0.95.3-1.el4.rf.i386.rpm
-rw-r--r-- 1 root root 23781899 Feb 4 14:38 clamav-db-0.95.3-1.el4.rf.i386.rpm
-rw-r--r-- 1 root root 209763 Feb 4 14:21 clamd-0.95.3-1.el4.rf.i386.rpm
[root@mail postfix]# rpm -i clamav-0.95.3-1.el4.rf.i386.rpm
[root@mail postfix]# rpm -i clamav-db-0.95.3-1.el4.rf.i386.rpm
[root@mail postfix]# rpm -i clamd-0.95.3-1.el4.rf.i386.rpm
注:在配置 clamd 之前要确保你的电脑能上网,需要配置你的网管, DNS 。否则病毒库不能更新。
确保机器能上网之后,我们来配置 clamd 相关文件
主要配置文件为 /etc/clamd.conf
[root@mail etc]# cd /etc/
[root@mail etc]# vi clamd.conf
这个文件里的内容一般不做修改,我们只要默认就够用了,下面我介绍几个参数,以便以后增强病毒过滤时做修改
ScanOLE2 // 打开 OFFICE 文档扫描
ScanMail // 打开邮件扫描
ScanArchive // 扫描压缩包
ArchiveMaxFileSize 10M 最大扫描压缩包为 10M ,大于 10M 不扫描
ArchiveMaxRecursion 8 扫描压缩包 8 层,只扫描 1~8 层。 8 层以上的文件内容不扫描
ArchiveMaxFiles 1000 最多扫描压缩包内 1000 个文件
[root@mail etc]# cd /etc/cron.daily/
[root@mail cron.daily]# ls
00-logwatch 00-makewhatis.cron 0anacron freshclam hichina logrotate prelink rpm slocate.cron tmpwatch yum.cron
[root@mail cron.daily]# sh -x freshclam // 更新病毒库
在 /etc 下面有很多 cron 的目录
[root@mail etc]# ls cron*
cron.deny crontab
cron.d:
cron.daily:
00-logwatch 00-makewhatis.cron 0anacron freshclam hichina logrotate prelink rpm slocate.cron tmpwatch yum.cron
cron.hourly:
hichina
cron.monthly:
0anacron
cron.weekly:
00-makewhatis.cron 0anacron yum.cron
[root@mail etc]#
如果把 freshclam 这个脚本放到不同的目录下面,就会不同的时间去更新病毒库。
如:放到 cron.monthly 下面,就每个月更新一次。默认在 cron.daily 下面。
病毒更新的日志会在 /var/log/clamav/freshclam.log
[root@mail etc]# chkconfig clamd on // 开机自启动
[root@mail etc]# /etc/init.d/clamd start
[root@mail etc]# vi /var/log/clamav/clamd.log // 查看 clamd 日志
四、 splamd 配置
视频: http://www.boobooke.com/v/bbk1108/
下载地址 http://dag.wieers.com/rpm/packages/
我们的服务器为 REL4 所以要求软件包
[root@mail ~]# ll
spamassassin-3.1.8-1.el4.rf.i386.rpm
[root@mail postfix]# vi /etc/mail/spamassassin/local.cf
# These values can be overridden by editing ~/.spamassassin/user_prefs.cf
# (see spamassassin(1) for details)
# These should be safe assumptions and allow for simple visual sifting
# without risking lost emails.
required_hits 18.5 // 得分 18.5 以上算是垃圾邮件
report_safe 0 // 要如何处理垃圾邮件。如果邮件还会经过防毒程序的扫描处理,所以必须设定为 0
rewrite_header Subject [SPAM] // 在已判定的垃圾邮件的标题加上标记
# Enable the Bayes system
use_bayes 1
# Enable Bayes auto-learning
bayes_auto_learn 1
# Enable or disable network checks
skip_rbl_checks 1
# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_locales zh en
ok_languages zh en
score HEADER_8BITS 0
score HTML_COMMENT_8BITS 0
score SUBJ_FULL_OF_8BITS 0
score UPPERCASE_25_50 0
score UPPERCASE_50_75 0
score UPPERCASE_75_100 0
score NO_REAL_NAME 4.000
score SPF_FAIL 10.000
score SPF_HELO_FAIL 10.000
score BAYES_99 4.300
score BAYES_90 3.500
score BAYES_80 3.000
#header __FROM_TEATIME Received=~/from mail.mediawoz.cn/i
#header __FROM_TEATIME_IP Received=~/[222.35.138.43]/
#meta FROM_TEATIME_BUT_IP_ERROR(__FROM_TEATIME)
#describe FROM_TEATIME_BUT_IP_ERROR From mail.mediawoz.cn but ip not match
#score FROM_TEATIME_BUT_IP_ERROR 8
[root@mail postfix]# vi /etc/mail/spamassassin/v310.pre
找到
# TextCat - language guesser
#
#loadplugin Mail::SpamAssassin::Plugin::TextCat
去掉注释
# TextCat - language guesser
#
loadplugin Mail::SpamAssassin::Plugin::TextCat
// 上面是为了匹配 local.cf 的 ok_languages zh en 一行,否则报错
[root@mail postfix]# chkconfig spamassassin on
[root@mail ~]# /etc/init.d/spamassassin start
Starting spamd: [ OK ]
[root@mail ~]# vi /var/log/maillog //spamd 日志目录
[root@mail ~]# netstat –antp
tcp 0 0 127.0.0.1:783 0.0.0.0:* LISTEN 20707/spamd.pid
显示 spamd 程序成功运行
在网上下载一份 Chinese_rules.cf
http://www.ccert.edu.cn/spam/sa/Chinese_rules.cf
这份文件是国内对汉字垃圾邮件判定的一些规则,默认安装的时候都是对英文进行判定,我们在 local.cf 中添加了 ok_languages zh en 这一行,所以 spamd 会检查中文的邮件是否为垃圾邮件。这个邮件每周更新一次,所以我们还要在 crond.weekly 目录下添加更新脚本。
[root@mail ~]# cp Chinese_rules.cf /usr/share/spamassassin/
[root@mail ~]# cd /etc/cron.weekly/
[root@mail cron.weekly]# vi Chinese_rules.sh
#!/bin/bash
/usr/bin/wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf
/etc/rc.d/init.d/spamassassin restart
[root@mail cron.weekly]# chmod 755 Chinese_rules.sh
至此 spamd 垃圾过滤程序完成。
五、 amavisd 配置
1、 这个程序需要很多软件包,下面是软件包下载的地址
http://dag.wieers.com/rpm/packages/
确定你的系统里有如下软件包
首先是系统光盘应该有的,装系统时自带的软件包,我们服务器没装,所以我自己手动安装。
如果没有可以去上面那个网站去下载
我自己后安装的软件包有:
[root@mail perl-deflat]# ll
perl-Archive-Tar-1.38-1.el4.rf.noarch.rpm
perl-BSD-Resource-1.2901-1.el4.rf.i386.rpm
perl-Class-Classgen-classgen-3.03-1.el4.rf.noarch.rpm
perl-Compress-Raw-Zlib-2.008-1.el4.rf.i386.rpm
perl-DBD-mysql-4.006-1.el4.rf.i386.rpm // 这三个软件包只装一个就行,我没安装 perl-DBD-mysql-4.010-1.el4.rf.i386.rpm // 与数据库版本相关,不好修改。
perl-DBD-MySQL-4.013-2.fc12.i686.rpm
perl-Digest-HMAC-1.01-1.rhel2.1.dag.noarch.rpm // 也是版本问题,我装的 rhel2
perl-digest-hmac-1.01-66587cl.i386.rpm
perl-Digest-SHA1-2.11-4.el4.pp.i386.rpm
perl-IO-Compress-Base-2.008-1.el4.rf.noarch.rpm
perl-IO-Compress-Zlib-2.008-1.el4.rf.noarch.rpm
perl-IO-Socket-INET6-2.54-1.el4.rf.noarch.rpm
perl-IO-Socket-SSL-1.13-1.el4.rf.noarch.rpm
perl-IO-Zlib-1.09-1.el4.rf.noarch.rpm
perl-Net-DNS-0.63-1.el4.rf.i386.rpm
perl-Net-IP-1.25-1.el4.rf.noarch.rpm
perl-Net-SSLeay-1.32-1.el4.rf.i386.rpm
perl-Socket6-0.20-1.el4.rf.i386.rpm
perl-String-CRC32-1.4-1.el4.rf.i386.rpm
perl-TimeDate-1.16-1.2.el4.rf.noarch.rpm
注:我装包是遇到很多麻烦,比如版本不对,或者安装一个包会有很多依赖关系。
( 1 )装 perl-digest-hmac-1.01-66587cl.i386.rpm 的时候
[root@mail perl-deflat]# rpm -i perl-digest-hmac-1.01-66587cl.i386.rpm
error: Failed dependencies:
perl-base = 3:5.8.5 is needed by perl-digest-hmac-1.01-66587cl.i386
所以我用 perl-Digest-HMAC-1.01-1.rhel2.1.dag.noarch.rpm 来替换
( 2 ) perl-DBD-mysql-4.006-1.el4.rf.i386.rpm 这个软件包至今还没解决,它要求依赖
libmysqlclient.so.14 的依赖,但是我们的 mysql 版本是 5.1.30 是 libmysqlclient.so.16
数据库不能换,里面有很多重要的东西。所以暂时我先放下。
2 、安装好以上这些软件包之后先安装 perl-File-Temp-0.20-1.el4.rf.noarch.rpm
[root@mail amavisd]# rpm -i --nodocs perl-File-Temp-0.20-1.el4.rf.noarch.rpm
3 、安装好这些系统里应该安装的之后。我们还要安装 amavisd 依赖的一些 perl 软件包
[root@mail perl]# ls
perl-Archive-Zip-1.23-1.el4.rf.noarch.rpm
perl-BerkeleyDB-0.33-1.el4.rf.i386.rpm
perl-Convert-BinHex-1.119-2.2.el4.rf.noarch.rpm
perl-Convert-TNEF-0.17-3.2.el4.rf.noarch.rpm
perl-Convert-UUlib-1.051-1.2.el4.rf.i386.rpm
perl-IO-stringy-2.110-1.2.el4.rf.noarch.rpm
perl-MailTools-2.02-1.el4.rf.noarch.rpm
perl-MIME-tools-5.425-1.el4.rf.noarch.rpm
perl-Net-Server-0.97-1.el4.rf.noarch.rpm
perl-Unix-Syslog-1.0-1.el4.rf.i386.rpm
[root@mail perl]# rpm -i perl-*
4 、安装其他压缩及解压缩软件包
[root@mail amavisd]# rpm -i arc-5.21o-1.el4.rf.i386.rpm cabextract-1.2-1.el4.rf.i386.rpm freeze-2.5-2.2.el4.rf.i386.rpm lha-1.14i-19.2.2.rf.src.rpm lzo-1.08-4.2.el4.rf.i386.rpm lzop-1.01-2.el4.rf.i386.rpm ncompress-4.2.4-41.rhel4.i386.rpm nomarch-1.4-1.el4.rf.i386.rpm unarj-2.63-0.a.2.el4.rf.i386.rpm unrar-3.6.8-1.el4.rf.i386.rpm zoo-2.10-2.2.el4.rf.i386.rpm ripole-0.2.0-1.2.el4.rf.i386.rpm
warning: arc-5.21o-1.el4.rf.i386.rpm: V3 DSA signature: NOKEY, key ID 6b8d79e6
warning: ncompress-4.2.4-41.rhel4.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
warning: user dag does not exist - using root
warning: group dag does not exist - using root
warning: user dag does not exist - using root
warning: group dag does not exist - using root
warning: user dag does not exist - using root
warning: group dag does not exist - using root
warning: user dag does not exist - using root
warning: group dag does not exist - using root
warning: user dag does not exist - using root
warning: group dag does not exist - using root
warning: user dag does not exist - using root
warning: group dag does not exist - using root
warning: user dag does not exist - using root
warning: group dag does not exist - using root
一些 warning 先不用去管他
5 、安装 amavisd
[root@mail amavisd]# rpm -i amavisd-new-2.5.4-1.el4.rf.i386.rpm
warning: amavisd-new-2.5.4-1.el4.rf.i386.rpm: V3 DSA signature: NOKEY, key ID 6b8d79e6
[root@mail amavisd]#
6 、配置 amavisd
Amavisd 的文档目录
root@mail amavisd]# cd /usr/share/doc/amavisd-new-2.5.4/
[root@mail amavisd-new-2.5.4]# ls
AAAREADME.first images README.contributed README.exim_v4 README.old.scanners README.sendmail RELEASE_NOTES
amavisd.conf LDAP.schema README.courier README.exim_v4_app README.performance README.sendmail-dual screen.css
amavisd.conf-default LICENSE README.courier-old README.exim_v4_app2 README.policy-on-notifications README.sendmail-dual.old test-messages
amavisd.conf.orig MANIFEST README.customize README.ldap README.postfix README.sql TODO-SNMP-AGENT
amavisd.conf-sample README.banned README.exim_v3 README.lookups README.postfix.html README.sql-mysql
amavisd-new-docs.html README.chroot README.exim_v3_app README.milter README.protocol README.sql-pg
[root@mail amavisd-new-2.5.4]# vi amavisd.conf-sample
这个文档里有 amavisd 的详细说明,各个参数的使用都可以找到。
下面我们来配置 amavisd
直接改下面的配置文件没有关系, /usr/share/doc/amavisd-new-2.5.4/ 下面有备份
[root@mail amavisd-new-2.5.4]# cd /etc/
[root@mail etc]# vi amavisd.conf
注意以下几个地方,其余地方可以按默认配置
$mydomain = 'mediawoz.cn'; # 改成我们自己的邮件域
$max_servers = 2 ;
# 此处的 2 要与 /etc/postfix/master.cf 文件里
#smtp-amavis unix - - n - 2 smtpd
# 相对应,改一处,则另一处也要修改。
@local_domains_maps = ( [".$mydomain"] );
# 注意,现在我们就一个邮件域,以后要多个邮件域则要把你所有的域名添加到这里。
$final_spam_destiny = D_PASS;
# 对垃圾邮件的处理方式
#D_PASS 不做任何处理,直接送给收件人
#D_DISCARD 直接扔掉,不传送给发件人及收件人
#D_REJECT 不传给收件人。发件人会收到拒绝传送的信息
#D_BOUNCE # 不传送给收件人,也不给发件人。除了定义在 $viruses_that_fake_sender_re
# 病毒名称外的信件人, amavisd-new 会传送 DSN 讯息给发件人。
$sa_auto_whitelist = 1; # 打开发件人白名单,如果发件人在白名单里,怎不认为
# 是垃圾邮件
$sa_mail_body_size_limit = 200*1024; # 超过特定大小的邮件不经过 spmad 扫描
### 配置垃圾邮件的分值 ###
$sa_tag_level_deflt = 4.0; # 超过这个分数者,才视为垃圾邮件打分数
# 加入 X-Spam-Status 及 X-Spam-Level 信息
$sa_tag2_level_deflt = 18.5; # 超过这个分数者,才允许在邮件标题加入 spam 信息加入 #x-Spam-Flag:YES 及改写主题
$sa_kill_level_deflt = 10; # 超过这个分数者,肯定是垃圾邮件了,备份后删除邮件,并发
# 信给垃圾邮件管理员
$sa_dsn_cutoff_level = 9; # 超过这个分数者,将不会发出 DSN 信息
$sa_spam_subject_tag = '***SPAM*** '; # 在已判定是垃圾邮件标题上加上标记
read_hash(/%whitelist_sender, '/var/amavis/whitelist');
read_hash(/%blacklist_sender, '/var/amavis/blacklist');
找到
['ClamAV-clamd',
/&ask_daemon, ["CONTSCAN {}/n", "/var/run/clamav/clamd.sock "],
qr//bOK$/, qr//bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
把前面的数据去掉,注意红字部分,找到你系统里对应的 clamd.sock
[root@mail ~]# touch /var/amavis/whitelist
[root@mail ~]# touch /var/amavis/blacklist
[root@mail ~]# chown amavis:amavis /var/amavis/whitelist
[root@mail ~]# chown amavis:amavis /var/amavis/blacklist
注:登记在 whitelist 的邮件地址或域名均不会被 spamd 打分为垃圾邮件
登记在 blacklist 的邮件地址或域名均会被 spamd 视为垃圾邮件
写法每行一个邮件地址或域名
*@boss.com
修改了这两个文件之后,执行 /etc/init.d/amavisd reload 重新读取配置文件,否则不生效。
[root@mail ~]# chkconfig amavisd on
[root@mail ~]# /etc/init.d/amavisd start
Starting Mail Virus Scanner (amavisd): [ OK ]
[root@mail ~]# /etc/init.d/amavisd reload
Reloading Mail Virus Scanner (amavisd): [ OK ]
[root@mail ~]# /etc/init.d/amavisd stop
Shutting down Mail Virus Scanner (amavisd): [FAILED]
[root@mail ~]# /etc/init.d/amavisd start
Starting Mail Virus Scanner (amavisd): [ OK ]
[root@mail ~]#
Amavisd 日志在 /var/log/maillog
注:我在安装过程中遇到的 N 多困难,希望以后的安装者可以借鉴。
======================================================================
Error in processing, id=06353-01-2, mime_decode-1 FAILED: Can't locate object method "seek" via package "File::Temp" at /usr/lib/perl5/vendor_perl/5.8.5/MIME/Parser.pm line 816, <GEN6> line 57. (in reply to end of DATA command)
解决方法
http://www.jumpingbean.co.za/blogs/mark/postfix-amavisd-centos-lost-connection-with
======================================================================
May 19 08:38:53 as3 amavis[1752]: (01752-01) ask_av (ClamAV-clamd) FAILED - unexpected result: /var/spool/vscan/tmp/amavis-20050519T083853-01752/parts: Access denied. ERROR/n
解决方法
http://www.extmail.org/forum/viewthread.php?tid=4865&highlight=
======================================================================
Feb 7 17:56:38 mail amavis[1735]: (01735-02) (!!)TROUBLE in check_mail: mime_decode-1 FAILED: Can't locate object method "binmode" via package "IO::File" at /usr/lib/perl5/vendor_perl/5.8.5/MIME/Body.pm line 437.
Feb 7 17:56:38 mail amavis[1735]: (01735-02) (!)PRESERVING EVIDENCE in /var/amavis/tmp/amavis-20100207T175638-01735
Feb 7 17:56:38 mail postfix/smtp[2135]: AE575C8B7C: to=<lei.chen@mediawoz.cn>, relay=127.0.0.1[127.0.0.1]:10024, delay=0.1, delays=0.03/0/0/0.06, dsn=4.5.0, status=deferred (host 127.0.0.1[127.0.0.1] said: 451 4.5.0 Error in processing, id=01735-02, mime_decode-1 FAILED: Can't locate object method "binmode" via package "IO::File" at /usr/lib/perl5/vendor_perl/5.8.5/MIME/Body.pm line 437. (in reply to end of DATA command))
解决方法
[root@mail~]# perl -MCPAN -e shell;
cpan> install IO::File
cpan> quit
[root@mail~]#
cp /root/.cpan/build/IO-1.25/blib/lib/IO/File.pm
/usr/lib/perl5/5.8.5/i386-linux-thread-multi/IO/File.pm
cp: overwrite `/usr/lib/perl5/5.8.5/i386-linux-thread-multi/IO/File.pm'? y
[root@mail ~]# /etc/init.d/amavisd reload
Reloading Mail Virus Scanner (amavisd): [ OK ]
[root@mail ~]# /etc/init.d/amavisd stat
Usage: /etc/init.d/amavisd {start|stop|restart|reload|condrestart|status}
[root@mail ~]# /etc/init.d/amavisd start
Starting Mail Virus Scanner (amavisd): [ OK ]
======================================================================
将 clamav 加到 amavis 运行组里,并调整目录权限,否则 clamav 将无法扫描 amavisd-new 产生的临时文件
[root@mail~]# gpasswd -a clamav amavis
[root@mail~]# usermod -G amavis clamav
[root@mail~]# chown amavis.amavis /var/spool/vscan
[root@mail~]# chmod 750 /var/spool/vscan
[root@mail~]# chown amavis.amavis /var/spool/vscan/tmp
[root@mail~]# chmod 750 /var/spool/vscan/tmp
// 后两行无