Sun Java System Messaging Server 6 2005Q4 管理指南

SpamAssassin 配置示例

本节介绍了一些通用的 SpamAssassin 配置示例:


注 –

这些示例使用了许多选项和关键字。请参阅表 14–1表 14–2


Procedure将垃圾邮件归档到单独的文件夹

本示例将测试传入到本地邮件存储的邮件,并将垃圾邮件归档到名为 spam 的文件夹中。可以按照任何顺序来执行前三个步骤。

步骤
  1. 创建 SpamAssassin 配置文件。

    步骤 2 中指定了此文件的名称和位置。spamassassin.opt 是个很好的名称。本文件包含以下各行:


    host=127.0.0.1
    port=2000
    mode=0
    verdict=spam
    debug=1
                      

    hostport 分别指定运行 spamd 的系统的名称,以及 spamd 侦听外来请求的端口。mode=0 指定如果系统将邮件识别为垃圾邮件,则返回一个由 verdict 指定的字符串。debug=1 指定在 SpamAssassin 库中启用调试。请参见表 14–4

  2. 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 "fileinto"; fileinto "$U";
                      

    spamfilter1_config_file 指定 SpamAssassin 配置文件。

    spamfilter1_library 指定 SpamAssassin 共享库。

    spamfilter1_optional=1 指定 spamd 失败时,MTA 将继续运行。

    spamfilter1_string_action 指定对垃圾邮件采取的 Sieve 操作。

    在本示例中,因为默认值已为 data:,require "fileinto"; fileinto "$U";,所以无需 spamfilter1_string_action。该行指定将垃圾邮件发送到某个文件夹。文件夹的名称是 SpamAssassin 返回的垃圾邮件结论值。spamassassin.opt 中的 verdict 选项指定了 SpamAssassin 返回的值。(请参见步骤 1。)在此示例中,文件夹名称为 spam

  3. 指定要过滤的邮件。

    要过滤传入到本地邮件存储的所有邮件,请通过在 ims-ms 通道中添加 destinationspamfilterXoptin spam 关键字来更改 imta.cnf 文件:


    !
    ! ims-ms
    ims-ms defragment subdirs 20 notices 1 7 14 21 28 backoff "pt5m" "pt10m" 
    "pt30m" "pt1h"  "pt2h" "pt4h" maxjobs 4 pool IMS_POOL fileinto
    $U+$S@$D destinationspamfilter1optin spam
    ims-ms-daemon
  4. 重新编译配置并重新启动服务器。只需要重新启动 MTA。无需执行 stop-msg


    # imsimta cnbuild
    # imsimta restart
    
  5. 启动 spamd 守护进程。通常使用以下格式的命令执行此操作:

    spamd -d

    spamd 默认为只接受来自本地系统的连接。如果 SpamAssassin 和 Messaging Server 是在不同的系统中运行,则需要此语法:

    spamd -d -i listen_ip_address -A allowed_hosts

    其中 listen_ip_address 是要侦听的地址,allowed_hosts 是可以连接到此 spamd 实例的授权主机或网络(使用 IP 地址)的列表。


    注 –

    0.0.0.0 可以与 -i listen_ip_address 结合使用,以使 spamd 侦听所有地址。最好侦听所有地址,因为 spamfilterX_verdict_n 可以避免在更改系统的 IP 地址时必须更改命令脚本。


Procedure向垃圾邮件中添加包含 SpamAssassin 分数的标题

此示例将标题 Spam-test: result string 添加至已由 SpamAssassin 确定为垃圾邮件的邮件。以下为标题示例:

Spam-test: True ; 7.3 / 5.0

其中,Spam-test: 为文字,其后的内容为结果字符串。True 表示邮件为垃圾邮件(false 表示不是垃圾邮件)。7.3 为 SpamAssassin 分数。5.0 为阀值。该结果对于设置 Sieve 过滤器非常有用,该过滤器可以对高于某一分数或介于某分数之间的邮件进行归档或放弃。

此外,将 USE_CHECK 设置为 0 会将结论字符串与匹配的 SpamAssassin 测试列表一同返回。请参见表 14–4 中的 USE_CHECK。

