这些示例使用了许多选项和关键字。请参阅12.12.5 垃圾邮件过滤器关键字和表 14–1。
本示例将测试传入到本地消息存储的邮件,并将垃圾邮件归档到名为 spam 的文件夹中。可以按照任何顺序来执行前三个步骤。
创建 SpamAssassin 配置文件。
步骤 2 中指定了此文件的名称和位置。spamassassin.opt 是个很好的名称。本文件包含以下各行:
host=127.0.0.1 port=2000 mode=0 verdict=spam debug=1 |
host 和 port 分别指定运行 spamd 的系统的名称,以及 spamd 侦听外来请求的端口。mode=0 指定如果系统将邮件识别为垃圾邮件,则返回一个由 verdict 指定的字符串。debug=1 指定在 SpamAssassin 库中启用调试。请参见表 14–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 "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 返回的值由 spamassassin.opt 中的 verdict 选项指定。(请参见步骤 1。)在此示例中,文件夹名称为 spam。
指定要过滤的邮件。
要过滤传入到本地消息存储的所有邮件,请通过在 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 |
重新编译配置并重新启动服务器。只需要重新启动 MTA。无需执行 stop-msg。
# imsimta cnbuild # imsimta restart |
启动 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 地址时必须更改命令脚本。
此示例将标题 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–3 中的 USE_CHECK。
指定要过滤的邮件。将垃圾邮件归档到单独的文件夹中的步骤 3 说明了此操作。
创建 SpamAssassin 配置文件。
此文件的名称和位置是使用 spamfilter_configX_file 指定的(见下一步)。其中包含以下各行:
host=127.0.0.1 port=2000 mode=1 field= debug=1 |
host 和 port 分别指定运行 spamd 的系统的名称,以及 spamd 侦听外来请求的端口。mode=1 指定如果系统发现邮件为垃圾邮件,则返回 SpamAssassin 结果字符串。field= 指定 SpamAssassin 结果字符串的字符串前缀。在此示例中,由于我们要在 Sieve 脚本中指定字符串前缀,因此无需前缀。debug=1 指定在 SpamAssassin 库中启用调试。
向 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
重新编译配置,重新启动服务器,然后启动 spamd 守护进程。
通过向主题行添加 SpamAssassin 结果字符串,用户可以确定是否要阅读带有 SpamAssassin 分数的邮件。例如:
Subject: [SPAM True ; 99.3 / 5.0] Free Money At Home with Prescription Xanirex!
请注意,如果将 USE_CHECK 设置为 0,则可以将结论字符串与匹配的 SpamAssassin 测试列表一同返回(请参见14.4.7 SpamAssassin 选项)。因为此列表可能会很长,所以最好将 USE_CHECK 设置为 1。
指定要过滤的邮件。
请参见将垃圾邮件归档到单独的文件夹中的步骤 3。
创建 SpamAssassin 配置文件。
将垃圾邮件归档到单独的文件夹中介绍了此步骤。mode=1 指定如果发现邮件为垃圾邮件,则返回 SpamAssassin 结果字符串。
host=127.0.0.1 port=2000 mode=1 debug=1 |
host 和 port 分别指定运行 spamd 的系统的名称,以及 spamd 侦听外来请求的端口。mode=1 指定如果系统发现邮件为垃圾邮件,则返回 SpamAssassin 结果字符串。debug=1 指定在 SpamAssassin 库中启用调试。
向 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,后跟字段字符串(默认值:Spam-Test),其后是 SpamAssassin 返回的 "[result string]"。因为已在14.4.5 SpamAssassin 配置示例中指定 mode=1,所以将返回 SpamAssassin 结果字符串。因此,主题行将类似以下内容:
Subject: [SPAM detected Spam-Test: True ; 11.3 / 5.0] Make Money!
也可以同时使用 addheader 和 addtag:
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
重新编译配置,重新启动服务器,然后启动 spamd 守护进程。
请参见将垃圾邮件归档到单独的文件夹。
本示例介绍了如何基于 SpamAssassin 分数过滤邮件。它使用 spamadjust 和 spamtest Sieve 过滤器操作。在本示例中,包含 SpamAssassin 分数的标题被添加到所有邮件。SpamAssassin 软件管理员可以使用此标题来调整 SpamAssassin 以改进垃圾电子邮件检测。如果邮件的 SpamAssassin 分数在 5 和 10 之间,则邮件被过滤到用户帐户内的 spam 文件夹。如果邮件的 SpamAssassin 分数大于 10,则邮件将被放弃。请注意,在默认情况下,SpamAssassin 认为分数大于等于 5 的邮件为垃圾邮件。
指定要过滤的邮件。
将垃圾邮件归档到单独的文件夹中的步骤 3 说明了此操作。
创建 SpamAssassin 配置文件。
此文件的名称和位置是使用 spamfilter_configX_file 指定的(见下一步)。其中包含以下各行:
debug=1 host=127.0.0.1 port=783 mode=2 field= |
host 和 port 分别指定运行 spamd 的系统的名称,以及 spamd 侦听外来请求的端口。mode=2 指定始终返回 SpamAssassin 结果字符串,无论分数是多少。field= 指定 SpamAssassin 结果字符串的字符串前缀。在此示例中,由于我们要在 Sieve 脚本中指定字符串前缀,因此无需前缀。debug=1 指定在 SpamAssassin 库中启用调试。
向 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)
创建通道级别过滤器,以基于垃圾邮件分数处理电子邮件。
请参阅创建通道级别的过滤器。向该文件添加以下规则:
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 的邮件。
重新编译配置,重新启动服务器,然后启动 spamd 守护进程。
请参见将垃圾邮件归档到单独的文件夹中的最后几步。