(转自http://dagai.net/archives/838)
为了解决垃圾信泛滥的状况,这两天「跨界」测试了运行在Windows上的免费Mail server:hMailServer,它内建了与垃圾邮件过滤软件SpamAssassin的连结,也能透过ClamWin来 进行病毒扫描。这些软件全部是自由使用的,不花一毛钱就能在Windows平台上建立电子邮件环境。不过,在SpamAssassin的使用上却遭遇许多 困难,网络上的数据泰半都是Linux的操作方法,教导Windows版本的数据非常稀少,或许本篇测试能为大家提供一些参考。
为了避免文件夹名称问题造成状况,建议将这些软件都安装在不含空格符的文件夹里,如c:\hMailServer、c:\SpamAssassin等。
下载并安装
下载路径如下,自行下载并依指示安装。
设定hMailServer
hMailServer需要使用数据库,默认是使用SQL Server Compact 3.5,若安装的主机没有安装的话,hMailServer的安装程序会自动下载并安装。 简述其他设定的几个重点:
执行SAwin32的spamd
SAwin32里我们主要用来处理过滤功能的是spamd.exe(Spam Daemon),spamd的参数不少,完整的指令可以参考spamassassin.apache.org上的说明。我们只使用两参数:
c:\SpamAssassin\spamd --syslog="c:\SpamAssassin\spamd.log" -D
spamd.exe以背景方式执行,可透过任务管理器来终结它。执行的过程只能经由观察spamd.log来确认。
设定hMailServer与SAwin32的连结
只要勾选【Settings→Anti-spam→SpamAssassin页签→Use SpamAssassin】就可以了,勾选后每个hMailServer收到的mail就会丢给spamd做运算与处理,当spamd计算某信件的分数超 过5时,就判定为垃圾邮件,接着spamd在mail主旨开头插入[SPAM]或**SPAM**等字符串,再给你使用的mail client收信,我们只要再建立邮件规则来过滤主旨含有SPAM字符串的信件,自动做删除即可。当正确率到达较高的程度时,就可以考虑在Mail server上直接把垃圾邮件删掉。
最后记得将【Settings→Anti-spam】里的DNS blacklist与SURLBL Servers都Enable,这样应该能过滤一大半的垃圾邮件。
如何让SpamAssassin自动学习
SpamAssassin是使用贝氏运算来逐步增加垃圾邮件的判断正确率,SA-learn.exe就是能用来学习的指令,我们以下列几个步骤来达成自动学习的处理:
目录: C:\hMailServer\Data\你的Domain\spam\08 2010/04/23 11:23p . 2010/04/23 11:23p .. 2010/04/23 03:27p 7,382 {086300AB-29A4-45EF-B0DA-CD1CAE7016A5}.eml 2010/04/23 05:07p 7,748 {08D474C0-F05C-491C-8CC9-1ECB5EFCEA33}.eml 3 个档案 15,130 字节 2 个目录 17,234,300,928 字节可用
c:\hMailServer\Data\你的Domain\spam\08 c:\hMailServer\Data\你的Domain\spam\2A c:\hMailServer\Data\你的Domain\spam\2C ... c:\hMailServer\Data\你的Domain\spam\FE c:\hMailServer\spam-dir
spam-dir.lst的最后一行c:\hMailServer\spam-dir是存放垃圾邮件档案(*.eml)的文件夹,系统管理人员也可以把垃圾信存成.eml放入这个文件夹让SA-learn.exe来读取。
将以下指令存成learn-spam.bat:
@echo off
echo start %DATE% %TIME% > learn-spam.log
c:\SpamAssassin\sa-learn.exe –spam –folders=”c:\SpamAssassin\spam-dir.lst” >> learn-spam.log
echo end %DATE% %TIME% >> learn-spam.log
执行sa-learn.exe时会读取列在spam-dir.lst里的每个文件夹里的每封信件,解析、记录这些垃圾邮件的特征。
将上述的learn-spam.bat与learn-nospam.bat加到「控制台→排定的工作」里,设定排程以自动执行,例如可以设定每两个小时分别执行学习一次。@echo off
echo start %DATE% %TIME% > learn-nospam.log
c:\SpamAssassin\sa-learn.exe –ham –folders=”c:\SpamAssassin\nospam-dir.lst” >> learn-ham.log
echo end %DATE% %TIME% >> learn-ham.log
转载于:https://blog.51cto.com/avensky/794995