Haraka 3.0.4 → 3.1.0

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 (63) hide show
  1. package/CONTRIBUTORS.md +6 -5
  2. package/Changes.md +206 -28
  3. package/LICENSE +1 -1
  4. package/Plugins.md +3 -3
  5. package/bin/haraka +3 -1
  6. package/config/connection.ini +63 -0
  7. package/config/plugins +0 -2
  8. package/config/smtp.ini +1 -18
  9. package/config/tls.ini +2 -0
  10. package/connection.js +53 -63
  11. package/docs/CoreConfig.md +17 -78
  12. package/docs/HAProxy.md +10 -28
  13. package/docs/Outbound.md +8 -9
  14. package/docs/plugins/aliases.md +4 -6
  15. package/docs/plugins/block_me.md +2 -4
  16. package/docs/plugins/data.signatures.md +2 -4
  17. package/docs/plugins/max_unrecognized_commands.md +2 -4
  18. package/docs/plugins/prevent_credential_leaks.md +2 -5
  19. package/docs/plugins/process_title.md +1 -2
  20. package/docs/plugins/queue/test.md +9 -0
  21. package/docs/plugins/rcpt_to.in_host_list.md +1 -2
  22. package/docs/plugins/rcpt_to.max_count.md +2 -10
  23. package/docs/plugins/record_envelope_addresses.md +3 -6
  24. package/docs/plugins/relay.md +1 -155
  25. package/docs/plugins/reseed_rng.md +1 -2
  26. package/docs/plugins/tarpit.md +7 -10
  27. package/docs/plugins/tls.md +8 -0
  28. package/docs/plugins/toobusy.md +2 -4
  29. package/docs/plugins/xclient.md +1 -2
  30. package/eslint.config.mjs +27 -0
  31. package/http/html/index.html +6 -5
  32. package/logger.js +1 -8
  33. package/outbound/hmail.js +8 -1
  34. package/package.json +57 -56
  35. package/plugins/auth/auth_base.js +0 -1
  36. package/plugins/queue/lmtp.js +3 -1
  37. package/plugins/queue/test.js +5 -3
  38. package/server.js +0 -14
  39. package/test/config/smtp.ini +2 -0
  40. package/test/config/tls.ini +4 -2
  41. package/test/connection.js +20 -9
  42. package/test/outbound/index.js +1 -1
  43. package/test/tls_socket.js +5 -1
  44. package/.eslintrc.yaml +0 -12
  45. package/.prettierrc.yml +0 -1
  46. package/config/connection_close_message +0 -1
  47. package/config/databytes +0 -1
  48. package/config/dhparams.pem +0 -8
  49. package/config/early_talker.ini +0 -11
  50. package/config/mail_from.is_resolvable.ini +0 -6
  51. package/config/max_unrecognized_commands +0 -1
  52. package/config/smtp.json +0 -17
  53. package/docs/plugins/early_talker.md +0 -22
  54. package/docs/plugins/mail_from.is_resolvable.md +0 -29
  55. package/plugins/early_talker.js +0 -155
  56. package/plugins/mail_from.is_resolvable.js +0 -132
  57. package/plugins/relay.js +0 -207
  58. package/test/plugins/early_talker.js +0 -104
  59. package/test/plugins/mail_from.is_resolvable.js +0 -35
  60. package/test/plugins/relay.js +0 -303
  61. /package/docs/{plugins → deprecated}/access.md +0 -0
  62. /package/docs/{plugins → deprecated}/backscatterer.md +0 -0
  63. /package/docs/{plugins → deprecated}/data.headers.md +0 -0
package/CONTRIBUTORS.md CHANGED
@@ -2,10 +2,11 @@
2
2
 
3
3
  This handcrafted artisinal software is brought to you by:
4
4
 
