# 注释文本
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 [...] ( 波兰语: 检测到了垃圾邮件)
/usr/share/spamassassin
和
/etc/mail/spamassassin
目录中读取这些配置文件。
http://wiki.apache.org/spamassassin/ImportantInitialConfigItems
~
字符来表示用户的主目录,但是不支持其它的 shell 风格的路径扩展,如通配符或 ~user/。
n.nn
可以是整数或者实数。 默认值为5.0,这是很严厉的设置了,它适用于单个用户使用;但是对于应用于整个服务器,应该设置得更保守一些(更高一些),比如设置为8.0或10.0等等。通常不推荐设置为自动删除或丢弃那些被判定为垃圾邮件的邮件,否则可能
招致用户的强烈抗议;除非评分特别的高,比如15.0或者更高,才可以考虑直接删除。这个选项以前称之为
required_hits
,现在虽然还可以用,但是不推荐使用旧的名称。
测试规则名
是一个测试规则的名称,如: FROM_ENDS_IN_NUMS 。
whitelist_auth
或其它认证的白名单方式替代,或使用
whitelist_from_rcvd
。
[email protected]
、
*@isp.com 或
*.domain.net
都是可以的。需要注意的是只支持 * 和 ? (匹配单个字符),但是不支持其他的元字符匹配。由于一些安全的原因,这里也不支持正则表达式。
whitelist_from 行来指定。
Envelope-Sender Resent-Sender X-Envelope-From From
envelope_sender_header
。
whitelist_from [email protected] [email protected] whitelist_from *@example.com
unwhitelist_from [email protected] [email protected] unwhitelist_from *@example.com
internal_networks
被正确配置。简言之,除非在一个复杂的网络里,设置这个参数可以得到不错的效果。
whitelist_from_rcvd [email protected] example.com whitelist_from_rcvd *@axkit.org sergeant.org
whitelist_from_rcvd,但是它用于在
SpamAssassin 发行包中指定默认白名单。这个白名单的评分较低,它常常是垃圾邮件发送者假称的地址。
whitelist_from_rcvd
中的哪些邮件地址可以不使用
white_from_rcvd 中对应的邮件中继发信,而使用其它的中继服务器发信。默认情况下,发信地址在
white_from_rcvd 中,但是中继服务器却不是列出的那个,这种情形会触发一个测试伪造的规则。将该地址放入到
white_allows_relay 中防止触发。
[email protected]
,
*@isp.com ,或
*.domain.net
都是可以的。需要注意的是只支持 * 和 ? (匹配单个字符),不支持其他的元字符匹配。由于安全的原因,这里不支持正则表达式。
whitelist_allows_relays 行来指定。
whitelist_allows_relays [email protected] [email protected] whitelist_allows_relays *@example.com
unwhitelist_from_rcvd [email protected] [email protected] unwhitelist_from_rcvd *@axkit.org
whitelist_from
相同。
unblacklist_from [email protected] [email protected] unblacklist_from *@spammer.com
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
与 blacklist_from
的格式相同。
whitelist_from
和
whitelist_from_rcvd
不同的是,在监测白名单前会首先会检查邮件是否是授权的发信人。
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
whitelist_auth ,但是它用于在
SpamAssassin 发行包中指定默认白名单。这个白名单的评分较低,它常常是垃圾邮件发送者假称的地址。
whitelist_auth
项。所匹配的地址也必须同样被前面的
whitelist_auth
选项所匹配。
unwhitelist_auth [email protected] [email protected] unwhitelist_auth *@example.com
rewrite_header subject ,但是被重写的邮件没有包含 Subject 信头,会自动添加一个 Subject 信头。
字符串中可以包含下面描述的模板标记。如果需要的话,还可以使用\n和\t来增加回车符和制表符。使用\\来表示一个反斜线字符。其它的转义字符无效,只被简单的去掉反斜线。
clear_headers
。
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_
X-Spam-
开头的(所以这里指定信头名时应该前缀以
X-Spam-
)。
clear_headers
。
X-Spam-
信头而不修改信体。此外,
X-Spam-Report 信头会被增加到垃圾邮件中,你可以设置
report_safe 为0后使用
remove_header 来去掉这些 SpamAssassin 的定制信头。
CHARSET_FARAWAY、
CHARSET_FARAWAY_BODY
和
CHARSET_FARAWAY_HEADERS
的触发条件。
ok_locales all (允许全部地s) ok_locales en (仅允许英文) ok_locales en ja zh (仅允许英文、中文和日文)
http://wiki.apache.org/spamassassin/TrustPath
获取更多信息。
/ 及其后的掩码,这是一个CIDR风格的网络地址;
如果没有指定掩码,但是有少于4个的IP地址单元并后缀以一个点的话,它是指所有前面的IP地址单元相同的网络地址;如果没有指定掩码也没有后缀的点,它是指一个单一IP地址,就像指定了/32掩码一样。
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
clear_trusted_networks
清除前面定义的可信网络。
internal_networks
,那么
internal_networks
的值将作为这个选项的默认值。
trusted_networks ,也没有配置
internal_networks
,SpamAssassin 会自行分析判断,流程如下:
trusted_networks 一样。
trusted_networks
而没有设置
internal_networks,那么
trusted_networks
的值将作为这个选项的默认值。
trusted_networks
也没有指定
internal_networks
,即没有本地地址。换言之,任何连接到运行 SpamAssassin 的主机的主机都被认为是外部的。
internal_networks 中的地址都会出现在
trusted_networks 中,换言之,
internal_networks
总是可信主机的一个子集。
trusted_networks
和
internal_networks
中定义的可信网络和内部网络。
envelope_sender_header
。
dns_available test: domain1.tld domain2.tld domain3.tld
Mail::SpamAssassin::Plugin::AutoLearnThreshold
插件模块的文档。
bayes_ignore_header X-Upstream-Spamfilter bayes_ignore_header X-Upstream-SomethingElse
sa-learn
使用 --use-ignores 选项的话,也会忽略这些邮件。可以列出一个或多个地址,格式参见
whitelist_from
。
bayes_ignore_from
。
spamassassin -r
)。你可以设置这个选项为0来关闭学习功能。
flock()
锁定方式
sysopen (..., O_CREAT|O_EXCL)
锁定方式
report_safe,一些原邮件的信头被复制到封装邮件的信头里面(
From, To, Cc, Subject, Date 等)。如果你希望其他的信头也被复制到这里,你可以使用这个选项。你可以在一行里面使用空格分隔开列出多个信头,或者使用多个此选项。
X-Envelope-From Envelope-Sender X-Sender Return-Path
envelope_sender_header
来指明这个信头。这个信头包含的是你的 MTA 在 SMTP 对话过程中 MAIL FROM 命令里的邮件地址。
http://wiki.apache.org/spamassassin/EnvelopeSenderInReceived
提出了一个更好建议,使用 Received 信头在每一跳中记录信封发信人)
envelope_sender_header X-SA-Exim-Mail-From
clear_report_template
来清除前面的模板定义。
clear_unsafe_report_template
来清除前面的模板定义。
/etc/mail/spamassassin 下的配置文件时才能使用它们。出于安全性及效率的考虑,通过 spamc 来访问 spamd 的用户是不允许在他们的 user_prefs
文件中使用这些“特权设置”,除非设置了
allow_user_rules 选项(而且,也只能使用下面列出的这些特权设置)。
redirector_pattern /^https?:\/\/(?:opt\.)?chkpt\.zdnet\.com\/chkpt\/\w+\/(.*)$/i
测试规则名
是一个测试规则的名称,如“FROM_ENDS_IN_NUMS”。信头名是一个邮件信头的名称,如 “Subject”、“To”等。
:raw”后缀可以防止使用
quoted-printable 或 base-64 编码的字符串自动进行解码。
:addr”后缀可以去掉除了信头中的第一个邮件地址外的其他部分。例如,以下所有信头处理后都只剩下“
example@foo”了:
:name”后缀可以去掉除了信头中第一个真实名字外的其他部分。例如,
以下所有信头处理后只剩下“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: 字符串]
标记,那么如果邮件中没有发现该信头,就会使用该字符串来进行模式匹配。
评估函数
是
Mail::SpamAssassin::EvalTests
中定义的测试函数。参数是可选的。
check_rbl_sub()
来比较查询返回的结果。
check_rbl_sub()
一样的返回码,它是可选的。
trusted_networks
可以得到更好的结果。
http://wiki.apache.org/spamassassin/TrustedRelays
。
bayes_auto_learn
。有下列标志:
version_tag myrules1 # version=2.41-myrules1
剩余的查询 |
100%
|
90%
|
80%
|
70%
|
60%
|
50%
|
40%
|
30%
|
20%
|
10%
|
0%
|
等待时间 |
15
|
15
|
14
|
14
|
13
|
11
|
10
|
8
|
5
|
3
|
0
|
~/.spamassassin/bayes_seen
、
~/.spamassassin/bayes_toks
等。
~/.spamassassin 目录里面存放这些数据库,权限模式为
0700或0600。如果整个站点应用 SpamAssassin ,你可以让所有用户共享同一个数据库,从而降低磁盘的占用。(不过,贝叶斯过滤器在用户使用自己单独的数据库时更加有效。)
DBI:mysql:spamassassin:localhost
ldap://localhost:389/dc=koehntopp,dc=de?spamassassinconfig?uid=__USERNAME__
SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = '@GLOBAL' ORDER BY username ASC
SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = '@GLOBAL' OR username = '@~'||_DOMAIN_ ORDER BY username ASC
SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = '@GLOBAL' ORDER BY username DESC
cn=master,dc=koehntopp,dc=de
模块路径是装入模块的路径,包含模块的 Perl 代码。如果指定的是一个相对路径,那是相对于当前配置文件的位置而言的。如果省略了路径参数,会从Perl的查找路径(@INC数组)中找到并载入。
Mail::SpamAssassin::Plugin
中的更多细节来写自己的插件。
loadplugin 一样,但是当不能找到模块文件(.pm)
时会直接忽略。
文件
中的配置选项。相对路径是相对于当前配置文件或用户的配置文件的位置。
else
或 endif 之间的配置仅在条件表达式为真值时有效(对于Perl而言,就是该值是有定义的且非0)。
( ) - + * / _ . , < = > ! ~ 0-9 空白
x.yyyzzz 格式,这里
x 是主版本号, y 是辅版本号, z 是修订号。 所以3.0.0是
3.000000
,3.4.80是
3.004080
。
plugin(插件名)
if
语句,那么会触发一个警告,但是下一个配置文件将会继续进行处理(译者注:相当于在上个文件中末尾自动用 endif 结束了)。
if (version > 3.000000) header MY_FOO ... endif
loadplugin MyPlugin plugintest.pm
if plugin (MyPlugin) header MY_PLUGIN_FOO eval:check_for_foo() score MY_PLUGIN_FOO 0.1 endif
if plugin(PluginModuleName)
一样。
x.yyyzzz 格式,这里
x 是主版本号, y 是辅版本号, z 是修订号。 所以3.0.0是
3.000000
,3.4.80是
3.004080
。
_YESNOCAPS_ | 根据是否是垃圾邮件返回:“YES”/“NO” |
_YESNO_ | 根据是否是垃圾邮件返回:“Yes”/“No” |
_SCORE(PAD)_ | 邮件的评分。如果指定了PAD参数,且是空格或数字0时,评分会用 空格或数字0进行填充(默认情况下是不填充)。例如 _SCORE(0)_ 将2.4填充成02.4,而 _SCORE(00)_ 将其填充成002.4。12.3则会 分别填充成12.3和012.3 |
_REQD_ | 垃圾邮件评分标准线(译者注:即 require 的值) |
_VERSION_ | 版本号(如:3.0.0或3.1.0-r26142-foo1) |
_SUBVERSION_ | 子版本号或代码修订日期(如:2004-01-10) |
_HOSTNAME_ | 处理邮件的主机的主机名 |
_REMOTEHOSTNAME_ | 发送邮件的主机的主机名,只在 spamd 中可用 |
_REMOTEHOSTADDR_ | 发送邮件的主机的IP地址,只在 spamd 中可用 |
_BAYES_ | 贝叶斯评分 |
_TOKENSUMMARY_ | 所找到的新的、中立的、垃圾邮件的、正常邮件的字串数量 |
_BAYESTC_ | 所找到的新的字串数量 |
_BAYESTCLEARNED_ | 所找到的出现过的字串数量 |
_BAYESTCSPAMMY_ | 所找到的垃圾邮件倾向的字串数量 |
_BAYESTCHAMMY_ | 所找到的正常邮件倾向的字串数量 |
_HAMMYTOKENS(N)_ | 前N个最重要的正常邮件字串(默认是5个) |
_SPAMMYTOKENS(N)_ | 前N个最重要的垃圾邮件字串(默认是5个) |
_DATE_ | 扫描时间,使用 rfc-2822 格式 |
_STARS(*)_ | 每一分的评分分值使用一个“*”代表(可以使用任何字符) (限制最多有50个星号) |
_RELAYSTRUSTED_ | 使用的可信任中继服务器(参见 X-Spam-Relays-Trusted) |
_RELAYSUNTRUSTED_ | 使用的非信任中继服务器(参见 X-Spam-Relays-Untrusted) |
_RELAYSINTERNAL_ | 使用的内部中继服务器(参见 X-Spam-Relays-Internal) |
_RELAYSEXTERNAL_ | 使用的外部中继服务器(参见 X-Spam-Relays-External) |
_LASTEXTERNALIP_ | 从外部投递到内部的客户端的 IP 地址 |
_LASTEXTERNALRDNS_ | 从外部投递到内部的客户端的反向DNS解析名称 |
_LASTEXTERNALHELO_ | 从外部投递到内部的客户端的 HELO 字符串 |
_AUTOLEARN_ | 自动学习状态(“ham”、“no”、“spam”、“disabled”、 “failed”或“unavailable”) |
_AUTOLEARNSCORE_ | 用于自动学习的邮件分值 |
_TESTS(,)_ | 使用逗号(或其它字符)分隔开的命中的测试列表 |
_TESTSSCORES(,)_ | 如上,只是加上了相应的分值(如:AWL=-3.0,...) |
_SUBTESTS(,)_ | 使用逗号(或其它字符)分隔开的命中的子测试列表 |
_DCCB_ | DCC 的“Brand” |
_DCCR_ | DCC 的结果 |
_PYZOR_ | Pyzor 的结果 |
_RBL_ | 正向RBL查询的完整的原始结果(使用DNS URI格式) |
_LANGUAGES_ | 邮件中可能使用的语言 |
_PREVIEW_ | 内容预览 |
_REPORT_ | 命中的测试规则的简要报告(用于信头报告中) |
_SUMMARY_ | 命中的测试规则的标准报告(用于邮件报告中) |
_CONTACTADDRESS_ | report_contact 的值 |
_HEADER(NAME)_ | 包括信头的值。值与信头规则中匹配的一样(参见文档中其它部分) |
如果引用的标记不在上述列表中,也没有在载入的模块中定义,标记将保持不变。
HAMMYTOKENS
和
SPAMMYTOKENS
标记有一个可选的用于指定特定格式的第二个参数,参见下面的
正常字串/垃圾字串标记格式 部分。
正常字串(HAMMYTOKENS)
和垃圾字串(
SPAMMYTOKENS
)有一个用于指定特定格式的可选的第二个参数:
_SPAMMYTOKENS(N,FMT)_
,
_HAMMYTOKENS(N,FMT)_
。可用格式如下:
add_header all Spammy _SPAMMYTOKENS(2,short)_
X-Spam-Spammy: remove.php, UD:jpg
“remove.php”
和
“UD:jpg”。(最后一个冒号后面的是字串,冒号前的标识符表示该字串的一些特性,这里 UD 的意思是“该字串看起来像是域名的一部分”)
add_header all Spammy _SPAMMYTOKENS(2,compact)_
0.989-6--remove.php, 0.988-+--UD:jpg
add_header all Spammy _SPAMMYTOKENS(2,long)_
X-Spam-Spammy: 0.989-6--0h-4s--4d--remove.php, 0.988-33--2h-25s--1d--UD:jpg
compact
,long 显示超过9个的保留权重数量而不是显示一个+。)
lang xx
开始的行仅在用户使用该语言时有效,允许在测试规则的描述和模板中使用特定的语言。
lang pt_BR
; 或仅使用语言,如
lang de
。
Mail::SpamAssassin
spamassassin
spamd