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.
Files changed (160) hide show
  1. package/.prettierignore +4 -0
  2. package/CONTRIBUTORS.md +5 -5
  3. package/Changes.md +69 -50
  4. package/Plugins.md +3 -1
  5. package/README.md +1 -1
  6. package/bin/haraka +475 -478
  7. package/config/outbound.ini +3 -0
  8. package/connection.js +1072 -1108
  9. package/docs/Connection.md +29 -30
  10. package/docs/CoreConfig.md +38 -39
  11. package/docs/CustomReturnCodes.md +0 -1
  12. package/docs/HAProxy.md +2 -2
  13. package/docs/Header.md +1 -1
  14. package/docs/Logging.md +29 -5
  15. package/docs/Outbound.md +93 -78
  16. package/docs/Plugins.md +103 -108
  17. package/docs/Transaction.md +49 -51
  18. package/docs/Tutorial.md +127 -143
  19. package/docs/deprecated/access.md +0 -1
  20. package/docs/deprecated/backscatterer.md +2 -3
  21. package/docs/deprecated/connect.rdns_access.md +18 -27
  22. package/docs/deprecated/data.headers.md +0 -1
  23. package/docs/deprecated/data.nomsgid.md +1 -2
  24. package/docs/deprecated/data.noreceived.md +1 -2
  25. package/docs/deprecated/data.rfc5322_header_checks.md +1 -2
  26. package/docs/deprecated/dkim_sign.md +13 -17
  27. package/docs/deprecated/dkim_verify.md +9 -17
  28. package/docs/deprecated/dnsbl.md +36 -38
  29. package/docs/deprecated/dnswl.md +41 -43
  30. package/docs/deprecated/lookup_rdns.strict.md +21 -34
  31. package/docs/deprecated/mail_from.access.md +17 -25
  32. package/docs/deprecated/mail_from.blocklist.md +9 -12
  33. package/docs/deprecated/mail_from.nobounces.md +1 -2
  34. package/docs/deprecated/rcpt_to.access.md +20 -27
  35. package/docs/deprecated/rcpt_to.blocklist.md +10 -13
  36. package/docs/deprecated/rcpt_to.routes.md +0 -1
  37. package/docs/deprecated/rdns.regexp.md +13 -15
  38. package/docs/plugins/aliases.md +89 -89
  39. package/docs/plugins/auth/auth_bridge.md +5 -7
  40. package/docs/plugins/auth/auth_ldap.md +11 -14
  41. package/docs/plugins/auth/auth_proxy.md +10 -12
  42. package/docs/plugins/auth/auth_vpopmaild.md +5 -6
  43. package/docs/plugins/auth/flat_file.md +4 -4
  44. package/docs/plugins/block_me.md +3 -3
  45. package/docs/plugins/data.signatures.md +1 -2
  46. package/docs/plugins/delay_deny.md +3 -4
  47. package/docs/plugins/max_unrecognized_commands.md +4 -4
  48. package/docs/plugins/prevent_credential_leaks.md +6 -6
  49. package/docs/plugins/process_title.md +18 -18
  50. package/docs/plugins/queue/deliver.md +2 -3
  51. package/docs/plugins/queue/discard.md +4 -4
  52. package/docs/plugins/queue/lmtp.md +1 -3
  53. package/docs/plugins/queue/qmail-queue.md +7 -9
  54. package/docs/plugins/queue/quarantine.md +16 -21
  55. package/docs/plugins/queue/rabbitmq.md +8 -11
  56. package/docs/plugins/queue/rabbitmq_amqplib.md +43 -39
  57. package/docs/plugins/queue/smtp_bridge.md +7 -10
  58. package/docs/plugins/queue/smtp_forward.md +42 -34
  59. package/docs/plugins/queue/smtp_proxy.md +30 -29
  60. package/docs/plugins/queue/test.md +1 -3
  61. package/docs/plugins/rcpt_to.in_host_list.md +6 -6
  62. package/docs/plugins/rcpt_to.max_count.md +1 -1
  63. package/docs/plugins/record_envelope_addresses.md +3 -3
  64. package/docs/plugins/reseed_rng.md +6 -6
  65. package/docs/plugins/status.md +9 -8
  66. package/docs/plugins/tarpit.md +7 -11
  67. package/docs/plugins/tls.md +12 -17
  68. package/docs/plugins/toobusy.md +4 -4
  69. package/docs/plugins/xclient.md +3 -3
  70. package/docs/tutorials/Migrating_from_v1_to_v2.md +19 -41
  71. package/docs/tutorials/SettingUpOutbound.md +6 -9
  72. package/endpoint.js +35 -38
  73. package/eslint.config.mjs +22 -19
  74. package/haraka.js +42 -47
  75. package/host_pool.js +75 -79
  76. package/http/html/404.html +45 -49
  77. package/http/html/index.html +39 -28
  78. package/http/package.json +2 -4
  79. package/line_socket.js +27 -28
  80. package/logger.js +182 -201
  81. package/outbound/client_pool.js +34 -27
  82. package/outbound/config.js +64 -59
  83. package/outbound/fsync_writestream.js +24 -25
  84. package/outbound/hmail.js +888 -835
  85. package/outbound/index.js +194 -187
  86. package/outbound/qfile.js +49 -52
  87. package/outbound/queue.js +197 -190
  88. package/outbound/timer_queue.js +41 -43
  89. package/outbound/tls.js +68 -61
  90. package/outbound/todo.js +11 -11
  91. package/package.json +38 -33
  92. package/plugins/.eslintrc.yaml +0 -1
  93. package/plugins/auth/auth_base.js +123 -127
  94. package/plugins/auth/auth_bridge.js +7 -7
  95. package/plugins/auth/auth_proxy.js +121 -126
  96. package/plugins/auth/auth_vpopmaild.js +84 -85
  97. package/plugins/auth/flat_file.js +18 -17
  98. package/plugins/block_me.js +31 -31
  99. package/plugins/data.signatures.js +13 -13
  100. package/plugins/delay_deny.js +65 -61
  101. package/plugins/prevent_credential_leaks.js +23 -23
  102. package/plugins/process_title.js +125 -128
  103. package/plugins/profile.js +5 -5
  104. package/plugins/queue/deliver.js +3 -3
  105. package/plugins/queue/discard.js +13 -14
  106. package/plugins/queue/lmtp.js +16 -17
  107. package/plugins/queue/qmail-queue.js +54 -55
  108. package/plugins/queue/quarantine.js +68 -70
  109. package/plugins/queue/rabbitmq.js +80 -87
  110. package/plugins/queue/rabbitmq_amqplib.js +75 -54
  111. package/plugins/queue/smtp_bridge.js +16 -16
  112. package/plugins/queue/smtp_forward.js +175 -179
  113. package/plugins/queue/smtp_proxy.js +69 -71
  114. package/plugins/queue/test.js +9 -9
  115. package/plugins/rcpt_to.host_list_base.js +30 -34
  116. package/plugins/rcpt_to.in_host_list.js +19 -19
  117. package/plugins/record_envelope_addresses.js +4 -4
  118. package/plugins/reseed_rng.js +4 -4
  119. package/plugins/status.js +90 -97
  120. package/plugins/tarpit.js +25 -14
  121. package/plugins/tls.js +68 -68
  122. package/plugins/toobusy.js +21 -23
  123. package/plugins/xclient.js +51 -53
  124. package/plugins.js +276 -293
  125. package/rfc1869.js +30 -35
  126. package/server.js +308 -299
  127. package/smtp_client.js +244 -228
  128. package/test/.eslintrc.yaml +0 -1
  129. package/test/connection.js +127 -134
  130. package/test/endpoint.js +53 -47
  131. package/test/fixtures/line_socket.js +12 -12
  132. package/test/fixtures/util_hmailitem.js +89 -85
  133. package/test/host_pool.js +90 -92
  134. package/test/installation/plugins/base_plugin.js +2 -2
  135. package/test/installation/plugins/folder_plugin/index.js +2 -3
  136. package/test/installation/plugins/inherits.js +3 -3
  137. package/test/installation/plugins/load_first.js +2 -3
  138. package/test/installation/plugins/plugin.js +1 -3
  139. package/test/installation/plugins/tls.js +2 -4
  140. package/test/logger.js +135 -116
  141. package/test/outbound/hmail.js +49 -35
  142. package/test/outbound/index.js +118 -101
  143. package/test/outbound/qfile.js +51 -53
  144. package/test/outbound_bounce_net_errors.js +84 -69
  145. package/test/outbound_bounce_rfc3464.js +235 -165
  146. package/test/plugins/auth/auth_base.js +420 -279
  147. package/test/plugins/auth/auth_vpopmaild.js +38 -39
  148. package/test/plugins/queue/smtp_forward.js +126 -104
  149. package/test/plugins/rcpt_to.host_list_base.js +85 -67
  150. package/test/plugins/rcpt_to.in_host_list.js +159 -112
  151. package/test/plugins/status.js +71 -64
  152. package/test/plugins/tls.js +37 -34
  153. package/test/plugins.js +97 -92
  154. package/test/rfc1869.js +19 -26
  155. package/test/server.js +293 -272
  156. package/test/smtp_client.js +180 -176
  157. package/test/tls_socket.js +62 -66
  158. package/test/transaction.js +159 -160
  159. package/tls_socket.js +331 -333
  160. package/transaction.js +129 -137
