haraka 0.0.33 → 3.3.1

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 (254) hide show
  1. package/.githooks/pre-commit +41 -0
  2. package/.prettierignore +7 -0
  3. package/.qlty/.gitignore +7 -0
  4. package/.qlty/configs/.shellcheckrc +1 -0
  5. package/.qlty/qlty.toml +15 -0
  6. package/CHANGELOG.md +1898 -0
  7. package/CONTRIBUTORS.md +34 -0
  8. package/Dockerfile +50 -0
  9. package/LICENSE +22 -0
  10. package/Plugins.md +227 -0
  11. package/README.md +119 -4
  12. package/SECURITY.md +178 -0
  13. package/TODO +22 -0
  14. package/bin/haraka +593 -0
  15. package/bin/haraka_grep +32 -0
  16. package/config/aliases +2 -0
  17. package/config/auth_flat_file.ini +7 -0
  18. package/config/auth_vpopmaild.ini +9 -0
  19. package/config/connection.ini +79 -0
  20. package/config/delay_deny.ini +7 -0
  21. package/config/host_list +3 -0
  22. package/config/host_list_regex +6 -0
  23. package/config/http.ini +11 -0
  24. package/config/lmtp.ini +7 -0
  25. package/config/log.ini +11 -0
  26. package/config/outbound.bounce_message +18 -0
  27. package/config/outbound.bounce_message_html +36 -0
  28. package/config/outbound.bounce_message_image +106 -0
  29. package/config/outbound.ini +24 -0
  30. package/config/plugins +67 -0
  31. package/config/smtp.ini +37 -0
  32. package/config/smtp_bridge.ini +4 -0
  33. package/config/smtp_forward.ini +31 -0
  34. package/config/smtp_proxy.ini +27 -0
  35. package/config/tarpit.timeout +1 -0
  36. package/config/tls.ini +83 -0
  37. package/config/watch.ini +12 -0
  38. package/config/xclient.hosts +2 -0
  39. package/connection.js +1865 -0
  40. package/contrib/Haraka.cf +6 -0
  41. package/contrib/Haraka.pm +35 -0
  42. package/contrib/bad_smtp_server.pl +25 -0
  43. package/contrib/bsd-rc.d/haraka +63 -0
  44. package/contrib/debian-init.d/haraka +87 -0
  45. package/contrib/haraka.init +96 -0
  46. package/contrib/haraka.service +23 -0
  47. package/contrib/plugin2npm.sh +81 -0
  48. package/contrib/ubuntu-upstart/haraka.conf +27 -0
  49. package/docs/Body.md +1 -0
  50. package/docs/Config.md +1 -0
  51. package/docs/Connection.md +153 -0
  52. package/docs/CoreConfig.md +96 -0
  53. package/docs/CustomReturnCodes.md +3 -0
  54. package/docs/HAProxy.md +62 -0
  55. package/docs/Header.md +1 -0
  56. package/docs/Logging.md +129 -0
  57. package/docs/Outbound.md +210 -0
  58. package/docs/Plugins.md +372 -0
  59. package/docs/Results.md +7 -0
  60. package/docs/Transaction.md +135 -0
  61. package/docs/Tutorial.md +183 -0
  62. package/docs/deprecated/access.md +3 -0
  63. package/docs/deprecated/backscatterer.md +9 -0
  64. package/docs/deprecated/connect.rdns_access.md +53 -0
  65. package/docs/deprecated/data.headers.md +3 -0
  66. package/docs/deprecated/data.nomsgid.md +7 -0
  67. package/docs/deprecated/data.noreceived.md +11 -0
  68. package/docs/deprecated/data.rfc5322_header_checks.md +11 -0
  69. package/docs/deprecated/dkim_sign.md +97 -0
  70. package/docs/deprecated/dkim_verify.md +28 -0
  71. package/docs/deprecated/dnsbl.md +80 -0
  72. package/docs/deprecated/dnswl.md +73 -0
  73. package/docs/deprecated/lookup_rdns.strict.md +67 -0
  74. package/docs/deprecated/mail_from.access.md +52 -0
  75. package/docs/deprecated/mail_from.blocklist.md +18 -0
  76. package/docs/deprecated/mail_from.nobounces.md +8 -0
  77. package/docs/deprecated/rcpt_to.access.md +53 -0
  78. package/docs/deprecated/rcpt_to.blocklist.md +18 -0
  79. package/docs/deprecated/rcpt_to.routes.md +3 -0
  80. package/docs/deprecated/rdns.regexp.md +30 -0
  81. package/docs/plugins/aliases.md +3 -0
  82. package/docs/plugins/auth/auth_bridge.md +34 -0
  83. package/docs/plugins/auth/auth_ldap.md +4 -0
  84. package/docs/plugins/auth/auth_proxy.md +36 -0
  85. package/docs/plugins/auth/auth_vpopmaild.md +33 -0
  86. package/docs/plugins/auth/flat_file.md +40 -0
  87. package/docs/plugins/block_me.md +18 -0
  88. package/docs/plugins/data.signatures.md +11 -0
  89. package/docs/plugins/delay_deny.md +23 -0
  90. package/docs/plugins/max_unrecognized_commands.md +6 -0
  91. package/docs/plugins/prevent_credential_leaks.md +22 -0
  92. package/docs/plugins/process_title.md +42 -0
  93. package/docs/plugins/queue/deliver.md +3 -0
  94. package/docs/plugins/queue/discard.md +32 -0
  95. package/docs/plugins/queue/lmtp.md +24 -0
  96. package/docs/plugins/queue/qmail-queue.md +16 -0
  97. package/docs/plugins/queue/quarantine.md +87 -0
  98. package/docs/plugins/queue/smtp_bridge.md +32 -0
  99. package/docs/plugins/queue/smtp_forward.md +127 -0
  100. package/docs/plugins/queue/smtp_proxy.md +68 -0
  101. package/docs/plugins/queue/test.md +7 -0
  102. package/docs/plugins/rcpt_to.in_host_list.md +34 -0
  103. package/docs/plugins/rcpt_to.max_count.md +3 -0
  104. package/docs/plugins/record_envelope_addresses.md +20 -0
  105. package/docs/plugins/relay.md +3 -0
  106. package/docs/plugins/reseed_rng.md +16 -0
  107. package/docs/plugins/status.md +41 -0
  108. package/docs/plugins/tarpit.md +50 -0
  109. package/docs/plugins/tls.md +235 -0
  110. package/docs/plugins/toobusy.md +27 -0
  111. package/docs/plugins/xclient.md +10 -0
  112. package/docs/tutorials/Migrating_from_v1_to_v2.md +96 -0
  113. package/docs/tutorials/SettingUpOutbound.md +62 -0
  114. package/eslint.config.mjs +2 -0
  115. package/haraka.js +74 -0
  116. package/haraka.sh +2 -0
  117. package/http/html/404.html +58 -0
  118. package/http/html/index.html +47 -0
  119. package/http/package.json +21 -0
  120. package/line_socket.js +24 -0
  121. package/logger.js +322 -0
  122. package/outbound/client_pool.js +59 -0
  123. package/outbound/config.js +134 -0
  124. package/outbound/hmail.js +1504 -0
  125. package/outbound/index.js +349 -0
  126. package/outbound/qfile.js +93 -0
  127. package/outbound/queue.js +399 -0
  128. package/outbound/tls.js +85 -0
  129. package/outbound/todo.js +17 -0
  130. package/package.json +100 -4
  131. package/plugins/.eslintrc.yaml +3 -0
  132. package/plugins/auth/auth_base.js +261 -0
  133. package/plugins/auth/auth_bridge.js +20 -0
  134. package/plugins/auth/auth_proxy.js +227 -0
  135. package/plugins/auth/auth_vpopmaild.js +162 -0
  136. package/plugins/auth/flat_file.js +44 -0
  137. package/plugins/block_me.js +88 -0
  138. package/plugins/data.signatures.js +30 -0
  139. package/plugins/delay_deny.js +153 -0
  140. package/plugins/prevent_credential_leaks.js +61 -0
  141. package/plugins/process_title.js +197 -0
  142. package/plugins/profile.js +11 -0
  143. package/plugins/queue/deliver.js +12 -0
  144. package/plugins/queue/discard.js +27 -0
  145. package/plugins/queue/lmtp.js +45 -0
  146. package/plugins/queue/qmail-queue.js +93 -0
  147. package/plugins/queue/quarantine.js +133 -0
  148. package/plugins/queue/smtp_bridge.js +45 -0
  149. package/plugins/queue/smtp_forward.js +371 -0
  150. package/plugins/queue/smtp_proxy.js +142 -0
  151. package/plugins/queue/test.js +15 -0
  152. package/plugins/rcpt_to.host_list_base.js +65 -0
  153. package/plugins/rcpt_to.in_host_list.js +56 -0
  154. package/plugins/record_envelope_addresses.js +17 -0
  155. package/plugins/reseed_rng.js +7 -0
  156. package/plugins/status.js +274 -0
  157. package/plugins/tarpit.js +45 -0
  158. package/plugins/tls.js +164 -0
  159. package/plugins/toobusy.js +47 -0
  160. package/plugins/xclient.js +124 -0
  161. package/plugins.js +605 -0
  162. package/run_tests +11 -0
  163. package/server.js +827 -0
  164. package/smtp_client.js +504 -0
  165. package/test/.eslintrc.yaml +11 -0
  166. package/test/config/auth_flat_file.ini +5 -0
  167. package/test/config/block_me.recipient +1 -0
  168. package/test/config/block_me.senders +1 -0
  169. package/test/config/dhparams.pem +8 -0
  170. package/test/config/host_list +2 -0
  171. package/test/config/outbound_tls_cert.pem +1 -0
  172. package/test/config/outbound_tls_key.pem +1 -0
  173. package/test/config/plugins +7 -0
  174. package/test/config/smtp.ini +11 -0
  175. package/test/config/smtp_forward.ini +30 -0
  176. package/test/config/tls/example.com/_.example.com.key +28 -0
  177. package/test/config/tls/example.com/example.com.crt +25 -0
  178. package/test/config/tls/haraka.local.pem +51 -0
  179. package/test/config/tls.ini +45 -0
  180. package/test/config/tls_cert.pem +21 -0
  181. package/test/config/tls_key.pem +28 -0
  182. package/test/connection.js +820 -0
  183. package/test/fixtures/haproxy_allowed/config/connection.ini +3 -0
  184. package/test/fixtures/haproxy_disabled/config/connection.ini +3 -0
  185. package/test/fixtures/haproxy_untrusted/config/connection.ini +3 -0
  186. package/test/fixtures/line_socket.js +21 -0
  187. package/test/fixtures/todo_qfile.txt +0 -0
  188. package/test/fixtures/util_hmailitem.js +156 -0
  189. package/test/installation/config/test-plugin-flat +1 -0
  190. package/test/installation/config/test-plugin.ini +10 -0
  191. package/test/installation/config/tls.ini +1 -0
  192. package/test/installation/node_modules/load_first/index.js +5 -0
  193. package/test/installation/node_modules/load_first/package.json +11 -0
  194. package/test/installation/node_modules/test-plugin/config/test-plugin-flat +1 -0
  195. package/test/installation/node_modules/test-plugin/config/test-plugin.ini +9 -0
  196. package/test/installation/node_modules/test-plugin/package.json +5 -0
  197. package/test/installation/node_modules/test-plugin/test-plugin.js +5 -0
  198. package/test/installation/plugins/base_plugin.js +3 -0
  199. package/test/installation/plugins/folder_plugin/index.js +3 -0
  200. package/test/installation/plugins/folder_plugin/package.json +11 -0
  201. package/test/installation/plugins/inherits.js +7 -0
  202. package/test/installation/plugins/load_first.js +3 -0
  203. package/test/installation/plugins/plugin.js +1 -0
  204. package/test/installation/plugins/tls.js +3 -0
  205. package/test/logger.js +217 -0
  206. package/test/loud/config/dhparams.pem +0 -0
  207. package/test/loud/config/tls/goobered.pem +45 -0
  208. package/test/loud/config/tls.ini +43 -0
  209. package/test/mail_specimen/base64-root-part.txt +23 -0
  210. package/test/mail_specimen/varied-fold-lengths-preserve-data.txt +283 -0
  211. package/test/outbound/bounce_net_errors.js +133 -0
  212. package/test/outbound/bounce_rfc3464.js +226 -0
  213. package/test/outbound/hmail.js +210 -0
  214. package/test/outbound/index.js +385 -0
  215. package/test/outbound/qfile.js +124 -0
  216. package/test/outbound/queue.js +325 -0
  217. package/test/plugins/auth/auth_base.js +620 -0
  218. package/test/plugins/auth/auth_bridge.js +80 -0
  219. package/test/plugins/auth/auth_vpopmaild.js +81 -0
  220. package/test/plugins/auth/flat_file.js +123 -0
  221. package/test/plugins/block_me.js +141 -0
  222. package/test/plugins/data.signatures.js +111 -0
  223. package/test/plugins/delay_deny.js +262 -0
  224. package/test/plugins/prevent_credential_leaks.js +174 -0
  225. package/test/plugins/process_title.js +141 -0
  226. package/test/plugins/queue/deliver.js +98 -0
  227. package/test/plugins/queue/discard.js +78 -0
  228. package/test/plugins/queue/lmtp.js +137 -0
  229. package/test/plugins/queue/qmail-queue.js +98 -0
  230. package/test/plugins/queue/quarantine.js +80 -0
  231. package/test/plugins/queue/smtp_bridge.js +152 -0
  232. package/test/plugins/queue/smtp_forward.js +1023 -0
  233. package/test/plugins/queue/smtp_proxy.js +138 -0
  234. package/test/plugins/rcpt_to.host_list_base.js +102 -0
  235. package/test/plugins/rcpt_to.in_host_list.js +186 -0
  236. package/test/plugins/record_envelope_addresses.js +66 -0
  237. package/test/plugins/reseed_rng.js +34 -0
  238. package/test/plugins/status.js +207 -0
  239. package/test/plugins/tarpit.js +90 -0
  240. package/test/plugins/tls.js +86 -0
  241. package/test/plugins/toobusy.js +198 -0
  242. package/test/plugins/xclient.js +119 -0
  243. package/test/plugins.js +230 -0
  244. package/test/queue/1507509981169_1507509981169_0_61403_e0Y0Ym_1_fixed +0 -0
  245. package/test/queue/1507509981169_1507509981169_0_61403_e0Y0Ym_1_haraka +0 -0
  246. package/test/queue/1508269674999_1508269674999_0_34002_socVUF_1_haraka +0 -0
  247. package/test/queue/1508455115683_1508455115683_0_90253_9Q4o4V_1_haraka +0 -0
  248. package/test/queue/zero-length +0 -0
  249. package/test/server.js +1012 -0
  250. package/test/smtp_client.js +1303 -0
  251. package/test/tls_socket.js +321 -0
  252. package/test/transaction.js +554 -0
  253. package/tls_socket.js +771 -0
  254. package/transaction.js +267 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,1898 @@
