Haraka 3.1.1 → 3.1.3

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 (168) hide show
  1. package/.prettierignore +4 -0
  2. package/CONTRIBUTORS.md +5 -5
  3. package/Changes.md +72 -50
  4. package/Plugins.md +3 -1
  5. package/README.md +1 -1
  6. package/bin/haraka +475 -479
  7. package/config/connection.ini +10 -0
  8. package/config/outbound.ini +3 -0
  9. package/config/smtp.ini +0 -9
  10. package/connection.js +1072 -1108
  11. package/docs/Connection.md +29 -30
  12. package/docs/CoreConfig.md +38 -40
  13. package/docs/CustomReturnCodes.md +0 -1
  14. package/docs/HAProxy.md +2 -2
  15. package/docs/Header.md +1 -1
  16. package/docs/Logging.md +29 -5
  17. package/docs/Outbound.md +93 -78
  18. package/docs/Plugins.md +103 -108
  19. package/docs/Transaction.md +49 -51
  20. package/docs/Tutorial.md +127 -143
  21. package/docs/deprecated/access.md +0 -1
  22. package/docs/deprecated/backscatterer.md +2 -3
  23. package/docs/deprecated/connect.rdns_access.md +18 -27
  24. package/docs/deprecated/data.headers.md +0 -1
  25. package/docs/deprecated/data.nomsgid.md +1 -2
  26. package/docs/deprecated/data.noreceived.md +1 -2
  27. package/docs/deprecated/data.rfc5322_header_checks.md +1 -2
  28. package/docs/deprecated/dkim_sign.md +13 -17
  29. package/docs/deprecated/dkim_verify.md +9 -17
  30. package/docs/deprecated/dnsbl.md +36 -38
  31. package/docs/deprecated/dnswl.md +41 -43
  32. package/docs/deprecated/lookup_rdns.strict.md +21 -34
  33. package/docs/deprecated/mail_from.access.md +17 -25
  34. package/docs/deprecated/mail_from.blocklist.md +9 -12
  35. package/docs/deprecated/mail_from.nobounces.md +1 -2
  36. package/docs/deprecated/rcpt_to.access.md +20 -27
  37. package/docs/deprecated/rcpt_to.blocklist.md +10 -13
  38. package/docs/deprecated/rcpt_to.routes.md +0 -1
  39. package/docs/deprecated/rdns.regexp.md +13 -15
  40. package/docs/plugins/aliases.md +89 -89
  41. package/docs/plugins/auth/auth_bridge.md +5 -7
  42. package/docs/plugins/auth/auth_ldap.md +11 -14
  43. package/docs/plugins/auth/auth_proxy.md +10 -12
  44. package/docs/plugins/auth/auth_vpopmaild.md +5 -6
  45. package/docs/plugins/auth/flat_file.md +4 -4
  46. package/docs/plugins/block_me.md +3 -3
  47. package/docs/plugins/data.signatures.md +1 -2
  48. package/docs/plugins/delay_deny.md +3 -4
  49. package/docs/plugins/max_unrecognized_commands.md +4 -4
  50. package/docs/plugins/prevent_credential_leaks.md +6 -6
  51. package/docs/plugins/process_title.md +18 -18
  52. package/docs/plugins/queue/deliver.md +2 -3
  53. package/docs/plugins/queue/discard.md +4 -4
  54. package/docs/plugins/queue/lmtp.md +1 -3
  55. package/docs/plugins/queue/qmail-queue.md +7 -9
  56. package/docs/plugins/queue/quarantine.md +16 -21
  57. package/docs/plugins/queue/rabbitmq.md +8 -11
  58. package/docs/plugins/queue/rabbitmq_amqplib.md +43 -39
  59. package/docs/plugins/queue/smtp_bridge.md +7 -10
  60. package/docs/plugins/queue/smtp_forward.md +42 -34
  61. package/docs/plugins/queue/smtp_proxy.md +30 -29
  62. package/docs/plugins/queue/test.md +1 -3
  63. package/docs/plugins/rcpt_to.in_host_list.md +6 -6
  64. package/docs/plugins/rcpt_to.max_count.md +1 -1
  65. package/docs/plugins/record_envelope_addresses.md +3 -3
  66. package/docs/plugins/reseed_rng.md +6 -6
  67. package/docs/plugins/status.md +9 -8
  68. package/docs/plugins/tarpit.md +7 -11
  69. package/docs/plugins/tls.md +12 -17
  70. package/docs/plugins/toobusy.md +4 -4
  71. package/docs/plugins/xclient.md +3 -3
  72. package/docs/tutorials/Migrating_from_v1_to_v2.md +19 -41
  73. package/docs/tutorials/SettingUpOutbound.md +6 -9
  74. package/endpoint.js +35 -38
  75. package/eslint.config.mjs +22 -19
  76. package/haraka.js +42 -47
  77. package/host_pool.js +75 -79
  78. package/http/html/404.html +45 -49
  79. package/http/html/index.html +39 -28
  80. package/http/package.json +2 -4
  81. package/line_socket.js +27 -28
  82. package/logger.js +182 -201
  83. package/outbound/client_pool.js +33 -33
  84. package/outbound/config.js +64 -59
  85. package/outbound/fsync_writestream.js +24 -25
  86. package/outbound/hmail.js +888 -835
  87. package/outbound/index.js +194 -187
  88. package/outbound/qfile.js +49 -52
  89. package/outbound/queue.js +197 -190
  90. package/outbound/timer_queue.js +41 -43
  91. package/outbound/tls.js +68 -61
  92. package/outbound/todo.js +11 -11
  93. package/package.json +35 -36
  94. package/plugins/.eslintrc.yaml +0 -1
  95. package/plugins/auth/auth_base.js +123 -127
  96. package/plugins/auth/auth_bridge.js +7 -7
  97. package/plugins/auth/auth_proxy.js +121 -126
  98. package/plugins/auth/auth_vpopmaild.js +84 -85
  99. package/plugins/auth/flat_file.js +18 -17
  100. package/plugins/block_me.js +31 -31
  101. package/plugins/data.signatures.js +13 -13
  102. package/plugins/delay_deny.js +65 -61
  103. package/plugins/prevent_credential_leaks.js +23 -23
  104. package/plugins/process_title.js +125 -128
  105. package/plugins/profile.js +5 -5
  106. package/plugins/queue/deliver.js +3 -3
  107. package/plugins/queue/discard.js +13 -14
  108. package/plugins/queue/lmtp.js +16 -17
  109. package/plugins/queue/qmail-queue.js +54 -55
  110. package/plugins/queue/quarantine.js +68 -70
  111. package/plugins/queue/rabbitmq.js +80 -87
  112. package/plugins/queue/rabbitmq_amqplib.js +75 -54
  113. package/plugins/queue/smtp_bridge.js +16 -16
  114. package/plugins/queue/smtp_forward.js +175 -179
  115. package/plugins/queue/smtp_proxy.js +69 -71
  116. package/plugins/queue/test.js +9 -9
  117. package/plugins/rcpt_to.host_list_base.js +30 -34
  118. package/plugins/rcpt_to.in_host_list.js +19 -19
  119. package/plugins/record_envelope_addresses.js +4 -4
  120. package/plugins/reseed_rng.js +4 -4
  121. package/plugins/status.js +90 -97
  122. package/plugins/tarpit.js +25 -14
  123. package/plugins/tls.js +68 -68
  124. package/plugins/toobusy.js +21 -23
  125. package/plugins/xclient.js +51 -53
  126. package/plugins.js +276 -293
  127. package/rfc1869.js +30 -35
  128. package/server.js +308 -299
  129. package/smtp_client.js +244 -228
  130. package/test/.eslintrc.yaml +0 -1
  131. package/test/connection.js +127 -134
  132. package/test/endpoint.js +53 -47
  133. package/test/fixtures/line_socket.js +12 -12
  134. package/test/fixtures/util_hmailitem.js +89 -85
  135. package/test/host_pool.js +90 -92
  136. package/test/installation/plugins/base_plugin.js +2 -2
  137. package/test/installation/plugins/folder_plugin/index.js +2 -3
  138. package/test/installation/plugins/inherits.js +3 -3
  139. package/test/installation/plugins/load_first.js +2 -3
  140. package/test/installation/plugins/plugin.js +1 -3
  141. package/test/installation/plugins/tls.js +2 -4
  142. package/test/logger.js +135 -116
  143. package/test/outbound/hmail.js +49 -35
  144. package/test/outbound/index.js +118 -101
  145. package/test/outbound/qfile.js +51 -53
  146. package/test/outbound_bounce_net_errors.js +84 -69
  147. package/test/outbound_bounce_rfc3464.js +235 -165
  148. package/test/plugins/auth/auth_base.js +420 -279
  149. package/test/plugins/auth/auth_vpopmaild.js +38 -39
  150. package/test/plugins/queue/smtp_forward.js +126 -104
  151. package/test/plugins/rcpt_to.host_list_base.js +85 -67
  152. package/test/plugins/rcpt_to.in_host_list.js +159 -112
  153. package/test/plugins/status.js +71 -64
  154. package/test/plugins/tls.js +37 -34
  155. package/test/plugins.js +97 -92
  156. package/test/rfc1869.js +19 -26
  157. package/test/server.js +293 -272
  158. package/test/smtp_client.js +180 -176
  159. package/test/tls_socket.js +62 -66
  160. package/test/transaction.js +159 -160
  161. package/tls_socket.js +331 -333
  162. package/transaction.js +129 -137
  163. package/config/me +0 -1
  164. package/config/tls_cert.pem +0 -23
  165. package/config/tls_key.pem +0 -28
  166. package/test/queue/multibyte +0 -0
  167. package/test/queue/plain +0 -0
  168. package/test/test-queue/delete-me +0 -0