@@ -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
- * zones
14
+ - zones
17
15
 
18
- A comma or semi-colon list of zones to query. It will be merged with
19
- any lists in dnsbl.zones.
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
- * periodic\_checks
19
+ - periodic_checks
22
20
 
23
- If enabled, this will check all the zones every n minutes.
24
- The minimum value that will be accepted here is 5. Any value less
25
- than 5 will cause the checks to be run at start-up only.
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
- The checks confirm that the list is responding and that it is not
28
- listing the world. If any errors are detected, then the zone is
29
- disabled and will be re-checked on the next test. If a zone
30
- subsequently starts working correctly then it will be re-enabled.
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
- * enable\_stats
30
+ - enable_stats
33
31
 
34
- To use this feature you must have installed the 'redis' module and
35
- have a redis server running.
32
+ To use this feature you must have installed the 'redis' module and
33
+ have a redis server running.
36
34
 
37
- When enabled, this will record several list statistics to redis.
35
+ When enabled, this will record several list statistics to redis.
38
36
 
39
- It will track the total number of queries (TOTAL) and the average
40
- response time (AVG\_RT) and the return type (e.g. LISTED or ERROR)
41
- to a redis hash where the key is 'dns-list-stat:zone' and the hash
42
- field is the response type.
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
- It will also track the positive response overlap between the lists
45
- in another redis hash where the key is 'dns-list-overlap:zone' and
46
- the hash field is the other list names.
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
- Example:
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
- * stats\_redis\_host
65
+ - stats_redis_host
68
66
 
