comparison mod_firewall/scripts/spam-blocking.pfw @ 2565:fc53165d8afe

spam-blocking.pfw: Much improvement
author Matthew Wild <mwild1@gmail.com>
date Fri, 24 Feb 2017 12:13:17 +0000
parents 56db2ab3b853
children ed4815bb8fe2
comparison
equal deleted inserted replaced
2564:240985f7d1f7 2565:fc53165d8afe
1 #### Anti-spam ruleset 1 #### Anti-spam ruleset ###########################################
2 # This script provides some foundational anti-spam
3 # rules. It does not do any form of content filtering,
4 # but this can be implemented by other scripts and
5 # modules as desired.
6 #
7 # The following chains are available as extension
8 # points:
9 #
10 # ::user/spam_check_message_content
11 # Apply additional checks to messages that may be spam
12 #
13 # ::user/spam_check_subscription_request
14 # Apply additional checks to subscription requests
15 #
16 # ::user/spam_handle_unknown_custom
17 # Override default handling of stanzas that weren't explicitly
18 # passed or rejected by the anti-spam checks
19 #
20 # ::user/spam_reject_custom
21 # Override default handling of stanzas that have
22 # been recognised as spam (default is to bounce
23 # a policy-violation error)
24 ##################################################################
2 25
3 #### General rules for all incoming stanzas #### 26 #### General rules for all incoming stanzas ######################
4 ::deliver 27 ::deliver
28
29 LOG=Considering $(stanza:top_tag())
5 30
6 # Pass stanzas that a user sends to their own account 31 # Pass stanzas that a user sends to their own account
7 TO SELF? 32 TO SELF?
8 PASS. 33 PASS.
9 34
15 SUBSCRIBED? 40 SUBSCRIBED?
16 PASS. 41 PASS.
17 42
18 # Run extra rules that apply to messages only 43 # Run extra rules that apply to messages only
19 KIND: message 44 KIND: message
20 JUMP_CHAIN=user/check_spam_message 45 JUMP CHAIN=user/spam_check_message
21 46
22 # Run extra rules that apply to presence stanzas only 47 # Run extra rules that apply to presence stanzas only
23 KIND: presence 48 KIND: presence
24 JUMP CHAIN=user/check_spam_presence 49 JUMP CHAIN=user/spam_check_presence
25 50
26 #### Rules for messages #### 51 JUMP CHAIN=user/spam_handle_unknown
27 ::user/check_spam_message 52
53 # Default is to allow, override this with
54 # the 'user/spam_handle_unknown' chain
55 PASS.
56
57 #### Rules for messages ##########################################
58 ::user/spam_check_message
28 59
29 # Non-chat message types often generate pop-ups in clients, 60 # Non-chat message types often generate pop-ups in clients,
30 # so we won't accept them from strangers 61 # so we won't accept them from strangers
31 NOT TYPE: chat 62 NOT TYPE: chat
32 JUMP CHAIN=user/reject_spam 63 JUMP CHAIN=user/spam_reject
33 64
34 # This chain can be used by other scripts 65 # This chain can be used by other scripts
35 # and modules that analyze message content 66 # and modules that analyze message content
36 JUMP CHAIN=user/check_spam_message_content 67 JUMP CHAIN=user/spam_check_message_content
37 68
38 #### Rules for presence stanzas #### 69 ##################################################################
39 ::user/check_spam_presence
40 70
41 # These may be received if rosters get out of sync, and are harmless 71 #### Rules for presence stanzas ##################################
72 ::user/spam_check_presence
73
74 # These may be received if rosters get out of sync and are harmless
42 # because they will not be routed to the client unless necessary 75 # because they will not be routed to the client unless necessary
43 TYPE: unsubscribe|unsubscribed 76 TYPE: unsubscribe|unsubscribed
44 PASS. 77 PASS.
45 78
46 # We don't want to receive presence from random strangers, 79 # We don't want to receive presence from random strangers,
48 NOT TYPE: subscribe 81 NOT TYPE: subscribe
49 DROP. 82 DROP.
50 83
51 # This chain can be used by other scripts 84 # This chain can be used by other scripts
52 # and modules to filter subscription requests 85 # and modules to filter subscription requests
53 JUMP CHAIN=user/check_subscription_request 86 JUMP CHAIN=user/spam_check_subscription_request
54 87
55 #### Stanzas reaching this chain will be rejected #### 88 ##################################################################
56 ::user/reject_spam 89
90 #### Stanzas reaching this chain will be rejected ################
91 ::user/spam_reject
92
93 # This chain can be used by other scripts
94 # and modules to override the default behaviour
95 # when rejecting spam stanzas
96 JUMP CHAIN=user/spam_reject_custom
57 97
58 LOG=Rejecting suspected spam: $(stanza:top_tag()) 98 LOG=Rejecting suspected spam: $(stanza:top_tag())
59 BOUNCE=policy-violation 99 BOUNCE=policy-violation
100
101 ##################################################################
102
103 #### Stanzas that may be spam, but we're not sure either way######
104 ::user/spam_handle_unknown
105
106 # This chain can be used by other scripts
107 # and modules to apply additional checks, or to
108 # override the default behaviour
109 JUMP CHAIN=user/spam_handle_unknown_custom
110
111 #LOG=[debug] Spam check allowing: $(stanza:top_tag())
112
113 ##################################################################