@@ -0,0 +1,4 @@
1
+ docs/*.md
2
+ Changes.md
3
+ CONTRIBUTORS.md
4
+ Plugins.md
package/CONTRIBUTORS.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # Contributors
2
2
 
3
- This handcrafted artisinal software is brought to you by:
3
+ This handcrafted artisanal 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">1636</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">38</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">1646</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">40</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">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/11343494?v=4"><br><a href="https://github.com/superman20">superman20</a> (<a href="https://github.com/haraka/Haraka/commits?author=superman20">13</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/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">9</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/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/298453?v=4"><br><a href="https://github.com/zllovesuki">zllovesuki</a> (<a href="https://github.com/haraka/Haraka/commits?author=zllovesuki">5</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/132251?v=4"><br><a href="https://github.com/schamane">schamane</a> (<a href="https://github.com/haraka/Haraka/commits?author=schamane">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">27</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/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/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/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/11343494?v=4"><br><a href="https://github.com/superman20">superman20</a> (<a href="https://github.com/haraka/Haraka/commits?author=superman20">13</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/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/218741413?v=4"><br><a href="https://github.com/SamuelGrave">SamuelGrave</a> (<a href="https://github.com/haraka/Haraka/commits?author=SamuelGrave">9</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">9</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/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/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/298453?v=4"><br><a href="https://github.com/zllovesuki">zllovesuki</a> (<a href="https://github.com/haraka/Haraka/commits?author=zllovesuki">5</a>)|
10
10
 
11
11
  <sub>this file is generated by [.release](https://github.com/msimerson/.release).
12
12
  Contribute to this project to get your GitHub profile included here.</sub>
package/Changes.md CHANGED
@@ -4,6 +4,34 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
4
4
 
5
5
  ### Unreleased
6
6
 
7
+ ### [3.1.3] - 2026-02-06
8
+
9
+ - deps(graph): removed, sqlite3 library is unmaintained
10
+ - deps: bump all to latest
11
+ - outbound: fix aggregate error path #3519
12
+ - doc: fix no plugin names displayed with haraka --order #3517
13
+ - haraka: fixed getHooks regex to grab only hook names
14
+ - config: spool_dir and spool_after belong in connection.ini
15
+
16
+ ### [3.1.2] - 2026-01-02
17
+
18
+ - smtp_forward: [domain selector] : user + domain #3501
19
+ - rspamd: revert to older plugin version #3493
20
+ - feat: push to a 'release' branch with package-lock.json #3474
21
+ - change: finish renaming dot_stuffing to dot_stuffed #3473
22
+ - deps: require node 20+
23
+ - deps: bump all deps to latest
24
+ - deps: bump message-stream to 1.3.0, add some missing ^ chars
25
+ - dep(tmp): deleted, only used in attachment plugin
26
+ - feat(outbound): configurable outbound IPv4/IPv6 preference using `inet_prefer`
27
+ - feat(outbound): deferred hook is now passed the failed recips and mx #3505
28
+ - feat(rabbitmq_amqplib): configurable optional exchange arguments #3472
29
+ - feat(rabbitmq_amqplib): configurable message priority #3472
30
+ - fix: auth_proxy TLS upgrade works again #3514
31
+ - doc(Plugins): add save-sent #3497
32
+ - doc(README): update DKIM plugin link, #3490
33
+ - style: run prettier in repo #3504
34
+
7
35
  ### [3.1.1] - 2025-05-19
8
36
 
9
37
  - Fix: install connection.ini with base configuration on install #3458
@@ -17,23 +45,23 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
17
45
 
18
46
  `connection.ini` replaces the following config files:
19
47
 
20
- | old file | connection.ini setting |
21
- | ------ | ------ |
22
- | haproxy_hosts | [haproxy] hosts |
23
- | smtpgreeting | [message] greeting |
24
- | ehlo_hello_message | [message] helo |
25
- | connection_close_message | [message] close |
26
- | banner_includes_uuid | [uuid] banner_chars |
27
- | deny_includes_uuid | [uuid] deny_chars |
28
- | databytes | [max] bytes |
29
- | max_mime_parts | [max] mime_parts |
30
- | max_line_length | [max] line_length |
31
- | max_data_line_length | [max] data_line_length |
32
-
33
- AND
48
+ | old file | connection.ini setting |
49
+ | ------------------------ | ---------------------- |
50
+ | haproxy_hosts | [haproxy] hosts |
51
+ | smtpgreeting | [message] greeting |
52
+ | ehlo_hello_message | [message] helo |
53
+ | connection_close_message | [message] close |
54
+ | banner_includes_uuid | [uuid] banner_chars |
55
+ | deny_includes_uuid | [uuid] deny_chars |
56
+ | databytes | [max] bytes |
57
+ | max_mime_parts | [max] mime_parts |
58
+ | max_line_length | [max] line_length |
59
+ | max_data_line_length | [max] data_line_length |
60
+
61
+ AND
34
62
 
35
63
  - moves the following settings from smtp.ini to connection.ini:
36
- - headers.*
64
+ - headers.\*
37
65
  - main.smtp_utf8
38
66
  - main.strict_rfc1869
39
67
  - early_talker.pause, removed support, use earlytalker.ini
@@ -89,7 +117,6 @@ config files.
89
117
  - plugin-elastisearch: 8.0.3
90
118
  - test-fixtures: 1.3.8
91
119
 
92
-
93
120
  ### [3.0.4] - 2024-08-21
94
121
 
95
122
  #### Added
@@ -100,7 +127,7 @@ config files.
100
127
  #### Changed
101
128
 
102
129
  - prefix node libs with 'node:' #3359
103
- - .gitignore: add config/me and config/*.pem
130
+ - .gitignore: add config/me and config/\*.pem
104
131
  - auth_base: enable disabling constrain_sender at runtime #3298
105
132
  - auth_base: skip constrain_sender when auth user has no domain #3319
106
133
  - avg: repackaged as NPM module #3347
@@ -108,7 +135,7 @@ config files.
108
135
  - clamd: repackaged plugin as NPM module
109
136
  - config/plugins: consistent formatting #3359
110
137
  - connection: check remote is connected before queue #3338
111
- - improve log message for queue* hooks, fixes #2998
138
+ - improve log message for queue\* hooks, fixes #2998
112
139
  - support IPv6 when setting remote.is_private #3295
113
140
  - in setTLS, replace forEach with for...of
114
141
  - NOTE: remove a handful of 3.0 sunset property names #3315
@@ -159,7 +186,7 @@ config files.
159
186
  - doc(Outbound.md): improve GHFM formatting
160
187
  - remove last vestiges of header_hide_version (long ago renamed)
161
188
  - server.js: use the local logger methods
162
- - es6(async): _graceful, get_smtp_server, setup_smtp_listeners
189
+ - es6(async): \_graceful, get_smtp_server, setup_smtp_listeners
163
190
  - replace async.eachLimit with Promise.all batches
164
191
  - status: replace async.map with Promise.allSettled
165
192
  - get Haraka version from utils.getVersion (which includes git id if running from repo)
@@ -292,7 +319,7 @@ config files.
292
319
  - dep(haraka-plugin-redis)!: 1.0 -> 2.0 #3038
293
320
  - dep(redis)!: 3.1 -> 4.1 #3058
294
321
  - dep(generic-pool): remove pooling from outbound #3115
295
- - smtp_client: remove smtp_\* pooling support in #3113
322
+ - smtp_client: remove smtp\_\* pooling support in #3113
296
323
  - dep: bump plugin versions #3063
297
324
  - dep: bump haraka-plugin-asn from 1.0.9 to 2.0.0 #3062
298
325
  - dep(redis): 3.1 -> 4.1 #3058
@@ -481,7 +508,7 @@ config files.
481
508
  - smtp_client: pass pool_timeout to new SMTPClient #2574
482
509
  - server: default to nodes=1 (was undefined) #2573
483
510
  - test/server: use IPv4 127.0.0.1 instead of localhost #2584
484
- - queue/smtp_*: add v3 upgrade notice and config setting #2585
511
+ - queue/smtp\_\*: add v3 upgrade notice and config setting #2585
485
512
  - spf: use the skip config for helo/ehlo checks #2587
486
513
  - spf: avoid 2nd EHLO evaluation if EHLO host is identical #2592
487
514
  - queue.js refactoring #2593
@@ -574,7 +601,7 @@ config files.
574
601
 
575
602
  #### Fixes
576
603
 
577
- - data_headers: check defined-ness of hdr_address _after_ try/catch #2458
604
+ - data_headers: check defined-ness of hdr_address *after* try/catch #2458
578
605
  - tls: remove tls.ini loading from plugins/tls #2459
579
606
  - tls: remove invalid opt from load_tls_ini #2456
580
607
  - outbound: escape values in HTML bounce correctly #2446
@@ -770,18 +797,18 @@ config files.
770
797
 
771
798
  #### Changes
772
799
 
773
- - additional tests get var -> const/let medicine #2122
774
- - move connection states into haraka-constants #2121
775
- - lint: remove useless escapes #2117
776
- - lint: switch no-var to error #2109
777
- - rspamd: repackaged as NPM module #2106
778
- - dsn: repackaged as NPM module haraka-dsn #2105
779
- - outbound: add results when queueing #2103
780
- - spamassassin: skip adding headers when value is empty #2102
781
- - Replace console.log with stdout #2100
782
- - update js-yaml to version 3.10.0 #2097
783
- - repackage p0f plugin to NPM #2076
784
- - ES6: replace var with const or let #2073
800
+ - additional tests get var -> const/let medicine #2122
801
+ - move connection states into haraka-constants #2121
802
+ - lint: remove useless escapes #2117
803
+ - lint: switch no-var to error #2109
804
+ - rspamd: repackaged as NPM module #2106
805
+ - dsn: repackaged as NPM module haraka-dsn #2105
806
+ - outbound: add results when queueing #2103
807
+ - spamassassin: skip adding headers when value is empty #2102
808
+ - Replace console.log with stdout #2100
809
+ - update js-yaml to version 3.10.0 #2097
810
+ - repackage p0f plugin to NPM #2076
811
+ - ES6: replace var with const or let #2073
785
812
 
786
813
  #### New Features
787
814
 
@@ -1010,7 +1037,7 @@ config files.
1010
1037
  - bring port 465 SMTPS TLS config support on par with STARTTLS #1667
1011
1038
  - use tls.connect instead of createSecurePair #1678
1012
1039
  - redis: improve error handling in tests #
1013
- - replace / path seperators with path.* for cross platform compat #1713
1040
+ - replace / path seperators with path.\* for cross platform compat #1713
1014
1041
 
1015
1042
  #### Fixes
1016
1043
 
@@ -1194,7 +1221,7 @@ config files.
1194
1221
  #### New Features
1195
1222
 
1196
1223
  - Added bin/haraka --qunstick <domain> to flush all mails
1197
- for that domain (#1460)
1224
+ for that domain (#1460)
1198
1225
 
1199
1226
  #### Improvements
1200
1227
 
@@ -1216,8 +1243,8 @@ config files.
1216
1243
  - remove spameatingmonkey from tests (#1421)
1217
1244
  - replace ./constants.js with haraka-constants (#1353)
1218
1245
  - Document HMail and TODO items (#1343)
1219
- - Copy only a minimal config/* by default (#1341).
1220
- - cfreader/* removed to haraka/haraka-config (#1350)
1246
+ - Copy only a minimal config/\* by default (#1341).
1247
+ - cfreader/\* removed to haraka/haraka-config (#1350)
1221
1248
  - outbound and smtp_client honor tls.ini settings (#1350)
1222
1249
  - outbound TLS defaults to enabled
1223
1250
  - lint: remove all unused variables (#1358)
@@ -1239,7 +1266,7 @@ config files.
1239
1266
  - removed TLD stuff to haraka/haraka-tld (#1301)
1240
1267
  - removed unused 'require('redis') in plugins/karma (#1348)
1241
1268
  - improved MIME header support per rfc2231 (#1344)
1242
- - tls options can be defined for outbound and smtp_* (#1357)
1269
+ - tls options can be defined for outbound and smtp\_\* (#1357)
1243
1270
  - explicitly disable SSLv2 (#1395)
1244
1271
  - cache STUN results
1245
1272
  - xclient plugin improvements (#1405)
@@ -1426,7 +1453,7 @@ config files.
1426
1453
  - dkim_verify: fixed timeout issue
1427
1454
  - smtp\_[proxy|forward]: correct authentication example
1428
1455
  - Fork child workers after init_master hook
1429
- - connection: return 450/550 for plugin DENY* (was 452/552)
1456
+ - connection: return 450/550 for plugin DENY\* (was 452/552)
1430
1457
  - spamassassin: don't call next() when transaction gone
1431
1458
  - outbound: fix crash when sending bounce mail
1432
1459
  - auth_base: fix bad protocol in auth_base.js #1121 (@Dexus)
@@ -1559,13 +1586,13 @@ config files.
1559
1586
  - karma: added whitelist award, pass through temp (DENYSOFT) errors, made
1560
1587
  tarpit variable, configurable reject hooks, doc rewrite, ASN awards, fix penalty days calculation, new DSL for karma awards,
1561
1588
  - bannering fixes
1562
- - added log* stubs to test/fixtures/[plugin|connection]
1589
+ - added log\* stubs to test/fixtures/[plugin|connection]
1563
1590
  - tests/fixtures/stub_plugin: set name property
1564
1591
  - config: corrected handling of config.arg gets, fix caching bug, fix boolean
1565
1592
  handling, added missing 'type' handling.
1566
1593
  - Adding the option of using CIDR ranges in the haproxy_hosts file
1567
1594
  - tarpit: added config option hooks_to_delay, added docs
1568
- - contrib/haraka.bsd.rc: startup file for *BSD
1595
+ - contrib/haraka.bsd.rc: startup file for \*BSD
1569
1596
  - Store attachment headers on stream
1570
1597
  - Record accepted domains at hook_rcpt and improve queue/lmtp
1571
1598
  - return after next() in the whitelist checks
@@ -1610,7 +1637,7 @@ config files.
1610
1637
  - Fix underscores in documentation so web version doesn't look so weird
1611
1638
  - By default prevent SMTP AUTH unless on a private IP or using TLS WARNING: May break some uses of Haraka, but is worth it for security
1612
1639
  - In lookup_rdns.strict, check whitelist before looking up IP
1613
- - Big rewrite of the SpamAssassin plugin for simplicity and mainly to pass through X-Spam-* headers provided
1640
+ - Big rewrite of the SpamAssassin plugin for simplicity and mainly to pass through X-Spam-\* headers provided
1614
1641
  - Added delay_deny plugin allowing more flexibility on when to reject mail
1615
1642
  - Improvements to ini file parsing allowing floats and negative integers, and specifying boolean keys
1616
1643
  - Fix issue causing a CRIT/crash with lost transaction/connection while sending inbound to ongoing SMTP server
@@ -1633,7 +1660,6 @@ config files.
1633
1660
  - Throw exception with set_banner as it is now non-functional. Will be returned in a future version.
1634
1661
  - Small fixes to data.uribl
1635
1662
 
1636
-
1637
1663
  [3.0.0]: https://github.com/haraka/Haraka/releases/tag/3.0.0
1638
1664
  [3.0.1]: https://github.com/haraka/Haraka/releases/tag/v3.0.1
1639
1665
  [3.0.2]: https://github.com/haraka/Haraka/releases/tag/v3.0.2
@@ -1641,7 +1667,6 @@ config files.
1641
1667
  [3.0.4]: https://github.com/haraka/Haraka/releases/tag/3.0.4
1642
1668
  [3.0.5]: https://github.com/haraka/Haraka/releases/tag/v3.0.5
1643
1669
  [3.0.6]: https://github.com/haraka/Haraka/releases/tag/v3.0.6
1644
-
1645
1670
  [2.8.0]: https://github.com/haraka/Haraka/releases/tag/v2.8.0
1646
1671
  [2.8.1]: https://github.com/haraka/Haraka/releases/tag/v2.8.1
1647
1672
  [2.8.3]: https://github.com/haraka/Haraka/releases/tag/v2.8.3
@@ -1669,12 +1694,10 @@ config files.
1669
1694
  [2.8.26]: https://github.com/haraka/Haraka/releases/tag/2.8.26
1670
1695
  [2.8.27]: https://github.com/haraka/Haraka/releases/tag/2.8.27
1671
1696
  [2.8.28]: https://github.com/haraka/Haraka/releases/tag/2.8.28
1672
-
1673
1697
  [2.7.3]: https://github.com/haraka/Haraka/releases/tag/v2.7.3
1674
1698
  [2.7.2]: https://github.com/haraka/Haraka/releases/tag/v2.7.2
1675
1699
  [2.7.1]: https://github.com/haraka/Haraka/releases/tag/v2.7.1
1676
1700
  [2.7.0]: https://github.com/haraka/Haraka/releases/tag/v2.7.0
1677
-
1678
1701
  [2.6.0]: https://github.com/haraka/Haraka/releases/tag/v2.6.0
1679
1702
  [2.6.1]: https://github.com/haraka/Haraka/releases/tag/v2.6.1
1680
1703
  [2.5.0]: https://github.com/haraka/Haraka/releases/tag/v2.5.0
@@ -1697,12 +1720,10 @@ config files.
1697
1720
  [2.1.4]: https://github.com/haraka/Haraka/releases/tag/v2.1.4
1698
1721
  [2.1.5]: https://github.com/haraka/Haraka/releases/tag/v2.1.5
1699
1722
  [2.1.6]: https://github.com/haraka/Haraka/releases/tag/v2.1.6
1700
-
1701
1723
  [2.0.0]: https://github.com/haraka/Haraka/releases/tag/v2.0.0
1702
1724
  [2.0.3]: https://github.com/haraka/Haraka/releases/tag/v2.0.3
1703
1725
  [2.0.4]: https://github.com/haraka/Haraka/releases/tag/v2.0.4
1704
1726
  [2.0.5]: https://github.com/haraka/Haraka/releases/tag/v2.0.5
1705
-
1706
1727
  [1.0.1]: https://github.com/haraka/Haraka/releases/tag/v1.0.1
1707
1728
  [1.0.2]: https://github.com/haraka/Haraka/releases/tag/v1.0.2
1708
1729
  [1.1.0]: https://github.com/haraka/Haraka/releases/tag/v1.1.0
@@ -1713,7 +1734,6 @@ config files.
1713
1734
  [1.3.2]: https://github.com/haraka/Haraka/releases/tag/v1.3.2
1714
1735
  [1.3.3]: https://github.com/haraka/Haraka/releases/tag/v1.3.3
1715
1736
  [1.4.0]: https://github.com/haraka/Haraka/releases/tag/v1.4.0
1716
-
1717
1737
  [0.9.0]: https://github.com/haraka/Haraka/releases/tag/v0.9.0
1718
1738
  [0.8.0]: https://github.com/haraka/Haraka/releases/tag/v0.8.0
1719
1739
  [0.7.2]: https://github.com/haraka/Haraka/releases/tag/v0.7.2
@@ -1737,3 +1757,5 @@ config files.
1737
1757
  [0.2]: https://github.com/haraka/Haraka/releases/tag/v0.2
1738
1758
  [3.1.1]: https://github.com/haraka/Haraka/releases/tag/v3.1.1
1739
1759
  [3.1.0]: https://github.com/haraka/Haraka/releases/tag/v3.1.0
1760
+ [3.1.2]: https://github.com/haraka/Haraka/releases/tag/v3.1.2
1761
+ [3.1.3]: https://github.com/haraka/Haraka/releases/tag/v3.1.3
package/Plugins.md CHANGED
@@ -4,7 +4,7 @@ To create your own plugin, see [Write a Plugin][write-plugin].
4
4
 
5
5
  ## Installing NPM packaged plugins
6
6
 
7
- Plugins can be installed in the directory where Haraka was installed (where depends on your OS platform and whether you specified `-g`) or the Haraka install directory (haraka -i this\_path). This example installs _my-great-plugin_ in the Haraka install directory:
7
+ Plugins can be installed in the directory where Haraka was installed (where depends on your OS platform and whether you specified `-g`) or the Haraka install directory (haraka -i this_path). This example installs _my-great-plugin_ in the Haraka install directory:
8
8
 
9
9
  ```
10
10
  cd /etc/haraka
@@ -118,6 +118,7 @@ A comprehensive list of known plugins. Create a PR to add yours to these lists.
118
118
  | [watch][url-watch] | Watch live SMTP traffic in a web interface |
119
119
  | [wildduck][url-wildduck] | provides recipient checks against Wild Duck |
120
120
  | [xclient][url-xclient] | Implements XCLIENT |
121
+ | [save-sent][url-save-sent] | Save sent emails on the serverside to a mailbox of the sender |
121
122
 
122
123
  <!-- URLs tucked safely out of the way -->
123
124
 
@@ -206,3 +207,4 @@ A comprehensive list of known plugins. Create a PR to add yours to these lists.
206
207
  [url-outbound-logger]: https://github.com/mr-karan/haraka-plugin-outbound-logger
207
208
  [url-kafka]: https://github.com/benjamonnguyen/haraka-plugin-queue-kafka
208
209
  [url-mailauth]: https://www.npmjs.com/package/haraka-plugin-mailauth
210
+ [url-save-sent]: https://github.com/AprilGrimoire/haraka-plugin-save-sent
package/README.md CHANGED
@@ -129,7 +129,7 @@ SpamAssassin and a hacker on [Qpsmtpd][13].
129
129
  [3]: http://en.wikipedia.org/wiki/Message_transfer_agent
130
130
  [4]: https://github.com/haraka/Haraka/blob/master/Plugins.md
131
131
  [5]: http://en.wikipedia.org/wiki/Mail_submission_agent
132
- [6]: https://github.com/haraka/Haraka/blob/master/docs/plugins/dkim_sign.md
132
+ [6]: https://github.com/haraka/haraka-plugin-dkim
133
133
  [7]: https://en.wikipedia.org/wiki/Mail_delivery_agent
134
134
  [8]: mailto:haraka-sub@harakamail.com
135
135
  [9]: https://haraka.github.io/plugins/spamassassin