69
- In the form of `host:port` this option allows you to specify a different
70
- host on which redis runs.
67
+ In the form of `host:port` this option allows you to specify a different
68
+ host on which redis runs.
71
69
 
72
- * reject (default: true)
70
+ - reject (default: true)
73
71
 
74
- Reject connections from IPs that are blacklisted. Setting this to false
75
- makes dnsbl informational. reject=false is best used in conjunction with
76
- plugins like [karma](/manual/plugins/karma.html) that employ a scoring
77
- engine to make choices about message delivery.
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
- * search: (default: first)
77
+ - search: (default: first)
80
78
 
81
- first: consider first DNSBL response conclusive. End processing.
82
- all: process all DNSBL results
79
+ first: consider first DNSBL response conclusive. End processing.
80
+ all: process all DNSBL results
@@ -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 hook\_data.
5
+ up to hook_data.
7
6
 
8
- IMPORTANT! The order of plugins in config/plugins is important when
9
- this plugin is used. It should be listed *before* any plugins that
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
- * zones
22
-
23
- A comma or semi-colon list of zones to query. It will be merged with
24
- any lists in dnswl.zones.
25
-
26
- * periodic\_checks
27
-
28
- If enabled, this will check all the zones every n minutes.
29
- The minimum value that will be accepted here is 5. Any value less
30
- than 5 will cause the checks to be run at start-up only.
31
-
32
- The checks confirm that the list is responding and that it is not
33
- listing the world. If any errors are detected, then the zone is
34
- disabled and will be re-checked on the next test. If a zone
35
- subsequently starts working correctly then it will be re-enabled.
36
-
37
- * enable\_stats
38
-
39
- To use this feature you must have installed the 'redis' module and
40
- have a redis server running.
41
-
42
- When enabled, this will record several list statistics to redis.
43
-
44
- It will track the total number of queries (TOTAL) and the average
45
- response time (AVG\_RT) and the return type (e.g. LISTED or ERROR)
46
- to a redis hash where the key is 'dns-list-stat:zone' and the hash
47
- field is the response type.
48
-
49
- It will also track the positive response overlap between the lists
50
- in another redis hash where the key is 'dns-list-overlap:zone' and
51
- the hash field is the other list names.
52
-
53
- Example:
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
- * stats\_redis\_host
70
+ - stats_redis_host
73
71
 
74
- In the form of `host:port` this option allows you to specify a different
75
- host on which redis runs.
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
- lookup\_rdns.strict
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. If there is no match it sends a
6
- DENYDISCONNECT, otherwise if it matches it sends an OK. DENYDISCONNECT
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 lookup\_rdns.strict.ini
10
- --------------------------------------------
8
+ ## Configuration lookup_rdns.strict.ini
11
9
 