5
- | <img height="80" src="https://avatars.githubusercontent.com/u/261635?v=4"><br><a href="https://github.com/msimerson">msimerson</a> (<a href="https://github.com/haraka/Haraka/commits?author=msimerson">1619</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/662371?v=4"><br><a href="https://github.com/baudehlo">baudehlo</a> (<a href="https://github.com/haraka/Haraka/commits?author=baudehlo">969</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/550490?v=4"><br><a href="https://github.com/smfreegard">smfreegard</a> (<a href="https://github.com/haraka/Haraka/commits?author=smfreegard">794</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/959600?v=4"><br><a href="https://github.com/godsflaw">godsflaw</a> (<a href="https://github.com/haraka/Haraka/commits?author=godsflaw">171</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/934254?v=4"><br><a href="https://github.com/analogic">analogic</a> (<a href="https://github.com/haraka/Haraka/commits?author=analogic">42</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/1674289?v=4"><br><a href="https://github.com/Dexus">Dexus</a> (<a href="https://github.com/haraka/Haraka/commits?author=Dexus">42</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/82041?v=4"><br><a href="https://github.com/gramakri">gramakri</a> (<a href="https://github.com/haraka/Haraka/commits?author=gramakri">37</a>)|
5
+ | <img height="80" src="https://avatars.githubusercontent.com/u/261635?v=4"><br><a href="https://github.com/msimerson">msimerson</a> (<a href="https://github.com/haraka/Haraka/commits?author=msimerson">1633</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/662371?v=4"><br><a href="https://github.com/baudehlo">baudehlo</a> (<a href="https://github.com/haraka/Haraka/commits?author=baudehlo">969</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/550490?v=4"><br><a href="https://github.com/smfreegard">smfreegard</a> (<a href="https://github.com/haraka/Haraka/commits?author=smfreegard">794</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/959600?v=4"><br><a href="https://github.com/godsflaw">godsflaw</a> (<a href="https://github.com/haraka/Haraka/commits?author=godsflaw">171</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/934254?v=4"><br><a href="https://github.com/analogic">analogic</a> (<a href="https://github.com/haraka/Haraka/commits?author=analogic">42</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/1674289?v=4"><br><a href="https://github.com/Dexus">Dexus</a> (<a href="https://github.com/haraka/Haraka/commits?author=Dexus">42</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/82041?v=4"><br><a href="https://github.com/gramakri">gramakri</a> (<a href="https://github.com/haraka/Haraka/commits?author=gramakri">37</a>)|
6
6
  | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
7
- | <img height="80" src="https://avatars.githubusercontent.com/u/203240?v=4"><br><a href="https://github.com/lnedry">lnedry</a> (<a href="https://github.com/haraka/Haraka/commits?author=lnedry">23</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/748075?v=4"><br><a href="https://github.com/celesteking">celesteking</a> (<a href="https://github.com/haraka/Haraka/commits?author=celesteking">21</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/791972?v=4"><br><a href="https://github.com/lpatters">lpatters</a> (<a href="https://github.com/haraka/Haraka/commits?author=lpatters">20</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/366268?v=4"><br><a href="https://github.com/chazomaticus">chazomaticus</a> (<a href="https://github.com/haraka/Haraka/commits?author=chazomaticus">19</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/271024?v=4"><br><a href="https://github.com/hayesgm">hayesgm</a> (<a href="https://github.com/haraka/Haraka/commits?author=hayesgm">16</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/123708?v=4"><br><a href="https://github.com/arlolra">arlolra</a> (<a href="https://github.com/haraka/Haraka/commits?author=arlolra">16</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/1573133?v=4"><br><a href="https://github.com/gauravaror">gauravaror</a> (<a href="https://github.com/haraka/Haraka/commits?author=gauravaror">14</a>)|
8
- | <img height="80" src="https://avatars.githubusercontent.com/u/260607?v=4"><br><a href="https://github.com/typingArtist">typingArtist</a> (<a href="https://github.com/haraka/Haraka/commits?author=typingArtist">14</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/158380?v=4"><br><a href="https://github.com/darkpixel">darkpixel</a> (<a href="https://github.com/haraka/Haraka/commits?author=darkpixel">12</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/11343494?v=4"><br><a href="https://github.com/superman20">superman20</a> (<a href="https://github.com/haraka/Haraka/commits?author=superman20">12</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/9887966?v=4"><br><a href="https://github.com/KingNoosh">KingNoosh</a> (<a href="https://github.com/haraka/Haraka/commits?author=KingNoosh">11</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/5229495?v=4"><br><a href="https://github.com/tstonis">tstonis</a> (<a href="https://github.com/haraka/Haraka/commits?author=tstonis">10</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/1746394?v=4"><br><a href="https://github.com/wltsmrz">wltsmrz</a> (<a href="https://github.com/haraka/Haraka/commits?author=wltsmrz">9</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/2176651?v=4"><br><a href="https://github.com/fatalbanana">fatalbanana</a> (<a href="https://github.com/haraka/Haraka/commits?author=fatalbanana">8</a>)|
9
- | <img height="80" src="https://avatars.githubusercontent.com/u/231081?v=4"><br><a href="https://github.com/EyePulp">EyePulp</a> (<a href="https://github.com/haraka/Haraka/commits?author=EyePulp">8</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/81561?v=4"><br><a href="https://github.com/Synchro">Synchro</a> (<a href="https://github.com/haraka/Haraka/commits?author=Synchro">8</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/3957811?v=4"><br><a href="https://github.com/gene-hightower">gene-hightower</a> (<a href="https://github.com/haraka/Haraka/commits?author=gene-hightower">7</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/103802?v=4"><br><a href="https://github.com/joshuathayer">joshuathayer</a> (<a href="https://github.com/haraka/Haraka/commits?author=joshuathayer">6</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/8224508?v=4"><br><a href="https://github.com/DarkSorrow">DarkSorrow</a> (<a href="https://github.com/haraka/Haraka/commits?author=DarkSorrow">6</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/1521113?v=4"><br><a href="https://github.com/hontas">hontas</a> (<a href="https://github.com/haraka/Haraka/commits?author=hontas">5</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/1263856?v=4"><br><a href="https://github.com/ricardopolo">ricardopolo</a> (<a href="https://github.com/haraka/Haraka/commits?author=ricardopolo">5</a>)|
7
+ | <img height="80" src="https://avatars.githubusercontent.com/u/203240?v=4"><br><a href="https://github.com/lnedry">lnedry</a> (<a href="https://github.com/haraka/Haraka/commits?author=lnedry">26</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/748075?v=4"><br><a href="https://github.com/celesteking">celesteking</a> (<a href="https://github.com/haraka/Haraka/commits?author=celesteking">21</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/791972?v=4"><br><a href="https://github.com/lpatters">lpatters</a> (<a href="https://github.com/haraka/Haraka/commits?author=lpatters">20</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/366268?v=4"><br><a href="https://github.com/chazomaticus">chazomaticus</a> (<a href="https://github.com/haraka/Haraka/commits?author=chazomaticus">19</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/271024?v=4"><br><a href="https://github.com/hayesgm">hayesgm</a> (<a href="https://github.com/haraka/Haraka/commits?author=hayesgm">16</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/123708?v=4"><br><a href="https://github.com/arlolra">arlolra</a> (<a href="https://github.com/haraka/Haraka/commits?author=arlolra">16</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/1573133?v=4"><br><a href="https://github.com/gauravaror">gauravaror</a> (<a href="https://github.com/haraka/Haraka/commits?author=gauravaror">14</a>)|
8
+ | <img height="80" src="https://avatars.githubusercontent.com/u/260607?v=4"><br><a href="https://github.com/typingArtist">typingArtist</a> (<a href="https://github.com/haraka/Haraka/commits?author=typingArtist">14</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/158380?v=4"><br><a href="https://github.com/darkpixel">darkpixel</a> (<a href="https://github.com/haraka/Haraka/commits?author=darkpixel">12</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/11343494?v=4"><br><a href="https://github.com/superman20">superman20</a> (<a href="https://github.com/haraka/Haraka/commits?author=superman20">12</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/9887966?v=4"><br><a href="https://github.com/KingNoosh">KingNoosh</a> (<a href="https://github.com/haraka/Haraka/commits?author=KingNoosh">11</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/5229495?v=4"><br><a href="https://github.com/tstonis">tstonis</a> (<a href="https://github.com/haraka/Haraka/commits?author=tstonis">10</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/1746394?v=4"><br><a href="https://github.com/wltsmrz">wltsmrz</a> (<a href="https://github.com/haraka/Haraka/commits?author=wltsmrz">9</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/81561?v=4"><br><a href="https://github.com/Synchro">Synchro</a> (<a href="https://github.com/haraka/Haraka/commits?author=Synchro">8</a>)|
9
+ | <img height="80" src="https://avatars.githubusercontent.com/u/2176651?v=4"><br><a href="https://github.com/fatalbanana">fatalbanana</a> (<a href="https://github.com/haraka/Haraka/commits?author=fatalbanana">8</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/231081?v=4"><br><a href="https://github.com/EyePulp">EyePulp</a> (<a href="https://github.com/haraka/Haraka/commits?author=EyePulp">8</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/3957811?v=4"><br><a href="https://github.com/gene-hightower">gene-hightower</a> (<a href="https://github.com/haraka/Haraka/commits?author=gene-hightower">7</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/8224508?v=4"><br><a href="https://github.com/DarkSorrow">DarkSorrow</a> (<a href="https://github.com/haraka/Haraka/commits?author=DarkSorrow">6</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/103802?v=4"><br><a href="https://github.com/joshuathayer">joshuathayer</a> (<a href="https://github.com/haraka/Haraka/commits?author=joshuathayer">6</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/1521113?v=4"><br><a href="https://github.com/hontas">hontas</a> (<a href="https://github.com/haraka/Haraka/commits?author=hontas">5</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/1263856?v=4"><br><a href="https://github.com/ricardopolo">ricardopolo</a> (<a href="https://github.com/haraka/Haraka/commits?author=ricardopolo">5</a>)|
10
10
 
11
- <sub>this file is maintained by [.release](https://github.com/msimerson/.release)</sub>
11
+ <sub>this file is generated by [.release](https://github.com/msimerson/.release).
12
+ Contribute to this project to get your GitHub profile included here.</sub>
package/Changes.md CHANGED
@@ -1,5 +1,90 @@
1
+ # Changelog
2
+
3
+ The format is based on [Keep a Changelog](https://keepachangelog.com/).
4
+
1
5
  ### Unreleased
2
6
 
7
+ ### [3.1.0] - 2025-01-30
8
+
9
+ #### Changes
10
+
11
+ ##### BREAKING CHANGE
12
+
13
+ `connection.ini` replaces the following config files:
14
+
15
+ | old file | connection.ini setting |
16
+ | ------ | ------ |
17
+ | haproxy_hosts | [haproxy] hosts |
18
+ | smtpgreeting | [message] greeting |
19
+ | ehlo_hello_message | [message] helo |
20
+ | connection_close_message | [message] close |
21
+ | banner_includes_uuid | [uuid] banner_chars |
22
+ | deny_includes_uuid | [uuid] deny_chars |
23
+ | databytes | [max] bytes |
24
+ | max_mime_parts | [max] mime_parts |
25
+ | max_line_length | [max] line_length |
26
+ | max_data_line_length | [max] data_line_length |
27
+
28
+ AND
29
+
30
+ - moves the following settings from smtp.ini to connection.ini:
31
+ - headers.*
32
+ - main.smtp_utf8
33
+ - main.strict_rfc1869
34
+ - early_talker.pause, removed support, use earlytalker.ini
35
+
36
+ To upgrade, apply any localized settings from the old config files to
37
+ the new `connection.ini` file. For tidiness, delete the deprecated
38
+ config files.
39
+
40
+ - feat(queue/test): Append UUID to E-Mails (avoid overwrite) #3449
41
+ - repackage p/early_talker as plugin #3443
42
+ - repackage p/mail_from.is_resolvable as plugin #3439
43
+ - repackage p/relay as haraka-plugin-relay #3432
44
+ - ci(cov): update codecov to v5
45
+ - deps(eslint): update to v9 #3433
46
+ - doc(plugins/\*.md): use \# to indicate heading levels
47
+ - deps(various): bump to latest versions
48
+ - doc(CoreConfig): removed incorrect early_talker.delay reference (hasn't worked in years).
49
+ - doc(LICENSE) fix copyright year #3424
50
+ - doc(access, backscatterer, & data.headers): deprecated plugin docs
51
+
52
+ #### Fixes
53
+
54
+ - fix(conn): always add connection.notes.tls properties #3450
55
+ - fix(conn): cumulative greeting message for custom greetings #3446
56
+ - fix(mail_from.is_resolvable): use correct config var path #3416
57
+ - fix(bin/haraka): fix for finding path to config/docs/Plugins.md #3414
58
+ - fix(outbound): in outbound, when mx.exchange contains an IP, use mx.from_dns #3413
59
+
60
+ ### [3.0.5] - 2024-09-27
61
+
62
+ #### Fixed
63
+
64
+ - fix(q/lmtp): revert a refactoring error #3407
65
+ - fix: install Plugins.md when haraka -i #3406
66
+ - fix(haraka -h): add missing return for plugin list #3405
67
+ - fix `no_tls_hosts` related docs & tests #3404
68
+ - fix: install docs/Plugins.md when haraka -i installed
69
+ - fix(changes): spelling correction #3397
70
+
71
+ #### Changed
72
+
73
+ - lint: remove deprecated semi-style rule
74
+ - removed dependency on ldap plugins #3399
75
+ - doc(tls.md): add note for no_tls_hosts for outbound
76
+ - test(tls): add tests for no_tls_hosts for inbound & outbound
77
+ - dep version bumps:
78
+ - haraka-email-message: 1.2.4, #3408
79
+ - nodemailer: 6.9.15
80
+ - nopt: 8.0.0
81
+ - tld: 1.2.2
82
+ - plugin-dkim: 1.0.7
83
+ - plugin-dns-list: 1.2.1
84
+ - plugin-elastisearch: 8.0.3
85
+ - test-fixtures: 1.3.8
86
+
87
+
3
88
  ### [3.0.4] - 2024-08-21
4
89
 
5
90
  #### Added
@@ -46,7 +131,7 @@
46
131
  - client_pool.get_client & release_client: arity of 5 -> 2
47
132
  - mx_lookup: make it async/await
48
133
  - mx_lookup: deleted. Logic moved into net_utils #3322
49
- - use net_utils.HarkaMx for get_mx parsing #3344
134
+ - use net_utils.HarakaMx for get_mx parsing #3344
50
135
  - emit log message when ignoring local MX #3285
51
136
  - pass in config when initiating txn #3315
52
137
  - minor es6 updates #3315, #3322
@@ -615,7 +700,7 @@
615
700
  - plugins/auth/auth_ldap -> haraka-plugin-auth-ldap #2144
616
701
  - plugins/graph -> haraka-plugin-graph #2185
617
702
  - config: replace ./config.js with haraka-config #2119
618
- - Replace concatenated strings with template literals (#2129) in:
703
+ - Replace concatenated strings with template literals #2129 in:
619
704
  - attachment #2260
620
705
  - bin/spf #2129
621
706
  - bin/dkimverify #2278
@@ -651,7 +736,7 @@
651
736
  - plugins/spf #2266
652
737
  - plugins/toobusy #2186
653
738
  - plugins/xclient #2159
654
- - rfc1869 #2159
739
+ - rfc1869 #2160
655
740
  - smtp_client #2129, #2208
656
741
  - tests/host_pool #2159
657
742
  - use es6 destructuring (#2075) in:
@@ -990,11 +1075,11 @@
990
1075
 
991
1076
  - The delay_deny plugin now has a whitelist mode (vs blacklist). #1564
992
1077
  - Don't show the private key in logs for dkim_sign. #1565
993
- - update geoip for compat with newer ES (#1622)
994
- - drop node 0.10 testing / official support (#1621)
995
- - watch plugin displays UUIDs as URL (#1624)
1078
+ - update geoip for compat with newer ES #1622
1079
+ - drop node 0.10 testing / official support #1621
1080
+ - watch plugin displays UUIDs as URL #1624
996
1081
  - Catch errors on header decode in rfc2231 #1599
997
- - Attachment plugin updates (#1606)
1082
+ - Attachment plugin updates #1606
998
1083
  - add outbound.ini pool_timeout example setting #1584
999
1084
 
1000
1085
  #### Fixes
@@ -1006,14 +1091,14 @@
1006
1091
  - outbound issues #1615, #1603
1007
1092
  - Fixed adding/removing headers in rspamd plugin. #1562
1008
1093
  - Fixed process_title not shutting down. #1560
1009
- - fix a spurious error emitted by p0f (#1623)
1010
- - fix header version hiding (#1617)
1011
- - messagestream returns destination (#1610)
1012
- - plugins.getdenyfn now passed 3rd params arg (#1591)
1013
- - Fix scope of spf logdebug (#1598)
1014
- - fix rabbitmq deliveryMode bug (#1594)
1015
- - fix dkim_sign TypeError with null mail_from.host (#1592)
1016
- - fix dkim_sign attempting to lower an undefined (#1587)
1094
+ - fix a spurious error emitted by p0f #1623
1095
+ - fix header version hiding #1617
1096
+ - messagestream returns destination #1610
1097
+ - plugins.getdenyfn now passed 3rd params arg #1591
1098
+ - Fix scope of spf logdebug #1598
1099
+ - fix rabbitmq deliveryMode bug #1594
1100
+ - fix dkim_sign TypeError with null mail_from.host #1592
1101
+ - fix dkim_sign attempting to lower an undefined #1587
1017
1102
 
1018
1103
  ### 2.8.8 - Jul 20, 2016
1019
1104
 
@@ -1044,18 +1129,16 @@
1044
1129
  #### Improvements
1045
1130
 
1046
1131
  - Allow alias plugin to explode to a list of aliases
1047
- - Support IPv6 literals in HELO tests (#1507 thanks @gramakri)
1048
- - Make ldap plugin use the modified address if a rcpt hook
1049
- changes it (#1501 thanks @darkpixel)
1132
+ - Support IPv6 literals in HELO tests #1507
1133
+ - Make ldap plugin use the modified address if a rcpt hook changes it #1501
1050
1134
 
1051
1135
  #### Fixes
1052
1136
 
1053
- - Fix loading plugins as npm modules (#1513)
1054
- - More DKIM fixes (#1506 thanks @zllovesuki)
1055
- - Fix the long failing host-pool-timer test (#1508)
1056
- - Fix clean shutdown of redis with new shutdown code
1057
- (#1504 and #1502 thanks @darkpixel)
1058
- - More fixes to clean shutdown (#1503)
1137
+ - Fix loading plugins as npm modules #1513
1138
+ - More DKIM fixes #1506
1139
+ - Fix the long failing host-pool-timer test #1508
1140
+ - Fix clean shutdown of redis with new shutdown code, #1504 and #1502
1141
+ - More fixes to clean shutdown #1503
1059
1142
 
1060
1143
  ### 2.8.6 - Jun 06, 2016
1061
1144
 
@@ -1081,9 +1164,9 @@
1081
1164
 
1082
1165
  #### Fixes
1083
1166
 
1084
- - Bind maxmind version to ignore API change (#1492)
1085
- - Fix encodings when banners are used (#1477)
1086
- - Various DKIM fixes (#1495)
1167
+ - Bind maxmind version to ignore API change #1492
1168
+ - Fix encodings when banners are used #1477
1169
+ - Various DKIM fixes #1495
1087
1170
 
1088
1171
  ### 2.8.4 - May 24, 2016
1089
1172
 
@@ -1545,10 +1628,105 @@
1545
1628
  - Throw exception with set_banner as it is now non-functional. Will be returned in a future version.
1546
1629
  - Small fixes to data.uribl
1547
1630
 
1548
- ### 1.4.0 -
1549
1631
 
1550
1632
  [3.0.0]: https://github.com/haraka/Haraka/releases/tag/3.0.0
1551
1633
  [3.0.1]: https://github.com/haraka/Haraka/releases/tag/v3.0.1
1552
1634
  [3.0.2]: https://github.com/haraka/Haraka/releases/tag/v3.0.2
1553
1635
  [3.0.3]: https://github.com/haraka/Haraka/releases/tag/v3.0.3
1554
1636
  [3.0.4]: https://github.com/haraka/Haraka/releases/tag/3.0.4
1637
+ [3.0.5]: https://github.com/haraka/Haraka/releases/tag/v3.0.5
1638
+ [3.0.6]: https://github.com/haraka/Haraka/releases/tag/v3.0.6
1639
+
1640
+ [2.8.0]: https://github.com/haraka/Haraka/releases/tag/v2.8.0
1641
+ [2.8.1]: https://github.com/haraka/Haraka/releases/tag/v2.8.1
1642
+ [2.8.3]: https://github.com/haraka/Haraka/releases/tag/v2.8.3
1643
+ [2.8.4]: https://github.com/haraka/Haraka/releases/tag/v2.8.4
1644
+ [2.8.5]: https://github.com/haraka/Haraka/releases/tag/v2.8.5
1645
+ [2.8.6]: https://github.com/haraka/Haraka/releases/tag/v2.8.6
1646
+ [2.8.7]: https://github.com/haraka/Haraka/releases/tag/v2.8.7
1647
+ [2.8.8]: https://github.com/haraka/Haraka/releases/tag/v2.8.8
1648
+ [2.8.9]: https://github.com/haraka/Haraka/releases/tag/v2.8.9
1649
+ [2.8.10]: https://github.com/haraka/Haraka/releases/tag/2.8.10
1650
+ [2.8.11]: https://github.com/haraka/Haraka/releases/tag/2.8.11
1651
+ [2.8.12]: https://github.com/haraka/Haraka/releases/tag/2.8.12
1652
+ [2.8.13]: https://github.com/haraka/Haraka/releases/tag/2.8.13
1653
+ [2.8.14]: https://github.com/haraka/Haraka/releases/tag/v2.8.14
1654
+ [2.8.15]: https://github.com/haraka/Haraka/releases/tag/2.8.15
1655
+ [2.8.16]: https://github.com/haraka/Haraka/releases/tag/2.8.16
1656
+ [2.8.17]: https://github.com/haraka/Haraka/releases/tag/2.8.17
1657
+ [2.8.18]: https://github.com/haraka/Haraka/releases/tag/2.8.18
1658
+ [2.8.19]: https://github.com/haraka/Haraka/releases/tag/v2.8.19
1659
+ [2.8.20]: https://github.com/haraka/Haraka/releases/tag/2.8.20
1660
+ [release-2.8.21]: https://github.com/haraka/Haraka/releases/tag/release-2.8.21
1661
+ [2.8.22]: https://github.com/haraka/Haraka/releases/tag/2.8.22
1662
+ [2.8.24]: https://github.com/haraka/Haraka/releases/tag/2.8.24
1663
+ [2.8.25]: https://github.com/haraka/Haraka/releases/tag/2.8.25
1664
+ [2.8.26]: https://github.com/haraka/Haraka/releases/tag/2.8.26
1665
+ [2.8.27]: https://github.com/haraka/Haraka/releases/tag/2.8.27
1666
+ [2.8.28]: https://github.com/haraka/Haraka/releases/tag/2.8.28
1667
+
1668
+ [2.7.3]: https://github.com/haraka/Haraka/releases/tag/v2.7.3
1669
+ [2.7.2]: https://github.com/haraka/Haraka/releases/tag/v2.7.2
1670
+ [2.7.1]: https://github.com/haraka/Haraka/releases/tag/v2.7.1
1671
+ [2.7.0]: https://github.com/haraka/Haraka/releases/tag/v2.7.0
1672
+
1673
+ [2.6.0]: https://github.com/haraka/Haraka/releases/tag/v2.6.0
1674
+ [2.6.1]: https://github.com/haraka/Haraka/releases/tag/v2.6.1
1675
+ [2.5.0]: https://github.com/haraka/Haraka/releases/tag/v2.5.0
1676
+ [2.4.0]: https://github.com/haraka/Haraka/releases/tag/v2.4.0
1677
+ [2.3.1]: https://github.com/haraka/Haraka/releases/tag/v2.3.1
1678
+ [2.3.0]: https://github.com/haraka/Haraka/releases/tag/v2.3.0
1679
+ [2.2.0]: https://github.com/haraka/Haraka/releases/tag/v2.2.0
1680
+ [2.2.1]: https://github.com/haraka/Haraka/releases/tag/v2.2.1
1681
+ [2.2.2]: https://github.com/haraka/Haraka/releases/tag/v2.2.2
1682
+ [2.2.3]: https://github.com/haraka/Haraka/releases/tag/v2.2.3
1683
+ [2.2.4]: https://github.com/haraka/Haraka/releases/tag/v2.2.4
1684
+ [2.2.5]: https://github.com/haraka/Haraka/releases/tag/v2.2.5
1685
+ [2.2.6]: https://github.com/haraka/Haraka/releases/tag/v2.2.6
1686
+ [2.2.7]: https://github.com/haraka/Haraka/releases/tag/v2.2.7
1687
+ [2.2.8]: https://github.com/haraka/Haraka/releases/tag/v2.2.8
1688
+ [2.1.0]: https://github.com/haraka/Haraka/releases/tag/v2.1.0
1689
+ [2.1.1]: https://github.com/haraka/Haraka/releases/tag/v2.1.1
1690
+ [2.1.2]: https://github.com/haraka/Haraka/releases/tag/v2.1.2
1691
+ [2.1.3]: https://github.com/haraka/Haraka/releases/tag/v2.1.3
1692
+ [2.1.4]: https://github.com/haraka/Haraka/releases/tag/v2.1.4
1693
+ [2.1.5]: https://github.com/haraka/Haraka/releases/tag/v2.1.5
1694
+ [2.1.6]: https://github.com/haraka/Haraka/releases/tag/v2.1.6
1695
+
1696
+ [2.0.0]: https://github.com/haraka/Haraka/releases/tag/v2.0.0
1697
+ [2.0.3]: https://github.com/haraka/Haraka/releases/tag/v2.0.3
1698
+ [2.0.4]: https://github.com/haraka/Haraka/releases/tag/v2.0.4
1699
+ [2.0.5]: https://github.com/haraka/Haraka/releases/tag/v2.0.5
1700
+
1701
+ [1.0.1]: https://github.com/haraka/Haraka/releases/tag/v1.0.1
1702
+ [1.0.2]: https://github.com/haraka/Haraka/releases/tag/v1.0.2
1703
+ [1.1.0]: https://github.com/haraka/Haraka/releases/tag/v1.1.0
1704
+ [1.2.0]: https://github.com/haraka/Haraka/releases/tag/v1.2.0
1705
+ [1.2.1]: https://github.com/haraka/Haraka/releases/tag/v1.2.1
1706
+ [1.3.0]: https://github.com/haraka/Haraka/releases/tag/v1.3.0
1707
+ [1.3.1]: https://github.com/haraka/Haraka/releases/tag/v1.3.1
1708
+ [1.3.2]: https://github.com/haraka/Haraka/releases/tag/v1.3.2
1709
+ [1.3.3]: https://github.com/haraka/Haraka/releases/tag/v1.3.3
1710
+ [1.4.0]: https://github.com/haraka/Haraka/releases/tag/v1.4.0
1711
+
1712
+ [0.9.0]: https://github.com/haraka/Haraka/releases/tag/v0.9.0
1713
+ [0.8.0]: https://github.com/haraka/Haraka/releases/tag/v0.8.0
1714
+ [0.7.2]: https://github.com/haraka/Haraka/releases/tag/v0.7.2
1715
+ [0.7.1]: https://github.com/haraka/Haraka/releases/tag/v0.7.1
1716
+ [0.7.0]: https://github.com/haraka/Haraka/releases/tag/v0.7.0
1717
+ [0.6.1]: https://github.com/haraka/Haraka/releases/tag/v0.6.1
1718
+ [0.6.0]: https://github.com/haraka/Haraka/releases/tag/v0.6.0
1719
+ [0.5.11]: https://github.com/haraka/Haraka/releases/tag/v0.5.11
1720
+ [0.5.10]: https://github.com/haraka/Haraka/releases/tag/v0.5.10
1721
+ [0.5.9]: https://github.com/haraka/Haraka/releases/tag/v0.5.9
1722
+ [0.5.8]: https://github.com/haraka/Haraka/releases/tag/v0.5.8
1723
+ [0.5.7]: https://github.com/haraka/Haraka/releases/tag/v0.5.7
1724
+ [0.5.6]: https://github.com/haraka/Haraka/releases/tag/v0.5.6
1725
+ [0.5.5]: https://github.com/haraka/Haraka/releases/tag/v0.5.5
1726
+ [0.5.4]: https://github.com/haraka/Haraka/releases/tag/v0.5.4
1727
+ [0.5.3]: https://github.com/haraka/Haraka/releases/tag/v0.5.3
1728
+ [0.5.2]: https://github.com/haraka/Haraka/releases/tag/v0.5.2
1729
+ [0.5]: https://github.com/haraka/Haraka/releases/tag/v0.5
1730
+ [0.4]: https://github.com/haraka/Haraka/releases/tag/v0.4
1731
+ [0.3]: https://github.com/haraka/Haraka/releases/tag/v0.3
1732
+ [0.2]: https://github.com/haraka/Haraka/releases/tag/v0.2
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2011 - 2018 Matt Sergeant
3
+ Copyright (c) 2011 - 2025 Matt Sergeant
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/Plugins.md CHANGED
@@ -92,7 +92,7 @@ A comprehensive list of known plugins. Create a PR to add yours to these lists.
92
92
  | [known-senders][url-known-senders] | Reward emails from those you send mail to |
93
93
  | [LDAP][url-ldap] | Aliases, Auth, and Recipient validation from LDAP |
94
94
  | [Limit][url-limit] | Apply many types of limits to SMTP connections |
95
- | [log.elasticsearch][url-elastic] | Store message metadata in Elasticsearch |
95
+ | [elasticsearch][url-elastic] | Store message metadata in Elasticsearch |
96
96
  | [log reader][url-logreader] | extract log entries from the haraka log file |
97
97
  | [syslog][url-syslog] | Log to syslog |
98
98
  | [mail_from.is_resolvable][url-mfres] | Verifies the MAIL FROM domain resolves to a MX |
@@ -167,7 +167,7 @@ A comprehensive list of known plugins. Create a PR to add yours to these lists.
167
167
  [url-limit]: https://github.com/haraka/haraka-plugin-limit
168
168
  [url-logreader]: https://github.com/haraka/haraka-plugin-log-reader
169
169
  [url-milter]: https://github.com/haraka/haraka-plugin-milter
170
- [url-mfres]: https://github.com/haraka/Haraka/blob/master/docs/plugins/mail_from.is_resolvable.md
170
+ [url-mfres]: https://github.com/haraka/haraka-plugin-mail_from.is_resolvable
171
171
  [url-msgsniff]: https://github.com/haraka/haraka-plugin-messagesniffer
172
172
  [url-ms]: http://www.armresearch.com/Products/
173
173
  [url-creds]: https://github.com/haraka/Haraka/blob/master/docs/plugins/prevent_credential_leaks.md
@@ -189,7 +189,7 @@ A comprehensive list of known plugins. Create a PR to add yours to these lists.
189
189
  [url-rqmd]: https://github.com/haraka/haraka-plugin-qmail-deliverable
190
190
  [url-rroutes]: https://github.com/haraka/haraka-plugin-recipient-routes
191
191
  [url-recordenv]: https://github.com/haraka/Haraka/blob/master/docs/plugins/record_envelope_addresses.md
192
- [url-relay]: https://github.com/haraka/Haraka/blob/master/docs/plugins/relay.md
192
+ [url-relay]: https://github.com/haraka/haraka-plugin-relay
193
193
  [url-rng]: https://github.com/haraka/Haraka/blob/master/docs/plugins/reseed_rng.md
194
194
  [url-rspamd]: https://github.com/haraka/haraka-plugin-rspamd
195
195
  [url-spamass]: https://github.com/haraka/haraka-plugin-spamassassin
package/bin/haraka CHANGED
@@ -228,7 +228,8 @@ const plugin_doc = [
228
228
 
229
229
 
230
230
  function getHooks () { // see haraka/Haraka#3306
231
- fs.readFileSync('docs/Plugins.md').toString()
231
+ const pi_path = path.resolve(parsed.configs, 'docs', 'Plugins.md')
232
+ return fs.readFileSync(pi_path).toString()
232
233
  .split('## Available Hooks')[1] // discard everything before this string
233
234
  .split('### rcpt')[0] // discard everything after this string
234
235
  .match(/\*\s(\S+)/gm) // grab the first word of lines starting with '* '
@@ -554,6 +555,7 @@ else if (parsed.install) {
554
555
  for (const d of ['plugins', 'docs', 'config']) {
555
556
  utils.mkDir(path.join(pa, d));
556
557
  }
558
+ utils.copyFile(path.join(base, 'docs', 'Plugins.md'), path.join(pa, 'docs', 'Plugins.md'));
557
559
  utils.createFile(path.join(pa, 'README'), readme, {}, parsed.force);
558
560
  utils.createFile(path.join(pa, 'package.json'), packageJson, {}, parsed.force);
559
561
  const bytes = require('crypto').randomBytes(32);
@@ -0,0 +1,63 @@
1
+ ;
2
+ [main]
3
+
4
+ ; Require senders to conform to RFC 1869 and RFC 821 when sending the MAIL FROM and RCPT TO commands. In particular, the inclusion of spurious spaces or missing angle brackets will be rejected.
5
+ ; strict_rfc1869 = false
6
+
7
+ ; Advertise support for SMTPUTF8 (RFC-6531)
8
+ ; smtputf8=true
9
+
10
+
11
+ [haproxy]
12
+ ; Array: hosts or CIDRs that Haraka should enable the PROXY protocol from. See docs/HAProxy for format
13
+ hosts[] =
14
+ ; hosts[] = 192.0.2.4
15
+ ; hosts[] = 192.0.2.5
16
+ ; hosts[] = [2001:db8::1]
17
+ ; hosts[] = [2001:db8::2]
18
+
19
+
20
+ [headers]
21
+ ; add_received=true
22
+ ; clean_auth_results=true
23
+
24
+ ; show_version=true
25
+
26
+ max_lines=1000
27
+
28
+ max_received=100
29
+
30
+
31
+ [max]
32
+ ; Integer. The maximum SIZE of an email
33
+ bytes=26214400
34
+
35
+ ; Integer. Limit a potential denial of service in potentially hostile emails.
36
+ mime_parts=1000
37
+
38
+ ; Integer. The maximum length of lines in SMTP session commands (e.g. RCPT, HELO etc). Defaults to 512 (bytes) as mandated by RFC 5321 §4.5.3.1.4. Clients exceeding this limit will be immediately disconnected with a "521 Command line too long" error.
39
+ line_length=512
40
+
41
+ ; Integer. The maximum length of lines in the DATA section of emails. Defaults to 992 (bytes), the limit set by Sendmail. When this limit is exceeded the three bytes "\r\n " (0x0d 0x0a 0x20) are inserted into the stream to "fix" it. This has the potential to "break" some email, but makes it more likely to be accepted by upstream/downstream services, and is the same behaviour as Sendmail. Also when the data line length limit is exceeded `transaction.notes.data_line_length_exceeded` is set to `true`.
42
+ data_line_length=992
43
+
44
+
45
+ [message]
46
+ ; Array. The greeting used when a client connects.
47
+ ; greeting[]=My Custom
48
+ ; greeting[]=Greeting Message
49
+
50
+ helo=Haraka is at your service.
51
+
52
+ ; String. Override the default connection close message.
53
+ close=closing connection. Have a jolly good day.
54
+
55
+
56
+ [uuid]
57
+ ; integer, how many UUID chars to show.
58
+ ; 0 = none, 6 is enough to be unique per day, 40 will include the
59
+ ; full connection and transaction UUID
60
+ banner_chars=6
61
+
62
+ ; include N characters of the uuid (in brackets) at the start of each line of the deny message
63
+ deny_chars=0
package/config/plugins CHANGED
@@ -38,7 +38,6 @@
38
38
  # ----------
39
39
  # auth/flat_file
40
40
  # auth/auth_proxy
41
- # auth/auth_ldap
42
41
 
43
42
  # MAIL FROM
44
43
  # ----------
@@ -50,7 +49,6 @@ mail_from.is_resolvable
50
49
  # At least one rcpt_to plugin is REQUIRED for inbound email.
51
50
  rcpt_to.in_host_list
52
51
  # qmail-deliverable
53
- # rcpt_to.ldap
54
52
  # rcpt_to.routes
55
53
 
56
54
  # DATA
package/config/smtp.ini CHANGED
@@ -22,6 +22,7 @@
22
22
  ;ignore_bad_plugins=0
23
23
 
24
24
  ; Run using cluster to fork multiple backend processes
25
+ ; Ref: https://github.com/haraka/Haraka/wiki/Performance-Tuning
25
26
  ;nodes=cpus
26
27
 
27
28
  ; Daemonize
@@ -43,21 +44,3 @@
43
44
  ; after this time it will hard close. 30s is usually long enough to
44
45
  ; wait for outbound connections to finish.
45
46
  ;force_shutdown_timeout=30
46
-
47
- ; SMTP service extensions: https://tools.ietf.org/html/rfc1869
48
- ; strict_rfc1869 = false
49
-
50
- ; Advertise support for SMTPUTF8 (RFC-6531)
51
- ;smtputf8=true
52
-
53
- [headers]
54
- ;add_received=true
55
- ;clean_auth_results=true
56
-
57
- ;show_version=true
58
-
59
- ; replace max_header_lines
60
- max_lines=1000
61
-
62
- ; replace max_received_count
63
- max_received=100
package/config/tls.ini CHANGED
@@ -77,5 +77,7 @@
77
77
  ; key=tls_key.pem
78
78
  ; cert=tls_cert.pem
79
79
  ; dhparam=dhparams.pem
80
+ ; no_tls_hosts[]=127.0.0.1
81
+ ; no_tls_hosts[]=192.168.1.1
80
82
 
81
83
  ; and other options from [main] section above