1
+ # Changelog
2
+
3
+ The format is based on [Keep a Changelog](https://keepachangelog.com/).
4
+
5
+ ### Unreleased
6
+
7
+ ### [3.3.1] - 2026-06-12
8
+
9
+ - fix(conn): flag soft queue denials in results
10
+ - feat: expose fetch to plugins
11
+ - change: remove @haraka/email-address wrapper #3598
12
+ - change: log when MFROM or RCPT fail to parse #3581
13
+ - fix: change package name from Haraka to haraka #3596
14
+ - fix(haraka): wrap util.createFile in a try #3595
15
+ - fix(conn): update local and remote results after proxy #3593
16
+ - feat(conn): add main.postel option #3592
17
+ - feat: proxy support for smtps (465) #3577
18
+ - refactor(auth_proxy): use net_utils.endpoint #3584
19
+ - refactor: move endpoint, HostPool, LineSocket to net-utils #3583
20
+ - refactor: move rfc1869, FsyncWriteStream, TimerQueue to haraka-utils #3585
21
+ - refactor: move cram_md5_response to haraka-utils #3585
22
+ - dep(many): bump to latest #3587
23
+ - dep(eslint): update @haraka/eslint-config to v3, #3586
24
+ - dep(haraka-utils): ~2.1.1 for position-aware MAIL/RCPT address errors
25
+ - build: add qlty config and README badge #3588
26
+ - test: update to test-fixtures 1.7.0 helpers #3589
27
+
28
+ ### [3.2.1] - 2026-05-24
29
+
30
+ - fix(deps): update rspamd, dkim plugins to latest #3576
31
+
32
+ ### [3.2.0] - 2026-05-24
33
+
34
+ - fix(status): merge worker status into summary #3574
35
+ - dep: replace address-rfc282{1,2} with @haraka/email-address #3566
36
+ - change(BREAKING for some plugins), see https://github.com/haraka/Haraka/issues/3564
37
+
38
+ ### [3.1.7] - 2026-05-19
39
+
40
+ - feat(smtp_forward,smtp_proxy): honor `tls.ini` `[main]` and plugin `[tls]`
41
+ section for backend STARTTLS (matches docs). Behavior change: installs
42
+ that set `[main] rejectUnauthorized=true` in `tls.ini` will now see it applied
43
+ to the forward/proxy paths. Untouched installs match the previous behavior.
44
+ - fix(auth_proxy): try opportunistic STARTTLS w/o a key/cert, #matchTheDocs
45
+ - feat(tls_socket): new `load_plugin_tls_options(plugin_tls_cfg)` helper that
46
+ merges a plugin's `[tls]` section over `tls.ini` `[main]` for client STARTTLS
47
+ - refactor: `outbound/tls.js#load_config()` delegates to `load_plugin_tls_options()`
48
+ - change: update DSN.addr_bad_dest_system(...) to DSN.addr_null_mx(...)
49
+ - fix(tls): buffer discard on STARTTLS (RFC 3207 §4)
50
+ - fix(server): run the graceful restart/shutdown work queue
51
+ - fix(xclient): parse DESTPORT to int so the 587/465 auth check applies
52
+ - fix(smtp_client):
53
+ - no_tls_hosts works correctly by referencing the correct path
54
+ - unsupported AUTH no longer throws out of the event loop
55
+ - fix(smtputf8): all code paths use it, no more smtp_utf8
56
+ - fix(conn): reject control chars in HELO name (RFC 5321 §4.1.1.1)
57
+ - fix: sanitize AUTH usernames before storing
58
+ - fix: strip CR/LF from all strings passed into `auth_results()`
59
+ - fix(smtp_client,auth_proxy): redact AUTH credentials in protocol logs
60
+ - fix(prevent_credential_leaks): properly handle usernames w/o an `@`
61
+ - fix(queue/qmail-queue): size envelope dynamically; UTF-8 safe
62
+ - deps(some): bump patch versions to latest
63
+ - change: replace forEach with es6 style for...of #3569
64
+ - tests: add a few #3568
65
+ - doc(Plugins): add publish year to each plugin #3567
66
+ - deps(all): switch from ^ to ~ version ranges #3565
67
+
68
+ ### [3.1.6] - 2026-05-15
69
+
70
+ - fix(outbound): release queue slot when qfile unreadable #3561
71
+ - fix(message-stream): add `unpipe` for pipe cleanup after errors
72
+ - fix(outbound): guard against error emit after listeners removed #3554
73
+ - fix(outbound): yield before delivery attempts #3552
74
+ - test(outbound,conn,endpoint,server,tls_socket): added tests #3552
75
+ - deps(various): updated to latest
76
+ - dep(ocsp): replaced fork with local (more maintained) fork #3550
77
+ - dep(npid, sockaddr): removed #3550
78
+ - dep(daemon): removed, unmaintained #3550
79
+ - doc(SECURITY): added threat model #3557
80
+ - doc(SECURITY): added #3550
81
+ - doc(Connection): added 15 undocumented methods
82
+ - doc: add a fresh coat of paint to README and docs/*
83
+ - add missing properties and functions
84
+ - sync with codebase, fix inaccuracies, and add examples
85
+ - improve formatting and readability
86
+ - package.json: remove optional lesser used plugins #3550
87
+ - avg, elasticsearch, esets, p0f, recip-routes, watch
88
+
89
+ ### [3.1.5] - 2026-04-02
90
+
91
+ - fix(smtp_forward): update AUTH to match WHATWG URL API #3546
92
+ - fix(smtp_forward): queue hook now calls next() after delivery
93
+ — see haraka/message-stream#17
94
+ - deps(all): bump versions to latest
95
+ - test: refactor server, use smtp_client for all tests #3548
96
+ - test runner is now node --test #3547
97
+ - test(smtp_client, tls_socket, smtp_forward): 95% coverage #3546
98
+ - ci: added explicit minimal permissions
99
+
100
+ ### [3.1.4] - 2026-03-30
101
+
102
+ #### Fixed
103
+
104
+ - fix: add ensure_body for late parse_body=true #3539
105
+ - fix(outbound): prevent ERR_UNHANDLED_ERROR crash #3538
106
+ - fix(txn): more robust handling of body filter additions #3537
107
+ - fix(conn): avoid connection fault when 2x QUIT sent #3536
108
+ - fix(txn): more robust handling of broken messages #3535
109
+ - fix(connection): pause after odd SMTP command sequence #3525
110
+
111
+ #### Changed
112
+
113
+ - sunset: remove dot_stuffing (now dot_stuffed)
114
+ - chore(plugins): deleted deprecated core_require
115
+ - dep(rabbitmq): repackaged as NPM module #3526
116
+ - deps(all): bump versions
117
+ - doc(Plugins): add sections filter, enrichment, and logging #3534
118
+ - added dropbox-plugin #3543
119
+ - es2024: #3527, #3528
120
+ - outbound replace fs callback with promises and async/await #3528
121
+ - dep(async): remove dep by replacing async.map with Queue
122
+ - use startsWith instead of indexOf === 0
123
+ - use spread syntax instead of [].concat and {}.assign
124
+ - use implicit arrow function returns
125
+ - replace deprecated substr with slice or substring
126
+ - test: fixes for test-fixtures 1.4 & local plugins that do require('./')
127
+ - outbound/queue: added tests #3531
128
+ - TL;DR: bundled plugins don't need a special require any more
129
+ - fixtures/plugin behaves more like real one, test accordingly
130
+ - refactored connection, transaction, and outbound to `node --test` #3541
131
+ - transaction.js (48 → 62 tests)
132
+ - connection.js (24 → 51 tests)
133
+ - moved ./test/outbound_* to ./test/outbound/, and fixed race conditions
134
+ - move TLS tests to haraka-tls #3542
135
+ - improve coverage for transaction, rfc1869, xclient, and record_envelope_addresses #3524
136
+
137
+ ### [3.1.3] - 2026-02-06
138
+
139
+ - deps(graph): removed, sqlite3 library is unmaintained
140
+ - deps: bump all to latest
141
+ - outbound: fix aggregate error path #3519
142
+ - doc: fix no plugin names displayed with haraka --order #3517
143
+ - haraka: fixed getHooks regex to grab only hook names
144
+ - config: spool_dir and spool_after belong in connection.ini
145
+
146
+ ### [3.1.2] - 2026-01-02
147
+
148
+ - smtp_forward: [domain selector] : user + domain #3501
149
+ - rspamd: revert to older plugin version #3493
150
+ - feat: push to a 'release' branch with package-lock.json #3474
151
+ - change: finish renaming dot_stuffing to dot_stuffed #3473
152
+ - deps: require node 20+
153
+ - deps: bump all deps to latest
154
+ - deps: bump message-stream to 1.3.0, add some missing ^ chars
155
+ - dep(tmp): deleted, only used in attachment plugin
156
+ - feat(outbound): configurable outbound IPv4/IPv6 preference using `inet_prefer`
157
+ - feat(outbound): deferred hook is now passed the failed recips and mx #3505
158
+ - feat(rabbitmq_amqplib): configurable optional exchange arguments #3472
159
+ - feat(rabbitmq_amqplib): configurable message priority #3472
160
+ - fix: auth_proxy TLS upgrade works again #3514
161
+ - doc(Plugins): add save-sent #3497
162
+ - doc(README): update DKIM plugin link, #3490
163
+ - style: run prettier in repo #3504
164
+
165
+ ### [3.1.1] - 2025-05-19
166
+
167
+ - Fix: install connection.ini with base configuration on install #3458
168
+ - fix(outbound): in outbound, fix a crash when socket connection errors #3456
169
+
170
+ ### [3.1.0] - 2025-01-30
171
+
172
+ #### Changes
173
+
174
+ ##### BREAKING CHANGE
175
+
176
+ `connection.ini` replaces the following config files:
177
+
178
+ | old file | connection.ini setting |
179
+ | ------------------------ | ---------------------- |
180
+ | haproxy_hosts | [haproxy] hosts |
181
+ | smtpgreeting | [message] greeting |
182
+ | ehlo_hello_message | [message] helo |
183
+ | connection_close_message | [message] close |
184
+ | banner_includes_uuid | [uuid] banner_chars |
185
+ | deny_includes_uuid | [uuid] deny_chars |
186
+ | databytes | [max] bytes |
187
+ | max_mime_parts | [max] mime_parts |
188
+ | max_line_length | [max] line_length |
189
+ | max_data_line_length | [max] data_line_length |
190
+
191
+ AND
192
+
193
+ - moves the following settings from smtp.ini to connection.ini:
194
+ - headers.\*
195
+ - main.smtputf8
196
+ - main.strict_rfc1869
197
+ - early_talker.pause, removed support, use earlytalker.ini
198
+
199
+ To upgrade, apply any localized settings from the old config files to
200
+ the new `connection.ini` file. For tidiness, delete the deprecated
201
+ config files.
202
+
203
+ - feat(queue/test): Append UUID to E-Mails (avoid overwrite) #3449
204
+ - repackage p/early_talker as plugin #3443
205
+ - repackage p/mail_from.is_resolvable as plugin #3439
206
+ - repackage p/relay as haraka-plugin-relay #3432
207
+ - ci(cov): update codecov to v5
208
+ - deps(eslint): update to v9 #3433
209
+ - doc(plugins/\*.md): use \# to indicate heading levels
210
+ - deps(various): bump to latest versions
211
+ - doc(CoreConfig): removed incorrect early_talker.delay reference (hasn't worked in years).
212
+ - doc(LICENSE) fix copyright year #3424
213
+ - doc(access, backscatterer, & data.headers): deprecated plugin docs
214
+
215
+ #### Fixes
216
+
217
+ - fix(conn): always add connection.notes.tls properties #3450
218
+ - fix(conn): cumulative greeting message for custom greetings #3446
219
+ - fix(mail_from.is_resolvable): use correct config var path #3416
220
+ - fix(bin/haraka): fix for finding path to config/docs/Plugins.md #3414
221
+ - fix(outbound): in outbound, when mx.exchange contains an IP, use mx.from_dns #3413
222
+
223
+ ### [3.0.5] - 2024-09-27
224
+
225
+ #### Fixed
226
+
227
+ - fix(q/lmtp): revert a refactoring error #3407
228
+ - fix: install Plugins.md when haraka -i #3406
229
+ - fix(haraka -h): add missing return for plugin list #3405
230
+ - fix `no_tls_hosts` related docs & tests #3404
231
+ - fix: install docs/Plugins.md when haraka -i installed
232
+ - fix(changes): spelling correction #3397
233
+
234
+ #### Changed
235
+
236
+ - lint: remove deprecated semi-style rule
237
+ - removed dependency on ldap plugins #3399
238
+ - doc(tls.md): add note for no_tls_hosts for outbound
239
+ - test(tls): add tests for no_tls_hosts for inbound & outbound
240
+ - dep version bumps:
241
+ - haraka-email-message: 1.2.4, #3408
242
+ - nodemailer: 6.9.15
243
+ - nopt: 8.0.0
244
+ - tld: 1.2.2
245
+ - plugin-dkim: 1.0.7
246
+ - plugin-dns-list: 1.2.1
247
+ - plugin-elastisearch: 8.0.3
248
+ - test-fixtures: 1.3.8
249
+
250
+ ### [3.0.4] - 2024-08-21
251
+
252
+ #### Added
253
+
254
+ - doc: add CONTRIBUTORS #3312
255
+ - tls_socket: `config/tls` dir loading is now recursive
256
+
257
+ #### Changed
258
+
259
+ - prefix node libs with 'node:' #3359
260
+ - .gitignore: add config/me and config/\*.pem
261
+ - auth_base: enable disabling constrain_sender at runtime #3298
262
+ - auth_base: skip constrain_sender when auth user has no domain #3319
263
+ - avg: repackaged as NPM module #3347
264
+ - bounce: repackaged plugin as NPM module #3341
265
+ - clamd: repackaged plugin as NPM module
266
+ - config/plugins: consistent formatting #3359
267
+ - connection: check remote is connected before queue #3338
268
+ - improve log message for queue\* hooks, fixes #2998
269
+ - support IPv6 when setting remote.is_private #3295
270
+ - in setTLS, replace forEach with for...of
271
+ - NOTE: remove a handful of 3.0 sunset property names #3315
272
+ - contrib/plugin2npm.sh: fix path to package.json #3359
273
+ - deps: bump all versions to latest #3303, #3344, #3391
274
+ - dkim: repackaged as NPM module #3311
275
+ - esets: repackaged as NPM module #3353
276
+ - greylist: repackaged as NPM module
277
+ - helo.checks: require a successful HELO/EHLO #3352
278
+ - new NPM plugin dns-list, repackages dnsbl, dnswl, backscatterer #3313
279
+ - when using message-stream, don't send default options #3290
280
+ - rcpt_to.host_list: add connection ID to log messages #3322
281
+ - line_socket: remove unused callback #3344
282
+ - logger: don't load outbound (race condition). Instead, set name property #3322
283
+ - logger: extend add_log_methods to Classes (connection, plugins, hmail) #3322
284
+ - logger: when logging via `logger` methods, use short names #3322
285
+ - logger: check Object.hasOwn to avoid circular deps
286
+ - mail_from.resolvable: refactored, leaning on improved net_utils #3322
287
+ - fixes haraka/haraka-net-utils#88
288
+ - messagesniffer: repackaged as NPM module
289
+ - outbound
290
+ - check for local_mx only when default route is used #3307
291
+ - client_pool: use tls_socket directly (shed line_socket)
292
+ - client_pool: sock.name is now JSON of socket args
293
+ - client_pool.get_client & release_client: arity of 5 -> 2
294
+ - mx_lookup: make it async/await
295
+ - mx_lookup: deleted. Logic moved into net_utils #3322
296
+ - use net_utils.HarakaMx for get_mx parsing #3344
297
+ - emit log message when ignoring local MX #3285
298
+ - pass in config when initiating txn #3315
299
+ - minor es6 updates #3315, #3322
300
+ - logging improvements #3322
301
+ - was: [-] [core] [outbound] Failed to get socket: Outbound connection error: Error: connect ECONNREFUSED 172.16.16.14:25
302
+ - now: [A63B62DF-F3B8-4096-8996-8CE83494A188.1.1] [outbound] Failed to get socket: connect ECONNREFUSED 172.16.16.14:25
303
+ - shorter logger syntax: logger.loginfo -> logger.info
304
+ - remove log prefixes of `[outbound] `, no longer needed
305
+ - delete try_deliver_host. Use net_utils to resolve MX hosts to IPs #3322
306
+ - remove config setting ipv6_enabled #3322
307
+ - remove undocumented use of send_email with arity of 2. #3322
308
+ - encapsulate force_tls logic into get_force_tls #3322
309
+ - es6(async/promise): pre_send_trans_email_respond, process_delivery
310
+ - queue/lmtp: refactored for DRY and improved readability #3322
311
+ - smtp_client: pass connect_timeout, maybe fixes #3281
312
+ - spamassassin: repackaged as NPM module #3348
313
+ - style(es6): more for...of loops
314
+ - deps: moved attachment, spf, & dkim into optional deps
315
+ - doc(Plugins.md): update registry
316
+ - doc(Outbound.md): improve GHFM formatting
317
+ - remove last vestiges of header_hide_version (long ago renamed)
318
+ - server.js: use the local logger methods
319
+ - es6(async): \_graceful, get_smtp_server, setup_smtp_listeners
320
+ - replace async.eachLimit with Promise.all batches
321
+ - status: replace async.map with Promise.allSettled
322
+ - get Haraka version from utils.getVersion (which includes git id if running from repo)
323
+ - tls_socket: remove secureConnection. Fixes #2743
324
+ - getSocketOpts is now async
325
+ - parse_x509 is now async
326
+ - shed dependency on caolin/async & openssl-wrapper
327
+ - get_certs_dir is now async
328
+ - completely refactored.
329
+ - transaction: init with conn.init_transaction, always pass in cfg #3315
330
+ - test: add a connection.response test case with DSN #3305
331
+ - test: convert test runner to mocha
332
+ - test: rename tests -> test (where test runner expect) #3340
333
+
334
+ #### Fixed
335
+
336
+ - fix(logger): refactor add_log_methods, don't set extra `loglog*` names
337
+ - doc(connection): update rfc7001 URL
338
+ - fix(bin/haraka): list NPM installed plugin #3310
339
+ - fix(bin/haraka): get hook list from doc/Plugins #3306
340
+ - fix(outbound): call cb even if no MX is found #3294
341
+ - fix(helo.checks): declare reject.literal_mismatch as boolean #3293
342
+ - fix(outbound): allow LHLO over insecure socket if TLS is forced #3278
343
+ - fix(outbound): include return path param SMTPUTF8 when required #3289
344
+ - fix(outbound): replace empty Message-ID header #3288
345
+ - fix(outbound): don't send SNI servername when connecting to an IP
346
+ - fix(outbound): chown queue dir after creation #3291
347
+ - fix(server): async endpoint.bind() and await in server.js #3366
348
+ - fix(outbound): get_mx DNS error handling #3376
349
+
350
+ ### [3.0.3] - 2024-02-07
351
+
352
+ #### Added
353
+
354
+ - feat(auth_vpopmaild): when outbound, assure the envelope domain matches AUTH domain #3265
355
+ - doc(Plugins.md): add pi-queue-kafka #3247
356
+ - feat(rabbitmq_amqplib): configurable optional queue arguments #3239
357
+ - feat(clamd): add x-haraka-virus header #3207
358
+
359
+ #### Fixed
360
+
361
+ - Fix: add empty string as param to .join() on bounce. #3237
362
+ - Update links in documentation #3234
363
+ - fix(ob/hmail):Add filename to the error for easy debugging
364
+ - fix(ob/queue): Ignore 'error.' prefixed files in the queue because corrupted
365
+
366
+ #### Changed
367
+
368
+ - docs(outbound): remove example of outbound_ip #3253
369
+ - transaction: simplify else condition in add_data #3252
370
+ - q/smtp_forward: always register get_mx hook #3204
371
+ - dep(pi-es): bump version to 8.0.2 #3206
372
+ - dep(redis): bump version to 4.6.7 #3193
373
+ - dep(pi-spf): bump version to 1.2.4
374
+ - dep(net-utils): bump version to 1.5.3
375
+ - dep(pi-redis): bump version to 2.0.6
376
+ - dep(tld): bump version to 1.2.0
377
+ - remove defunct config files: lookup_rdns.strict.ini, lookup_rdns.strict.timeout, lookup_rdns.strict.whitelist, lookup_rdns.strict.whitelist_regex, rcpt_to.blocklist, rdns.allow_regexps, rdns.deny_regexps
378
+
379
+ ### [3.0.2] - 2023-06-12
380
+
381
+ #### Fixed
382
+
383
+ - feat(q_forward): add LMTP routing handling #3199
384
+ - chore(q_forward): tighten up queue.wants handling #3199
385
+ - doc(q_forward): improve markdown formatting #3199
386
+ - helo.checks: several fixes, #3191
387
+ - q/smtp_forward: correct path to next_hop #3186
388
+ - don't leak addr parsing errors into SMTP conversation #3185
389
+ - connection: handle dns.reverse invalid throws on node v20 #3184
390
+ - rename redis command setex to setEx #3181
391
+
392
+ #### Changed
393
+
394
+ - test(helo.checks): add regression tests for #3191 #3195
395
+ - connection: handle dns.reverse invalid throws on node v20
396
+ - build(deps): bump ipaddr.js from 2.0.1 to 2.1.0 #3194
397
+ - chore: bump a few dependency versions #3184
398
+ - dns_list_base: avoid test failure when public DNS used #3184
399
+ - doc(outbound.ini) update link #3159
400
+ - doc(clamd.md) fixed spelling error #3155
401
+
402
+ ### [3.0.1] - 2023-01-19
403
+
404
+ #### Fixed
405
+
406
+ - fix(bin/haraka): set server.cfg and pass to conn, fixes #3143
407
+ - fix(bin/haraka): correct error messages for help options #3142
408
+ - fix: dkim_verify fails to find record #3149
409
+
410
+ #### Changed
411
+
412
+ - plugins: Add haraka-plugin-outbound-logger to registry #3146
413
+ - dep(pi-spf): bump version 1.1.3 to 1.2.0
414
+
415
+ ### [3.0.0] - 2022-12-17
416
+
417
+ #### Added
418
+
419
+ - feat: prevent local delivery loop when target exchange resolves to a local hostname #3002
420
+ - feat: format DKIM signature to multiline #2991
421
+
422
+ #### Fixed
423
+
424
+ - fix(tls): redis promise syntax for tls & ob/tls #3064
425
+ - fix(attachment): error handling with complex archive #3035
426
+ - fix(smtp_client): run "secured" once, fixes #3020
427
+ - fix(smtp_client): add missing `$` char in front of interpolated string
428
+ - fix(auth_proxy): run "secured" only once, improvement for #3022
429
+ - fix(helo): remove multi-check from should_skip #3041
430
+ - fix(outbound): outbound local mx check #3010
431
+ - fix(outbound): prevent delivery loop when target MX resolves to local hostname #3002
432
+ - fix(conn): socket can't be released when disconnect after DATA command #2994
433
+
434
+ #### Changed
435
+
436
+ - dep(generic-pool): remove pooling from outbound #3115
437
+ - smtp_client: disable pooling in get_client_plugin, #3113
438
+ - smtp_forward: restore ability to enable queue_outbound #3119
439
+ - ./mailbody & ./mailheader moved to haraka-email-message #3071
440
+ - config/plugins: update name of uribl plugin
441
+ - doc(queue.js) spelling & grammar improvement #3051
442
+ - doc(rails): add haraka-plugin-queue-rails #2995
443
+ - doc(smtp.ini): correct spelling of SMTPUTF8 #2993
444
+ - style(es6): use optional chaining when accessing transactions #2732
445
+ - style(smtp_client): pass args as objects (was positional)
446
+ - style(plugin/\*): transaction guarding #3032
447
+ - dep(spf): remove to separate plugin #3078
448
+ - dep(iconv): removed, declared in haraka-email-message)
449
+ - dep(haraka-plugin-redis)!: 1.0 -> 2.0 #3038
450
+ - dep(redis)!: 3.1 -> 4.1 #3058
451
+ - dep(generic-pool): remove pooling from outbound #3115
452
+ - smtp_client: remove smtp\_\* pooling support in #3113
453
+ - dep: bump plugin versions #3063
454
+ - dep: bump haraka-plugin-asn from 1.0.9 to 2.0.0 #3062
455
+ - dep(redis): 3.1 -> 4.1 #3058
456
+ - dep(nopt): 5 -> 6.0.0 #3076
457
+ - dep(haraka-plugin-fcrdns): 1.0.3 -> 1.1.0 #3076
458
+ - dep(haraka-plugin-redis): 1.0 -> 2.0 #3038
459
+ - dep(nodemailer): 6.7.0 to 6.7.2 #3000, #3004
460
+ - dep: add explicit dependency on node-gyp 9
461
+ - ci: github action tweaks #3047
462
+ - chore: transaction guarding #3032
463
+ - ci: enable windows node 16 testing #3036
464
+ - chore: update phusion image #2988
465
+ - chore: add lots of `if (!transaction) return` in places #2732
466
+ - chore(test): build shims for windows-2022 & node on windows #3052
467
+ - chore(test): restore CI tests to working order #3030
468
+ - dkim_sign: reformat dkim signature to multi-line #2991
469
+ - dkim_sign: remove spurious error logging #3034
470
+ - tls: add force_tls option to the ToDo object
471
+ - fix(banner): banner was inserted erroneously into text attachments
472
+ - outbound: remove hardcoded AUTH PLAIN authorization identity
473
+ - outbound: set acquireTimeoutMillis to prevent constant reconnect to unreachable servers
474
+ - style(smtp_client): pass args as objects (was positional)
475
+ - uribl: timeout DNS 1 second before plugin, #3077
476
+ - uribl: load .ini config to plugin.cfg, add basic tests #3077
477
+
478
+ ### 2.8.28 - 2021-10-14
479
+
480
+ #### Changes
481
+
482
+ - breaking: dkim.js has changed the constructor opts
483
+ - tls_socket: more flexible pem file parsing #2986
484
+ - move bad certs into different directory, avoid test suite noise
485
+ - added ability to define a default relay in relay_dest_domains
486
+ - spamassassin: replace msg_too_big & should_check with should_skip #2972
487
+ - spamassassin: allow returning DENYSOFT on errors #2967
488
+ - dep: use caret version range for all dependencies #2965
489
+ - outbound: disable outbound to localhost by default #2952
490
+ - connection error logging: use key-value pairs #2921
491
+ - tls: change default to NOT send TLS client certs #2902
492
+ - dep: redis is now a dependency #2896
493
+ - use address-rfc2821 2.0.0
494
+ - http: use CDN for bootstrap/jquery, drop bower #2891
495
+ - drop support for node 10 #2890
496
+
497
+ #### New features
498
+
499
+ - tls: require secure and verified sockets for configured hosts/domains
500
+ - DKIM plugin has got a couple of config options now
501
+ - tls: add `no_starttls_ports` - an array of incoming ports where STARTTLS is not advertised
502
+ - outbound: add local_mx_ok config #2952
503
+ - skip plugins at runtime by pushing name into transaction.skip_plugins #2966
504
+ - outbound: add ability to specify delay times for temporary fails in `temp_fail_intervals` #2969
505
+
506
+ #### Fixes
507
+
508
+ - bounce: correctly set fail recipients #2901
509
+ - bounce: correctly set bounce recipients #2899
510
+ - Get local_ip from getsockname() instead of server properties #2914
511
+ - Received header TLS section adheres more closely to RFC 8314 #2903
512
+ - use RFC-2045 Quoted-Printable in email message body
513
+ - use RFC-2047 Q encoded-words in email headers
514
+
515
+ ### 2.8.27 - 2021-01-05
516
+
517
+ #### Changes
518
+
519
+ - bump verions of several dependencies #2888
520
+ - propagate hmail notes to split copies #2887
521
+ - log.ini: add json to list of formats in config doc #2881
522
+ - exclude port 587 from TLS NO-GO feature #2875
523
+ - strip _haraka-plugin-_ prefixes off plugin names in config/plugins #2873
524
+ - pass smtp.ini config from Server into connections & transactions #2872
525
+
526
+ #### New features
527
+
528
+ - add ability to disable SMTPUTF8 advertisement #2866
529
+
530
+ #### Fixes
531
+
532
+ - assure headers.max_lines is initialized as integer #2878
533
+ - require haraka-net-utils >= 1.2.2 #2876
534
+
535
+ ### 2.8.26 - 2020-11-18
536
+
537
+ #### Changes
538
+
539
+ - add config options for OAR & AR headers #2855
540
+ - plugins.js: also strip haraka-plugin prefix from plugin.name #2846
541
+ - smtp_forward/spamssassin: grab refs of conn/txn to avoid crashes due to lack of existence. #2847
542
+ - outbound: add extended reason to bounce message #2843
543
+ - hgrep: replaced perl script with shell script #2842
544
+ - connection: send temp error when requested #2841
545
+ - headers: updated deprecated messages #2845
546
+ - hmail: socket.on -> socket.once #2838
547
+ - hmail: check for zero length queue file #2835
548
+ - outbound: add os.hostname() as default for outbound HELO #2813
549
+ - use node v10's mkdir instead of mkdirp #2797
550
+ - CI: drop appveyor and Travis #2784
551
+ - lint: add 'prefer-template'
552
+ - update async to version 3.2.0 #2764
553
+ - update redis to version 3.0.0 #2759
554
+ - remove deprecated max_unrecognized_commands from config #2755
555
+ - CI: add ES2017 support, drop node 8 #2740
556
+ - fix broken bannering on nested mime parts #2736
557
+ - restore TLS version info, set correctly #2723
558
+ - better error message when invalid HELO hostname is rejected
559
+ - bring STARTTLS "TLS NO-GO" feature in line with Outbound's #2792
560
+ - add listener for secureConnect #2828
561
+ - removed plugins/data.headers to haraka-plugin-headers #2826
562
+ - add zero-length queue size check
563
+ - send temp instead of hard error when asked to by `unrecognized_command`
564
+
565
+ #### New features
566
+
567
+ - Allow web interface to be bound to unix socket #2768
568
+ - tls: add configurable minVersion to tls socket options #2738
569
+ - connection_close_message: added ability to override close connection message replacing `closing connection. Have a jolly good day.` #2730
570
+ - add JSON format for logging #2739
571
+ - support binding web interface to unix socket
572
+
573
+ #### Fixes
574
+
575
+ - check for punycode domain names when resolving MX, avoid crash #2861
576
+ - wait until entire message is spooled when spool_after in use #2840
577
+ - hmail: add missing space in temp_fail emitter #2837
578
+ - fix outbound config reloading after outbound split #2802
579
+ - smtp_forward: remove redundant outbound hook #2796
580
+ - smtp_forward: this plugin does not use the queue_outbound hook anymore #2795
581
+ - Fix connection pool not being unique when hosts and ports were equal between domains #2789
582
+ - fix connection pool not being unique when hosts and ports were equal between domains #2788
583
+ - Fix outbound.bounce_message To: header (and add Auto-Submitted) #2782
584
+ - Fix support for DKIM signing when forwarding and aliasing is enabled #2776
585
+ - Better error message when EHLO hostname does not have a dot #2775
586
+ - fix bannering on nested mime parts #2737
587
+ - TLS: don't abort loading certs in config/tls dir when an error is encountered. Process every cert file and then emit errors. #2729
588
+ - restore TLS version, correctly #2723
589
+
590
+ ### 2.8.25 - 2019-10-11
591
+
592
+ #### Changes
593
+
594
+ - conn: remove TLS version from header #2648
595
+ - Actually enforce using key for INTERNALCMD #2643
596
+ - trans: assign conditions to named vars #2638
597
+ - drop node.js v6 support #2632
598
+ - conn: use is_local instead of localhost addr tests #2627
599
+ - spamassassin: spamassassin: strip useless WS from tests #2624
600
+ - es6: many updates #2615, #2674, #2680
601
+ - systemctl: update service definition #2612
602
+ - lint: bracket style to match newer eslint:recommended #2680
603
+ - lint: use object shorthands (eslint:recommended) #2680
604
+ - logger: use safer Object.prototype.hasOwnProperty #2680
605
+ - outbound: permit # char in SMTP status code response #2689
606
+ - dkim_sign: improve docs, add tests, es6 updates #2649
607
+ - dkim_sign: restore default key signing feature #2649
608
+ - tmp module: update to latest #2614
609
+ - semver: update to latest #2616, #2651
610
+ - async: update to latest #2653, #2664
611
+ - repo cleanup: replaced deprecated plugins with list #2681
612
+ - spf: es6 patterns, results.pass, test improvements, es6 patterns #2700
613
+
614
+ #### New features
615
+
616
+ - spf: add config option to fail on NONE #2644
617
+
618
+ #### Fixes
619
+
620
+ - mailheader: fully quality header name in \_remove_more #2647
621
+ - haraka: Connection.createConnection is not a constructor #2618
622
+ - problems with japanese characters in body and part header #2675
623
+ - toobusy: fix hook name (connect_pre -> connect) #2672
624
+ - outbound: watch for socket timeouts #2687
625
+ - outbound: permit # char prefix in SMTP status code response #2691
626
+ - mailheader: strip whitespace between encoded-words #2702
627
+
628
+ ### 2.8.24 - Mar 12, 2019
629
+
630
+ #### Changes
631
+
632
+ - early_talker: skip if sender has good karma #2551
633
+ - dockerfile: update to node 10 #2552
634
+ - Update deprecated usages of Buffer #2553
635
+ - early_talker: extend reasons to skip checking #2564
636
+ - tls: add 'ca' option (for CA root file) #2571
637
+ - outbound: little cleanups #2572
638
+ - smtp_client: pass pool_timeout to new SMTPClient #2574
639
+ - server: default to nodes=1 (was undefined) #2573
640
+ - test/server: use IPv4 127.0.0.1 instead of localhost #2584
641
+ - queue/smtp\_\*: add v3 upgrade notice and config setting #2585
642
+ - spf: use the skip config for helo/ehlo checks #2587
643
+ - spf: avoid 2nd EHLO evaluation if EHLO host is identical #2592
644
+ - queue.js refactoring #2593
645
+ - Log dkim_sign parse errors with connection ID #2596
646
+ - Update ipaddr.js to the latest version #2599
647
+ - make inactivity timeout match docs #2607
648
+
649
+ #### New Features
650
+
651
+ - Implement SIGTERM graceful shutdown if pid is 1 #2547
652
+ - tls: require validated certs on some ports with requireAuthorized #2554
653
+ - spamassassin: disable checks when requested #2564
654
+ - clamd: permit skipping for relay clients #2564
655
+ - outbound: exported outbound.temp_fail_queue, outbound.delivery_queue and add TimerQueue.discard()
656
+ - status: new plugin #2577
657
+
658
+ #### Fixes
659
+
660
+ - mf.resolvable: reduce timeout by one second (so < plugin.timeout) #2544
661
+ - LMTP blocks under stress #2556
662
+ - invalid DKIM when empty body #2410
663
+ - prevent running callback multiple times on TLS unix socket #2509
664
+ - add missing callback when listing queue and empty directory
665
+ - correct MIME parsing when charset: utf8 and encoding: 8bit #2582
666
+ - spamassassin: default check flags to true #2583
667
+ - smtp_client: destroy when connection gets conn timeout error #2604
668
+ - on error and timeout, remove listeners and destroy conn. #2606
669
+
670
+ ### 2.8.23 - Nov 18, 2018
671
+
672
+ #### Changes
673
+
674
+ - tighten Haraka pattern in .gitignore #2542
675
+
676
+ ### 2.8.22 - Nov 17, 2018
677
+
678
+ #### New Features
679
+
680
+ - enable tls/ssl for rabbitmq amqplib plugin #2518
681
+
682
+ #### Fixes
683
+
684
+ - hmail: don't send RSET to LMTP #2530
685
+
686
+ #### Changes
687
+
688
+ - clamd: add check.authenticated, check.private_ip, check.local_ip option
689
+ - use get_decoded on headers that may be encoded #2537
690
+ - connection: move max_mime_part config load to connection init #2528
691
+ - outbound: init TLS when we send email, not when old queue file is loaded #2503
692
+ - relay: update port 465 doc #2522
693
+ - hmail: log the correct err message #2531
694
+ - ob/tls: consistently use obtls (vs plugin) for "this" name #2524
695
+ - outbound: add domain to loginfo message #2523
696
+ - Add connection.remote.is_local #2532
697
+ - update license #2525
698
+ - perf: move max_mime_parts config load to connection init #2529
699
+ - update semver to version 5.6.0 #2517
700
+ - added hint to encrypted file authentication #2514
701
+ - dkim_sign: improved log messages #2499
702
+ - ehlo_hello_message: config/ehlo_hello_message can be used to overwrite the EHLO/HELO msg replacing `, Haraka is at your service` #2498
703
+ - connection: add connection.remote.is_local flag for detecting loopback and link local IPs
704
+ - add .name to outbound TLS for logs #2492
705
+
706
+ ### 2.8.21 - Jul 20, 2018
707
+
708
+ #### New Features
709
+
710
+ - outbound: skip STARTTLS after remote host fails TLS upgrade #2429
711
+ - dns_list_base: introduce global plugin.lookback_is_rejected flag #2422
712
+
713
+ #### Fixes
714
+
715
+ - replace all \_ chars in hostnames with code points #2485
716
+ - Don't die on invalid commands #2481
717
+ - outbound: check list exists before attempting to use it #2478
718
+ - refactor outbound/hmail.process_ehlo_data #2488
719
+ - tls: skip when redis is undefined #2472
720
+ - Don't run delivered hook on LMTP fail #2470
721
+ - Add tls_socket.load_tls_ini() to tls.register() #2465
722
+
723
+ #### Changes
724
+
725
+ - outbound/tls: make into a class #2474
726
+ - plugins: clear timeout on cancel #2477
727
+ - txn.parse_body consistently a boolean #2476
728
+ - update ipaddr.js to version 1.8.0 #2468
729
+
730
+ ### 2.8.20 - Jun 29, 2018
731
+
732
+ #### Fixes
733
+
734
+ - data_headers: check defined-ness of hdr_address *after* try/catch #2458
735
+ - tls: remove tls.ini loading from plugins/tls #2459
736
+ - tls: remove invalid opt from load_tls_ini #2456
737
+ - outbound: escape values in HTML bounce correctly #2446
738
+ - dkim_sign: catch exceptions when address-rfc2822 fails to parse From #2457
739
+
740
+ #### Changes
741
+
742
+ - logger: Add "obj" log param to log hook that contains log data by type #2425
743
+ - logger: include outbound client ID in logging #2425
744
+ - logger: allow specifying uuid in params when logging #2425
745
+
746
+ ### 2.8.19 - Jun 26, 2018
747
+
748
+ #### New features
749
+
750
+ - outbound: received_header=disabled supresses outbound Received header addition. #2409
751
+ - auth_base.js: `check_plain_passwd` and `check_cram_md5_passwd` can now pass `message` and `code` to callback routine
752
+ - spf: allow bypass for relay and AUTH clients #2417
753
+ - spf: optionally add OpenSPF help text to rejection #2417
754
+ - auth_base: prevent storing of AUTH password in connection.notes.auth_passwd by setting plugin.blackout_password. #2421
755
+
756
+ #### Fixes
757
+
758
+ - Mitigate MIME part explosion attack #2447
759
+ - Always prefix ClamAV with a Received header #2407
760
+ - plugins/data.headers.js: wrap address-rfc2822 header parse into try block #2373
761
+ - tls_socket: as client, only apply TLS opts if config is valid #2414
762
+ - when installing, creates config/me if missing #2413
763
+ - queue/qmail-queue: fix a 2nd crash bug when client disconnects unexpectedly #2360
764
+ - remove desconstruction of SMTP commands to prevent exception #2398
765
+ - attstream: return self so that pipe() calls can be chained together. #2424
766
+ - outbound: fix dotfile cleanup to consider platform-based prefix. #2395
767
+ - outbound: fix handling of LMTP socket when a socket path is specified. #2376
768
+
769
+ #### Changes
770
+
771
+ - relay: move relay acl check to connect_init so flag is set earlier #2442
772
+ - process_title: add total recipients, avg rcpts/msg, recipients/sec cur/avg/max and messages/conn #2389
773
+ - when relaying is set in a transaction, don't persist beyond the transaction #2393
774
+ - connection.set supports dot delimited path syntax #2390
775
+ - remove deprecated (since 2.8.16) ./dsn.js
776
+ - Add transaction.msg_status property that reflects message status. #2427
777
+ - Add transaction.notes.proxy object that hold HAProxy details. #2427
778
+ - spamassassin: make relay header configurable. #2418
779
+ - deprecate max_unrecognized_commands plugin in favor of limit. #2402
780
+ - xclient: add support for DESTADDR/DESTPORT. #2396
781
+
782
+ ### 2.8.18 - Mar 8, 2018
783
+
784
+ #### New features
785
+
786
+ - smtp_forward: domain configuration is now chosen based on domain_selector #2346
787
+
788
+ #### Fixes
789
+
790
+ - queue/qmail-queue: fix crash bug when client disconnects unexpectedly #2360
791
+ - tls: fix crash bug in `unrecognized_command` hook
792
+ - `dkim_key_gen.sh`: improve usability and parameter parsing #2355
793
+
794
+ #### Changes
795
+
796
+ - document `force_shutdown_timeout` and `graceful_shutdown` settings #2350
797
+
798
+ ### 2.8.17 - Feb 16, 2017
799
+
800
+ #### New Features
801
+
802
+ - SMTPS port is configurable #2269
803
+ - smtp_forward: enable_outbound can be set per domain #2335
804
+
805
+ #### Fixes
806
+
807
+ - Fix ability to set log level to emerg #2128
808
+ - outbound/hmail: use Buffer to correctly read binary file data + tests #2231
809
+ - quarantine: consolidate 2x hook_init_master functions
810
+ - tls_socket: restore SNI functionality, emit count of TLS certs #2293
811
+ - fix smtp_client error handling #2298
812
+ - fix outbound pools #2317
813
+ - add openssl-wrapper as dependency #2320
814
+ - replace \_ chars in hostnames with code points #2324
815
+ - add this.removeAllListeners('connection-error') #2323
816
+ - Fix crashing on RSET #2328
817
+ - Prevent data headers crit fail #2329
818
+ - Fix undefined max_lines in log message #2337
819
+
820
+ #### Changes
821
+
822
+ - line_socket: remove superfluous function #2339
823
+ - consistent end of function declaration semicolon #2336
824
+ - connection: assure hostname is set #2338
825
+ - smtp_client: Fix log message typo #2334
826
+ - Update ipaddr.js to version 1.6.0 #2333
827
+ - Warn on max_header_lines #2331
828
+ - update jquery version #2322
829
+ - plugins: add SRS plugin to registry #2318
830
+ - tls_socket: only generate dhparam.pem on master process #2313
831
+ - add ENOTFOUND to also check A record #2310
832
+ - smtp_forward: correct config file name in docs #2309
833
+ - reduce severity of iconv conversion failure #2307
834
+ - Add txn UUID to "250 Message Queued" #2305
835
+ - mailheader: reduce log level priority #2299
836
+ - greylist: only log redis DB errors when exist #2295
837
+ - data.headers: reduce undef MLM logerror to logdebug #2294
838
+ - quarantine: consolidate 2x hook_init_master() #2292
839
+ - move test_queue to queue/test #2291
840
+ - in haraka plugin test mode, add server.notes #2248
841
+ - outbound/hmail: refactor #2238
842
+ - outbound/hmail: add JSON sanity test before JSON.parse #2231
843
+ - outbound/index: use newer Buffer.from syntax #2231
844
+ - outbound/hmail: make haraka queue files human friendly #2231
845
+ - plugins/rcpt_to.ldap -> haraka-plugin-rcpt-ldap #2144
846
+ - plugins/auth/auth_ldap -> haraka-plugin-auth-ldap #2144
847
+ - plugins/smtp_forward: enable_outbound can be enabled/disabled for specific domains
848
+ - auth_proxy: read TLS key and cert files from tls.ini #2212
849
+ - README: typo fixes #2210
850
+ - incorrect RCPT TO reply message #2227
851
+ - Resolve decoding bug when root part is base64 encoded. #2204
852
+ - Resolve base64 data truncation #2188
853
+ - Fix damaged encoding when body is non-utf #2187
854
+ - Fix disconnect hooks #2184
855
+ - ability to set log level to emerg #2128
856
+ - Improve docs for `Address` objects #2224
857
+ - connection: replace 3x ternaries with get_remote() #2169
858
+ - connection.local.host populated with hostname (from config/me) #2165
859
+ - connection.local.info populated with Haraka/version #2196
860
+ - npm packaged plugins:
861
+ - plugins/rcpt_to.ldap -> haraka-plugin-rcpt-ldap #2144
862
+ - plugins/auth/auth_ldap -> haraka-plugin-auth-ldap #2144
863
+ - plugins/graph -> haraka-plugin-graph #2185
864
+ - config: replace ./config.js with haraka-config #2119
865
+ - Replace concatenated strings with template literals #2129 in:
866
+ - attachment #2260
867
+ - bin/spf #2129
868
+ - bin/dkimverify #2278
869
+ - connection #2129, #2243
870
+ - delay_deny #2264
871
+ - dkim #2216
872
+ - dsn #2265
873
+ - host_pool #2198, #2245
874
+ - logger #2277, #2246
875
+ - mailbody #2280
876
+ - max_unrecognised_commands #2171
877
+ - outbound/hmail #2259
878
+ - outbound/index #2249
879
+ - outbound/todo #2233
880
+ - plugins #2239
881
+ - plugins/aliases #2229
882
+ - plugins/attachment #2155
883
+ - plugins/auth_base #2252
884
+ - plugins/avg #2156
885
+ - plugins/backscatterer #2261
886
+ - plugins/bounce #2229
887
+ - plugins/clamd #2237
888
+ - plugins/connect.rdns_access #2262
889
+ - plugins/data.headers #2263
890
+ - plugins/data.uribl #2258
891
+ - plugins/helo.checks #2255
892
+ - plugins/rcpt_to.in_host_list #2253
893
+ - plugins/spamassassin #2256
894
+ - plugins/profile #2170
895
+ - plugins/rcpt_to.host_list_base #2254
896
+ - plugins/relay #2174
897
+ - plugins/relay_acl #2177
898
+ - plugins/spf #2266
899
+ - plugins/toobusy #2186
900
+ - plugins/xclient #2159
901
+ - rfc1869 #2160
902
+ - smtp_client #2129, #2208
903
+ - tests/host_pool #2159
904
+ - use es6 destructuring (#2075) in:
905
+ - connection #2230
906
+ - dkim #2232
907
+ - use es6 classes (#2133) in:
908
+ - attachment #2260
909
+ - attachment_stream #2215
910
+ - chunkemitter #2219
911
+ - dkim #2206
912
+ - dsn #2247
913
+ - host_pool #2194
914
+ - mailheader #2213
915
+ - mailbody #2213
916
+ - smtp_client #2221
917
+ - spf #2214
918
+ - tls_socket #2190
919
+ - timer_queue #2226
920
+ - outbound/hmail #2197
921
+ - outbound/todo #2233
922
+ - Automatically set connection.remote.is_private when connection.remote.ip is set #2192
923
+ - Add remove_msgid and remove_date options to outbound.send_email #2209
924
+ - Add origin option to outbound.send_mail #2314
925
+
926
+ ### 2.8.16 - Sep 30, 2017
927
+
928
+ #### Changes
929
+
930
+ - additional tests get var -> const/let medicine #2122
931
+ - move connection states into haraka-constants #2121
932
+ - lint: remove useless escapes #2117
933
+ - lint: switch no-var to error #2109
934
+ - rspamd: repackaged as NPM module #2106
935
+ - dsn: repackaged as NPM module haraka-dsn #2105
936
+ - outbound: add results when queueing #2103
937
+ - spamassassin: skip adding headers when value is empty #2102
938
+ - Replace console.log with stdout #2100
939
+ - update js-yaml to version 3.10.0 #2097
940
+ - repackage p0f plugin to NPM #2076
941
+ - ES6: replace var with const or let #2073
942
+
943
+ #### New Features
944
+
945
+ - Bounces can have an HTML part #2091
946
+
947
+ #### Fixes
948
+
949
+ - daemon cwd #2126
950
+ - updated fcrdns plugin name passed to results #2115
951
+ - tls: only apply default key/cert paths when undefined #2111
952
+ - dkim_verify: fix formatting of auth results #2107
953
+ - smtp_forward: consistently use queue.wants #2107
954
+ - haraka was adding TLS header on non-TLS connection #2103
955
+ - dkim typo fix #2101
956
+ - fix rfc2231 parsing code to cope with continuation #2089
957
+
958
+ ### 2.8.15 - Sep 10, 2017
959
+
960
+ #### Changes
961
+
962
+ - Permit log settings to be set w/o LOG prefix #2057
963
+ - additional results storing in smtp_forward and quarantine #2067
964
+ - publish p0f plugin to NPM #2076
965
+ - smtp_forward stores queue note at queue.wants #2083
966
+ - Remove unused folders from installation #2088
967
+ - smtp_forward stores queue note at queue.wants #2083
968
+ - add get/set to conn/txn.notes #2082
969
+ - additional results storing in smtp_forward and quarantine #2067
970
+ - Permit log settings to be set w/o LOG prefix #2057
971
+ - support INFO _and_ LOGINFO as config settings #2056
972
+ - log.ini, new default location for log related settings #2054
973
+ - dcc: replace with npm packaged version #2052
974
+ - qmd: replace rcpt_to.qmail_deliverable with npm #2051
975
+ - rspamd: pass SPF evaluation #2050
976
+ - add logfmt support #2047
977
+ - update ipaddr.js to version 1.5.0 #2037
978
+ - update redis to version 2.8.0 #2033
979
+ - disable graceful for SIGTERM #2028
980
+ - add additional integration tests #2026
981
+ - move most npm packaged plugins into optionalDependencies #2023
982
+
983
+ #### New Features
984
+
985
+ - TLS certificate directory (config/tls) #2032
986
+ - plugins can specify a queue plugin & next_hop route #2067
987
+ - connection/transaction notes now have get/set #2082
988
+
989
+ #### Fixes
990
+
991
+ - haraka cli will now create folders if they don't exist #2088
992
+ - maybe fix for #1852 503 response #2064
993
+ - crash when 'AUTH LOGIN' is sent after a successful auth #2039
994
+ - docs: fixed swaks test command #2034
995
+ - dkim: prevent dkim_verify from causing 'cannot pipe' #1693
996
+
997
+ ### 2.8.14 - Jul 26, 2017
998
+
999
+ #### Changes
1000
+
1001
+ - Fix auth plugin failure when re-selecting auth method #2000
1002
+ - don't crash Haraka when invalid YAML config encountered #2013
1003
+ - update semver to version 5.4.0 #2015
1004
+ - relay docs: correct the config file name #2012
1005
+ - rename config/xclient.hosts to match plugin & docs #2014
1006
+ - build_todo() is part of the outbound/index.js api #2016
1007
+ - update js-yaml to version 3.9.0 #2002
1008
+ - outbound/hmail: use WRITE_EXCL from haraka-constants #2011
1009
+ - replace plugins/log.elasticsearch with npm packaged #2004
1010
+ - Remove two spurious log statements #1989
1011
+ - access: rebuild blacklist upon change (vs supplement) #1990
1012
+ - deliver to qmail-queue with LF line endings (not CRLF) #1997
1013
+ - doc: add note that smtp_forward only supports STARTTLS #1988
1014
+ - import Plugins.md from v3 #1991
1015
+ - update async to 2.5.0 #1982
1016
+ - update iconv to 2.3.0 #1981
1017
+ - require node.js v6+ #1958
1018
+ - update ipaddr.js to 1.4.0 #1972
1019
+ - support newer address-rfc2822 #1970
1020
+ - update node-address-rfc2821 version to 1.1.1 #1968
1021
+ - outbound: be consistent with todo.domain #1960
1022
+ - bump haraka-results required version #1949
1023
+ - logger: load in a setImmediate call #1948
1024
+ - logger: strip intermediate \n chars #1947
1025
+ - tls consistency cleanups #1851
1026
+ - Get pool config handling simplifcation #1868
1027
+ - add integration test: send message w/smtp_client
1028
+ - replace some legacy code with es6 #1862
1029
+ - update async to version 2.2.0 #1863
1030
+ - update ipaddr.js to version 1.3.0 #1857
1031
+ - update redis to version 2.7.0 #1854
1032
+ - assure conn/tran still exists before storing results #1849
1033
+ - moved tls.ini parsing to net_utils #1848
1034
+ - smtp forward dest split routing #1847
1035
+ - rspamd: refactor complex condition into function #1840
1036
+ - block js attachments #1837
1037
+ - helo.checks: bring plugin into alignment with docs #1833
1038
+ - when proxy enabled, update remote.is_private too #1811
1039
+ - create an outbound queue filename handler #1792
1040
+ - replace fcrdns with npm package #1810
1041
+ - add an additional node_modules plugin search path #1805
1042
+ - Set graceful shutdown off by default #1927
1043
+ - Allow outbound pools to be disabled #1917
1044
+ - Outbound split and move into folder #1850
1045
+ - don't emit binary characters into the logs #1902
1046
+ - Add .editorconfig #1884
1047
+ - tls: remove interim variables #1871
1048
+
1049
+ #### New Features
1050
+
1051
+ - Use punycode domain (support SMTPUTF8) #1944
1052
+ - Added RabbitMQ vhost support #1866
1053
+ - clamav: allow "Unknown Result" and Socket Error to try next host #1931
1054
+ - outbound client certificates #1908
1055
+ - Implement the missing upgrade method on SMTPClient #1901
1056
+ - Remove typo from relay.md #1886
1057
+
1058
+ #### Fixes
1059
+
1060
+ - outbound: fix queue not loaded for single process #1941
1061
+ - outbound: Fix undefined variable platformDOT in hmail.js #1943
1062
+ - outbound: fix undefined FsyncWriteStream var #1953
1063
+ - Fix cluster messaging for node v6+ #1938
1064
+ - outbound: fix loading under cluster. #1934
1065
+ - Check pool exists before delete #1937
1066
+ - be more strict in attachment filename matching #1957
1067
+ - doc typo fix #1963
1068
+ - RabbitMQ: fix encoding of user and password string #1964
1069
+ - spf: improve modifier regexp #1859
1070
+ - rabbitmq doc typo in config file name #1865
1071
+ - URL to manual was 404, point to Plugins.md #1844
1072
+ - smtp_client: set idleTimeout to 1s < pool_timeout #1842
1073
+ - fix broken continuations #1843
1074
+ - doc error for the 'check.authenticated' setting in rspamd plugin #1834
1075
+ - emit _the_ result, not all of them #1829
1076
+ - fix outbound logger #1827
1077
+ - fix forwarding with client auth over TLS (forward to gmail) #1803
1078
+ - Don't blow the stack on qstat #1930
1079
+ - run dumped logs through log plugins, not console #1929
1080
+ - Fix path parsing bug on Windows platform #1919
1081
+ - helo: make sure list_re is defined before access #1903
1082
+ - TLS: handle case where OCSP server is unavailable #1880
1083
+ - rspamd: add missing 'default' keyword #1856
1084
+ - disable naïve comment stripping #1876
1085
+
1086
+ ### 2.8.13 - Feb 03, 2017
1087
+
1088
+ #### Changes
1089
+
1090
+ - new [haraka-plugin-limit](https://github.com/haraka/haraka-plugin-limit) #1785
1091
+ - replaces plugin/limit, plugin/rate_limit, and haraka-plugin-outbound-rate-limit
1092
+ - p0f: skip on private IPs (normally empty) #1758
1093
+ - spf: skip for outbound when context != myself #1763
1094
+ - redis: plugins using redis can inherit redis config #1777
1095
+ - redis: replace plugins/redis with haraka-plugin-redis #1786
1096
+ - lint: require space before function declaration #1784
1097
+ - lint: added eslint:recommended #1790
1098
+ - logger: remove logger.colorize code for legacy node versions
1099
+
1100
+ #### New Features
1101
+
1102
+ - redis: add `redis_subscribe_pattern()` #1766
1103
+ - queue/discard: add ENV that permits discarding #1791
1104
+
1105
+ #### Improvements
1106
+
1107
+ - rspamd: improve response parsing #1770
1108
+ - restore Windows testing to working state #1755
1109
+ - elasticsearch: use UTC dates for index creation #1771
1110
+ - tls: fix dhparam usage example syntax #1774
1111
+ - typo: logerr -> logerror #1776
1112
+ - when generating long DKIM keys, include a BIND compatible folded key #1775
1113
+ - in haraka-test-fixtures, access results via fixtures.results #1783
1114
+ - integration test: end to end server testing #1791
1115
+
1116
+ #### Fixes
1117
+
1118
+ - spf: restore functionality for relay context=myself #1759
1119
+ - rate_limit:if incr creates a new record, assure it has a TTL #1781
1120
+ - tls: do not create a top level secureContext #1787
1121
+ - dnswl: swap lines to fix missing inherited methods #1793
1122
+ - dnswl: fix config loader callback syntax #1794
1123
+ - tests/plugins: unset process.env.HARAKA to avoid side effects that interfere with other tests
1124
+ - remove auth_flat_file sample auth user #1796
1125
+
1126
+ ### 2.8.12 - Jan 03, 2017
1127
+
1128
+ #### Changes
1129
+
1130
+ - plugin/karma -> npm packaged haraka-plugin-karma #1747
1131
+ - update generic-pool 2.4.2 -> 2.5.0
1132
+
1133
+ #### New Features
1134
+
1135
+ - Added option to bypass SpamAssassin headers' merge #1745
1136
+
1137
+ #### Improvements
1138
+
1139
+ - reduce severity of debug message #1744
1140
+ - fix misleading entries in config/tls.ini #1734
1141
+ - Misc. performance improvements #1738
1142
+ - set tls.sessionIdContext property (for Thunderbird compat) #1740
1143
+
1144
+ #### Fixes
1145
+
1146
+ - Swap lines to avoid clobbering response array #1743
1147
+
1148
+ ### 2.8.11 - Nov 24, 2016
1149
+
1150
+ #### Changes
1151
+
1152
+ - rename core_require to haraka_require #1708
1153
+ - move log.syslog to haraka-plugin-syslog #1698
1154
+ - remove tls.ini loading and is_no_tls_host to net_utils #1690
1155
+ - replace ./utils with npm packaged haraka-utils #1720
1156
+ - require node 4
1157
+ - karma: add .top TLD scoring #1714
1158
+
1159
+ #### New Features
1160
+
1161
+ - Implement OCSP Stapling #1724
1162
+
1163
+ #### Improvements
1164
+
1165
+ - show help for npm packaged plugins included in core #1698
1166
+ - use tls.connect for client #1682
1167
+ - bring port 465 SMTPS TLS config support on par with STARTTLS #1667
1168
+ - use tls.connect instead of createSecurePair #1678
1169
+ - redis: improve error handling in tests #
1170
+ - replace / path seperators with path.\* for cross platform compat #1713
1171
+
1172
+ #### Fixes
1173
+
1174
+ - dkim_sign: per-domain key finding fixed #1707
1175
+ - Rspamd: restore spam report header #1702
1176
+ - auth/vpopmail: do not toString() when null #1695
1177
+ - fix outbound to avoid recursive reading key/cert after refactoring #1692
1178
+ - tls: fix option servername (not hostname) #1728
1179
+ - correct Auth-Results cleaning #1726
1180
+ - fix results for connection.remote_host and NXDOMAIN #1716
1181
+
1182
+ ### 2.8.10 - Oct 20, 2016
1183
+
1184
+ #### Changes
1185
+
1186
+ - use standard npm syntax for lint and tests #1646
1187
+ - remove ./net_utils to haraka-net-utils #1644
1188
+ - remove incorrect and unused spf.hello_host #1635
1189
+ - remove rogue DENYSOFT copy-pasta error #1634
1190
+ - update async to v2 #1545
1191
+ - remove plugin/dir support from base haraka #1668
1192
+ - use node_modules_dir support instead
1193
+ - use TLSSocket instead of createSecurePair #1672
1194
+ - refactor plugins/tls #1670
1195
+ - moved watch plugin to npm as haraka-plugin-watch #1657
1196
+ - normalize proxy properties #1650
1197
+
1198
+ #### New Features
1199
+
1200
+ - added connection.remote.is_private boolean #1648
1201
+ - added additional TLS options (@typingArtist) #1651
1202
+ - added wildcard boolean support to config loader #1680
1203
+ - tls: allow multiple key and cert parameters for RSA+ECDSA #1663
1204
+ - permit specifying haraka plugins w/o haraka-plugin- prefix #1645
1205
+ - in config/plugins and resultstore
1206
+
1207
+ #### Improvements
1208
+
1209
+ - connection.geoip replaced by haraka-plugin-geoip #1645
1210
+ - connection.asn replaced by haraka-plugin-asn #1645
1211
+ - permit specifying npm packaged plugins w/o haraka-plugin prefix #1647
1212
+ - normalized connection properties #1547, #1577
1213
+ - Rspamd: fix spambar for negative scores #1630
1214
+ - set connection.remote.is_private early
1215
+ - replace calls to net_utils with remote.is_private test
1216
+
1217
+ #### Fixes
1218
+
1219
+ - Tidy-up graceful shutdown and fix for non-cluster mode #1639
1220
+ - Fix data.headers plugin crash #1641
1221
+ - Fix access plugin crash #1640
1222
+ - Minor DKIM fix #1642
1223
+ - do not set TLS timer if timeout=0 #1632
1224
+ - do not overwrite config/host_list on install #1637
1225
+ - correct smtp_forward cfg for multiple rcpts #1680
1226
+ - fix TLS timeout errors #1665
1227
+
1228
+ ### 2.8.9 - Oct 02, 2016
1229
+
1230
+ #### New Features
1231
+
1232
+ - Support outbound.pool_timeout of 0 to effectively disable pooling. #1561
1233
+ - Added never_add_headers option to rspamd plugin. #1562
1234
+ - rcpt_to.routes URI format w/ LMTP support #1568
1235
+
1236
+ #### Improvements
1237
+
1238
+ - The delay_deny plugin now has a whitelist mode (vs blacklist). #1564
1239
+ - Don't show the private key in logs for dkim_sign. #1565
1240
+ - update geoip for compat with newer ES #1622
1241
+ - drop node 0.10 testing / official support #1621
1242
+ - watch plugin displays UUIDs as URL #1624
1243
+ - Catch errors on header decode in rfc2231 #1599
1244
+ - Attachment plugin updates #1606
1245
+ - add outbound.ini pool_timeout example setting #1584
1246
+
1247
+ #### Fixes
1248
+
1249
+ - Fixed some small documentation issues. #1573, #1616, #1612
1250
+ - Fixed AUTH PLAIN when it spreads over two lines. #1550
1251
+ - Fixed dkim_verify calling next() too soon. #1566
1252
+ - Fixed bugs with outbound pools who shutdown before we QUIT. #1561, #1572
1253
+ - outbound issues #1615, #1603
1254
+ - Fixed adding/removing headers in rspamd plugin. #1562
1255
+ - Fixed process_title not shutting down. #1560
1256
+ - fix a spurious error emitted by p0f #1623
1257
+ - fix header version hiding #1617
1258
+ - messagestream returns destination #1610
1259
+ - plugins.getdenyfn now passed 3rd params arg #1591
1260
+ - Fix scope of spf logdebug #1598
1261
+ - fix rabbitmq deliveryMode bug #1594
1262
+ - fix dkim_sign TypeError with null mail_from.host #1592
1263
+ - fix dkim_sign attempting to lower an undefined #1587
1264
+
1265
+ ### 2.8.8 - Jul 20, 2016
1266
+
1267
+ #### Changes
1268
+
1269
+ - removed UPGRADE.doc to [wiki](https://github.com/haraka/Haraka/wiki/Upgrade-Haraka)
1270
+
1271
+ #### Improvements
1272
+
1273
+ - support + wildcard in aliases plugin #1531
1274
+ - Support dkim_sign with outbound.send_email() #1512
1275
+ - spf: always check remote IP, then public IP if != pass #1528
1276
+ - spf: diplay IP used for SPF eval #1528
1277
+
1278
+ #### Fixes
1279
+
1280
+ - handle missing wss section in http.ini #1542
1281
+ - fix leak on socket write error #1541
1282
+ - add results property to outbound transaction #1535
1283
+ - don't unref unref'd wss server #1521
1284
+
1285
+ ### 2.8.7 - Jun 18, 2016
1286
+
1287
+ #### Changes
1288
+
1289
+ - Fix geoip test
1290
+
1291
+ #### Improvements
1292
+
1293
+ - Allow alias plugin to explode to a list of aliases
1294
+ - Support IPv6 literals in HELO tests #1507
1295
+ - Make ldap plugin use the modified address if a rcpt hook changes it #1501
1296
+
1297
+ #### Fixes
1298
+
1299
+ - Fix loading plugins as npm modules #1513
1300
+ - More DKIM fixes #1506
1301
+ - Fix the long failing host-pool-timer test #1508
1302
+ - Fix clean shutdown of redis with new shutdown code, #1504 and #1502
1303
+ - More fixes to clean shutdown #1503
1304
+
1305
+ ### 2.8.6 - Jun 06, 2016
1306
+
1307
+ #### Fixes
1308
+
1309
+ - Fix loading under Node v4 which sends a blank message
1310
+ - Fix quit (SIGINT) when running without nodes=
1311
+
1312
+ ### 2.8.5 - Jun 04, 2016
1313
+
1314
+ #### Changes
1315
+
1316
+ - The connection object is now passed to `get_plain_passwd`. Older modules should continue to work as-is.
1317
+ - The reseed_rng plugin now just uses the Crypto module from core. Though it seems this plugin should be irrelevant with newer versions of node.js
1318
+
1319
+ #### New Features
1320
+
1321
+ - Outbound mail now uses pooled connections, only sending a `QUIT` message if the connection has been idle for a while.
1322
+
1323
+ #### Improvements
1324
+
1325
+ - Shut down and reload (via `haraka -c <path> --graceful`) is now graceful - allowing current connections to finish and plugins to clean up before ending.
1326
+
1327
+ #### Fixes
1328
+
1329
+ - Bind maxmind version to ignore API change #1492
1330
+ - Fix encodings when banners are used #1477
1331
+ - Various DKIM fixes #1495
1332
+
1333
+ ### 2.8.4 - May 24, 2016
1334
+
1335
+ #### Fixes
1336
+
1337
+ - Fix plugin loading override when installed (#1471)
1338
+
1339
+ ### 2.8.3 - May 18, 2016
1340
+
1341
+ #### Fixes
1342
+
1343
+ - Fix config overriding for core modules (#1468)
1344
+
1345
+ ### 2.8.2 - May 17, 2016
1346
+
1347
+ #### Changes
1348
+
1349
+ - Added Node v6 to travis tests
1350
+
1351
+ #### New Features
1352
+
1353
+ - Added bin/haraka --qunstick <domain> to flush all mails
1354
+ for that domain (#1460)
1355
+
1356
+ #### Improvements
1357
+
1358
+ - Make bin/haraka --qlist show much more information (#1452)
1359
+ - Allow CIDR ranges in no_tls_hosts (#1450)
1360
+
1361
+ #### Fixes
1362
+
1363
+ - 2.8.0 was shipped with a broken config/plugins. (#1453)
1364
+ - Stop haraka dying when ldap connections fail (#1456)
1365
+ - Pick up domain specific config correctly in ldap (#1456)
1366
+
1367
+ ### 2.8.0 - May 06, 2016
1368
+
1369
+ #### Changes
1370
+
1371
+ - updated dependency versions (#1426, #1425)
1372
+ - use utf8 encoding for body filters (#1429)
1373
+ - remove spameatingmonkey from tests (#1421)
1374
+ - replace ./constants.js with haraka-constants (#1353)
1375
+ - Document HMail and TODO items (#1343)
1376
+ - Copy only a minimal config/\* by default (#1341).
1377
+ - cfreader/\* removed to haraka/haraka-config (#1350)
1378
+ - outbound and smtp_client honor tls.ini settings (#1350)
1379
+ - outbound TLS defaults to enabled
1380
+ - lint: remove all unused variables (#1358)
1381
+ - replace ./address.js with address-rfc2181 (#1359)
1382
+
1383
+ #### New Features
1384
+
1385
+ - smtp_forward: accepts a list of backend hosts, thanks @kgeoss (#1333)
1386
+ - config: add array[] syntax to INI files (#1345)
1387
+ - plugins.js: support require('./config') in plugins
1388
+ - Load plugin config from own folder and merge (#1335)
1389
+ - Allow original email's Subject to be included in bounce message (#1337)
1390
+ - new queue/smtp_bridge plugin, thanks @jesucarr (#1351)
1391
+
1392
+ #### Improvements
1393
+
1394
+ - early_talker: supports IP whitelisting (#1423)
1395
+ - loading plugins as packages (#1278)
1396
+ - removed TLD stuff to haraka/haraka-tld (#1301)
1397
+ - removed unused 'require('redis') in plugins/karma (#1348)
1398
+ - improved MIME header support per rfc2231 (#1344)
1399
+ - tls options can be defined for outbound and smtp\_\* (#1357)
1400
+ - explicitly disable SSLv2 (#1395)
1401
+ - cache STUN results
1402
+ - xclient plugin improvements (#1405)
1403
+ - tls: Set verify=NO correctly when no certificate presented (#1400)
1404
+ - improved message header decoding (#1403, #1406)
1405
+ - bounce: skip single_recipient check for relays/private_ips (#1385)
1406
+ - rspamd docs: Clarify usage of check.private_ip (#1383)
1407
+ - if rcpt_to returns DSN in msg, log it properly (#1375)
1408
+
1409
+ #### Fixes
1410
+
1411
+ - fix out-of-range errors from banner insertion (#1334)
1412
+ - dkim_verify: Call next only after message_stream ended (#1330)
1413
+ - outbound: remove type check from pid match (#1322)
1414
+ - lint: enable no-shadown and remove all shadow variables (#1349)
1415
+ - spf: fix log_debug syntax (#1416)
1416
+ - auto_proxy: fix a starttls loop (#1392)
1417
+ - fcrdns: corrected err variable name (#1391)
1418
+ - rspamd: Fix undefined variable (#1396)
1419
+ - dkim_verify: Fix header handling (#1371)
1420
+ - smtp_client: fix remote_ip (#1362)
1421
+
1422
+ ### 2.7.3 - Feb 04, 2016
1423
+
1424
+ #### Changes
1425
+
1426
+ - smtp_proxy & qmail-queue: default to enabled for outbound deliveries (previously used Outbound), to better matches user expectations.
1427
+
1428
+ #### New Features
1429
+
1430
+ - outbound: allow passing notes to send_email (#1295)
1431
+
1432
+ #### Improvements
1433
+
1434
+ - logging: emit log message queue before shutting down (#1296)
1435
+ - result_store: permit redis pub/sub to work when host != localhost (#1277)
1436
+ - tests: quiet the extremely verbose messages (#1282)
1437
+ - rspamd: add timeout error handling (#1276)
1438
+ - watch: fix display of early_talker results (#1281)
1439
+ - spamassassin: publish results to result_store (#1280)
1440
+ - karma: can now connect to redis on hosts other than localhost (#1275)
1441
+ - geoip & p0f: don't log empty/null values from RFC 1918 connects (#1267)
1442
+ - redis: make plugin params match docs (#1273)
1443
+ - mailbody: small refactoring (#1315)
1444
+ - smtp_proxy & qmail-queue: default to enabled for outbound (#1308)
1445
+
1446
+ #### Fixes
1447
+
1448
+ - redis: use correct path for db.select (#1273)
1449
+ - count errors correctly (#1274)
1450
+ - logger: ignore null arguments (#1299)
1451
+ - connection: pause for hook_reset_transaction (#1303)
1452
+ - rcpt_to.routes: update redis usage for compat with redis plugin (#1302)
1453
+ - smtp_forward: use correct config path to auth settings (#1327)
1454
+ - messagestream: correctly pass options parameter to get_data (#1316)
1455
+ - spf: honour configuration for mfrom scope (#1322)
1456
+ - outbound: Add missing dash to 'Final-Recipient' header name (#1320)
1457
+
1458
+ ### 2.7.2 - Dec 15, 2015
1459
+
1460
+ #### Fixes
1461
+
1462
+ - Revert a change that broke plugin loading
1463
+
1464
+ ### 2.7.1 - Dec 14, 2015
1465
+
1466
+ #### New Features
1467
+
1468
+ - added debian init.d file (#1255) @slattery
1469
+
1470
+ #### Improvements
1471
+
1472
+ - smtp_forward auth settings now work (#430)
1473
+ - better handling of broken messages (#1234)
1474
+ - Docker: use latest Phusion image && stdout (#1238, #1239)
1475
+ - Clean up plugin loading a tiny bit (#1242)
1476
+ - make dkim keydir case insensitive (1251)
1477
+ - ignore DNS errors that aren't errors (#1247)
1478
+ - outbound doc updates (#1258) @Currerius
1479
+ - outbound: return DENYSOFT on queue error (#1264)
1480
+ - smtp_client: if enable_tls is set and TLS files missing, warn (#1266)
1481
+
1482
+ #### Fixes
1483
+
1484
+ - Don't sent empty headers to rspamd (#1230)
1485
+ - Fix auth_base.js key need to be a string - number.toString() (#1228)
1486
+ - fix bug with empty charset= on mime parts … (#1225)
1487
+ - Fix "passwd" check crash with numeric password. (#1254)
1488
+ - result_store: show arrays when not empty (#1261)
1489
+
1490
+ ### 2.7.0 - Oct 07, 2015
1491
+
1492
+ #### New Features
1493
+
1494
+ - SPF bounce check
1495
+ - rspamd plugin (@fatalbanana)
1496
+ - watch plugin
1497
+ - limit plugin (connection concurrency, errors, unrecognized commands)
1498
+ - plugins can now be npm packages (see also #946)
1499
+ - built-in HTTP server (Express backed)
1500
+ - ESETS AV plugin
1501
+ - DCC plugin (incomplete)
1502
+ - Add LOGIN support to XCLIENT
1503
+ - backscatterer plugin
1504
+ - full IPv4 & IPv6 compatibility inbound #1120, #1123, #1154 (@Dexus)
1505
+ - Early talker #1075 (@smfreegard, @msimerson)
1506
+ - permit loading of plugins in node_modules #1056 (@msimerson)
1507
+
1508
+ #### Improvements
1509
+
1510
+ - Fix anti_spoof by use config #1171
1511
+ - Add license clause #1170
1512
+ - package.json dependencies and travis update #1147, #1168 (@Dexus)
1513
+ - logging: remove node-syslog and strong-fork-syslog with modern-syslog #1145 (@Dexus)
1514
+ - aliases: support for email, user and host aliases #1149 (@Dexus)
1515
+ - add docs for use private key with TLS #1130 (@Dexus)
1516
+ - outbound: ENOENT on dotfile - compatibility for windows #1129 (@Dexus)
1517
+ - plugin/attachment: block more attachment file types #1191 (@Dexus)
1518
+ - remove double functions #1126 (@Dexus)
1519
+ - Outbound Bounce messages according to RFC3464 #1189 (@hatsebutz)
1520
+ - toobusy: only run checks if toobusy.js installed and loads
1521
+ - HAProxy: set local_ip, local_port and remote_port
1522
+ - save auth pass/fail/user to result_store
1523
+ - ini files no longer require values (useful for storing lists)
1524
+ - connection: add MAIL and RCPT to results
1525
+ - results_store: enable 'emit' feature for .push()
1526
+ - add support for custom Outbound Received header value (@zombified)
1527
+ - save smtp_forward result to result_store
1528
+ - auth_base: permit a return message (@DarkSorrow)
1529
+ - add DSN.create() and RFC 4954 support
1530
+ - enhanced pipelining support
1531
+ - added config/access.domains with some tips (@EyePulp)
1532
+ - Add SSL detection over plain-text socket
1533
+ - earlytalker: store results
1534
+ - bounce: make it safe to check non_local_msgid
1535
+ - AVG: store results, added defer options
1536
+ - tls: change createCredentials to tls.createSecureContext (@DarkSorrow)
1537
+ - update dependency versions (esp async 0.2.9 -> 1.0.0)
1538
+ - ASN docs: add FTP download note for routeviews
1539
+ - karma: removed concurrency limits (see limit plugin) and penalty feature
1540
+ - added utils.elapsed()
1541
+ - deny message includes hostname
1542
+ - Add Fisher-Yates shuffle to randomize lookup order in data.uribl
1543
+ - change default message size limit to 25mb
1544
+ - auth_base: save auth results
1545
+ - upgrade toobusy plugin to toobusy-js (@alexkavon)
1546
+ - configfile: permit / char in ini keys
1547
+ - added utils.node_min()
1548
+ - added result_store.get_all()
1549
+ - updated ubuntu upstart script
1550
+ - plugin/rate_limit: return in no custom default is set 0 = unlimited #1186, #1185
1551
+ - Outbound.send_email: added dot-stuffing #1176, #1165 (@hatsebutz)
1552
+ - make sure server object is availabe to plugins loaded from node_modules #1162 (@bmonty)
1553
+ - Net_utils.get_ips_by_host #1160 (@msimerson)
1554
+ - fcrdns: don't log error for ENODATA #1140 (@msimerson)
1555
+ - improve MUA detection #1137 (@msimerson)
1556
+ - tls: tmp disable for hosts that fail STARTTLS #1136 (@msimerson)
1557
+ - karma: skip deny on outbound hooks #1100 (@msimerson)
1558
+ - Store HAProxy IP in connection object #1097 (@smfreegard)
1559
+ - Remove UUID from queued message #1092 (@smfreegard)
1560
+
1561
+ #### Fixes
1562
+
1563
+ - fix windows build and test failures #1076 (@msimerson)
1564
+ - Fix plugin ordering #1081 (@smfreegard)
1565
+ - Fix distance reporting to X-Haraka-GeoIP for geoip-lite #1086 (@smfreegard)
1566
+ - uribl: prevent calling next() more than 1x #1138 (@msimerson)
1567
+ - Fix so constants are imported when plugin is loaded from node_modules. #1133 (@bmonty)
1568
+ - Include STMP-code in bounce-reason string for upstream 5XX responses #1117 (@hatsebutz)
1569
+ - TLS fixes: add timed_out flag and karma should not run deny hook on it. #1109 (@smfreegard)
1570
+ - Fix port to number instead of string for HAProxy #1108 (@DarkSorrow)
1571
+ - Plugin dcc: fixed syntax error #1164 (@hatsebutz)
1572
+ - config: fix flat files if \r\n lines #1187 (@Dexus)
1573
+ - corrected hook_rcpt log code hook_rcpt_ok returns CONT
1574
+ - fix crash bug when loglevel = LOGDEBUG
1575
+ - corrected pathname in rcpt.ldap plugin (@abhas)
1576
+ - added helo.checks boolean for proto_mismatch
1577
+ - make rate_limit redis keys always expire @celesteking
1578
+ - dkim_sign: Buffer.concat expects an array of buffers
1579
+ - transaction: check discard_data before adding line end (@DarkSorrow)
1580
+ - fix 8-bit msg not displayed properly in gmail
1581
+ - fcrdns: always init results
1582
+ - TLS timer on error
1583
+ - dkim_verify: fixed timeout issue
1584
+ - smtp\_[proxy|forward]: correct authentication example
1585
+ - Fork child workers after init_master hook
1586
+ - connection: return 450/550 for plugin DENY\* (was 452/552)
1587
+ - spamassassin: don't call next() when transaction gone
1588
+ - outbound: fix crash when sending bounce mail
1589
+ - auth_base: fix bad protocol in auth_base.js #1121 (@Dexus)
1590
+ - outbound: Fix HELO/rDNS issue while using multiple outbound ip #1128 (@Dexus)
1591
+ - connection: Fix bug when client disconnect after sending data #1193
1592
+ - Fix connect.geoip bug #1144 (@smfreegard)
1593
+ - Fix tiny bug in messagesniffer #1198 (@smfreegard)
1594
+
1595
+ ### 2.6.1 - Mar 27, 2015
1596
+
1597
+ - added sedation timers for config file re-reading
1598
+ - Add AUTH support to outbound
1599
+ - tests/spf: quiet excessive DEBUG noise
1600
+ - allow domains with underscore
1601
+ - correct name of domains config file in access
1602
+ - Fix SMTP AUTH in smtp_forward/proxy and add docs
1603
+ - Fix opts not being passed to HMailItem \_bounce function
1604
+ - log.syslog will try strong-fork-syslog (for node 0.12 compat)
1605
+ - improvements to Plugin docs
1606
+ - rename net_utils.is_rfc1918 -> is_private_ip
1607
+ - IPv6 compat
1608
+ - test coverage
1609
+ - add IPv6 unique local fc00::/7
1610
+ - pre-populated config/plugins
1611
+ - added utils.extend, copies props onto objects
1612
+
1613
+ ### 2.6.0 - Feb 21, 2015
1614
+
1615
+ - other bug fixes
1616
+ - updated a few tests so test suite passes on Windows
1617
+ - log.syslog: handle failure to load node-syslog
1618
+ - plugin directory is $ENV definable (@martin1yness)
1619
+ - logging timestamps were static, fixed by @cloudbuy
1620
+ - queue/rabbitmq_amqplib, new plugin for RabbitMQ using amqplib (@esevece)
1621
+ - outbound:
1622
+ - plugins can set the outbound IP (during get_mx)
1623
+ - only replace line endings if not \r\n
1624
+ - bannering fixes
1625
+ - added support for per recipient routes
1626
+ - tls: don't register hooks upless certs exist
1627
+ - removed contrib/geolite-mirror-simple.pl (replaced by
1628
+ docs update pointing to maxmind-geolite-mirror)
1629
+ - rcpt.routes: new plugin by @msimerson
1630
+ - make haproxy IPv6 compatible
1631
+ - record_envelope_addresses: new plugin by @deburau
1632
+ - prevent_credential_leaks: new plugin by @smfreegard
1633
+ - config:
1634
+ - configfile: added .yaml support
1635
+ - improved config file 'watch' logic
1636
+ - Allow hyphens in params in config files (@abhas)
1637
+ - cached requests include options in cache key name
1638
+ - asn: updates for node 0.11 compat
1639
+ - dnsbl: use aysync.each vs forEach (avoid race condition)
1640
+ - spamassassin: improved config loading and test coverage
1641
+ - geoip: deprecate geoip-lite in favor of maxmind, IPv6 compatible
1642
+ - disable SSLv3 (due to POODLE)
1643
+ - dkim & spf, updates for node 0.11 compatibiilty
1644
+ - karma: move neighbor scoring from code to karma.ini
1645
+ - move excludes list to karma.ini
1646
+ - apply awards before adding message header & permit rejection at queue
1647
+ - karma.ini: score updates for access & uribl plugins
1648
+ - score denials issued by skipped plugins
1649
+ - add scores for specific DNSBLs
1650
+ - add transaction body filters (@chazomaticus)
1651
+ - change bannering to use them
1652
+ - helo.checks: fix timeout bug
1653
+ - match_re now validates and pre-compiles all REs
1654
+ - Add new proto_mismatch check
1655
+ - p0f: add register(), load config once, early
1656
+ - server: improved config handling
1657
+ - data.headers: add Delivered-To check
1658
+ - rcpt_to.ldap: new plugin by @abhas
1659
+ - smtp*client: only load tls*- when cfg.enable_tls
1660
+ - added plugins/host_list_base
1661
+ - Platform independent temp dir (thanks @martinvd)
1662
+ - move deprecated docs into docs/deprecated
1663
+ - Switch to Phusion baseimage instead of stock Ubuntu (thanks @Synchro)
1664
+ - dkim_verify: new plugin by @smfreegard
1665
+ - many new tests
1666
+ - improved URI parser (for URIBL plugin)
1667
+ - Allow mixed case STARTTLS command
1668
+ - Install Node via package manager (Mohd Rozi)
1669
+ - Fix a couple crit errors (@Illirgway)
1670
+ - Add noisy/bulk out-of-band rule support to MessaageSniffer plugin
1671
+ - initial support for rabbitmq plugin (@samuelharden)
1672
+ - bounce, added non_local_msgid checks and much faster lookups
1673
+ - vpopmail: fail faster during a CRAM-MD5 auth attempt with an invalid user
1674
+ - fcrdns: handle a null hostname
1675
+ - Improve HAProxy support code and documentation
1676
+ - tls: reworked for efficiency and linear style
1677
+ - access: test hostname validity before PSL lookup
1678
+ - load lists into objects (vs arrays), for much faster runtime access
1679
+ - host_list: huge performance increase, esp for many hosts
1680
+
1681
+ ### 2.5.0 - May 24, 2014
1682
+
1683
+ - added automated build testing via Travis-CI.org
1684
+ - fixed dkim_sign crash issue #560
1685
+ - geoip can discover external IP via net_utils.get_public_ip
1686
+ - geoip: skip private IPs
1687
+ - qmd: when relaying, validate MAIL FROM against QMD, add per-domain
1688
+ configurations, added reject option, added tests and bug fixes.
1689
+ - net_utils: added is_ipv4_literal, is_public_suffix, get_public_ip, added
1690
+ tests, shed some CamelCase.
1691
+ - asn: looksup up ASN of connection, uses 3 providers, tests providers, saves
1692
+ results, optionally adds headers. Includes tests.
1693
+ - access: new plugin that merges rdns_access, mail_from.access, and
1694
+ rcpt_to.access.
1695
+ - fcrdns: new plugin (Forward Confirmed Reverse DNS)
1696
+ - bounce: new plugin (merges
1697
+ - data.headers: new plugin added direct_to_mx, check & reject settings, added MLM detection,
1698
+ tests.
1699
+ - helo.checks: refactored, better config handling, new tests (match_rdns,
1700
+ mismatch, results), reject option.
1701
+ - results_store: store processing results in data structures (vs notes)
1702
+ - spf: refactored, added outbound checks when relaying, added 15 tests,
1703
+ - dnsbl: return errors as Error objects, reduce list to unique zones, added
1704
+ tests, added search=multi option, handle ENOTFOUND error, added reject=false option.
1705
+ - dns_list_base: bug fixes (race condition, returning invalid results)
1706
+ - bounce: refactored, each check has enable and reject switches, added tests,
1707
+ added bad_bounce_to
1708
+ - clamav: add virus name to results, better config parsing, typo fixes
1709
+ - uribl:
1710
+ - mf_resolvable:
1711
+ - tls: add link to wiki article on TLS setup
1712
+ - relay_acl: fix issue #428, refactored, don't crash when relay_dest_domains.ini
1713
+ missing, added tests
1714
+ - fix mx mechanism when no records are returned
1715
+ - vpopmaild: added per-domain feature
1716
+ - karma: added whitelist award, pass through temp (DENYSOFT) errors, made
1717
+ tarpit variable, configurable reject hooks, doc rewrite, ASN awards, fix penalty days calculation, new DSL for karma awards,
1718
+ - bannering fixes
1719
+ - added log\* stubs to test/fixtures/[plugin|connection]
1720
+ - tests/fixtures/stub_plugin: set name property
1721
+ - config: corrected handling of config.arg gets, fix caching bug, fix boolean
1722
+ handling, added missing 'type' handling.
1723
+ - Adding the option of using CIDR ranges in the haproxy_hosts file
1724
+ - tarpit: added config option hooks_to_delay, added docs
1725
+ - contrib/haraka.bsd.rc: startup file for \*BSD
1726
+ - Store attachment headers on stream
1727
+ - Record accepted domains at hook_rcpt and improve queue/lmtp
1728
+ - return after next() in the whitelist checks
1729
+ - Add new -o option to bin/haraka
1730
+
1731
+ ### 2.4.0 - Feb 12, 2014
1732
+
1733
+ - Trim whitespace when reading "list" type config files (such as config/plugins)
1734
+ - Added LMTP via queue/lmtp plugin
1735
+ - Fixed bug in outbound when temp failing some of the recipients that would prevent delivery working to those recipients for future delivery attempts
1736
+ - Add additional details/parameters to delivered hook for outbound mail
1737
+ - Removed the hmail.bounce_extra object as that information now stored with the rcpt_to list
1738
+ - Store the RCPT TO rejection reason on the address object
1739
+
1740
+ ### 2.3.0 - Feb 07, 2014
1741
+
1742
+ - Fix memory leak when watching config files for changes
1743
+ - Support for badly formatted MAIL FROM/RCPT TO lines
1744
+ - Fix a memory corruption when fixing line endings
1745
+ - Fix breakpoints in plugins when using node inspector
1746
+ - Reload config in relay_force_routing without restart
1747
+ - Don't re-attempt TLS upgrade if upgraded already and STARTTLS is re-advertised
1748
+ - Improved outbound logging
1749
+ - Pass failed recipients to bounce hook in outbound processing
1750
+ - Added startup checks to ensure Haraka has been installed correctly
1751
+ - Handle case of Haraka server running out of disk space better
1752
+ - In mail_from.is_resolvable: move re_bogus_ip into config
1753
+ - Added auth/auth_vpopmaild plugin - SMTP AUTH against a vpopmaild server
1754
+ - Fixed graph plugin to work with sqlite3
1755
+ - Added rcpt_to.qmail_deliverable plugin - Authenticate inbound RCPT TOs against Qmail::Deliverable daemon
1756
+ - Added data.headers plugin which merges header checks into one place.
1757
+ Deprecates data.noreceived, data.rfc5322_header_checks, and data.nomsgid.
1758
+ - Added documentation for logging system
1759
+ - Added DKIM per-domain signing support
1760
+ - Added p0f plugin
1761
+ - In relay_acl, if host is allowed by acl, don't deny the recipient because the domain isn't in the allow list
1762
+ - Add Authentication-Results header (RFC 5451) to all emails
1763
+ - Fixed writing the todo file in outbound for newer Node versions
1764
+ - Added Karma plugin to support penalizing consistently evil senders
1765
+ - Added GeoIP plugin including distance calculation from your mail server
1766
+ - Added bounce plugin for handling incoming bounce messages in various ways
1767
+ - Fix underscores in documentation so web version doesn't look so weird
1768
+ - 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
1769
+ - In lookup_rdns.strict, check whitelist before looking up IP
1770
+ - Big rewrite of the SpamAssassin plugin for simplicity and mainly to pass through X-Spam-\* headers provided
1771
+ - Added delay_deny plugin allowing more flexibility on when to reject mail
1772
+ - Improvements to ini file parsing allowing floats and negative integers, and specifying boolean keys
1773
+ - Fix issue causing a CRIT/crash with lost transaction/connection while sending inbound to ongoing SMTP server
1774
+ - Allow setting of spamd_user for spamassassin plugin
1775
+
1776
+ ### 2.0.0 - Nov 28, 2012
1777
+
1778
+ - Various fixes to SMTP AUTH code, including providing SMTP AUTH to inbound
1779
+ mail forwarders.
1780
+ - Updates to process_title plugin to show more details
1781
+ - Changed transaction.data_lines to a Stream (this will break all code which
1782
+ uses transaction.data_lines currently - see the migration guide)
1783
+ - Changed attachments to be a Stream (this will break some code which uses
1784
+ transaction.attachment_hooks - see the migration guide)
1785
+ - Capture and log signals sent to Haraka
1786
+ - Various performance improvements
1787
+ - Fixed a memory leak in connection pool
1788
+ - Improvements to TLS compatibility
1789
+ - RFC compliance improvements with greeting, EHLO/HELO, QUIT, and dot stuffing
1790
+ - Throw exception with set_banner as it is now non-functional. Will be returned in a future version.
1791
+ - Small fixes to data.uribl
1792
+
1793
+ [3.0.0]: https://github.com/haraka/Haraka/releases/tag/3.0.0
1794
+ [3.0.1]: https://github.com/haraka/Haraka/releases/tag/v3.0.1
1795
+ [3.0.2]: https://github.com/haraka/Haraka/releases/tag/v3.0.2
1796
+ [3.0.3]: https://github.com/haraka/Haraka/releases/tag/v3.0.3
1797
+ [3.0.4]: https://github.com/haraka/Haraka/releases/tag/3.0.4
1798
+ [3.0.5]: https://github.com/haraka/Haraka/releases/tag/v3.0.5
1799
+ [3.0.6]: https://github.com/haraka/Haraka/releases/tag/v3.0.6
1800
+ [2.8.0]: https://github.com/haraka/Haraka/releases/tag/v2.8.0
1801
+ [2.8.1]: https://github.com/haraka/Haraka/releases/tag/v2.8.1
1802
+ [2.8.3]: https://github.com/haraka/Haraka/releases/tag/v2.8.3
1803
+ [2.8.4]: https://github.com/haraka/Haraka/releases/tag/v2.8.4
1804
+ [2.8.5]: https://github.com/haraka/Haraka/releases/tag/v2.8.5
1805
+ [2.8.6]: https://github.com/haraka/Haraka/releases/tag/v2.8.6
1806
+ [2.8.7]: https://github.com/haraka/Haraka/releases/tag/v2.8.7
1807
+ [2.8.8]: https://github.com/haraka/Haraka/releases/tag/v2.8.8
1808
+ [2.8.9]: https://github.com/haraka/Haraka/releases/tag/v2.8.9
1809
+ [2.8.10]: https://github.com/haraka/Haraka/releases/tag/2.8.10
1810
+ [2.8.11]: https://github.com/haraka/Haraka/releases/tag/2.8.11
1811
+ [2.8.12]: https://github.com/haraka/Haraka/releases/tag/2.8.12
1812
+ [2.8.13]: https://github.com/haraka/Haraka/releases/tag/2.8.13
1813
+ [2.8.14]: https://github.com/haraka/Haraka/releases/tag/v2.8.14
1814
+ [2.8.15]: https://github.com/haraka/Haraka/releases/tag/2.8.15
1815
+ [2.8.16]: https://github.com/haraka/Haraka/releases/tag/2.8.16
1816
+ [2.8.17]: https://github.com/haraka/Haraka/releases/tag/2.8.17
1817
+ [2.8.18]: https://github.com/haraka/Haraka/releases/tag/2.8.18
1818
+ [2.8.19]: https://github.com/haraka/Haraka/releases/tag/v2.8.19
1819
+ [2.8.20]: https://github.com/haraka/Haraka/releases/tag/2.8.20
1820
+ [release-2.8.21]: https://github.com/haraka/Haraka/releases/tag/release-2.8.21
1821
+ [2.8.22]: https://github.com/haraka/Haraka/releases/tag/2.8.22
1822
+ [2.8.24]: https://github.com/haraka/Haraka/releases/tag/2.8.24
1823
+ [2.8.25]: https://github.com/haraka/Haraka/releases/tag/2.8.25
1824
+ [2.8.26]: https://github.com/haraka/Haraka/releases/tag/2.8.26
1825
+ [2.8.27]: https://github.com/haraka/Haraka/releases/tag/2.8.27
1826
+ [2.8.28]: https://github.com/haraka/Haraka/releases/tag/2.8.28
1827
+ [2.7.3]: https://github.com/haraka/Haraka/releases/tag/v2.7.3
1828
+ [2.7.2]: https://github.com/haraka/Haraka/releases/tag/v2.7.2
1829
+ [2.7.1]: https://github.com/haraka/Haraka/releases/tag/v2.7.1
1830
+ [2.7.0]: https://github.com/haraka/Haraka/releases/tag/v2.7.0
1831
+ [2.6.0]: https://github.com/haraka/Haraka/releases/tag/v2.6.0
1832
+ [2.6.1]: https://github.com/haraka/Haraka/releases/tag/v2.6.1
1833
+ [2.5.0]: https://github.com/haraka/Haraka/releases/tag/v2.5.0
1834
+ [2.4.0]: https://github.com/haraka/Haraka/releases/tag/v2.4.0
1835
+ [2.3.1]: https://github.com/haraka/Haraka/releases/tag/v2.3.1
1836
+ [2.3.0]: https://github.com/haraka/Haraka/releases/tag/v2.3.0
1837
+ [2.2.0]: https://github.com/haraka/Haraka/releases/tag/v2.2.0
1838
+ [2.2.1]: https://github.com/haraka/Haraka/releases/tag/v2.2.1
1839
+ [2.2.2]: https://github.com/haraka/Haraka/releases/tag/v2.2.2
1840
+ [2.2.3]: https://github.com/haraka/Haraka/releases/tag/v2.2.3
1841
+ [2.2.4]: https://github.com/haraka/Haraka/releases/tag/v2.2.4
1842
+ [2.2.5]: https://github.com/haraka/Haraka/releases/tag/v2.2.5
1843
+ [2.2.6]: https://github.com/haraka/Haraka/releases/tag/v2.2.6
1844
+ [2.2.7]: https://github.com/haraka/Haraka/releases/tag/v2.2.7
1845
+ [2.2.8]: https://github.com/haraka/Haraka/releases/tag/v2.2.8
1846
+ [2.1.0]: https://github.com/haraka/Haraka/releases/tag/v2.1.0
1847
+ [2.1.1]: https://github.com/haraka/Haraka/releases/tag/v2.1.1
1848
+ [2.1.2]: https://github.com/haraka/Haraka/releases/tag/v2.1.2
1849
+ [2.1.3]: https://github.com/haraka/Haraka/releases/tag/v2.1.3
1850
+ [2.1.4]: https://github.com/haraka/Haraka/releases/tag/v2.1.4
1851
+ [2.1.5]: https://github.com/haraka/Haraka/releases/tag/v2.1.5
1852
+ [2.1.6]: https://github.com/haraka/Haraka/releases/tag/v2.1.6
1853
+ [2.0.0]: https://github.com/haraka/Haraka/releases/tag/v2.0.0
1854
+ [2.0.3]: https://github.com/haraka/Haraka/releases/tag/v2.0.3
1855
+ [2.0.4]: https://github.com/haraka/Haraka/releases/tag/v2.0.4
1856
+ [2.0.5]: https://github.com/haraka/Haraka/releases/tag/v2.0.5
1857
+ [1.0.1]: https://github.com/haraka/Haraka/releases/tag/v1.0.1
1858
+ [1.0.2]: https://github.com/haraka/Haraka/releases/tag/v1.0.2
1859
+ [1.1.0]: https://github.com/haraka/Haraka/releases/tag/v1.1.0
1860
+ [1.2.0]: https://github.com/haraka/Haraka/releases/tag/v1.2.0
1861
+ [1.2.1]: https://github.com/haraka/Haraka/releases/tag/v1.2.1
1862
+ [1.3.0]: https://github.com/haraka/Haraka/releases/tag/v1.3.0
1863
+ [1.3.1]: https://github.com/haraka/Haraka/releases/tag/v1.3.1
1864
+ [1.3.2]: https://github.com/haraka/Haraka/releases/tag/v1.3.2
1865
+ [1.3.3]: https://github.com/haraka/Haraka/releases/tag/v1.3.3
1866
+ [1.4.0]: https://github.com/haraka/Haraka/releases/tag/v1.4.0
1867
+ [0.9.0]: https://github.com/haraka/Haraka/releases/tag/v0.9.0
1868
+ [0.8.0]: https://github.com/haraka/Haraka/releases/tag/v0.8.0
1869
+ [0.7.2]: https://github.com/haraka/Haraka/releases/tag/v0.7.2
1870
+ [0.7.1]: https://github.com/haraka/Haraka/releases/tag/v0.7.1
1871
+ [0.7.0]: https://github.com/haraka/Haraka/releases/tag/v0.7.0
1872
+ [0.6.1]: https://github.com/haraka/Haraka/releases/tag/v0.6.1
1873
+ [0.6.0]: https://github.com/haraka/Haraka/releases/tag/v0.6.0
1874
+ [0.5.11]: https://github.com/haraka/Haraka/releases/tag/v0.5.11
1875
+ [0.5.10]: https://github.com/haraka/Haraka/releases/tag/v0.5.10
1876
+ [0.5.9]: https://github.com/haraka/Haraka/releases/tag/v0.5.9
1877
+ [0.5.8]: https://github.com/haraka/Haraka/releases/tag/v0.5.8
1878
+ [0.5.7]: https://github.com/haraka/Haraka/releases/tag/v0.5.7
1879
+ [0.5.6]: https://github.com/haraka/Haraka/releases/tag/v0.5.6
1880
+ [0.5.5]: https://github.com/haraka/Haraka/releases/tag/v0.5.5
1881
+ [0.5.4]: https://github.com/haraka/Haraka/releases/tag/v0.5.4
1882
+ [0.5.3]: https://github.com/haraka/Haraka/releases/tag/v0.5.3
1883
+ [0.5.2]: https://github.com/haraka/Haraka/releases/tag/v0.5.2
1884
+ [0.5]: https://github.com/haraka/Haraka/releases/tag/v0.5
1885
+ [0.4]: https://github.com/haraka/Haraka/releases/tag/v0.4
1886
+ [0.3]: https://github.com/haraka/Haraka/releases/tag/v0.3
1887
+ [0.2]: https://github.com/haraka/Haraka/releases/tag/v0.2
1888
+ [3.1.1]: https://github.com/haraka/Haraka/releases/tag/v3.1.1
1889
+ [3.1.0]: https://github.com/haraka/Haraka/releases/tag/v3.1.0
1890
+ [3.1.2]: https://github.com/haraka/Haraka/releases/tag/v3.1.2
1891
+ [3.1.3]: https://github.com/haraka/Haraka/releases/tag/v3.1.3
1892
+ [3.1.4]: https://github.com/haraka/Haraka/releases/tag/v3.1.4
1893
+ [3.1.5]: https://github.com/haraka/Haraka/releases/tag/v3.1.5
1894
+ [3.1.6]: https://github.com/haraka/Haraka/releases/tag/v3.1.6
1895
+ [3.1.7]: https://github.com/haraka/Haraka/releases/tag/v3.1.7
1896
+ [3.2.0]: https://github.com/haraka/Haraka/releases/tag/v3.2.0
1897
+ [3.2.1]: https://github.com/haraka/Haraka/releases/tag/v3.2.1
1898
+ [3.3.1]: https://github.com/haraka/Haraka/releases/tag/v3.3.1