本示例介绍了如何基于 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 守护进程。
请参见将垃圾邮件归档到单独的文件夹中的最后几步。