Comparison

mod_dnsbl/README.markdown @ 6161:99860e1b817d

mod_dnsbl: Flag accounts registered by IPs matching blocklists
author Matthew Wild <mwild1@gmail.com>
date Wed, 22 Jan 2025 18:04:26 +0000
comparison
equal deleted inserted replaced
6160:4887f68130c0 6161:99860e1b817d
1 ---
2 labels:
3 - 'Stage-Alpha'
4 summary: 'Flag accounts registered by IPs matching blocklists'
5 depends:
6 - mod_anti_spam
7 ---
8
9 This module is designed for servers with public registration enabled, and
10 makes it easier to identify accounts that have been registered by potentially
11 "bad" IP addresses, e.g. those that are likely to be used by spam bots.
12
13 **Note:** Running a Prosody instance with public registration enabled opens up
14 your server as a potential relay for spam and abuse, which can have a negative
15 impact on your server and the network as a whole. We do not recommended it
16 unless you have prior experience operating public internet services and are
17 prepared for the time and effort necessary to tackle any issues. For other
18 advice, see the Prosody documentation on [public servers](https://prosody.im/doc/public_servers).
19
20 ## How does it work?
21
22 When a user account is registered on your server, this module checks the user's
23 IP address against a list of configured blocklists. If a match is found, it
24 flags the account using [mod_flags].
25
26 Flags can be reviewed and managed by using the mod_flags commands and flagged
27 accounts can be automatically restricted, e.g. by mod_firewall or similar.
28
29 This module supports two kinds of block lists:
30
31 - DNS blocklists (DNSBLs)
32 - Text files, with one IP/subnet per line
33
34 ## Configuration
35
36 **Note:** mod_dnsbl requires mod_anti_spam to be installed, but it does not
37 need to be enabled or loaded (only some code is shared). mod_flags is also
38 required, and this will be automatically loaded if not specified in the
39 config file.
40
41 The main configuration option is `dnsbls`, a list of DNSBL addresses:
42
43 ```lua
44 dnsbls = {
45 "dnsbl.dronebl.org";
46 "cbl.abuseat.org";
47 }
48 ```
49
50 You can set a message to be sent to users who register from a matched IP
51 address:
52
53 ```lua
54 dnsbl_message = "Your IP address has been detected on a block list. Some functionality may be restricted."
55 ```
56
57 You can change the default flag that is applied to accounts:
58
59 ```lua
60 dnsbl_flag = "dnsbl_hit"
61 ```
62
63 ### File-based blocklists
64
65 As well as real DNSBLs, you can also put file-based blocklists here, by
66 prefixing `@` to a filesystem path (Prosody must have read permission to
67 access the file):
68
69 ```lua
70 dnsbls = {
71 "dnsbl.dronebl.org";
72 "@/etc/prosody/ip_blocklist.txt";
73 }
74 ```
75
76 The file must contain a single IP address or subnet on each line, though blank
77 lines and comments are ignored. For example:
78
79 ```
80 # This is a comment
81 203.0.113.0/24
82 2001:db8:7894::/64
83 ```
84
85 File-based lists are automatically reloaded when you reload Prosody's
86 configuration.
87
88 ### Advanced configuration
89
90 You can override the flag and message on a per-blocklist basis with a slightly
91 more detailed configuration syntax:
92
93 ```lua
94 dnsbls = {
95 ["dnsbl.dronebl.org"] = {
96 flag = "dnsbl_hit";
97 message = "Your account is restricted because your IP address has been detected as running an open proxy. For more information see https://dronebl.org/lookup?ip={registration.ip}";
98 };
99 ["@/etc/prosody/ip_blocklist.txt"] = {
100 flag = "local_blocklist";
101 message = "Your account is restricted";
102 };
103 }
104 ```
105
106 ## Compatibility
107
108 Compatible with Prosody 0.12 and later.
109
110 If you are using Prosody 0.12, make sure you install mod_flags from the
111 community module repository. If you are using a later version, mod_flags is
112 already included with Prosody.