步骤
  1. 指定要过滤的邮件。将垃圾邮件归档到单独的文件夹中的步骤 3 说明了此操作

  2. 创建 SpamAssassin 配置文件。

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


    host=127.0.0.1
    port=2000
    mode=1
    field=
    debug=1
                      

    hostport 分别指定运行 spamd 的系统的名称,以及 spamd 侦听外来请求的端口。mode=1 指定如果系统发现邮件为垃圾邮件,则返回 SpamAssassin 结果字符串。field= 指定 SpamAssassin 结果字符串的字符串前缀。在此示例中,由于我们要在 Sieve 脚本中指定字符串前缀,因此无需前缀。debug=1 指定在 SpamAssassin 库中启用调试。

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


    !for Spamassassin
    spamfilte1r_config_file=/opt/SUNWmsgsr/config/spamassassin.opt
    spamfilter1_library=/opt/SUNWmsgsr/lib/libspamass.so
    spamfilter1_optional=1
    spamfilter1_string_action=data:,require 
    ["addheader"];addheader "Spam-test: $U";
                      
    

    如前面示例所述,前三个选项指定了 SpamAssassin 配置文件、共享库以及共享库失败时 MTA 继续运行。下面一行:

    spamfilter1_string_action=data:,require ["addheader"];addheader "Spam-test: $U";

    指定了要向垃圾邮件添加的标题。标题带有文字前缀 Spam-text: ,后跟 SpamAssassin 返回的字符串。因为在上一步中指定了 mode=1,所以将返回 SpamAssassin 结果字符串。例如:True; 7.3/5.0

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

    请参见SpamAssassin 配置示例

Procedure向主题行添加 SpamAssassin 结果字符串

通过向主题行添加 SpamAssassin 结果字符串,用户可以确定是否要阅读带有 SpamAssassin 分数的邮件。例如:

Subject: [SPAM True ; 99.3 / 5.0] Free Money At Home with Prescription Xanirex!

请注意,如果将 USE_CHECK 设置为 0,则可以将结论字符串与匹配的 SpamAssassin 测试列表一同返回(请参见SpamAssassin 选项中的SpamAssassin 选项)。因为此列表可能会很长,所以最好将 USE_CHECK 设置为 1

步骤
  1. 指定要过滤的邮件。

    请参见将垃圾邮件归档到单独的文件夹中的步骤 3

  2. 创建 SpamAssassin 配置文件。

    将垃圾邮件归档到单独的文件夹中介绍了此步骤。mode=1 指定如果系统发现邮件为垃圾邮件,则返回 SpamAssassin 结果字符串。


    host=127.0.0.1
    port=2000
    mode=1
    debug=1
                      

    hostport 分别指定运行 spamd 的系统的名称,以及 spamd 侦听外来请求的端口。mode=1 指定如果系统发现邮件为垃圾邮件,则返回 SpamAssassin 结果字符串。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:,addtag “[SPAM detected: $U]”;
                      
    

    如前面示例所述,前三个选项指定了 SpamAssassin 配置文件、共享库以及共享库失败时 MTA 继续运行。下面一行

    spamfilter1_string_action=data:,addtag "[SPAM detected $U]";

    指定要向 Subject: 行添加标记。此标记的文字前缀为 SPAM detected,后跟 field 字符串(默认值为:Spam-Test),再后跟由 SpamAssassin 返回的 "[result string]"。因为已在SpamAssassin 配置示例中指定 mode=1,所以将返回 SpamAssassin 结果字符串。因此,主题行将类似以下内容:

    Subject: [SPAM detected Spam-Test: True ; 11.3 / 5.0] Make Money!

    也可以同时使用 addheaderaddtag

    spamfilter1_string_action=data:,require ["addheader"];addtag "[SPAM detected $U]";addheader "Spamscore: $U";

    以获得如下邮件:

    Subject: [SPAM detected Spam-Test: True ; 12.3 / 5.0] Vigaro Now!Spamscore: Spam-Test: True ; 12.3 / 5.0

    可设置 spamassassin.opt 中的 field= 来删除 Spam-Test 默认值。将返回以下较干净的邮件:

    Subject: [SPAM True ; 91.3 / 5.0] Vigaro Now!Spamscore: True ; 91.3 / 5.0

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

    请参见将垃圾邮件归档到单独的文件夹