[转]免费邮件服务器hMailServer搭配SpamAssassin过滤垃圾邮件:安装和设置

时间: 2010-08-27 / 分类: 邮件服务器 / 浏览次数: 23,135 / 10个评论 发表评论

为了解决垃圾信泛滥的状况,这两天「跨界」测试了运行在Windows上的免费Mail server:hMailServer,它内建了与垃圾邮件过滤软件SpamAssassin的连结,也能透过ClamWin来进行病毒扫描。这些软件全部是自由使用的,不花一毛钱就能在Windows平台上建立电子邮件环境。不过,在SpamAssassin的使用上却遭遇许多困难,网络上的数据泰半都是Linux的操作方法,教导Windows版本的数据非常稀少,或许本篇测试能为大家提供一些参考。

为了避免文件夹名称问题造成状况,建议将这些软件都安装在不含空格符的文件夹里,如c:\hMailServer、c:\SpamAssassin等。

hMailServer

下载并安装

下载路径如下,自行下载并依指示安装。

设定hMailServer

hMailServer需要使用数据库,默认是使用SQL Server Compact 3.5,若安装的主机没有安装的话,hMailServer的安装程序会自动下载并安装。 简述其他设定的几个重点:

  • 新增Domain,记得防火墙要开启
  • 新增Domain后,由其内的Accounts新增账号,用其右键菜单的Add AD account就能汇入Windows AD账号进来
  • 点击【Utilities→Diagnostics】并选择Domain后测试,全部绿灯表示一切正常
  • 为了方便观察与除错,将【Settings→Logging】里的各式讯息等级都勾选,尔后就能在c:\hMailServer\Logs里检视Log檔
  • 【Settings→Anti-spam】待SAwin32设置后再来设定

执行SAwin32的spamd

SAwin32里我们主要用来处理过滤功能的是spamd.exe(Spam Daemon),spamd的参数不少,完整的指令可以参考spamassassin.apache.org上的说明。我们只使用两参数:

  • –syslog:将执行过程输出到指定的Log檔
  • -D:产生除错讯息
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就是能用来学习的指令,我们以下列几个步骤来达成自动学习的处理:

  • 新增一个专门存放垃圾邮件的账号,如spam@你的domain
  • 变更mail client处理SPAM字符串的规则,增加转寄到 spam@你的domain 的处理,亦即当主旨带有[SPAM]或**SPAM**时,除了删除mail client收信匣里的该信件外,同时转寄给 spam 账号
  • hMailServer spam账号的收件文件夹是c:\hMailServer\Data\你的Domain\spam\,每封存入的信件会产生成一组十六进制数字组成的文件名,并以数字开头两码为子数据名,例如下图是在08文件夹里有两个以{08开头的垃圾邮件:
	目录:  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\里的文件夹写入c:\SpamAssassin\spam-dir.lst,例如:
  • 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里的每个文件夹里的每封信件,解析、记录这些垃圾邮件的特征。

  • 另外也新增 nospam@你的Domain 账号,用来存放误放到 spam 的信件,也建立nospam-dir.lst与nospam-dir文件夹,最后同样建立批处理文件learn-nospam.bat,让sa-learn.exe学习这些是非垃圾信:
  • @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

  • 将上述的learn-spam.bat与learn-nospam.bat加到「控制台→排定的工作」里,设定排程以自动执行,例如可以设定每两个小时分别执行学习一次。

原文地址:http://jdev.tw/blog/1677/hmailserver-with-spamassassin-sawin32

10个评论

  1. 大概是个博客
    2012/03/15 08:49:50

    不太明白你的意思,你是指过滤么?如果是过滤的话,可以在规则中添加过滤规则,我试过,中文可以过滤

  2. water6000
    2012/03/14 14:48:09

    请问,如何在hmailser上删除垃圾邮件呢?

  3. Dagai
    2011/07/05 20:33:11

    兄弟,非常对不起,因为文章是我转过来的,谁知道这个WP的代码插件会把>自动转为& gt ;,所以实际上那里每个& gt ;表示一个大于号,现在我已经修正了,你可以参考原博客,文章最后有链接的,真是不好意思。

  4. 后海
    2011/07/04 22:08:47

    为什么我执行时cmd窗口显示gt不是可执行程序?

  5. 大概是个博客
    2011/06/10 08:42:35

    呃,这个转的台湾同胞的,他所谓的排定的工作就是任务计划咯,你添加了任务计划后,在这个计划的属性里查看日程安排,高级计划选项里,可以设置重复任务的间隔,就在那里了

  6. 后海
    2011/06/09 21:16:16

    将上述的learn-spam.bat与learn-nospam.bat加到「控制台→排定的工作」里,设定排程以自动执行,例如可以设定每两个小时分别执行学习一次。

    这条有点迷糊,怎么才能设置为两小时执行一次呢?

  7. 代码部落(Winson)
    2011/01/14 00:00:34

    嗯,不错,用上了,呵呵,比那些破解的要好用啊,安全稳定方便,谢谢啦!!!

  8. Dagai
    2011/01/13 11:13:11

    完全支持多域名多帐号

  9. 代码部落
    2011/01/12 17:36:35

    请问这个能否支持多域名多帐号呢?一直在找邮件服务器,破解的都不太稳定

  10. ugg uk
    2010/08/31 15:06:51

    本人一向是看到代码什么的就会头晕!

发表评论

您的昵称 *

您的邮箱 *

您的网站