- 论坛徽章:
- 0
|
RedHat Enterprise Linux 5.1 sendmail + dovecot + saslauthd + openwebmail + clamav +MIMEdefang + spamassassin防垃圾邮件防病毒邮件系统
文档也可以见PDF---------------------->
邮邮件服务器结构
mimedefang 主要是调用spamassassin 来防垃圾,和clamav来防病毒
熬夜的成果和大家分享一下,这个是我以前实际生产服务器中用到的其中一些的软件,当然也参考了网上很多资料!其实过程也比较简单,关健就整合部分,也是让大家少走些弯路。以前公司是fedora1+ sendmail+imap+openwebmail.后来我加了mimedefang 由于sendmail 版本过低,而且我是远程连接台湾的服务器。不敢删除sendmail 再来编译安装sendmail .主要自己对sendmail编译不太了解。其实在我加上mimedefang和spamassassin后。效果已经非常好了,希望对有用 sendmail做邮件服务器的兄弟有用。这个是用最新的Redhat Enterprise 5.1.因为我们上课用的就是这个,所以懒得用其它的平台测试。是我今天上午及今天晚上在家测试OK!如果大家有什么问题或者不明白的地方。可以直接联系我。由于天天上课。可能没有什么时间!大家碰到问题仔细研究,应该注意的地方我都有写,由于是第一次发文档。有什么不明白的地方。可以跟贴。其它的版本的 LINUX直接下载相应的软件包安装配置就可以了。
所要软件包如下
除了 mimedefang 用的是源代码(mimedefang 是用perl 编写的,所用到几个perl 模块,其它的包全部是rpm包,个人感觉,不是十分必要 ,rpm包其实也是很好的,我下面自己把光盘配置了yum源,yum 安装一些软件包比较方便,当然你也可以手动一个一个安装,解决软件包依赖性的时候要有赖心哦!clamav是在下面这个网站下载的,我下载的是最近版本。 安装完以后update!)
到这个网站下载 http://apt.sw.be/redhat/el5/en/i386/dag/RPMS/ ## 这个网站非常不错!有很多好的软件,我对LINUX的理解,能不编译内核就不编译,能不编译软件包就不编译(当然你得会编译内核及编译安装软件包及内核相 关参数及知道编译选项。WEB服务器当然还是编译的好一些!也要看你的环境及上级领导要求吧!好了,废话太多了!)
[root@huzi source]# ls *.rpm
clamav-0.92.1-1.el5.rf.i386.rpm clamavdevel-0.92.1-1.el5.rf.i386.rpm clamd-0.92.1-1.el5.rf.i386.rpm
clamav-db-0.92.1-1.el5.rf.i386.rpm
mimedefang 等包到官方下载 http://www.mimedefang.org/
IO-stringy-2.110.tar.gz MIME-Base64-3.03.tar.gz sendmail.8.14.2.tar.gz mimedefang-2.64.tar.gz
Unix-Syslog-0.100.tar.gz Digest-SHA1-2.00.tar.gz MailTools-1.1401.tar.gz MIME-tools-5.420.tar.gz
我这里大部分软件包是yum 来安装,把DVD做成一个本地的yum源。省去了软件包依赖性的问题
yum源设置
把DVD文件放到光驱!设置YUM源
cp rhel-debuginfo.repo 为huzi.repo
修改内容如下
[Server]
name=Red Hat Enterprise Linux $releasever - $basearch - Server
baseurl=file:///media/Server
enabled=1
gpgcheck=0
2,修改 vi /usr/lib/python2.4/site-packages/yum/yumRepo.py的411行
remote = '/meida/Server' + '/' + relative
1,安装clamav
下载最新的clamav 包。安装
rpm -ivh clam* --nodeps --force
然后更新数据库文件
freshclam
配置clamav
配置前添加用户groupadd defang
Useradd -s /bin/nologin –g defang defang
把clamd.conf 和 freshclam.conf 文件的的执行身份改成defang(后面mimedefang的用户。
vi /etc/clamd.conf 把里面的User clamav 改成User defang ,freshclam.conf 文件也是同样。
同样把日志的权限改成770
chmod -R 770 /var/log/clamav;所属组改成chown -R defang.clamav /var/log/clamav)
不然会出现如下错误
[root@huzi source]# freshclam
ERROR: Can't open /var/log/clamav/freshclam.log in append mode (check permissions!).
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).
[root@huzi source]# ll /var/log/clamav/freshclam.log
-rw-r----- 1 defang clamav 4706 Jul 17 22:10 /var/log/clamav/freshclam.log
[root@huzi source]# chmod -R 770 /var/log/clamav/
[root@huzi source]# frechclam
[root@huzi source]# freshclam
ClamAV update process started at Fri Jul 18 17:06:03 2008
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.92.1 Recommended version: 0.93.3
DON'T PANIC! Read http://www.clamav.net/support/faq
main.inc is up to date (version: 47, sigs: 312304, f-level: 31, builder: sven)
daily.inc is up to date (version: 7743, sigs: 44565, f-level: 33, builder: ccordes)
LibClamAV Error: Database Directory: /var/clamav not locked
[root@huzi source]# ll /var/clamav
total 12
drwxr-xr-x 2 clamav clamav 4096 Jul 18 17:04 daily.inc
drwxr-xr-x 2 clamav clamav 4096 Jul 18 17:00 main.inc
-rw------- 1 clamav clamav 104 Jul 18 17:05 mirrors.dat
把病毒数据文件改成defang.clamav
[root@huzi source]# chown -R defang.clamav /var/clamav
把
LocalSocket /tmp/clamd.socket
改 为
LocalSocket /var/spool/MIMEDefang/clamd.socket (
因 为mimedefang 要调用clamav 来查病毒!而且mimedefang 要访问clamd.socket文件,这个文件的作用主要是用来做进程间通讯。在下面编译安装mimedefang 的时候 等你./configure 无误 后,会有提示说,把clamd 的运行由defang用户来运行 。不然就会出现我最后面的错误。这个花了我一上午时间都没有搞定,所以要看软件安装后的提示信息,所以这里得注意)
重新启动clamd
service clamd restart
freshclam
2 安装sendmail
yum -y install sendmail sendmail-mc sendmail-devel sendmail-cf
(注:如果sendmail 版本小于8.13的话,可能要重新编译安装SENDMAIL)
配置sendmail (DNS服务器的安装及配置这里就不涉及了。也比较简单!(当然配置的时候要细心))
在配置sendmail 之前。配置好主机名hostname 主机名
在/etc/sysconfig/network 中添加一行HOSTNAME=主机名
在/etc/hosts 文件中添加一行
192.168.1.180 主机名
如果是LAN中。要配置DNS服务器
配置sendmail.mc 把127.0.0.1 改成0.0.0.0
加入对sasl认证的支持
把以下sedmail.mc中的以下两行前面的dnl去掉
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
然后生成sendmail.cf 文件 m4 sendmail.mc>sendmail.cf
在local-host-names 中加入mx记录的和域名记录
重新启动sendmail 服务 service sendmail restart
service saslauthd start (saslauthd 默认已经安装了)
3,安装 dovecot
yum -y install dovecot
修改/etc/dovecot.conf
添加一行
procotol = pop3
启动dovecot 服务
service dovecot start
4。安装openwebmail
perl-Text-Iconv 这个包源里面没有,但官网的其它directory 里面有,直接rpm 安装
首先配置openwebmail 的yum 源
rpm -ivh http://openwebmail.org/openwebma ... -1.7-2.el5.i386.rpm
# cd /etc/yum.repos.d
# lftpget http://openwebmail.org/openwebma ... se/openwebmail.repo
If SELinux enabled, you may need to set it 'permissive' in
/etc/sysconfig/selinux or system-config-selinux
Installing: openwebmail-data ######################### [4/4]
Dependency Installed: openwebmail.i386 0:2.53-1 openwebmail-data.i386 0:2.53-1 perl-Text-Iconv.i386 0:1.5-1.fc8 perl-suidperl.i386 4:5.8.8-32.fc8
Complete!
# yum install openwebmail
fedora 100% |=========================| 2.1 kB 00:00
openwebmail 100% |=========================| 951 B 00:00
updates 100% |=========================| 2.3 kB 00:00
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package openwebmail.i386 0:2.53-1 set to be updated
--> Processing Dependency: openwebmail-data = 2.53-1 for package: openwebmail
--> Processing Dependency: perl-suidperl for package: openwebmail
--> Processing Dependency: perl-Text-Iconv for package: openwebmail
--> Running transaction check
---> Package openwebmail-data.i386 0:2.53-1 set to be updated
---> Package perl-suidperl.i386 4:5.8.8-32.fc8 set to be updated
---> Package perl-Text-Iconv.i386 0:1.5-1.fc8 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing for dependencies:
openwebmail i386 2.53-1 openwebmail 2.3 M
openwebmail-data i386 2.53-1 openwebmail 7.0 M
perl-Text-Iconv i386 1.5-1.fc8 fedora 20 k
perl-suidperl i386 4:5.8.8-32.fc8 updates 60 k
Total download size: 9.4 M
Is this ok [y/N]: y
Downloading Packages:
(1/4): perl-Text-Iconv-1. 100% |=========================| 20 kB 00:00
(2/4): openwebmail-2.53-1 100% |=========================| 2.3 MB 00:03
(3/4): perl-suidperl-5.8. 100% |=========================| 60 kB 00:00
(4/4): openwebmail-data-2 100% |=========================| 7.0 MB 00:10
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID cfb164d8
Importing GPG key 0xCFB164D8 "Thomas Chung <tchung@openwebmail.org>" from http://openwebmail.org/.../RPM-GPG-KEY-openwebmail
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: perl-Text-Iconv ######################### [1/4]
Installing: perl-suidperl ######################### [2/4]
Installing: openwebmail ######################### [3/4]
Permission and Ownership for openwebmail files have been fixed!
Please execute following tool first as a root:
/var/www/cgi-bin/openwebmail/openwebmail-tool.pl --init
After restarting httpd service, login with non-root account from
http://localhost.localdomain/cgi-bin/openwebmail/openwebmail.pl
or http://localhost.localdomain/webmail
/var/www/cgi-bin/openwebmail/openwebmail-tool.pl --init 进行配置,直接回车就可以了
http://youservername/cgi-bin/openwebmail/openwebmail.pl
##如果安装不成功,直接到官网下载。再安装也是一样的效果,新版本的OPENWEBMAIL真的是比较智能化,配置也简单多了。语言支持也非常不错!对于 语言要求比较高的公司也是个不错的选择。而且采用是CGI模式,相对来说,蛮快的。上面几个依赖的包也是CGI的加速软件。看以后能不能再加上 fastcgi模块来优化一下(小弟对这些不是太懂)
安装apace
yum -y install httpd
然后配置apache
允许CGI执行
配置以下两项
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/var/www/cgi-bin">
AllowOverride None
Options ExecCGI ##原有的是Opentions None 改成我前面写的Options ExecCGI 这个意思是允许执行CGI类型的文件
Order allow,deny
Allow from all
</Directory>
找到这一行,把前面的#号去掉并且加上支持.pl文件类型
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#
AddHandler cgi-script .cgi .pl ####在这一行添加对.pl文件类型的支持。因为我们的openwebmail是perl 语言编写的。而且我们的openwebmail文件后缀名为pl.把以最好加上 .pl。这样不容易出错!
===========================================================
配置openwebmail 可以被 clamav扫描
# vi openwebmail.conf
enable_viruscheck yes
viruscheck_pipe /usr/bin/clamdscan --mbox --disable-summary --stdout -
viruscheck_source_allowed all
####这是官方的howto文档。我是直接抄过来的。MS没有啥效果!大家有兴趣可以自己研究
4,安装spamassassin (mimedefang 为调用spamassassin来防垃圾邮件)
yum -y install spamassassin
配置spamassassin
2.编辑主配置文件/etc/mail/spamassassin/local.cf
required_hits 10.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
#service spamassassin start
spamassassin 报错
如果出现 /var/log/maillog 报错
spamd[850]: rules: meta test DIGEST_MULTIPLE has undefined dependency 'DCC_CHECK'
vi /etc/mail/spamassassin/v310.pre
去掉下面的注释符号# 不然服务会启动后,不能和mimedefang结合使用
loadplugin Mail::SpamAssassin: lugin: CC
如果要更强的防垃圾邮件规则,大家可以到网上找找相关的规则 !
安装chinese_rules.cf
下载文件: wget -N -P /usr/share/spamassassin/ www.ccert.edu.cn/spam/sa/Chinese_rules.cf
/etc/init.d/init-script restart
可以把这个放到crontab 里面,定时更新防垃圾规则,规则要量力而行,生产环境要经过测试,最好不要挡住正常邮件
以下是网上的规则,最好经过测试再用
--------------------------------------------------------------------------
Jul 18 18:53:41 huzi sendmail[4592]: m6IArbo3004592: Milter delete (noop): header: X-Spam-Score (正常结合mimedefang使用了)
Jul 18 18:53:41 huzi sendmail[4592]: m6IArbo3004592: Milter add: header: X-Scanned-By: MIMEDefang 2.64 on 192.168.1.180 (mimedefang 已经正常和上面的spamassassin一起使用)
Jul 18 18:53:41 huzi sendmail[4591]: m6IArbL3004591: to=huzi, ctladdr=root (0/0), delay=00:00:04, xdelay=00:00:04, mailer=relay, pri=30027, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (m6IArbo3004592 Message accepted for delivery)
Jul 18 18:53:41 huzi sendmail[4595]: m6IArbo3004592: to=<huzi@huzi.uplookinghuzi.com>, ctladdr=<root@huzi.uplookinghuzi.com> (0/0), delay=00:00:04, xdelay=00:00:00, mailer=local, pri=30623, dsn=2.0.0, stat=Sent
-------------------------------------------------------------------------------
下面是网上的一个防垃圾邮件的规则。大家看着用吧。用前先测试 !
为了尽量减少误判,建议使用SpamAssassin提供的白名单功能。比如在/etc/mail/SpamAssassin/sa-mimedefang.cf中添加
whitelist_from *@cernet.edu.cn
会使所有来自cernet.edu.cn的邮件被视为正常邮件。
SpamAssassin 主要配置文件是 /etc/mail/spamassassin/local.cf和 /usr/share/spamassassin/*.cf,后者是默认的规则文件集,一般不要改动;前者可以让管理员修改配置添加规则。由于默认的规则 库不太符合国内中文邮件,所以你得添加一些适合中文的规则到local.cf文件中,下面的是由反垃圾邮件联盟网站ten提供的适合中文邮件规则集:
##################################################
#Follow is diables some bad rules for chinese mail
#################################################
score SUBJ_FULL_OF_8BITS 0.0
score BASE64_ENC_TEXT 0.0
score BAYES_99 0.1
score BAYES_90 0.1
score BAYES_80 0.1
score BAYES_70 0.1
score BAYES_60 0.1
score FROM_ILLEGAL_CHARS 0.1
score HEAD_ILLEGAL_CHARS 0.1
score SUBJ_ILLEGAL_CHARS 0.1
score MIME_BASE64_TEXT 0.1
score FAKE_HELO_AOL 0.1
score NO_RDNS_DOTCOM_HELO 0.1
score CHINA_HEADER 0.1
鉴于相当多的网友询问如何在Spamassassin里配置CBL的黑名单作为其评分标准之一,
故整理了一下CBL/CDL/CBL+/CBL-的在Spamassassin里的配置格式,
其中有些设置了检查返验证码,有些没设,以及分值的设定等等,这些可根据各自的实际情况设置。
其中我们推荐优先使用CBL-和CML。
CODE
#最佳推荐之使用CBL-#
header RCVD_IN_CBLLESS eval:check_rbl('cblless', 'cblless.anti-spam.org.cn.', '127.0.8.5')
describe RCVD_IN_CBLLESS Received via a relay in cblless.anti-spam.org.cn
tflags RCVD_IN_CBLLESS net
score RCVD_IN_CBLLESS 3.5
#最佳推荐之使用CML#
header RCVD_IN_CML eval:check_rbl('cml', 'cml.anti-spam.org.cn.', '127.0.8.1')
describe RCVD_IN_CML Received via a white list relay in cml.anti-spam.org.cn
tflags RCVD_IN_CML net nice
score RCVD_IN_CML -20.0
#header RCVD_IN_CBL eval:check_rbl('cbl', 'cbl.anti-spam.org.cn.')
#describe RCVD_IN_CBL Received via a relay in cbl.anti-spam.org.cn
#tflags RCVD_IN_CBL net
#score RCVD_IN_CBL 2.0
#header RCVD_IN_CBL_DIALUP eval:check_rbl('cdl-notfirsthop', 'cdl.anti-spam.org.cn.', '127.0.8.4')
#describe RCVD_IN_CBL_DIALUP CBL: dialup sender did non-local SMTP
#tflags RCVD_IN_CBL_DIALUP net
#score RCVD_IN_CBL_DIALUP 1.5
#header RCVD_IN_CBL_PLUS eval:check_rbl('cblplus', 'cblplus.anti-spam.org.cn.')
#describe RCVD_IN_CBL_PLUS Received via a relay in cblplus.anti-spam.org.cn
#tflags RCVD_IN_CBL_PLUS net
#score RCVD_IN_CBL_PLUS 1.0
以下两行另存为一个.cf文件 ,过滤指定主题和内容
header CN_SUBJECT_992 Subject =~ /135/
describe CN_SUBJECT_992 Subject contains "135"
score CN_SUBJECT_992 0.3
body CN_BODY_977 /91\.com/
describe CN_BODY_977 Body contains "91\.com"
score CN_BODY_977 1.500
body CH_FREE /免费/
describe CH_FREE 内有中文字"免费",疑为垃圾信件。
score CH_FREE 15
#whitelist_from *@163.com
whitelist_from *@koowo.com
blacklist_from *@listhost.us
5,安装mimedefang
安装依赖的perl 模块
IO-stringy-2.110.tar.gz MIME-Base64-3.03.tar.gz sendmail.8.14.2.tar.gz
Unix-Syslog-0.100.tar.gz Digest-SHA1-2.00.tar.gz MailTools-1.1401.tar.gz MIME-tools-5.420.tar.gz
分别解压后进入 目录
perl Makefile.pl
make
make instll
可能会报一些函数信息,这个我也无法解答,不影响正常的安装和使用就可以了!
#groupadd defang
#useradd -g defang -s /sbin/nologin defang
#tar xvzf mimedefang-2.61.tar.gz
#./configure
#make
#make install
#cp /usr/local/src/mimedefang-2.61/examples/init-script /etc/init.d/mimedefang
整合mimedefang 和sendmail
4.编辑/etc/mail/sendmail.mc文件,在mailer语句前添加mimedefang过滤:
INPUT_MAIL_FILTER(`mimedefang',`S=unix:/var/spool/MIMEDefang/mimedefang.sock,F=T,T=S:60s;R:60s;E:5m')dnl
重新生成/etc/mail/sendmail.cf文件
#m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
#重新启动sendmail 服务
下面我启动应该启动的服务sendmail saslauthd dovecot clamd mimedefang spamassassin
[ 本帖最后由 huzi1986 于 2008-7-30 17:25 编辑 ] |
|