垃圾邮件过滤程序分析邮件,并向 Messaging Server 的当前版本返回结论说明邮件是否为垃圾邮件。然后 Messaging Server 将对邮件采取操作。使用 Sieve 邮件过滤语言指定操作。可能的操作包括放弃邮件、将邮件归档到文件夹、添加标题、向主题行添加标记等等。也可以使用具有 if-then-else 语句的复杂 Sieve 脚本。
有关完整的 Sieve 语法,请参见 Sieve 规范 3028。另请参见
使用表 14–1 中所述的 MTA 垃圾邮件过滤器选项 (option.dat) 来指定 Sieve 脚本。主垃圾邮件过滤器操作选项包括 SpamfilterX_null_action(指定返回的垃圾邮件结论为空值时要执行的 Sieve 规则)和 SpamfilterX_string_action(指定返回的垃圾邮件结论为字符串时要执行的 Sieve 规则)。
垃圾邮件过滤程序通常向 MTA 返回一个字符串或一个空值以表示邮件为垃圾邮件。有些程序还会返回垃圾邮件分数—该分数是对邮件可能为垃圾邮件的数字评定。此分数可用于整个操作的一部分。以下示例显示了如何指定对已过滤的邮件的操作。每个示例均假定过滤程序由数字 1 指定。
示例 1:将结论为空值的垃圾邮件归档到文件 SPAM_CAN 中。
spamfilter1_null_action=data:,require "fileinto"; fileinto "SPAM_CAN";
也可以对返回的结论为字符串的垃圾邮件执行相同的操作:
spamfilter1_string_action=data:,require "fileinto"; fileinto "SPAM_CAN";
示例 2:将带有返回的结论字符串的垃圾邮件归档到以返回的结论字符串(即 $U 所执行的操作)命名的文件中。也就是说,如果返回的结论字符串为 spam,则邮件将存储在名为 spam 的文件中。
spamfilter1_null_action=data:,require "fileinto"; fileinto "$U";
示例 3:放弃结论为字符串值的垃圾邮件。
spamfilter1_string_action=data:,discard
也可以对返回的结论为空值的垃圾邮件执行相同的操作:
spamfilter1_null_action=data:,require "fileinto"; fileinto "SPAM_CAN";
示例 4。此行将向通过字符串结论值确定为垃圾邮件的每封邮件中添加标题 Spam-test: FAIL:
spamfilter1_string_action=data:,require ["addheader"];addheader "Spam-test: FAI";
示例 5。此行将向返回字符串的垃圾邮件的主题行添加字符串 [PROBABLE SPAM]。
spamfilter1_string_action=data:,addtag "[PROBABLE SPAM]";
示例 6。如果标题包含 resent-from 和 User-1,则此行假定结论值为字符串,并且将垃圾邮件归档到邮箱 testspam 中。如果邮件不包含此标题,则此行将邮件归档到 spam 中。
spamfilter1_string_action=data:,require "fileinto"; \ if header :contains ["resent-from"] ["User-1"] { \ fileinto "testspam"; \ } else { \ fileinto "spam";};
因为可以使用大多数垃圾邮件过滤器软件对结论字符串进行配置,所以您可以根据返回的字符串来指定不同的操作。可以使用匹配的 spamfilterX_verdict_n 和 spamfilterX_action_n 选项对来完成此操作。
示例 7。这些匹配的选项对将放弃返回的结论字符串为 remove 的垃圾邮件。
spamfilter1_verdict_0=remove spamfilter1_action_0=data:,discard |
有关如何指定垃圾邮件结论字符串的说明,请参阅特定的垃圾邮件过滤软件各节。
表 14–1 MTA 垃圾邮件过滤器选项 (option.dat)
用于 Spam Assassin 的 MTA 选项 |
说明 |
|
---|---|---|
指定过滤软件 X 配置文件的完整文件路径和名称。默认值:无 |
||
指定过滤软件 X 共享库的完整文件路径和名称。默认值:无 |
||
用于控制是将过滤库 X 报告的某些失败视为临时进程失败还是忽略这些失败。0 指定垃圾邮件过滤问题将导致临时处理故障。1 会导致在某些(可能并非全部)过滤库发生故障的情况下,系统将跳过垃圾邮件过滤处理。特别是,如果系统阻塞,库代码中没有返回值,则 MTA 的某些部分也可能会阻塞。-2 和 2 分别与 0 和 1 相同,只是在垃圾邮件过滤器插件报告问题时,此设置会导致发送系统日志消息。3 将导致垃圾邮件过滤器无法接受邮件,但会将其排入重新处理通道队列等待稍后处理。4 与 3 的功能相同,但还会将垃圾邮件过滤器临时故障记录到 syslog。 默认值:0 |
||
指定基于每个用户激活过滤软件 X 所使用的 LDAP 属性名称。过滤是基于目标地址的。也就是说,使用此属性定向到用户的邮件将进行垃圾邮件过滤。这应该是 inetMailUser 对象类中的属性。 属性本身可以具有多个值并区分大小写。对于 SpamAssassin,该属性值应为小写的 spam。 默认值:无 |
||
LDAP_SOURCE_OPTIN1 到 LDAP_SOURCE_OPTIN8 提供基于创始者地址的每个用户垃圾邮件过滤器 optin 值,这些值类似于 LDAP_optinX。也就是说,从该用户发出的邮件将进行垃圾邮件过滤。 |
||
指定基于域激活过滤软件 X 所使用的 LDAP 属性名称。它适用于目标域。除了应位于对象类 mailDomain 中之外,其余与 LDAP_optin 相同。 默认值:无 |
||
指定一个字符串,如果发现该字符串为 LDAP_optinX 或 LDAP_domain_attr_optinX 定义的属性值,将导致 MTA 执行该属性不存在时所执行的操作。也就是说,该字符串禁用了此条目的过滤。请参见14.2.2 指定要过滤的邮件。 默认值:空字符串。默认情况下,系统将忽略空选定属性。(这是自 iPlanet Messaging Server 5.2 以来的更改,在 iPlanet Messaging Server 5.2 中,空选定属性使用空选定列表触发过滤。可以通过将 spamfilterX_null_optin 设置为实际始终不会出现的字符串来恢复 5.2 版的这种行为。) |
||
定义 Sieve 规则,指定当过滤软件 X 返回空值结论时如何处理邮件。使用文件 URL 可以从外部存储 Sieve 表达式。例如: file:///var/opt/SUNWmsgsr/config/null_action.sieve。此外,请勿使用 Sieve reject 操作拒绝垃圾邮件,因为这样做会向无辜的一方(其地址被用于发送垃圾邮件)发送不能传递的通知。默认值:data:,discard; |
||
定义 Sieve 规则,指定当结论为字符串时如何处理邮件。使用文件 URL 可以从外部存储 Sieve 表达式。例如:file:///var/opt/SUNWmsgsr/config/null_action.sieve。此外,请勿使用 Sieve reject 操作拒绝垃圾邮件,因为这样做会向无辜的一方(其服务器被用于发送垃圾邮件)发送不能传递的通知。 默认值:data:,require "fileinto"; fileinto "$U; 其中 $U 是 verdict 返回的字符串。 |
||
spamfilterX_verdict_n 和 spamfilter X_action_n 是匹配的选项对,其中 n 是 0 到 9 之间的数字。这些选项使您可以为任意结论字符串指定 Sieve 过滤器。分别将 spamfilterX_verdict_n 和 spamfilterX_action_n 设置为结论字符串和 sieve 过滤器,可以实现此操作。其中 n 是 0 到 9 之间的整数。例如,通过指定以下选项,某个站点可以使 "reject" 结论导致 sieve 拒绝操作:
所有 spamfilterX_verdict_n 选项和对应的操作选项的默认值均为空字符串。 默认值:无 |
||
请参见 spamfilterX_verdict_n。默认值:无 |
||
某些过滤库可以基于收件人地址执行一组操作。spamfilterX_final 可以指定传递到过滤库的收件人地址的类别。设置为 0 的值将使用中间地址;设为 1 将发送最终格式的收件人地址。 默认值:0 |
||
转发是对垃圾邮件过滤进程的挑战。设想一个用户条目,该条目指定了 forward 传递选项,并且指定了其他用户的转发地址。此外,用户条目还设置选定了某种特定类别的过滤。那么,是否应将过滤应用到已转发的邮件呢?一方面,一个特定用户的正确过滤选择对于另外一个用户来说不一定是正确的选择。另一方面,取消过滤操作可能被视为违反站点的安全策略。 没有一个答案在所有情况下均正确。因此,转发邮件时,OPTIN_USER_CARRYOVER 将控制如何将垃圾邮件过滤选定列表从一个用户或别名条目传送到另外一个用户或别名条目。该选项是按位编码的值。不同的位值具有的含义如下: 位 0(值 1)。每个 LDAP 用户条目无条件地覆盖所有先前活动的用户/域选定。 位 1(值 2)。如果用户的域具有选定属性,则该属性将覆盖所有先前处于活动状态的用户/域/别名选定。 位 2(值 4)。如果用户具有选定属性,则该属性将覆盖所有先前处于活动状态的用户/域/别名选定。 位 3(值 8)。由 [optin] 非位置参数指定的选定将覆盖所有先前处于活动状态的用户/域/别名选定。 默认值:0(如果一个用户具有可以转发到另一个用户的传送选项,则选定将累积起来。此默认值确保了转发时站点安全策略的有效性;其他设置可能不具有此种功能。) |