]>
Commit | Line | Data |
---|---|---|
b780ea8d SI |
1 | # SpamAssassin rules file: meta tests |
2 | # | |
3 | # Please don't modify this file as your changes will be overwritten with | |
4 | # the next update. Use /etc/mail/spamassassin/local.cf instead. | |
5 | # See 'perldoc Mail::SpamAssassin::Conf' for details. | |
6 | # | |
7 | # Add meta tests which cover *both* headers and body here. | |
8 | # | |
9 | # Note: body tests are run with long lines, so be sure to limit the | |
10 | # size of searches; use /.{0,30}/ instead of /.*/ to avoid huge | |
11 | # search times. | |
12 | # | |
13 | # <@LICENSE> | |
14 | # Licensed to the Apache Software Foundation (ASF) under one or more | |
15 | # contributor license agreements. See the NOTICE file distributed with | |
16 | # this work for additional information regarding copyright ownership. | |
17 | # The ASF licenses this file to you under the Apache License, Version 2.0 | |
18 | # (the "License"); you may not use this file except in compliance with | |
19 | # the License. You may obtain a copy of the License at: | |
20 | # | |
21 | # http://www.apache.org/licenses/LICENSE-2.0 | |
22 | # | |
23 | # Unless required by applicable law or agreed to in writing, software | |
24 | # distributed under the License is distributed on an "AS IS" BASIS, | |
25 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
26 | # See the License for the specific language governing permissions and | |
27 | # limitations under the License. | |
28 | # </@LICENSE> | |
29 | # | |
30 | ########################################################################### | |
31 | ||
21dcadbf | 32 | require_version 4.000000 |
b780ea8d SI |
33 | |
34 | # some tests that will trigger FPs on ISO-2022-JP mails. | |
35 | ||
36 | body __ISO_2022_JP_DELIM /\e\$B/ | |
37 | ||
38 | meta UPPERCASE_50_75 (!__ISO_2022_JP_DELIM && __UPPERCASE_50_75) | |
39 | describe UPPERCASE_50_75 message body is 50-75% uppercase | |
40 | meta UPPERCASE_75_100 (!__ISO_2022_JP_DELIM && __UPPERCASE_75_100) | |
41 | describe UPPERCASE_75_100 message body is 75-100% uppercase | |
42 | ||
43 | header __SANE_MSGID MESSAGEID =~ /^<[^<>\\ \t\n\r\x0b\x80-\xff]+\@[^<>\\ \t\n\r\x0b\x80-\xff]+>\s*$/m | |
44 | header __HAS_MSGID MESSAGEID =~ /\S/ | |
45 | header __MSGID_COMMENT MESSAGEID =~ /\(.*\)/m | |
46 | meta INVALID_MSGID __HAS_MSGID && !(__SANE_MSGID || __MSGID_COMMENT) | |
47 | describe INVALID_MSGID Message-Id is not valid, according to RFC 2822 | |
48 | ||
49 | #See Bug 7411 | |
50 | #header __MOZILLA_MUA X-Mailer =~ /\bMozilla\b/ | |
51 | header __MOZILLA_MUA User-Agent =~ /^mozilla\b/i | |
52 | header __MOZILLA_MSGID MESSAGEID =~ /^<(?:[a-f\d]{8}-(?:[a-f\d]{4}-){3}[a-f\d]{12}|[A-F\d]{8}\.[A-F1-9][A-F\d]{0,7})\@\S+>$/m | |
53 | meta FORGED_MUA_MOZILLA (__MOZILLA_MUA && !__UNUSABLE_MSGID && !__MOZILLA_MSGID) | |
54 | describe FORGED_MUA_MOZILLA Forged mail pretending to be from Mozilla | |
55 | ||
56 | header __PC_RND_HEADER ALL =~ /%RA?ND(?:OM)?(?:_|\b|[A-Z]{3})/i | |
57 | rawbody __PC_RND_RAWBODY /%RA?ND(?:OM)?(?:_|\b|[A-Z]{3})/i | |
58 | meta PERCENT_RANDOM (__PC_RND_HEADER || __PC_RND_RAWBODY) | |
59 | describe PERCENT_RANDOM Message has a random macro in it | |
60 | ||
61 | # __MIME_ATTACHMENT defined in 20_html_tests.cf | |
62 | body __NONEMPTY_BODY /\S/ | |
21dcadbf SI |
63 | tflags __NONEMPTY_BODY nosubject |
64 | priority __NONEMPTY_BODY -2000 # Bug 8078 | |
b780ea8d | 65 | meta EMPTY_MESSAGE !__MIME_ATTACHMENT && !__NONEMPTY_BODY |
21dcadbf | 66 | describe EMPTY_MESSAGE Message appears to have no textual parts |
b780ea8d SI |
67 | |
68 | meta NO_HEADERS_MESSAGE (MISSING_DATE && MISSING_HEADERS && NO_RECEIVED && NO_RELAYS && MISSING_MID) | |
69 | describe NO_HEADERS_MESSAGE Message appears to be missing most RFC-822 headers | |
70 | ||
71 | ########################################################################### | |
72 | ||
73 | ifplugin Mail::SpamAssassin::Plugin::MIMEEval | |
74 | ||
75 | body __UPPERCASE_25_50 eval:check_for_uppercase('25', '50') | |
76 | body __UPPERCASE_50_75 eval:check_for_uppercase('50', '75') | |
77 | body __UPPERCASE_75_100 eval:check_for_uppercase('75', '100') | |
78 | ||
79 | endif |