Sun Java System Messaging Server 6.3 管理指南

Procedure基于 SpamAssassin 分数过滤邮件

本示例介绍了如何基于 SpamAssassin 分数过滤邮件。它使用 spamadjustspamtest Sieve 过滤器操作。在本示例中,包含 SpamAssassin 分数的标题被添加到所有邮件。SpamAssassin 软件管理员可以使用此标题来调整 SpamAssassin 以改进垃圾电子邮件检测。如果邮件的 SpamAssassin 分数在 5 和 10 之间,则邮件被过滤到用户帐户内的 spam 文件夹。如果邮件的 SpamAssassin 分数大于 10,则邮件将被放弃。请注意,在默认情况下,SpamAssassin 认为分数大于等于 5 的邮件为垃圾邮件。

  1. 指定要过滤的邮件。

    将垃圾邮件归档到单独的文件夹中的步骤 3 说明了此操作。

  2. 创建 SpamAssassin 配置文件。

    此文件的名称和位置是使用 spamfilter_configX_file 指定的(见下一步)。其中包含以下各行:


    debug=1
    host=127.0.0.1 
    port=783 
    mode=2 
    field=  

    hostport 分别指定运行 spamd 的系统的名称,以及 spamd 侦听外来请求的端口。mode=2 指定始终返回 SpamAssassin 结果字符串,无论分数是多少。field= 指定 SpamAssassin 结果字符串的字符串前缀。在此示例中,由于我们要在 Sieve 脚本中指定字符串前缀,因此无需前缀。debug=1 指定在 SpamAssassin 库中启用调试。

  3. 向 option.dat 文件中添加以下各行:


    ! For SpamAssassin
    spamfilter1_config_file=/opt/SUNWmsgsr/config/spamassassin.opt
    spamfilter1_library=/opt/SUNWmsgsr/lib/libspamass.so
    spamfilter1_optional=1
    spamfilter1_string_action=data:, require ["addheader","spamtest"]; \
    spamadjust "$U"; addheader "Spam-test: $U"

    如前面示例所述,前三行指定 SpamAssassin 配置文件、共享库,以及在共享库出现故障时继续执行 MTA 操作。后两行指定应从 SpamAssassin 的返回字符串 ($U) 中提取 SpamAssassin 分数(用于 spamtest 操作中),并向所有邮件添加垃圾邮件分数标题(例如,Spam-test: True; 7.3/5.0

  4. 创建通道级别过滤器,以基于垃圾邮件分数处理电子邮件。

    请参阅创建通道级别的过滤器。向该文件添加以下规则:


    require ["spamtest","relational","comparator-i;ascii-numeric","fileinto"];
    if spamtest :value "ge" :comparator "i;ascii-numeric" "10" {discard;}
    elsif spamtest :value "ge" :comparator "i;ascii-numeric" "5" {fileinto "spam";}
    else {keep;}

    第二行放弃 SpamAssassin 分数大于等于 10 的垃圾电子邮件。第三行将分数大于等于 5 的电子邮件归档到用户的“垃圾邮件”文件夹。最后一行 else {keep;} 保留所有得分小于 5 的邮件。

  5. 重新编译配置,重新启动服务器,然后启动 spamd 守护进程。

    请参见将垃圾邮件归档到单独的文件夹中的最后几步。