Software /
code /
prosody-modules
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 |
parent | 2557:56db2ab3b853 |
child | 2566: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 ################################################################## |