12
- This is the general configuration file for the plugin. In it you can find
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
- * lookup\_rdns.strict.general.nomatch
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. This is also required for this plugin, which needs to handle its
59
- own timeouts. To actually specify the timeout for this plugin, please see
60
- the general config in lookup\_rdns.strict.ini.
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 lookup\_rdns.strict.whitelist
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. For this reason we are
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. If you need to get around this restriction, you may use a '.*' at
79
- either the start or the end of your regex. This should help prevent people
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
- mail\_from.access.whitelist (pass)
14
- mail\_from.access.whitelist\_regex (pass)
15
- mail\_from.access.blacklist (block)
16
- mail\_from.access.blacklist\_regex (block)
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 mail\_from.access.ini
19
- -------------------------------------
16
+ ## Configuration mail_from.access.ini
20
17
 
21
18
  General configuration file for this plugin.
22
19
 
23
- * mail\_from.access.general.deny\_msg
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. This file should be used for a specific address,
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. Nevertheless, if you need whitelists,
30
+ possible and never using whitelists. Nevertheless, if you need whitelists,
36
31
  here they are.
37
32
 
38
- Configuration mail\_from.access.whitelist\_regex
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. If you need to get around this restriction, you may use a '.*' at
44
- either the start or the end of your regex. This should help prevent people
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 mail\_from.access.blacklist
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 mail\_from.access.blacklist\_regex
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. If you need to get around this restriction, you may use a '.*' at
59
- either the start or the end of your regex. This should help prevent people
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
- mail\_from.blocklist
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 MAIL\_FROM addresses in a list.
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 mail\_from.access plugin.
12
+ based on a regex, or add whitelists, please use the mail_from.access plugin.
13
+
14
+ ## Configuration
15
15
 
16
- Configuration
17
- -------------
16
+ - mail_from.blocklist
18
17
 
19
- * mail\_from.blocklist
20
-
21
18
  Contains a list of email addresses to block.
@@ -1,5 +1,4 @@
1
- mail\_from.nobounces
2
- ===================
1
+ # mail_from.nobounces
3
2
 
4
3
  This mail blocks all bounce messages using the simple rule of checking
5
4
  for `MAIL FROM:<>`.
@@ -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
- rcpt\_to.access
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
- This plugin blocks RCPT\_TO addresses in a list or regex.
11
- This plugin will evaluate the RCPT\_TO address against a set of white and black
12
- lists. The lists are applied in the following way:
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
- rcpt\_to.access.whitelist (pass)
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
- * rcpt\_to.access.general.deny\_msg
21
+ - rcpt_to.access.general.deny_msg
25
22
 
26
23
  Text to send the user on reject (text).
27
24
 
28
- Configuration rcpt\_to.access.whitelist
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. This file should be used for a specific address
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. Nevertheless, if you need whitelists,
31
+ possible and never using whitelists. Nevertheless, if you need whitelists,
36
32
  here they are.
37
33
 
38
- Configuration rcpt\_to.access.whitelist\_regex
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. If you need to get around this restriction, you may use a '.*' at
44
- either the start or the end of your regex. This should help prevent people
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 rcpt\_to.access.blacklist
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 rcpt\_to.access.blacklist\_regex
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. If you need to get around this restriction, you may use a '.*' at
59
- either the start or the end of your regex. This should help prevent people
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
- rcpt\_to.blocklist
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 RCPT\_TO addresses in a list.
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. If you want to customize the deny message, add blocks
14
- based on a regex, or add whitelists, please use the rcpt\_to.access plugin.
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
- Configuration
17
- -------------
16
+ - rcpt_to.blocklist
18
17
 
19
- * rcpt\_to.blocklist
20
-
21
18
  Contains a list of email addresses to block.
@@ -1,4 +1,3 @@
1
1
  # rcpt_to.routes
2
2
 
3
3
  Moved to [https://github.com/haraka/haraka-plugin-recipient-routes](https://github.com/haraka/haraka-plugin-recipient-routes)
4
-
@@ -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.rdns\_access plugin. Please transition over
6
- to using the new connect.rdns\_access plugin, as this plugin is now deprecated
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. Assume we add a rule to deny all hosts with dynamic
14
- in the rDNS hostname (.*dynamic.*). Now we find a mail server,
15
- generaldynamics.com that is clearly a false positive. We could try
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 (.*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
- * rdns.deny\_regexps
22
+ - rdns.deny_regexps
25
23
 
26
- The list of regular expressions to deny. Over broad regexes in this list
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
- * rdns.allow\_regexps
27
+ - rdns.allow_regexps
30
28
 
31
- The list of regular expressions to allow. This list is always processed
29
+ The list of regular expressions to allow. This list is always processed
32
30
  in favor of rules in the deny file.