Haraka 3.1.0 → 3.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierignore +4 -0
- package/CONTRIBUTORS.md +5 -5
- package/Changes.md +69 -50
- package/Plugins.md +3 -1
- package/README.md +1 -1
- package/bin/haraka +475 -478
- package/config/outbound.ini +3 -0
- package/connection.js +1072 -1108
- package/docs/Connection.md +29 -30
- package/docs/CoreConfig.md +38 -39
- package/docs/CustomReturnCodes.md +0 -1
- package/docs/HAProxy.md +2 -2
- package/docs/Header.md +1 -1
- package/docs/Logging.md +29 -5
- package/docs/Outbound.md +93 -78
- package/docs/Plugins.md +103 -108
- package/docs/Transaction.md +49 -51
- package/docs/Tutorial.md +127 -143
- package/docs/deprecated/access.md +0 -1
- package/docs/deprecated/backscatterer.md +2 -3
- package/docs/deprecated/connect.rdns_access.md +18 -27
- package/docs/deprecated/data.headers.md +0 -1
- package/docs/deprecated/data.nomsgid.md +1 -2
- package/docs/deprecated/data.noreceived.md +1 -2
- package/docs/deprecated/data.rfc5322_header_checks.md +1 -2
- package/docs/deprecated/dkim_sign.md +13 -17
- package/docs/deprecated/dkim_verify.md +9 -17
- package/docs/deprecated/dnsbl.md +36 -38
- package/docs/deprecated/dnswl.md +41 -43
- package/docs/deprecated/lookup_rdns.strict.md +21 -34
- package/docs/deprecated/mail_from.access.md +17 -25
- package/docs/deprecated/mail_from.blocklist.md +9 -12
- package/docs/deprecated/mail_from.nobounces.md +1 -2
- package/docs/deprecated/rcpt_to.access.md +20 -27
- package/docs/deprecated/rcpt_to.blocklist.md +10 -13
- package/docs/deprecated/rcpt_to.routes.md +0 -1
- package/docs/deprecated/rdns.regexp.md +13 -15
- package/docs/plugins/aliases.md +89 -89
- package/docs/plugins/auth/auth_bridge.md +5 -7
- package/docs/plugins/auth/auth_ldap.md +11 -14
- package/docs/plugins/auth/auth_proxy.md +10 -12
- package/docs/plugins/auth/auth_vpopmaild.md +5 -6
- package/docs/plugins/auth/flat_file.md +4 -4
- package/docs/plugins/block_me.md +3 -3
- package/docs/plugins/data.signatures.md +1 -2
- package/docs/plugins/delay_deny.md +3 -4
- package/docs/plugins/max_unrecognized_commands.md +4 -4
- package/docs/plugins/prevent_credential_leaks.md +6 -6
- package/docs/plugins/process_title.md +18 -18
- package/docs/plugins/queue/deliver.md +2 -3
- package/docs/plugins/queue/discard.md +4 -4
- package/docs/plugins/queue/lmtp.md +1 -3
- package/docs/plugins/queue/qmail-queue.md +7 -9
- package/docs/plugins/queue/quarantine.md +16 -21
- package/docs/plugins/queue/rabbitmq.md +8 -11
- package/docs/plugins/queue/rabbitmq_amqplib.md +43 -39
- package/docs/plugins/queue/smtp_bridge.md +7 -10
- package/docs/plugins/queue/smtp_forward.md +42 -34
- package/docs/plugins/queue/smtp_proxy.md +30 -29
- package/docs/plugins/queue/test.md +1 -3
- package/docs/plugins/rcpt_to.in_host_list.md +6 -6
- package/docs/plugins/rcpt_to.max_count.md +1 -1
- package/docs/plugins/record_envelope_addresses.md +3 -3
- package/docs/plugins/reseed_rng.md +6 -6
- package/docs/plugins/status.md +9 -8
- package/docs/plugins/tarpit.md +7 -11
- package/docs/plugins/tls.md +12 -17
- package/docs/plugins/toobusy.md +4 -4
- package/docs/plugins/xclient.md +3 -3
- package/docs/tutorials/Migrating_from_v1_to_v2.md +19 -41
- package/docs/tutorials/SettingUpOutbound.md +6 -9
- package/endpoint.js +35 -38
- package/eslint.config.mjs +22 -19
- package/haraka.js +42 -47
- package/host_pool.js +75 -79
- package/http/html/404.html +45 -49
- package/http/html/index.html +39 -28
- package/http/package.json +2 -4
- package/line_socket.js +27 -28
- package/logger.js +182 -201
- package/outbound/client_pool.js +34 -27
- package/outbound/config.js +64 -59
- package/outbound/fsync_writestream.js +24 -25
- package/outbound/hmail.js +888 -835
- package/outbound/index.js +194 -187
- package/outbound/qfile.js +49 -52
- package/outbound/queue.js +197 -190
- package/outbound/timer_queue.js +41 -43
- package/outbound/tls.js +68 -61
- package/outbound/todo.js +11 -11
- package/package.json +38 -33
- package/plugins/.eslintrc.yaml +0 -1
- package/plugins/auth/auth_base.js +123 -127
- package/plugins/auth/auth_bridge.js +7 -7
- package/plugins/auth/auth_proxy.js +121 -126
- package/plugins/auth/auth_vpopmaild.js +84 -85
- package/plugins/auth/flat_file.js +18 -17
- package/plugins/block_me.js +31 -31
- package/plugins/data.signatures.js +13 -13
- package/plugins/delay_deny.js +65 -61
- package/plugins/prevent_credential_leaks.js +23 -23
- package/plugins/process_title.js +125 -128
- package/plugins/profile.js +5 -5
- package/plugins/queue/deliver.js +3 -3
- package/plugins/queue/discard.js +13 -14
- package/plugins/queue/lmtp.js +16 -17
- package/plugins/queue/qmail-queue.js +54 -55
- package/plugins/queue/quarantine.js +68 -70
- package/plugins/queue/rabbitmq.js +80 -87
- package/plugins/queue/rabbitmq_amqplib.js +75 -54
- package/plugins/queue/smtp_bridge.js +16 -16
- package/plugins/queue/smtp_forward.js +175 -179
- package/plugins/queue/smtp_proxy.js +69 -71
- package/plugins/queue/test.js +9 -9
- package/plugins/rcpt_to.host_list_base.js +30 -34
- package/plugins/rcpt_to.in_host_list.js +19 -19
- package/plugins/record_envelope_addresses.js +4 -4
- package/plugins/reseed_rng.js +4 -4
- package/plugins/status.js +90 -97
- package/plugins/tarpit.js +25 -14
- package/plugins/tls.js +68 -68
- package/plugins/toobusy.js +21 -23
- package/plugins/xclient.js +51 -53
- package/plugins.js +276 -293
- package/rfc1869.js +30 -35
- package/server.js +308 -299
- package/smtp_client.js +244 -228
- package/test/.eslintrc.yaml +0 -1
- package/test/connection.js +127 -134
- package/test/endpoint.js +53 -47
- package/test/fixtures/line_socket.js +12 -12
- package/test/fixtures/util_hmailitem.js +89 -85
- package/test/host_pool.js +90 -92
- package/test/installation/plugins/base_plugin.js +2 -2
- package/test/installation/plugins/folder_plugin/index.js +2 -3
- package/test/installation/plugins/inherits.js +3 -3
- package/test/installation/plugins/load_first.js +2 -3
- package/test/installation/plugins/plugin.js +1 -3
- package/test/installation/plugins/tls.js +2 -4
- package/test/logger.js +135 -116
- package/test/outbound/hmail.js +49 -35
- package/test/outbound/index.js +118 -101
- package/test/outbound/qfile.js +51 -53
- package/test/outbound_bounce_net_errors.js +84 -69
- package/test/outbound_bounce_rfc3464.js +235 -165
- package/test/plugins/auth/auth_base.js +420 -279
- package/test/plugins/auth/auth_vpopmaild.js +38 -39
- package/test/plugins/queue/smtp_forward.js +126 -104
- package/test/plugins/rcpt_to.host_list_base.js +85 -67
- package/test/plugins/rcpt_to.in_host_list.js +159 -112
- package/test/plugins/status.js +71 -64
- package/test/plugins/tls.js +37 -34
- package/test/plugins.js +97 -92
- package/test/rfc1869.js +19 -26
- package/test/server.js +293 -272
- package/test/smtp_client.js +180 -176
- package/test/tls_socket.js +62 -66
- package/test/transaction.js +159 -160
- package/tls_socket.js +331 -333
- package/transaction.js +129 -137
package/docs/deprecated/dnsbl.md
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
dnsbl
|
|
2
|
-
=====
|
|
1
|
+
# dnsbl
|
|
3
2
|
|
|
4
3
|
This plugin looks up the connecting IP address in an IP blocklist. Mails
|
|
5
4
|
found to be in the blocklist are rejected.
|
|
6
5
|
|
|
7
|
-
Configuration
|
|
8
|
-
-------------
|
|
6
|
+
## Configuration
|
|
9
7
|
|
|
10
8
|
This plugins uses the following files:
|
|
11
9
|
|
|
@@ -13,39 +11,39 @@ dnsbl.zones - Contains a list of zones to query, one per line.
|
|
|
13
11
|
|
|
14
12
|
dnsbl.ini - INI format with options described below:
|
|
15
13
|
|
|
16
|
-
|
|
14
|
+
- zones
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
A comma or semi-colon list of zones to query. It will be merged with
|
|
17
|
+
any lists in dnsbl.zones.
|
|
20
18
|
|
|
21
|
-
|
|
19
|
+
- periodic_checks
|
|
22
20
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
If enabled, this will check all the zones every n minutes.
|
|
22
|
+
The minimum value that will be accepted here is 5. Any value less
|
|
23
|
+
than 5 will cause the checks to be run at start-up only.
|
|
26
24
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
The checks confirm that the list is responding and that it is not
|
|
26
|
+
listing the world. If any errors are detected, then the zone is
|
|
27
|
+
disabled and will be re-checked on the next test. If a zone
|
|
28
|
+
subsequently starts working correctly then it will be re-enabled.
|
|
31
29
|
|
|
32
|
-
|
|
30
|
+
- enable_stats
|
|
33
31
|
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
To use this feature you must have installed the 'redis' module and
|
|
33
|
+
have a redis server running.
|
|
36
34
|
|
|
37
|
-
|
|
35
|
+
When enabled, this will record several list statistics to redis.
|
|
38
36
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
It will track the total number of queries (TOTAL) and the average
|
|
38
|
+
response time (AVG_RT) and the return type (e.g. LISTED or ERROR)
|
|
39
|
+
to a redis hash where the key is 'dns-list-stat:zone' and the hash
|
|
40
|
+
field is the response type.
|
|
43
41
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
It will also track the positive response overlap between the lists
|
|
43
|
+
in another redis hash where the key is 'dns-list-overlap:zone' and
|
|
44
|
+
the hash field is the other list names.
|
|
47
45
|
|
|
48
|
-
|
|
46
|
+
Example:
|
|
49
47
|
<pre><code>redis 127.0.0.1:6379> hgetall dns-list-stat:zen.spamhaus.org
|
|
50
48
|
1) "TOTAL"
|
|
51
49
|
2) "23"
|
|
@@ -64,19 +62,19 @@ dnsbl.ini - INI format with options described below:
|
|
|
64
62
|
6) "1"
|
|
65
63
|
</code></pre>
|
|
66
64
|
|
|
67
|
-
|
|
65
|
+
- stats_redis_host
|
|
68
66
|
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
In the form of `host:port` this option allows you to specify a different
|
|
68
|
+
host on which redis runs.
|
|
71
69
|
|
|
72
|
-
|
|
70
|
+
- reject (default: true)
|
|
73
71
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
72
|
+
Reject connections from IPs that are blacklisted. Setting this to false
|
|
73
|
+
makes dnsbl informational. reject=false is best used in conjunction with
|
|
74
|
+
plugins like [karma](/manual/plugins/karma.html) that employ a scoring
|
|
75
|
+
engine to make choices about message delivery.
|
|
78
76
|
|
|
79
|
-
|
|
77
|
+
- search: (default: first)
|
|
80
78
|
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
first: consider first DNSBL response conclusive. End processing.
|
|
80
|
+
all: process all DNSBL results
|
package/docs/deprecated/dnswl.md
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
dnswl
|
|
2
|
-
=====
|
|
1
|
+
# dnswl
|
|
3
2
|
|
|
4
3
|
This plugin looks up the connecting IP address in an IP whitelist.
|
|
5
4
|
If the host is listed, then the plugin will return OK for all hooks
|
|
6
|
-
up to
|
|
5
|
+
up to hook_data.
|
|
7
6
|
|
|
8
|
-
IMPORTANT!
|
|
9
|
-
this plugin is used.
|
|
7
|
+
IMPORTANT! The order of plugins in config/plugins is important when
|
|
8
|
+
this plugin is used. It should be listed _before_ any plugins that
|
|
10
9
|
you wish to skip, but after any plugins that accept recipients.
|
|
11
10
|
|
|
12
|
-
Configuration
|
|
13
|
-
-------------
|
|
11
|
+
## Configuration
|
|
14
12
|
|
|
15
13
|
This plugins uses the following files:
|
|
16
14
|
|
|
@@ -18,39 +16,39 @@ dnswl.zones - Contains a list of zones to query, one per line.
|
|
|
18
16
|
|
|
19
17
|
dnswl.ini - INI format with options described below:
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
19
|
+
- zones
|
|
20
|
+
|
|
21
|
+
A comma or semi-colon list of zones to query. It will be merged with
|
|
22
|
+
any lists in dnswl.zones.
|
|
23
|
+
|
|
24
|
+
- periodic_checks
|
|
25
|
+
|
|
26
|
+
If enabled, this will check all the zones every n minutes.
|
|
27
|
+
The minimum value that will be accepted here is 5. Any value less
|
|
28
|
+
than 5 will cause the checks to be run at start-up only.
|
|
29
|
+
|
|
30
|
+
The checks confirm that the list is responding and that it is not
|
|
31
|
+
listing the world. If any errors are detected, then the zone is
|
|
32
|
+
disabled and will be re-checked on the next test. If a zone
|
|
33
|
+
subsequently starts working correctly then it will be re-enabled.
|
|
34
|
+
|
|
35
|
+
- enable_stats
|
|
36
|
+
|
|
37
|
+
To use this feature you must have installed the 'redis' module and
|
|
38
|
+
have a redis server running.
|
|
39
|
+
|
|
40
|
+
When enabled, this will record several list statistics to redis.
|
|
41
|
+
|
|
42
|
+
It will track the total number of queries (TOTAL) and the average
|
|
43
|
+
response time (AVG_RT) and the return type (e.g. LISTED or ERROR)
|
|
44
|
+
to a redis hash where the key is 'dns-list-stat:zone' and the hash
|
|
45
|
+
field is the response type.
|
|
46
|
+
|
|
47
|
+
It will also track the positive response overlap between the lists
|
|
48
|
+
in another redis hash where the key is 'dns-list-overlap:zone' and
|
|
49
|
+
the hash field is the other list names.
|
|
50
|
+
|
|
51
|
+
Example:
|
|
54
52
|
<pre><code>redis 127.0.0.1:6379> hgetall dns-list-stat:zen.spamhaus.org
|
|
55
53
|
1) "TOTAL"
|
|
56
54
|
2) "23"
|
|
@@ -69,7 +67,7 @@ dnswl.ini - INI format with options described below:
|
|
|
69
67
|
6) "1"
|
|
70
68
|
</code></pre>
|
|
71
69
|
|
|
72
|
-
|
|
70
|
+
- stats_redis_host
|
|
73
71
|
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
In the form of `host:port` this option allows you to specify a different
|
|
73
|
+
host on which redis runs.
|
|
@@ -1,80 +1,67 @@
|
|
|
1
|
-
|
|
2
|
-
===========
|
|
1
|
+
# lookup_rdns.strict
|
|
3
2
|
|
|
4
3
|
This plugin checks the reverse-DNS and compares the resulting addresses
|
|
5
|
-
against forward DNS for a match.
|
|
6
|
-
DENYDISCONNECT, otherwise if it matches it sends an OK.
|
|
4
|
+
against forward DNS for a match. If there is no match it sends a
|
|
5
|
+
DENYDISCONNECT, otherwise if it matches it sends an OK. DENYDISCONNECT
|
|
7
6
|
messages are configurable.
|
|
8
7
|
|
|
9
|
-
Configuration
|
|
10
|
-
--------------------------------------------
|
|
8
|
+
## Configuration lookup_rdns.strict.ini
|
|
11
9
|
|
|
12
|
-
This is the general configuration file for the plugin.
|
|
10
|
+
This is the general configuration file for the plugin. In it you can find
|
|
13
11
|
ways to customize user messages, specify timeouts, and some whitelist
|
|
14
12
|
parsing options.
|
|
15
13
|
|
|
16
|
-
|
|
14
|
+
- lookup_rdns.strict.general.nomatch
|
|
17
15
|
|
|
18
16
|
Text to send the user if there is no reverse to forward match (text).
|
|
19
17
|
|
|
20
|
-
|
|
21
|
-
* lookup\_rdns.strict.general.timeout
|
|
18
|
+
- lookup_rdns.strict.general.timeout
|
|
22
19
|
|
|
23
20
|
How long we should give this plugin before we time it out (seconds).
|
|
24
21
|
|
|
25
|
-
|
|
26
|
-
* lookup\_rdns.strict.general.timeout\_msg
|
|
22
|
+
- lookup_rdns.strict.general.timeout_msg
|
|
27
23
|
|
|
28
24
|
Text to send when plugin reaches timeout (text).
|
|
29
25
|
|
|
30
|
-
|
|
31
|
-
* lookup\_rdns.strict.forward.nxdomain
|
|
26
|
+
- lookup_rdns.strict.forward.nxdomain
|
|
32
27
|
|
|
33
28
|
Text to send the user if there is no forward match (text).
|
|
34
29
|
|
|
35
|
-
|
|
36
|
-
* lookup\_rdns.strict.forward.dnserror
|
|
30
|
+
- lookup_rdns.strict.forward.dnserror
|
|
37
31
|
|
|
38
32
|
Text to send the user if there is some other error with the forward
|
|
39
33
|
lookup (text).
|
|
40
34
|
|
|
41
|
-
|
|
42
|
-
* lookup\_rdns.strict.reverse.nxdomain
|
|
35
|
+
- lookup_rdns.strict.reverse.nxdomain
|
|
43
36
|
|
|
44
37
|
Text to send the user if there is no reverse match (text).
|
|
45
38
|
|
|
46
|
-
|
|
47
|
-
* lookup\_rdns.strict.reverse.dnserror
|
|
39
|
+
- lookup_rdns.strict.reverse.dnserror
|
|
48
40
|
|
|
49
41
|
Text to send the user if there is some other error with the reverse
|
|
50
42
|
lookup (text).
|
|
51
43
|
|
|
52
|
-
|
|
53
|
-
Configuration lookup\_rdns.strict.timeout
|
|
54
|
-
------------------------------------------------
|
|
44
|
+
## Configuration lookup_rdns.strict.timeout
|
|
55
45
|
|
|
56
46
|
This is how we specify to Haraka that our plugin should have a certain timeout.
|
|
57
47
|
If you specify 0 here, then the plugin will never timeout while the connection
|
|
58
|
-
is active.
|
|
59
|
-
own timeouts.
|
|
60
|
-
the general config in
|
|
48
|
+
is active. This is also required for this plugin, which needs to handle its
|
|
49
|
+
own timeouts. To actually specify the timeout for this plugin, please see
|
|
50
|
+
the general config in lookup_rdns.strict.ini.
|
|
61
51
|
|
|
62
|
-
Configuration
|
|
63
|
-
--------------------------------------------------
|
|
52
|
+
## Configuration lookup_rdns.strict.whitelist
|
|
64
53
|
|
|
65
54
|
No matter how much you believe in checking that DNS and rDNS match, it is not
|
|
66
55
|
required by RFC, and there will always be some legitimate mail server that
|
|
67
|
-
has great trouble getting their DNS in order.
|
|
56
|
+
has great trouble getting their DNS in order. For this reason we are
|
|
68
57
|
providing a whitelist.
|
|
69
58
|
|
|
70
59
|
This file will match exactly what you put on each line.
|
|
71
60
|
|
|
72
|
-
|
|
73
|
-
Configuration lookup\_rdns.strict.whitelist\_regex
|
|
74
|
-
--------------------------------------------------------
|
|
61
|
+
## Configuration lookup_rdns.strict.whitelist_regex
|
|
75
62
|
|
|
76
63
|
Does the same thing as the whitelist file, but each line is a regex.
|
|
77
64
|
Each line is also anchored for you, meaning '^' + regex + '$' is added for
|
|
78
|
-
you.
|
|
79
|
-
either the start or the end of your regex.
|
|
65
|
+
you. If you need to get around this restriction, you may use a '.\*' at
|
|
66
|
+
either the start or the end of your regex. This should help prevent people
|
|
80
67
|
from writing overly permissive rules on accident.
|
|
@@ -3,58 +3,50 @@
|
|
|
3
3
|
See [haraka-plugin-access](https://github.com/haraka/haraka-plugin-access)
|
|
4
4
|
for upgrade instructions.
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
mail\_from.access
|
|
8
|
-
===================
|
|
6
|
+
# mail_from.access
|
|
9
7
|
|
|
10
8
|
This plugin will evaluate the address against a set of white and black lists.
|
|
11
9
|
The lists are applied in the following way:
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
mail_from.access.whitelist (pass)
|
|
12
|
+
mail_from.access.whitelist_regex (pass)
|
|
13
|
+
mail_from.access.blacklist (block)
|
|
14
|
+
mail_from.access.blacklist_regex (block)
|
|
17
15
|
|
|
18
|
-
Configuration
|
|
19
|
-
-------------------------------------
|
|
16
|
+
## Configuration mail_from.access.ini
|
|
20
17
|
|
|
21
18
|
General configuration file for this plugin.
|
|
22
19
|
|
|
23
|
-
|
|
20
|
+
- mail_from.access.general.deny_msg
|
|
24
21
|
|
|
25
22
|
Text to send the user on reject (text).
|
|
26
23
|
|
|
27
|
-
|
|
28
|
-
Configuration mail\_from.access.whitelist
|
|
29
|
-
-------------------------------------------
|
|
24
|
+
## Configuration mail_from.access.whitelist
|
|
30
25
|
|
|
31
26
|
The whitelist is mostly to counter blacklist entries that match more than
|
|
32
|
-
what one would want.
|
|
27
|
+
what one would want. This file should be used for a specific address,
|
|
33
28
|
one per line, that should bypass blacklist checks.
|
|
34
29
|
NOTE: We heavily suggest tailoring blacklist entries to be as accurate as
|
|
35
|
-
possible and never using whitelists.
|
|
30
|
+
possible and never using whitelists. Nevertheless, if you need whitelists,
|
|
36
31
|
here they are.
|
|
37
32
|
|
|
38
|
-
Configuration
|
|
39
|
-
-------------------------------------------------
|
|
33
|
+
## Configuration mail_from.access.whitelist_regex
|
|
40
34
|
|
|
41
35
|
Does the same thing as the whitelist file, but each line is a regex.
|
|
42
36
|
Each line is also anchored for you, meaning '^' + regex + '$' is added for
|
|
43
|
-
you.
|
|
44
|
-
either the start or the end of your regex.
|
|
37
|
+
you. If you need to get around this restriction, you may use a '.\*' at
|
|
38
|
+
either the start or the end of your regex. This should help prevent people
|
|
45
39
|
from writing overly permissive rules on accident.
|
|
46
40
|
|
|
47
|
-
Configuration
|
|
48
|
-
-------------------------------------------
|
|
41
|
+
## Configuration mail_from.access.blacklist
|
|
49
42
|
|
|
50
43
|
This file should be used for a specific address, one per line, that should
|
|
51
44
|
fail on connect.
|
|
52
45
|
|
|
53
|
-
Configuration
|
|
54
|
-
-------------------------------------------------
|
|
46
|
+
## Configuration mail_from.access.blacklist_regex
|
|
55
47
|
|
|
56
48
|
Does the same thing as the blacklist file, but each line is a regex.
|
|
57
49
|
Each line is also anchored for you, meaning '^' + regex + '$' is added for
|
|
58
|
-
you.
|
|
59
|
-
either the start or the end of your regex.
|
|
50
|
+
you. If you need to get around this restriction, you may use a '.\*' at
|
|
51
|
+
either the start or the end of your regex. This should help prevent people
|
|
60
52
|
from writing overly permissive rules on accident.
|
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
===================
|
|
1
|
+
# mail_from.blocklist
|
|
3
2
|
|
|
4
|
-
DEPRECATED
|
|
5
|
-
------------
|
|
6
|
-
This plugin is deprecated. Use instead the mail\_from.access plugin, which
|
|
7
|
-
does everything this one does and much more. (whitelists, blacklists, regex)
|
|
3
|
+
## DEPRECATED
|
|
8
4
|
|
|
5
|
+
This plugin is deprecated. Use instead the mail_from.access plugin, which
|
|
6
|
+
does everything this one does and much more. (whitelists, blacklists, regex)
|
|
9
7
|
|
|
10
|
-
This plugin blocks
|
|
8
|
+
This plugin blocks MAIL_FROM addresses in a list.
|
|
11
9
|
|
|
12
10
|
NOTE: If all you need is to deny mail based on the exact address, this plugin
|
|
13
11
|
will work just fine. If you want to customize the deny message, add blocks
|
|
14
|
-
based on a regex, or add whitelists, please use the
|
|
12
|
+
based on a regex, or add whitelists, please use the mail_from.access plugin.
|
|
13
|
+
|
|
14
|
+
## Configuration
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
-------------
|
|
16
|
+
- mail_from.blocklist
|
|
18
17
|
|
|
19
|
-
* mail\_from.blocklist
|
|
20
|
-
|
|
21
18
|
Contains a list of email addresses to block.
|
|
@@ -3,58 +3,51 @@
|
|
|
3
3
|
See [haraka-plugin-access](https://github.com/haraka/haraka-plugin-access)
|
|
4
4
|
for upgrade instructions.
|
|
5
5
|
|
|
6
|
+
# rcpt_to.access
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
This plugin blocks RCPT_TO addresses in a list or regex.
|
|
9
|
+
This plugin will evaluate the RCPT_TO address against a set of white and black
|
|
10
|
+
lists. The lists are applied in the following way:
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
rcpt_to.access.whitelist (pass)
|
|
13
|
+
rcpt_to.access.whitelist_regex (pass)
|
|
14
|
+
rcpt_to.access.blacklist (block)
|
|
15
|
+
rcpt_to.access.blacklist_regex (block)
|
|
13
16
|
|
|
14
|
-
|
|
15
|
-
rcpt\_to.access.whitelist\_regex (pass)
|
|
16
|
-
rcpt\_to.access.blacklist (block)
|
|
17
|
-
rcpt\_to.access.blacklist\_regex (block)
|
|
18
|
-
|
|
19
|
-
Configuration rcpt\_to.access.ini
|
|
20
|
-
-------------------------------------
|
|
17
|
+
## Configuration rcpt_to.access.ini
|
|
21
18
|
|
|
22
19
|
General configuration file for this plugin.
|
|
23
20
|
|
|
24
|
-
|
|
21
|
+
- rcpt_to.access.general.deny_msg
|
|
25
22
|
|
|
26
23
|
Text to send the user on reject (text).
|
|
27
24
|
|
|
28
|
-
Configuration
|
|
29
|
-
-------------------------------------------
|
|
25
|
+
## Configuration rcpt_to.access.whitelist
|
|
30
26
|
|
|
31
27
|
The whitelist is mostly to counter blacklist entries that match more than
|
|
32
|
-
what one would want.
|
|
28
|
+
what one would want. This file should be used for a specific address
|
|
33
29
|
one per line, that should bypass blacklist checks.
|
|
34
30
|
NOTE: We heavily suggest tailoring blacklist entries to be as accurate as
|
|
35
|
-
possible and never using whitelists.
|
|
31
|
+
possible and never using whitelists. Nevertheless, if you need whitelists,
|
|
36
32
|
here they are.
|
|
37
33
|
|
|
38
|
-
Configuration
|
|
39
|
-
-------------------------------------------------
|
|
34
|
+
## Configuration rcpt_to.access.whitelist_regex
|
|
40
35
|
|
|
41
36
|
Does the same thing as the whitelist file, but each line is a regex.
|
|
42
37
|
Each line is also anchored for you, meaning '^' + regex + '$' is added for
|
|
43
|
-
you.
|
|
44
|
-
either the start or the end of your regex.
|
|
38
|
+
you. If you need to get around this restriction, you may use a '.\*' at
|
|
39
|
+
either the start or the end of your regex. This should help prevent people
|
|
45
40
|
from writing overly permissive rules on accident.
|
|
46
41
|
|
|
47
|
-
Configuration
|
|
48
|
-
-------------------------------------------
|
|
42
|
+
## Configuration rcpt_to.access.blacklist
|
|
49
43
|
|
|
50
44
|
This file should be used for a specific address, one per line, that should
|
|
51
45
|
fail on connect.
|
|
52
46
|
|
|
53
|
-
Configuration
|
|
54
|
-
-------------------------------------------------
|
|
47
|
+
## Configuration rcpt_to.access.blacklist_regex
|
|
55
48
|
|
|
56
49
|
Does the same thing as the blacklist file, but each line is a regex.
|
|
57
50
|
Each line is also anchored for you, meaning '^' + regex + '$' is added for
|
|
58
|
-
you.
|
|
59
|
-
either the start or the end of your regex.
|
|
51
|
+
you. If you need to get around this restriction, you may use a '.\*' at
|
|
52
|
+
either the start or the end of your regex. This should help prevent people
|
|
60
53
|
from writing overly permissive rules on accident.
|
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
===================
|
|
1
|
+
# rcpt_to.blocklist
|
|
3
2
|
|
|
4
|
-
DEPRECATED
|
|
5
|
-
------------
|
|
6
|
-
This plugin is deprecated. Use instead the rcpt\_to.access plugin, which
|
|
7
|
-
does everything this one does and much more. (whitelists, blacklists, regex)
|
|
3
|
+
## DEPRECATED
|
|
8
4
|
|
|
5
|
+
This plugin is deprecated. Use instead the rcpt_to.access plugin, which
|
|
6
|
+
does everything this one does and much more. (whitelists, blacklists, regex)
|
|
9
7
|
|
|
10
|
-
This plugin blocks
|
|
8
|
+
This plugin blocks RCPT_TO addresses in a list.
|
|
11
9
|
|
|
12
10
|
NOTE: If all you need is to deny mail based on the exact address, this plugin
|
|
13
|
-
will work just fine.
|
|
14
|
-
based on a regex, or add whitelists, please use the
|
|
11
|
+
will work just fine. If you want to customize the deny message, add blocks
|
|
12
|
+
based on a regex, or add whitelists, please use the rcpt_to.access plugin.
|
|
13
|
+
|
|
14
|
+
## Configuration
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
-------------
|
|
16
|
+
- rcpt_to.blocklist
|
|
18
17
|
|
|
19
|
-
* rcpt\_to.blocklist
|
|
20
|
-
|
|
21
18
|
Contains a list of email addresses to block.
|
|
@@ -1,32 +1,30 @@
|
|
|
1
|
-
rdns.regexp
|
|
2
|
-
===========
|
|
1
|
+
# rdns.regexp
|
|
3
2
|
|
|
4
3
|
WARNING: The services offered by this plugin, and much more, are now provided
|
|
5
|
-
more efficiently with the connect.
|
|
6
|
-
to using the new connect.
|
|
4
|
+
more efficiently with the connect.rdns_access plugin. Please transition over
|
|
5
|
+
to using the new connect.rdns_access plugin, as this plugin is now deprecated
|
|
7
6
|
and may be removed in a future version of Haraka.
|
|
8
7
|
|
|
9
8
|
This plugin checks the reverse-DNS against a list of regular expressions. Any
|
|
10
9
|
matches will result in a rejection, unless there is an allow rule to
|
|
11
10
|
balance off broad regexes.
|
|
12
11
|
|
|
13
|
-
To give an example.
|
|
14
|
-
in the rDNS hostname (
|
|
15
|
-
generaldynamics.com that is clearly a false positive.
|
|
12
|
+
To give an example. Assume we add a rule to deny all hosts with dynamic
|
|
13
|
+
in the rDNS hostname (._dynamic._). Now we find a mail server,
|
|
14
|
+
generaldynamics.com that is clearly a false positive. We could try
|
|
16
15
|
to correct the original regex (clearly it is a poorly written regex), or
|
|
17
|
-
we could add an allow rule for generaldynamics.com (
|
|
16
|
+
we could add an allow rule for generaldynamics.com (.\*generaldynamics\.com$).
|
|
18
17
|
This means that even though the dynamic block rule matches, it will be
|
|
19
18
|
superseded by the allow rule for generaldynamics.com.
|
|
20
19
|
|
|
21
|
-
Configuration
|
|
22
|
-
-------------
|
|
20
|
+
## Configuration
|
|
23
21
|
|
|
24
|
-
|
|
22
|
+
- rdns.deny_regexps
|
|
25
23
|
|
|
26
|
-
The list of regular expressions to deny.
|
|
27
|
-
can be corrected by using the allow list.
|
|
24
|
+
The list of regular expressions to deny. Over broad regexes in this list
|
|
25
|
+
can be corrected by using the allow list.
|
|
28
26
|
|
|
29
|
-
|
|
27
|
+
- rdns.allow_regexps
|
|
30
28
|
|
|
31
|
-
The list of regular expressions to allow.
|
|
29
|
+
The list of regular expressions to allow. This list is always processed
|
|
32
30
|
in favor of rules in the deny file.
|