Mail::SpamAssassin::Conf - SpamAssassin 配置指南
英文版原地址 -
http://spamassassin.apache.org/full/3.2.x/doc/Mail_SpamAssassin_Conf.html
修订与译者注
中文版翻译 - 中国反垃圾邮件联盟
(http://anti-spam.org.cn)
王兴宇
如果译文中有任何错误,欢迎给我发邮件指出,不胜感激。如果希望讨论 SpamAssassin 的相关内容,请到
中国反垃圾邮件联盟论坛
的 SpamAssassin
版讨论。
译文版本 - 2.0 (最后更新日期:2007/11/27)
名词注释:
邮件服务器和中继服务器
通常,邮件服务器(MX)和中继服务器是同一个主机,并使用同一个 IP 地址,但是经常也会有分别处于不同主机和 IP 的情况。
本文中,个别情况下,邮件服务器也统称这两种情况,请依据上下文语义判断。
正常邮件和垃圾邮件
格式 # 注释文本 rewrite_header Subject *****SPAM***** full PARA_A_2_C_OF_1618 /Paragraph .a.{0,10}2.{0,10}C. of S. 1618/i
describe PARA_A_2_C_OF_1618 Claims compliance with senate bill 1618(根据上议院第1618号法令) header FROM_HAS_MIXED_NUMS From =~ /\d+[a-z]+\d+\S*@/i
describe FROM_HAS_MIXED_NUMS From: contains numbers mixed in with letters(From: 信头中混和了数字) score A_HREF_TO_REMOVE 2.0 lang es describe FROM_FORGED_HOTMAIL Forzado From: simula ser de hotmail.com(西班牙语:“信件假称其来自Hotmail.com”) lang pt_BR report O programa detetor de Spam ZOE [...] ( 波兰语: 检测到了垃圾邮件)
描述
SpamAssassin 使用传统的UNIX风格的配置文件,并从 /usr/share/spamassassin 和
/etc/mail/spamassassin 目录中读取这些配置文件。
以下地址列出了 SpamAssassin 配置中最重要的选项,建议初次使用者首先阅读:
http://wiki.apache.org/spamassassin/ImportantInitialConfigItems
文件格式
以 # 开始的一行是注释。注意:如果 # 字符用于规则或配置选项中,必须使用斜线转义,即:\#
文件中的空白字符是无所谓的,但是最好不要放在行首,因为将来可能使用行首空白来表示续行。
不过在当前,每个规则或配置必须放在一行,多行仍然不被支持。
文件和目录的路径中能使用 ~ 字符来表示用户的主目录,但是不支持其它的 shell 风格的路径扩展,如通配符或
~user/。
以下在适当的情况下,默认值会被列在括号中。
使用者参考
以下选项能被用于站点级配置(local.cf)和用户级配置(user_prefs)中,通过它们可以定制 SpamAssassin
处理进入的邮件的方式。
评分选项
required_score n.nn (默认值: 5)
设定一个邮件被判定为垃圾邮件的分数线。n.nn 可以是整数或者实数。
默认值为5.0,这是很严厉的设置了,它适用于单个用户使用;但是对于应用于整个服务器,应该设置得更保守一些(更高一些),比如设置为8.0或10.0等等。通常不推荐设置为自动删除或丢弃那些被判定为垃圾邮件的邮件,否则可能招致用户的强烈抗议;除非评分特别的高,比如15.0或者更高,才可以考虑直接删除。这个选项以前称之为
required_hits ,现在虽然还可以用,但是不推荐使用旧的名称。
score 测试规则名 n.nn [
n.nn n.nn n.nn ]
指定一个测试规则的评分(命中后的评分)。评分可以是正的或者负的整数或实数。
[url=#item_symbolic_test_name]测试规则名[/url]
是一个测试规则的名称,如:
FROM_ENDS_IN_NUMS 。
如果只列出了一个评分,那么测试后总是返回该评分。
如果列出了4个评分,那么 SpamAssassin
在不同的使用情况下返回不同的评分。第一个评分用于贝叶斯测试和网络测试都被取消的情况下(0号评分集);第二个评分用于贝叶斯测试被取消,但使用网络测试的情况下(1号评分集);第三个评分用于使用贝叶斯测试,但网络测试被取消的情况下(2号评分集);第四个评分用于贝叶斯测试和网络测试都使用的情况下(3号评分集)。
设置一个测试规则的评分为0会取消该规则的测试。
如果评分使用括号“()”括起来,那么该行所有其后的评分都被增加同等的比例。例如,“(3)”表示在所有的评分集中提高该评分3点。“(3) (0) (3)
(0)”表示只提高0号和2号评分集3点评分。
如果一个测试规则没有给定评分,它将会被指定一个默认评分1.0;除非是以“T_”开头的测试规则(用于指出该测试规则还在试验中),它会被指定为评分0.01。
注意,以“__”开头的测试规则名是一个间接规则,它被用于组成元匹配规则和作为其它规则的前置测试,这些规则不会被计算评分也不会列在“命中的测试”报告中。注意,虽然间接规则的评分不会被计算,但是设置间接规则的评分为0会取消该规则的测试。
白名单和黑名单选项
whitelist_from
邮件地址
它用于指定通常被误判为发送的垃圾邮件的发信地址。
并不推荐使用这个选项,垃圾邮件或钓鱼邮件的发送者非常简单的就可以制造一些让它盲目信任的邮件。推荐的解决方法是使用
whitelist_auth 或其它认证的白名单方式替代,或使用
whitelist_from_rcvd。
白名单和黑名单都可以使用通配符。如 [email protected] 、 *@isp.com 或
*.domain.net 都是可以的。需要注意的是只支持 * 和 ?
(匹配单个字符),但是不支持其他的元字符匹配。由于一些安全的原因,这里也不支持正则表达式。
可以在一行中使用空格分隔开写入多个邮件地址,也可以使用多个 whitelist_from
行来指定。
信头的白名单检查按照如下顺序:如果信头设置了 Resent-From 地址,那么就检查它;否则检查来自下列信头的全部地址:
Envelope-Sender
Resent-Sender
X-Envelope-From
From
此外,如果SMTP通讯中的信封信息可用的话,那么“信封发件人(envelope sender)”也会被检查。参见
envelope_sender_header 。
范例:
whitelist_from [email protected] [email protected]
whitelist_from *@example.com
unwhitelist_from
邮件地址
它用于覆盖一个默认的 whitelist_from 选项。举例说,在 local.cf
中指定了一个站点级通用的白名单地址 whitelist_from ,用户可以在他的 user_prefs
中可以使用这个选项来覆盖那个通用的白名单地址选项。这个选项所匹配的邮件地址也必须同样被前面的 whitelist_from
选项所匹配。
范例:
unwhitelist_from [email protected] [email protected]
unwhitelist_from *@example.com
whitelist_from_rcvd
邮件列表地址 中继服务器的反向解析名
它是对 whitelist_from 的补充,用来对“Received”信头进行检查。
第一个参数是一个白名单的地址,第二个参数用于匹配该邮件的中继服务器的反向DNS解析名称。
第二个参数用于在邮件从互联网发送到你的内部网的邮件服务器(MX)时进行的反向DNS查询匹配。它可以是一个完全限定的主机名或主机名的域部分,换言之,如果连接到你的邮件服务器(MX)的主机的IP可以被反向解析为“sendinghost.spamassassin.org”,那么你可以写为
sendinghost.spamassassin.org 或 spamassassin.org 。
注意,这需要你的 internal_networks
被正确配置。简言之,除非在一个复杂的网络里,设置这个参数可以得到不错的效果。
同时,也要求你的邮件服务器(MX)可以对连接进来的服务器的IP地址进行反向查询,且将查询结果记录在“Recevied”信头中。
范例:
whitelist_from_rcvd [email protected] example.com
whitelist_from_rcvd *@axkit.org sergeant.org
def_whitelist_from_rcvd
邮件列表地址 中继服务器的反向解析名
类似于 whitelist_from_rcvd,但是它用于在 SpamAssassin
发行包中指定默认白名单。这个白名单的评分较低,它常常是垃圾邮件发送者假称的地址。
whitelist_allows_relays
邮件地址
指定 whitelist_from_rcvd 中的哪些邮件地址可以不使用
white_from_rcvd 中对应的邮件中继发信,而使用其它的中继服务器发信。默认情况下,发信地址在
white_from_rcvd 中,但是中继服务器却不是列出的那个,这种情形会触发一个测试伪造的规则。将该地址放入到
white_allows_relay 中防止触发。
白名单和黑名单都可以使用通配符。如 [email protected] , *@isp.com ,或
*.domain.net 都是可以的。需要注意的是只支持 * 和 ?
(匹配单个字符),不支持其他的元字符匹配。由于安全的原因,这里不支持正则表达式。
可以在一行中使用空格分隔写入多个邮件地址,也可以使用多个 whitelist_allows_relays
行来指定。
这里列出的邮件地址不必被前面的 whitelist_from_rcvd
所完全匹配,它只需要匹配信头中的地址就行。
范例:
whitelist_allows_relays [email protected] [email protected]
whitelist_allows_relays *@example.com
unwhitelist_from_rcvd
邮件地址
它用于覆盖 whitelist_from_rcvd 选项。举例说, SpamAssassin 发行包中的默认
whitelist_from_rcvd 能够被 local.cf 中的这个选项覆盖,或者用户也可以在他的 user_prefs
中使用这个选项来覆盖 whitelist_from_rcvd 。
所匹配的地址也必须同样被前面的 whitelist_from_rcvd 选项所匹配。
范例:
unwhitelist_from_rcvd [email protected] [email protected]
unwhitelist_from_rcvd *@axkit.org
blacklist_from
邮件地址
它用于指定那些通常被漏判为正常邮件的垃圾邮件发送地址。格式与 whitelist_from
相同。
unblacklist_from
邮件地址
它用于覆盖 blacklist_from 选项。举例说, SpamAssassin 发行包中的默认
blacklist_from 能够被 local.cf 中的这个选项覆盖,或者用户也可以在他的 user_prefs
中使用这个选项来覆盖 blacklist_from 。
所匹配的地址也必须同样被前面的 blacklist_from 选项所匹配。
范例:
unblacklist_from [email protected] [email protected]
unblacklist_from *@spammer.com
whitelist_to
邮件地址
如果给定的地址出现在信头中的收信人那里(Resent-To, To, Cc, 明显的信封收件人等),邮件将作为正常邮件处理。 它常用于整个站点使用了
SpamAssassin 但是某些用户不希望他们的任何邮件被过滤。与 whitelist_from
的格式相同。
有三个级别的接收白名单:whitelist_to 、
more_spam_to 和 all_spam_to
。 在第一个接收白名单中的用户仍然可能会被过滤一些垃圾邮件,但是在 all_spam_to
的用户不会被过滤任何垃圾邮件。
白名单信头检查将按照如下顺序,如果设置了 Resent-To 或 Resent-Cc
就使用它们;否则检查来自下列信头中的全部地址:
To
Cc
Apparently-To
Delivered-To
Envelope-Recipients
Apparently-Resent-To
X-Envelope-To
Envelope-To
X-Delivered-To
X-Original-To
X-Rcpt-To
X-Real-To
more_spam_to
邮件地址
参见上面。
all_spam_to
邮件地址
参见上面。
blacklist_to
邮件地址
如果给定的地址出现在信头的收件人中(Resent-To, To, Cc, 明显的信封收件人等),邮件将被作为垃圾邮件处理。与
blacklist_from 的格式相同。
whitelist_auth
邮件地址
它用于指定通常被误判为发送的垃圾邮件的发信地址。与 whitelist_from 和
whitelist_from_rcvd 不同的是,在监测白名单前会首先会检查邮件是否是授权的发信人。
授权检查是通过安装的发信人授权检查模块之一进行的: SPF (使用
Mail::SpamAssassin::Plugins::SPF)、 Domain Keys (使用
Mail::SpamAssassin::Plugins::DomainKeys) 或 DKIM (使用
Mail::SpamAssassin::Plugins::DKIM)。注意,使用这个选项前这些插件必须激活并可以正常工作。
使用 whitelist_auth 基本上等同于使用
whitelist_from_spf 、
whitelist_from_dk 和
whitelist_from_dkim 来指定每个发信地址。
范例:
whitelist_auth [email protected] [email protected]
whitelist_auth *@example.com
def_whitelist_auth
邮件地址
类似于 whitelist_auth ,但是它用于在 SpamAssassin
发行包中指定默认白名单。这个白名单的评分较低,它常常是垃圾邮件发送者假称的地址。
unwhitelist_auth
邮件地址
用于覆盖 whitelist_auth 项。所匹配的地址也必须同样被前面的
whitelist_auth 选项所匹配。
范例:
unwhitelist_auth [email protected] [email protected]
unwhitelist_auth *@example.com
基本消息标记选项
rewrite_header {
subject | from | to } 标记字符串
默认情况下,SpamAssassin
不会对那些被判定为垃圾邮件的信件主题、发信人和收信人等信息进行修改,以标识其是垃圾邮件。如果设置了这个选项,信件主题、发信人和收信人会被加上特定的字符串来表明该邮件是垃圾邮件。对于发信人和收信人的修改是在地址后面增加一个括在括号里面的RFC
2822格式的注释;对于信件主题的修改则是在原先的主题前添加。注意,在 report_safe 设置为0时,你只能使用
_REQD_ 和 _SCORE_ 标记来重写信件主题,否则你也许不能通过正常的方式去掉 SpamAssassin
的标记。关于标记的更多信息可以参见下面的模板标记部分。
在重写发信人和收信人时,字符串不能包含圆括号(会被转换为方括号)。
如果使用 rewrite_header subject ,但是被重写的邮件没有包含 Subject 信头,会自动添加一个 Subject
信头。
如果标记字符串指定为空,任何已有的重写将从信头里去掉。
add_header { spam |
ham | all } 信头名 字符串
可以对各种类型的信件(垃圾邮件、正常邮件和全部邮件)增加 SpamAssassin 的定制信头。所有的定制信头都会以 X-Spam- 开始(如信头
Foo 将显示为 X-Spam-Foo )。信头只能使用下列字符:所有的大小写英文字符、所有的数字和下划线及中划线。([A-Za-z0-9_-])。
字符串中可以包含下面描述的模板标记。如果需要的话,还可以使用\n和\t来增加回车符和制表符。使用\\来表示一个反斜线字符。其它的转义字符无效,只被简单的去掉反斜线。
如果 fold_headers
被设置为1,所有的信头会被折叠起来(即通过行首空格进行续行,以避免较长的行)。但是注意,通过\n手工换行的信头将不会被自动折叠(即可能会出现很长的信头),即使这个信头需要折叠起来。
你能够通过 add_header 来定制已有的信头(仅指定要修改的信件子集)。
清除全部的定制信头请参见
[url=#item_clear_headers]clear_headers[/url]
。
以下是一些例子(这些是默认增加的,注意 Checker-Version 不能修改或删除):
add_header spam Flag _YESNOCAPS_
add_header all Status _YESNO_, score=_SCORE_ required=_REQD_ tests=_TESTS_ autolearn=_AUTOLEARN_ version=_VERSION_
add_header all Level _STARS(*)_
add_header all Checker-Version SpamAssassin _VERSION_ (_SUBVERSION_) on _HOSTNAME_
remove_header {
spam | ham | all } 信头名
可以删除各种类型的信件(垃圾邮件、正常邮件和全部邮件)中的 SpamAssassin 的定制信头,这些信头是以 X-Spam-
开头的(所以这里指定信头名时应该前缀以 X-Spam- )。
清除全部的定制信头请参见
[url=#item_clear_headers]clear_headers[/url]
。
注意,X-Spam-Checker-Version
信头是不能删除的,因为邮件管理员和开发人员需要使用它来诊断问题。如果没有这个信头,甚至都不知道 SpamAssassin 是否在运行。
clear_headers
清空全部的 SpamAssassin 定制信头。你可以在任何的 add_header 前使用这个,以防止默认的
SpamAssassin 信头被添加到信头中。
注意,X-Spam-Checker-Version
信头是不能被删除的,因为邮件管理员和开发人员需要使用它来诊断问题。如果没有这个信头,甚至都不知道 SpamAssassin 是否运行。
report_safe ( 0 | 1 | 2 ) (默认值:
1)
如果这个选项被设置为1,当收到的信件被判定为垃圾邮件时,不修改原信件,而是创建一个新的报告信件,并且将原信件作为一个RFC
822格式的附件附上(确保原信件保持原样,不直接打开,且容易恢复)。
如果这个选项被设置为2,原信件以文本方式附加到报告信件中。之所以采用这个选项是由于安全的原因,某些不完善的邮件客户端会在用户没有要求的情况下自动的载入附件,这可能会带来一些安全问题。这个选项也许会导致附加的信件和原信件保存出来或看起来并不太一样。
如果这个选项设置为0,收到的垃圾邮件只在信头中增加一些 X-Spam-
信头而不修改信体。此外,X-Spam-Report 信头会被增加到垃圾邮件中,你可以设置
report_safe 为0后使用 remove_header 来去掉这些
SpamAssassin 的定制信头。
如果你要复制原信件的信头到被判定的邮件中,参见 report_safe_copy_headers 。
语言选项
ok_locales xx [ yy
zz ... ] (默认值: all)
这个选项指定了那些地区性(国家代码)的邮件被认为是正常邮件。使用这些国家的语言字符集的邮件不会被标记为外文垃圾邮件。
如果你收到了很多外文的垃圾邮件,而且绝不会收到用这种语言写的正常邮件,这个选项也许会有帮助。注意,所有的ISO-8859-*字符集和Windows代码页字符集默认总是允许的。
设置为all可以允许所有的字符集。这是默认值。
这个选项的设置决定了规则 CHARSET_FARAWAY、CHARSET_FARAWAY_BODY 和
CHARSET_FARAWAY_HEADERS 的触发条件。
范例:
ok_locales all (允许全部地s)
ok_locales en (仅允许英文)
ok_locales en ja zh (仅允许英文、中文和日文)
注意,如果指定了多个 ok_locales 行则只有最后一个有效。
可用的地区如下:
en -
西方通用字符集
ja -
日语字符串
ko -
韩语字符集
ru -
斯拉夫与字符集
th - 泰语字符集
zh - 中文(包括简体和繁体)字符集
normalize_charset ( 0 | 1) (默认值:
0)
是否检测字符集并转换邮件内容为 Unicode。需要有 Encode::Detect 模块、 HTML::Parser 3.46 及其以上版本,且
Perl 5.8.5 及其以上版本。
网络测试选项
trusted_networks
网络地址[/掩码] ... (默认值:无)
这个选项设置可信任的网络或主机(可信网络或可信主机)。可信任是指这些网络上的中继服务器确信不会被垃圾邮件发送者所操纵、也不会是开放转发(open
relay)和开放代理(open proxy)。一个可信主机能够毫无顾忌的转发垃圾邮件而不会被识别,甚至不需要伪造信头。SpamAssassin 甚至也不会在
DNS黑名单中查询可信网络中的主机。
参见
http://wiki.apache.org/spamassassin/TrustPath
获取更多信息。
在你的域中的邮件服务器和内部中继服务器应使用 internal_networks
指定。当有除了你的邮件服务器和内部中继服务器外的可信主机时,应该仅在 trusted_networks 指定它们。
如果指定了一个 /
及其后的掩码,这是一个CIDR风格的网络地址;如果没有指定掩码,但是有少于4个的IP地址单元并后缀以一个点的话,它是指所有前面的IP地址单元相同的网络地址;如果没有指定掩码也没有后缀的点,它是指一个单一IP地址,就像指定了/32掩码一样。
如果在网络或主机地址前前缀 ! ,表示该地址被排除(或包括)在第一个匹配中。
注意:与你的配置无关,127/8 总是包括在可信网络中。
范例:
trusted_networks 192.168/16 # 全部的 192.168.*.*
trusted_networks 212.17.35.15 # 仅指该地址
trusted_networks !10.0.1.5 10.0.1/24 # 全部的 10.0.1.*,但是除了 10.0.1.5
trusted_networks 的定义是叠加的,多个选项指定的可信网络都会作为可信网络。可以使用
[url=#item_clear_trusted_networks]clear_trusted_networks[/url]
清除前面定义的可信网络。
如果没有设置这个选项,但是设置了 internal_networks ,那么
internal_networks 的值将作为这个选项的默认值。
如果既没有配置 trusted_networks ,也没有配置
internal_networks ,SpamAssassin 会自行分析判断,流程如下:
clear_trusted_networks
清空前面定义的可信网络列表。
internal_networks
网络地址[/掩码] ... (默认值: 无)
这个选项设置内部网络或主机。内部是指在该网络的中继服务器是你的域中的邮件服务器或内部中继服务器。它的格式同上面的
trusted_networks 一样。
该选项用于在检查拨号或动态IP地址黑名单时,用来检测“单跳发送(direct-to-MX)”的垃圾邮件。
可信任的中继服务器会直接从拨号连接接受邮件而不需要它们列在 internal_networks 中,它们只需列在
trusted_networks 中。
如果设置了 trusted_networks 而没有设置
internal_networks,那么
trusted_networks 的值将作为这个选项的默认值。
如果既没有指定 trusted_networks 也没有指定
internal_networks ,即没有本地地址。换言之,任何连接到运行
SpamAssassin 的主机的主机都被认为是外部的。
internal_networks 中的地址都会出现在
trusted_networks 中,换言之,
internal_networks 总是可信主机的一个子集。
注意:与你的配置无关,127/8 总是包括在可信网络中。
clear_internal_networks
清空前面定义的内部网络列表。
msa_networks
网络地址[/掩码] ... (默认值: 无)
这个选项设置 MSA 网络或主机。MSA
指位于这些网络的中继服务器会接受来自认证用户的邮件。这些中继服务器不会接受认证未通过的主机的邮件。认证方式如 IP 地址列表、SMTP
发信认证和POP-before-SMTP等。
所有邮件信头中列在 MSA 之后的中继服务器都将同 MSA 一样被看做
trusted_networks 和
internal_networks 中定义的可信网络和内部网络。
举例说,如果 MSA 是可信的和内部的,那么之前的所有中继服务器也应该都是可信的和内部的。
当用 msa_networks 来标识一个 MSA 时,建议也将其放入到可信网络和内部网络中。当一个 MSA
没有被包括在 msa_networks 中时,你应该将其放入可信网络而不是内部网络。无论如何,如果一个 MSA
也作为邮件服务器(MX)或中继服务器时,你总应该将其放入可信网络和内部网络内,并确保 MSA 在 Received 信头中包含认证标识来识别合法的客户。
警告:当一个 MSA 同时也作为邮件服务器(MX)或中继服务器或接受非认证用户邮件时,绝不要将其加入到
msa_networks 中。这样做结果是未知的外部中继也将被视作可信网络。
clear_msa_networks
清空前面定义的 MSA 网络列表。
always_trust_envelope_sender ( 0 | 1 )
(默认值: 0)
如果邮件通过了一个或多个可信中继服务器,信任其信封发件人。参见
envelope_sender_header 。
skip_rbl_checks ( 0 | 1 ) (默认值:
0)
默认情况下 SpamAssassin 会做 RBL 查询。如果你的 ISP 已经做过了这个检查,可以设置为1跳过再次检查。
dns_available { yes
| test[: 名字1 名字2...] | no } (默认值: test)
默认情况下, SpamAssassin 会查询一些默认主机以判断 DNS
是否工作正常。做这个测试的原因是有可能因为网络链接断开导致的延时和某些情况下由于连接失败导致的 DNS 不可用。SpamAssassin
默认包括了13个测试的服务器,并且每次随机取出其中3个测试。
你可以指定你自己的测试列表:
dns_available test: domain1.tld domain2.tld domain3.tld
注意,DNS检查的是NS记录。
SpamAssassin
的网络规则测试是并发进行的。这也许会导致需要打开的文件描述符超过了系统限制,安全起见推荐将文件描述符的限制至少增加到256以上。
dns_test_interval n (默认值: 600 秒)
如果 dns_available 设置为 'test' (默认),SpamAssassin 将在 dns_test_interval 秒后重新测试
DNS 是否工作。
学习选项
use_bayes ( 0 | 1 ) (默认值: 1)
是否使用 SpamAssassin 内建的朴素贝叶斯(Bayes)风格的分类器。这是SpamAssassin 里所有的贝叶斯相关的选项的主开关。
use_bayes_rules ( 0 | 1 ) (默认值:
1)
是否使用 SpamAssassin 内建的朴素贝叶斯风格的分类器规则。这个选项允许你打开自动学习和手动学习的情况下禁止使用贝叶斯规则。
bayes_auto_learn ( 0 | 1 ) (默认值:
1)
设置 SpamAssassin
是否自动通过高评分邮件(或低评分邮件,用于正常邮件)的“学习”提高系统识别能力。目前“学习”只支持朴素贝叶斯风格的分类器。
关于贝叶斯自动学习默认实现的细节,参见
Mail::SpamAssassin::Plugin::AutoLearnThreshold 插件模块的文档。
bayes_ignore_header
信头名
如果你收到的邮件被上游邮件系统过滤过,比如ISP的邮件过滤或邮件列表的过滤,且这些过滤增加了新的信头(多数如此),这些信头可能会给贝叶斯分类器一些不正确的指示。为了避免这种情况,可以使用这个选项列出这些信头:如:
bayes_ignore_header X-Upstream-Spamfilter
bayes_ignore_header X-Upstream-SomethingElse
bayes_ignore_from
邮件地址
贝叶斯分类器和自动学习功能不会处理来自这里列出地址的邮件。如果 sa-learn 使用 --use-ignores
选项的话,也会忽略这些邮件。可以列出一个或多个地址,格式参见 whitelist_from 。
来自特定发件人的垃圾邮件也许包含了许多经常出现在正常邮件中的词汇。举个例子,某个人也许会收到他常光顾的书店发来的邮件,但是不希望收到来自其他书店的类似邮件。如果那些不想收到的信件作为垃圾邮件被学习的话,那么任何讨论书籍的邮件,包括来自他想收到的那个书店发来的邮件也很可能被判定为垃圾邮件。这些让人讨厌的书店的邮件地址应该列在这里。(他们无视你的许可,并且不发任何邮件就将你加入了他们的会员。)
那些发送许可的垃圾邮件的人,或收到了包含了垃圾邮件中常见词汇的正常邮件的人,可能会担心一些垃圾邮件被作为正常邮件处理。那些发送垃圾邮件的邮件列表和地址等可以放到这个列表中。
bayes_ignore_to
邮件地址
贝叶斯分类器和自动学习功能不会处理发送到这里列出地址的邮件。参见
bayes_ignore_from 。
bayes_min_ham_num (默认值:
200)
bayes_min_spam_num (默认值:
200)
为确保正确,贝叶斯分类器在一定数量的垃圾邮件和正常邮件被学习之前不会被启用。他们的默认值是200,你可以针对需要调高或降低这两个数值。
bayes_learn_during_report
(默认值: 1)
贝叶斯系统默认情况下会学习那些被分析并报告为垃圾邮件的邮件( spamassassin -r
)。你可以设置这个选项为0来关闭学习功能。
bayes_sql_override_username
用于 BayesStore::SQL 存储。
如果设置了这个选项, BayesStore::SQL 模块所设置的 username 将被覆盖。这个选项用于实现一个全局或分组的贝叶斯数据库。
bayes_use_hapaxes (默认值:
1)
指定贝叶斯分类器是否使用 hapaxes (仅仅出现了一次的词汇/字串)。它能提高命中率但是会增大数据库的大小到8到10倍。
bayes_journal_max_size (默认值:
102400)
SpamAssassin
将不定时的同步日志和数据库。通常是一天做一次同步,但是如果日志文件大小超过了这个选项所设置的值,将会同步更多次。该值的单位是字节。如果该值设置为0,不定时同步就不再进行。
bayes_expiry_max_db_size (默认值:
150000)
指定了贝叶斯字串数据库的最大的大小。当达到了最大的大小时,贝叶斯系统将视乎大小,保留原来的75%或10万个字串。一般15万个字串的数据库会占用8M的空间。
bayes_auto_expire (默认值:
1)
如果设置为1,贝叶斯系统将自动丢弃旧的字串。仅在数据库中的字串数量超过了
bayes_expiry_max_db_size 时才会自动丢弃旧的字串。
bayes_learn_to_journal (默认值:
0)
如果设置了这个选项,那么 SpamAssassin
在学习的时候会将结果写入到日志而不是直接写入到数据库中。降低了更新时对数据库的锁定情况的发生,但是也导致了对日志文件的更多读写和数据库更新的延迟。
其它选项
lock_method 方式
选择一个文件锁定方式来保护磁盘上的数据库文件。默认情况下,在UNIX上 SpamAssassin
会使用“NFS安全”锁定方式;不过,如果你确认你用于贝叶斯和自动白名单的数据库决不会通过NFS方式来访问,你可以“非NFS安全”的锁定方式。
这会相对快一些,但是如果同时有一个或多个通过NFS方式访问的客户端访问时,可能会造成数据库文件的破坏。
注意,不同的操作系统使用不同的锁定方式。
支持下列锁定方式:
nfssafe -
“NFS安全”的锁定方式
flock - 简单的 UNIX flock()
锁定方式
win32 - Win32 平台上使用 sysopen
(..., O_CREAT|O_EXCL)锁定方式
nfssafe 和 flock 只能用于 UNIX 上,win32 只能用于 Windows 。默认情况下,SpamAssassin
根据操作系统的不同使用 nfssafe 或 win32 锁定方式。
fold_headers ( 0 | 1 ) (默认值:
1)
默认情况下,SpamAssassin
添加的信头会使用行首空白进行折叠。换言之,它们将会断成多行而不是使用一个很长的行,其后的行添加前置的制表符来表示对前一行的续行。
可以通过这个选项来禁止自动折叠,不过要注意可能会生成很长的行。
report_safe_copy_headers
信头名 ...
如果使用 report_safe,一些原邮件的信头被复制到封装邮件的信头里面(From,
To, Cc, Subject, Date
等)。如果你希望其他的信头也被复制到这里,你可以使用这个选项。你可以在一行里面使用空格分隔开列出多个信头,或者使用多个此选项。
envelope_sender_header
信头名
如果SMTP服务器提供了“MAIL FROM:”通讯信息(信封发信人),SpamAssassin
会试图从邮件中发现该信息。这个选项用于指定信封发信人这个“伪信头”,这个“伪信头”可用于各种检查,比如SPF等。
默认情况下,几种MTA使用不同的信头,如:
X-Envelope-From
Envelope-Sender
X-Sender
Return-Path
如果可以通过查找一些特征(比如邮件的信头,或 fetchmail 的特征等)可以安全的确定这些,那么 SpamAssassin 会使用它们。
然而,某些邮件服务器的配置可能会导致选择了错误的信头。(更多的讨论请参见 SpamAssassin 的 BugZilla
里面的2142号和4747号错误。)
为了避免选择错误,可以使用 envelope_sender_header
来指明这个信头。这个信头包含的是你的 MTA 在 SMTP 对话过程中 MAIL FROM 命令里的邮件地址。
如果信头像在SMTP通讯中一样在右边的邮件地址两端包含了“ ”字符,这两个字符将被去掉。
如果该信头没有找到或者信头中没有包含“ @ ”符号, SpamAssassin 将在日志中记录一个警告,并采用其默认方式来来确定信封发信人。
(给 MTA 开发者的提示,我们希望将来使用一个单独的与其后的垃圾邮件扫描器不同的信头。
http://wiki.apache.org/spamassassin/EnvelopeSenderInReceived
提出了一个更好建议,使用 Received 信头在每一跳中记录信封发信人)
范例:
envelope_sender_header X-SA-Exim-Mail-From
describe 测试规则名 描述
...
用于描述一个测试规则。这个描述会出现在用户看到的细节报告中。
注意,以“__”开始的测试是为元规则所保留,它们不会被计分和列出在“命中的测试”报告中。
同时注意,习惯上描述文本不要超过50个字符。
report_charset 字符集 (默认值: 未设置)
设置附加了垃圾邮件原信件的报告邮件( text/plain 格式)的 MIME Content-Type 的字符集。
report
报告模板
设置附加了文本(text/plain)的垃圾邮件的报告邮件的报告模板,参见 /usr/share/spamassassin 中的 10_misc.cf
中的例子。
如果你设置了这个,请不要超过每行78个字符。每个 report 行累加到已有的模板定义上(前面的
report 行),可以使用
[url=#item_clear_report_template]clear_report_template[/url]
来清除前面的模板定义。
能够使用上述的特定标记。
clear_report_template
清除前面定义的 report 模板。
report_contact
联系地址
设置上面报告中使用的 _CONTACTADDRESS_ 的值。默认值是“the administrator of that
system”,后跟上运行本软件的系统的主机名。
report_hostname
使用的主机名
设置上面报告中使用的 _HOSTNAME_ 的值。默认情况下是 SpamAssassin 动态检测到的运行本软件的主机名。
unsafe_report
报告模板
设置附加了包含非文本(text/plain)部分的垃圾邮件的报告邮件的报告模板,参见 /usr/share/spamassassin 中的
10_misc.cf 中的例子。
每个 unsafe-report 行累加到已有的模板定义上(前面的 unsafe_report 行),可以使用
[url=#item_clear_unsafe_report_template]clear_unsafe_report_template[/url]
来清除前面的模板定义。
能够使用上述的特定标记。
clear_unsafe_report_template
清除 unsafe_report 模板。
规则定义与特权设置
这些设置与上面的设置不同,它们被称之为“特权设置”。只有用户在通过 procmailrc 文件或 forward 文件调用 SpamAssassin
时,或在系统管理员编辑 /etc/mail/spamassassin 下的配置文件时才能使用它们。出于安全性及效率的考虑,通过 spamc 来访问
spamd 的用户是不允许在他们的 user_prefs 文件中使用这些“特权设置”,除非设置了
allow_user_rules 选项(而且,也只能使用下面列出的这些特权设置)。
allow_user_rules ( 0 | 1 ) (默认值:
0)
这个选项允许用户在他们的 user_prefs 中创建可以用于 spamd
的规则(也只能创建规则)。默认是不允许用户创建规则的,因为这样可能会造成一些安全漏洞,如果 spamd 是以 root 身份运行的话,就有可能授予了用户
root 级别的访问权限。这并不是一个好的做法,除非你能够通过别的方法确保用户的规则是安全的。如果不是很有把握,不要打开这个选项。
此外,这个选项会导致每当一封邮件递交给用户时,如果他的 user_prefs 里面有自己定义的规则,那么 SpamAssassin
每次都会重新编译所有的规则,这会显著的增大服务器的负载。所以强烈建议不要允许用户自己定义规则!
注意,现在即便打开了这个选项, spamd 也不会使用 user_prefs 中的规则来修改系统现存的规则定义。
redirector_pattern
/模式/修饰符
用来匹配 URI 中的重定向站点部分和目标站点部分的正则表达式。
注意:目标 URI 必须使用小括号包含起来,模式的其它部分可以创建一个反向引用。
范例:
http://chkpt.zdnet.com/chkpt/whatever/spammer.domain/yo/dude
redirector_pattern /^https?:\/\/(?:opt\.)?chkpt\.zdnet\.com\/chkpt\/\w+\/(.*)$/i
header 测试规则名 信头名
操作符 /模式/修饰符 [if-unset: 字符串]
这个选项用于定义一个信头测试规则。
[url=#item_symbolic_test_name]测试规则名[/url]
是一个测试规则的名称,如“FROM_ENDS_IN_NUMS”。信头名是一个邮件信头的名称,如 “Subject”、“To”等。
信头后面加上“:raw”后缀可以防止使用 quoted-printable 或 base-64
编码的字符串自动进行解码。
信头后面加上“:addr”后缀可以去掉除了信头中的第一个邮件地址外的其他部分。例如,以下所有信头处理后都只剩下“example@foo”了:
example@foo
example@foo (Foo Blah)
example@foo,
example@bar
display: example@foo (Foo Blah), example@bar ;
Foo Blah
``Foo Blah''
``'Foo Blah'''
信头后面加上“:name”后缀可以去掉除了信头中第一个真实名字外的其他部分。例如, 以下所有信头处理后只剩下“Foo
Blah”了:
example@foo (Foo Blah)
example@foo (Foo Blah), example@bar
display: example@foo (Foo Blah), example@bar ;
Foo Blah
``Foo Blah''
``'Foo Blah'''
可以使用以下的几个“伪”信头:
ALL
表示任何信头的文字。
ToCc
表示“To”和“Cc”信头。
EnvelopeFrom
是在递交邮件的 SMTP 通讯过程中,“MAIL FROM:”中的地址(如果可用)。如何设置的更多信息参见
envelope_sender_header。
MESSAGEID
表示信件中所有的 Message-Id 信头。一些邮件列表软件会将原来的 Message-Id 信头改名为
Resent-Message-Id 或 X-Message-Id ,然后使用自己的 Message-Id
信头。这个“伪”信头返回以上全部三种信头,使用回车符分隔开。
X-Spam-Relays-Untrusted,
X-Spam-Relays-Trusted, X-Spam-Relays-Internal 和
X-Spam-Relays-External 表示一个可移植的、预解析的邮件网络路径。像 Received
信头的信息一样,分别是“可信”与“不可信”和“内部”与“外部”。更多细节参见
http://wiki.apache.org/spamassassin/TrustedRelays
。
操作符是 =~ (匹配其后的正则表达式)或 !~
(不匹配其后的正则表达式)。模式是一个 Perl 风格的正则表达式,修饰符是对正则表达式的修饰(请参见 Perl 中有关正则表达式的部分)。 注意,即便你使用了
x 修饰符,也不支持多行的正则表达式。还要注意,“#”字符必须转义成“\#”,否则会被认为是一行注释。
如果使用了 [if-unset: 字符串] 标记,那么如果邮件中没有发现该信头,就会使用该字符串来进行模式匹配。
测试规则名不能用数字开头,只能使用英文字母、数字和下划线。按照惯例不要使用小写字母、名字不要超过22个字符。也不能使用中划线。
注意,以“__”(两个下划线)开头的测试规则被保留用于元规则,他们不会被计分和列在“命中的测试”报告中。以“T_”开头的测试规则被保留用于QA测试,它们应该给予很低的评分。
如果你增加或修改一个测试规则,请使用 spamassassin --lint
来测试一下是否有语法错误。这可以避免出现错误消息或导致其它的测试被忽略。
header 测试规则名
exists:信头名
定义一个“信头存在”测试规则。信头是一个要测试存在与否的信头名。这是上面的信头测试规则的一个简化版本。
header 测试规则名
eval:评估行数([参数])
定义一个邮件信头的评估测试。
[url=#item_name_of_eval_method]评估函数[/url]
是Mail::SpamAssassin::EvalTests
中定义的测试函数。参数是可选的。
header 测试规则名 eval:check_rbl('名单名称', '名单地址' [,
'返回码'])
检查一个 DNSBL (以 DNS 方式运行的黑名单或白名单)。它会从邮件的 Received: 信头中取出所有的IP地址,如果IP地址不在
trusted_networks 中,那么对这些IP地址进行DNSBL查询。以下几点需要注意:
重复或保留的 IP 地址
重复的IP地址仅仅被查询一次。保留的IP地址(如192.168.0.1、127.0.0.1等)不查询。保留的IP地址列在 , , , 或 中
名单名称
它也称作“zone ID”(译者注:即给所查询的DNSBL的一个名字,如用 CBLPLUS 代表 cblplus.anti-spam.org.cn.
)。如果你要查询像 NJABL 或 SORBS 这样的由多个黑名单合并而成的多重 DNSBL ,你可以通过
[url=#item_check_rbl_sub]check_rbl_sub()[/url]
来比较查询返回的结果。
如果上面取出的多个IP地址的DNSBL查询不止一个返回了命中结果,并不会重复计分,因为对于每封邮件来说,该规则只被触发一次(译者注:即只要有一个 IP
地址在黑名单中就算触发了该规则)。
黑白名单地址
这是DNSBL的根区(译者注:即DNSBL的服务地址,如cblplus.anti-spam.org.cn.),使用点结尾。
返回码
这是一个和下面的
[url=#item_check_rbl_sub]check_rbl_sub()[/url]
一样的返回码,它是可选的。
查询除了第一跳外的所有 IP
地址
可以在“名单名称”后加上“-notfirsthop”后缀来查询除了第一跳外的所有IP地址。它被用于在查询动态地址黑名单(译者注:动态地址是用于动态的分配给拨号、ISDN、ADSL等连接的IP地址)。邮件的第一跳也许是动态地址,但是至少应该有一跳以上(通过他们的
SMTP
服务器)的邮件递交跳数,这是合理的,所以在这种情况下不应该因第一跳在动态地址黑名单里面而增加评分。但是如果只有一跳,那么无论如何都会被查询的,因为邮件应该通过它的外发邮件服务器进行递交,而不是直接投递到你的邮件服务器。
按 IP
是否可信查询
当查询一个“正向”的DNSBL(DNS白名单)时,你不能盲目信任那些“Received”信头中的没有被列在可信任的中继服务器名单中的IP地址(译者注:除了你的可信中继服务器及连接到它们的IP以外,其它地址有可能是伪造的;连接到你的可信中继服务器的
IP 地址是无法伪造的,该地址的真实可靠的)。为了查询第一个可信的 IP
地址,可以在“黑白名单名称”后加上“-firsttrusted”后缀,这会查询连接到最远的一个可信中继服务器的IP地址。
注意,这需要 SpamAssassin 能知道那个中继服务器是可信任的。在简单的环境里, SpamAssassin
能够很好的自行推测。在复杂的环境,你可以通过手工设定 trusted_networks
可以得到更好的结果。
此外,你能够通过在“名单名称”后加上“-untrusted”后缀来查询所有不可信的IP地址。重要提示:这不包括最近的一个“不可信行”,如上述的“-firsttrusted”所指的地址。因为我们在这里讨论的是IP地址是否是可信任的,而不是信头的来源;而且最近的一个信头(即“firsttrusted”),其包含的数据是可信的。更多细节参见
http://wiki.apache.org/spamassassin/TrustedRelays
。
只查询最后的外部
IP
在“名单名称”后加上“-lastexternal”后缀,你可以只查询连接到你的内部网络的外部主机或使用公开 IP 地址的最后一个外部主机。
译者注:
中国反垃圾邮件联盟
所推出的DNSBL服务的设置如下,它们可以放到
/etc/mail/spamassassin/local.cf
中,但是不必全部放入和使用,通常根据需要使用其中一个就可以了,推荐使用CBL-。设定的评分可以自己的情况自行调整:
CBL(返回值是127.0.8.2):
header RCVD_IN_CASA_CBL
eval:check_rbl('CBL','cbl.anti-spam.org.cn.','127.0.8.2')
describe
RCVD_IN_CASA_CBL Relay has be listed in CASA CBL,
http://anti-spam.org.cn/
tflags RCVD_IN_CASA_CBL net
score RCVD_IN_CASA_CBL 3.0
CDL(返回值是127.0.8.4):
header RCVD_IN_CASA_CDL
eval:check_rbl('CDL','cdl.anti-spam.org.cn.','127.0.8.4')
describe
RCVD_IN_CASA_CDL Relay has be listed in CASA CDL,
http://anti-spam.org.cn/
tflags RCVD_IN_CASA_CDL net
score RCVD_IN_CASA_CDL 4.0
CBL+(返回值是127.0.8.6):
header RCVD_IN_CASA_CBLPLUS
eval:check_rbl('CBLPLUS','cblplus.anti-spam.org.cn.','127.0.8.6')
describe
RCVD_IN_CASA_CBLPLUS Relay has be listed in CASA CBL+,
http://anti-spam.org.cn/
tflags RCVD_IN_CASA_CBLPLUS
net
score RCVD_IN_CASA_CBLPLUS
4.0
虽然CBL+是CBL和CDL的综合,但是CBL+不是一个多重列表,其返回值是固定的一个 127.0.8.6。
CBL-(返回值是127.0.8.5):
header RCVD_IN_CASA_CBLLESS
eval:check_rbl('CBLLESS','cblless.anti-spam.org.cn.','127.0.8.5')
describe
RCVD_IN_CASA_CBLLESS Relay has be listed in CASA CBL-,
http://anti-spam.org.cn/
tflags RCVD_IN_CASA_CBLLESS net
score RCVD_IN_CASA_CBLLESS 4.0
CML(返回值是127.0.8.1):
header RCVD_IN_CASA_CML
eval:check_rbl('CML','cml.anti-spam.org.cn.','127.0.8.1')
describe
RCVD_IN_CASA_CML Relay has be listed in CASA CML (whitelist),
http://anti-spam.org.cn/
tflags RCVD_IN_CASA_CML net
nice
score RCVD_IN_CASA_CML -5.0
这是一个白名单,评分是负值,可以降低计分。
此外,由于国内一些 ISP 的 DNS
存在劫持问题(即在查询一个不存在的地址时候,总是返回一个特定的地址,用于将用户错误的访问导向到一个特定网站),这种情况下,用户会发现其所查询的任何地址都被列入到了
RBL 中。因此,我们建议,尽可能的情况下都设置返回码验证,以避免这个问题。当然,更换一个没有被劫持的 DNS 也可以。
header 测试规则名 eval:check_rbl_txt('名单名称',
'名单地址')
类似于 check_rbl() ,只是查询的是 TXT 类型的 DNS 记录而不是 A 类型的 DNS
记录。如果所查询的DNSBL支持TXT查询,返回的结果是一行文字,用来说明该地址被列入黑名单的原因,通常是一个可以查询黑名单数据库的链接。
header 测试规则名 eval:check_rbl_sub('名单名称',
'返回码')
创建某个 DNSBL 查询的子测试。如果你要查询一个像 relays.osirusoft.com
那样的多重DNSBL,你可以使用对应的“名单名称”来比较 chek_rbl 查询得到结果。如果DNSBL查询返回多个 A
记录时,“返回码”可以设置为一个用点分隔的 IPv4
地址;如果DNSBL查询返回一个包含掩码的IP地址时,“返回码”可以是一个代表掩码的正十进制整数;如果是一个SenderBase查询(对
sa.senderbase.org 的TXT查询),“测试结果”是一个以“sb:”开头的表达式;如果前面的都不符合,它还可以是一个正则表达式。
注意:这个“名单名称”必须和前面的 check_rbl() 中的名字完全一样,包括后缀的“-notfirsthop”等。
body
测试规则名 /模式/修饰符
定义一个信体模式测试。模式是一个Perl的正则表达式。注意,“#”字符必须转义成“\#”,否则会被认为是一行注释。
这里“body”指的是邮件信体里面的普通文本;任何非文本的MIME部分都会去掉,如果需要的话, Quoted-Printable 或 Base 64
编码的文本都会被解码。邮件的主题信头也作为了邮件信体的第一个段落处理。在模式匹配前,所有的HTML标记和换行都会被去掉。
body 测试规则名 eval:评估函数([参数])
定义一个邮件信体的评估测试,参见上面。
uri 测试规则名
/模式/修饰符
定义一个uri的模式测试。模式是一个Perl的正则表达式。注意,“#”字符必须转义成“\#”,否则会被认为是一行注释。
这里“uri”指的是邮件信体中所有的URI,测试会对每一个URI进行测试,如果发现了匹配,增加其对应的评分。当需要测试URI时,可以用这个测试来替代使用“body”测试来匹配信体中的URI,它会更精确的匹配在URL的两端,同时也速度更快。
rawbody 测试规则名
/模式/修饰符
定义一个原始信体模式测试。模式是一个Perl的正则表达式。注意,“#”字符必须转义成“\#”,否则会被认为是一行注释。
这里“raw body”指的是邮件信体里面所有的文本。Quoted-Printable 或 Base 64
编码的文本都会被解码,但是HTML代码和换行仍旧保留。模式是逐行进行匹配的。
rawbody 测试规则名 eval:评估函数([参数])
定义一个原始邮件信体的评估测试,参见上面。
full
测试规则名 /模式/修饰符
定义一个整个邮件的模式测试。模式是一个Perl的正则表达式。注意,“#”字符必须转义成“\#”,否则会被认为是一行注释。
整个邮件包括完整的信头和信体,其中包括MIME编码的数据,如图像、其它附件、MIME边界等等。
full 测试规则名 eval:评估函数([参数])
定义一个整个邮件的评估测试,参见上面。
meta 测试规则名
逻辑表达式
定义一个逻辑表达式来测试其他的测试是否命中或未命中。例如:
meta META1 TEST1 && !(TEST2 || TEST3)
注意,英语的操作符(“and”、“or”)会被作为测试规则名处理,另外,不支持异或(XOR)操作。
meta
测试规则名 逻辑运算表达式
还能够定义一个逻辑运算表达式来计算其他的测试结果的运算结果,未命中的值是“0”,命中的值是非零值。命中的元测试的值是它的运算表达式;命中的评估函数测试的值是它返回的值;测试标志设置为“multiple”的命中的信头、信体、原始信体、uri或整个邮件的测试的值是测试命中的次数;其它的命中测试的值是“1”.
例如:
meta META2 (3 * TEST1 - 2 * TEST2) > 0
注意,不能使用Perl内建的运算符和函数,如abs()等,它们会被作为测试规则名处理。
如果你要定义一个元规则,但是不希望在测试每个子规则时将其评分计算到总的评分上,只在整个元规则匹配时才将元规则的评分计算到总的评分上时,可以给子规则名前加上“__”(两个下划线),SpamAssassin
不会计入这些子规则的评分。
tflags 测试规则名 [
{net|nice|learn|userconf|noautolearn|multiple} ]
用于设置一个测试规则的标志。这些标志用于评分驱动的后台系统的测试行为细节。关于这些标志对那些系统的作用的更多信息请参见
[url=#item_bayes_auto_learn]bayes_auto_learn[/url]
。有下列标志:
net
该测试是一个网络测试,在大量测试的系统或使用 -L 参数时,他们不会被运行,所以它的评分不会被计算进总的评分。
nice
该测试被用于补偿误判的邮件评分,它应该被指定为负值。
userconf
该测试在使用前需要用户配置(如 language- 类的测试)。
learn
该测试使用前要求经过学习。
noautolearn
该测试的评分不会被学习系统所学习。
multiple
该测试将被运行多次,用于元规则测试。只影响信头、信体、原始信体、uri和整个邮件的测试规则。
priority 测试规则名
n
指定一个测试的优先级。除了DNS和元测试外的所有测试都按照优先级的顺序进行测试(负优先级的测试运行在所有正优先级测试之前)。默认值是0。
不能使用 -99999999999999 和 -99999999999998 ,它们在内部有特殊用途。
管理员设置
这些设置与上面的设置不同,它们甚至比上面的“特权设置”还要“更特权”。无论
allow_user_rules 是否设置,它们不能用于供 spamc/spamd 所读取的用户的 user_prefs
文件中。不过,所有的设置都可用在用户直接运行的本地程序中。
version_tag 版本标签
版本标签会后缀到 X-Spam-Status 中的 SA
的版本号后面。你应该在修改规则集的同时也修改这个版本标签,特别是你计划公开发布你的规则集时。可以考虑用你的姓或名字缩写并加上一个递增的表示修改次数的数字来组合成这个字符串。
这个字符串会转换成小写的,任何的非字母/数字和标点符号会被转换成下划线。
范例:
version_tag myrules1 # version=2.41-myrules1
test 测试规则名 (ok|fail)
用于测试的字符串
定义一个回归测试字符串。你能给每个测试规则定义一个以上的回归测试字符串。简单的说,就是定义一个测试规则所匹配的字符串。
这些测试仅仅在测试环境中使用,它们不会影响到 SpamAssassin 的正常使用。
rbl_timeout n (默认值: 15)
所有的DNS查询都是在整个测试开始的时候进行,并且在整个测试结束时候读取结果。这个选项设置了最大的DNS查询等待时间。在大多数DNS查询都成功完成的情况下,
SpamAssassin
将不会浪费时间来等待剩下的那些查询,可能它们根本没有回应了。当剩余没有完成的请求越少时,等待的时候也越短。对于默认的15秒的等待时间,下面是一个表格说明了当剩余请求有多少时会等待多少时间:
剩余的查询
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
等待时间
15
15
14
14
13
11
10
8
5
3
0
此外,当更多的查询结果返回时,剩余时间会变得更短,在超时前,未完成的查询会给至少1秒钟的查询时间,但是等待时间总不会超过 rbl_timeout
所指定的时间。
举个例子,如果邮件检查开始时候有20个查询,当有16个(剩下20%)返回了结果后,剩下的4个查询必须在开始后的5秒钟内完成,否则就会放弃这几个查询。
util_rb_tld 顶级域 顶级域
...
用于给 RegistrarBoundaries 列表里增加新的顶级域(TLD)。这个列表的更新通常与 SpamAssassin
发布新版本时一同更新,不过可以用该选项在新版本发布前就更新这个列表。顶级域如 com 、 net 、 org 等等。
util_rb_2tld 二级域
二级域 ...
用于给 RegistrarBoundaries 列表里增加新的二级域(2TLD)。这个列表的更新通常与 SpamAssassin
发布新版本时一同更新,不过可以用该选项在新版本发布前就更新这个列表。二级域如 co.uk 、 fed.us 等等。
bayes_path 路径 (默认值:
~/.spamassassin/bayes)
指定贝叶斯数据库的目录和文件名。使用这个路径,并加上“_toks”、“_seen”等后缀创建几个数据库:默认情况下就是
~/.spamassassin/bayes_seen 、
~/.spamassassin/bayes_toks 等。
默认情况下,每个用户都在自己的 ~/.spamassassin
目录里面存放这些数据库,权限模式为0700或0600。如果整个站点应用 SpamAssassin
,你可以让所有用户共享同一个数据库,从而降低磁盘的占用。(不过,贝叶斯过滤器在用户使用自己单独的数据库时更加有效。)
bayes_file_mode (默认值:
0700)
指定贝叶斯数据库的权限模式。
确保你指定的权限包含“x”(执行)权限,因为在创建目录时,它需要执行权限才能正常使用。不过,如果创建的是文件,该文件并不会有任何执行权限(umask
被设置为111)。
bayes_store_module
模块名称
如果设置了该选项,该模块用于提供替换默认的贝叶斯存储方式。该模块必须遵循公布的存储规范。(参见
Mail::SpamAssassin::BayesStore )。例如,可以设置为 Mail::SpamAssassin::BayesStore::SQL
来使用通用的 SQL 存储模块。
bayes_sql_dsn
DBI::数据库类型:数据库名:主机名:端口
该选项用于 BayesStore::SQL 存储方式。
这个选项指定的DSN用于连接到基于SQL方式的贝叶斯数据库。
bayes_sql_username
用户名
该选项用于 BayesStore::SQL 存储方式。
这个选项指定上述的DSN的连接用户名。
bayes_sql_password
密码
该选项用于 BayesStore::SQL 存储方式。
这个选项指定上述的DSN的连接密码。
bayes_sql_username_authorized ( 0 | 1 )
(默认值: 0)
设置是否在 BayesSQL 中调用 services_authorized_for_username
插件。如果这个插件没有检测到用户被授权使用贝叶斯功能或该模块不可用,数据库不会进行初始化。 <