Haraka 3.0.2 → 3.0.4

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 (267) hide show
  1. package/.eslintrc.yaml +5 -9
  2. package/.prettierrc.yml +1 -0
  3. package/CONTRIBUTORS.md +11 -0
  4. package/Changes.md +1393 -1211
  5. package/Dockerfile +3 -3
  6. package/Plugins.md +119 -106
  7. package/README.md +7 -16
  8. package/TODO +1 -24
  9. package/bin/haraka +197 -298
  10. package/config/auth_flat_file.ini +2 -0
  11. package/config/auth_vpopmaild.ini +4 -2
  12. package/config/dhparams.pem +8 -0
  13. package/config/mail_from.is_resolvable.ini +4 -2
  14. package/config/me +1 -0
  15. package/config/outbound.ini +0 -2
  16. package/config/plugins +36 -35
  17. package/config/rabbitmq_amqplib.ini +8 -1
  18. package/config/smtp.ini +0 -1
  19. package/config/smtp.json +17 -0
  20. package/config/tls_cert.pem +23 -0
  21. package/config/tls_key.pem +28 -0
  22. package/connection.js +46 -73
  23. package/contrib/bsd-rc.d/haraka +3 -1
  24. package/contrib/plugin2npm.sh +6 -36
  25. package/docs/Connection.md +1 -1
  26. package/docs/CoreConfig.md +2 -2
  27. package/docs/Logging.md +7 -21
  28. package/docs/Outbound.md +104 -210
  29. package/docs/Plugins.md +47 -40
  30. package/docs/Transaction.md +59 -82
  31. package/docs/{plugins → deprecated}/connect.rdns_access.md +1 -1
  32. package/docs/{plugins → deprecated}/mail_from.access.md +1 -1
  33. package/docs/{plugins → deprecated}/rcpt_to.access.md +1 -1
  34. package/docs/plugins/auth/auth_vpopmaild.md +15 -19
  35. package/docs/plugins/auth/flat_file.md +23 -30
  36. package/docs/plugins/queue/rabbitmq_amqplib.md +7 -0
  37. package/docs/plugins/queue/smtp_forward.md +1 -1
  38. package/docs/plugins/queue/smtp_proxy.md +5 -10
  39. package/docs/plugins/relay.md +2 -2
  40. package/docs/plugins/tls.md +29 -9
  41. package/endpoint.js +16 -13
  42. package/haraka.js +10 -14
  43. package/host_pool.js +5 -5
  44. package/line_socket.js +3 -4
  45. package/logger.js +44 -28
  46. package/outbound/client_pool.js +27 -23
  47. package/outbound/config.js +4 -6
  48. package/outbound/fsync_writestream.js +1 -1
  49. package/outbound/hmail.js +180 -220
  50. package/outbound/index.js +86 -99
  51. package/outbound/qfile.js +1 -1
  52. package/outbound/queue.js +55 -43
  53. package/outbound/timer_queue.js +3 -2
  54. package/outbound/tls.js +19 -7
  55. package/package.json +66 -55
  56. package/plugins/.eslintrc.yaml +0 -6
  57. package/plugins/auth/auth_base.js +30 -12
  58. package/plugins/auth/auth_proxy.js +14 -12
  59. package/plugins/auth/auth_vpopmaild.js +30 -20
  60. package/plugins/auth/flat_file.js +17 -12
  61. package/plugins/block_me.js +1 -1
  62. package/plugins/data.signatures.js +2 -4
  63. package/plugins/early_talker.js +2 -1
  64. package/plugins/mail_from.is_resolvable.js +65 -135
  65. package/plugins/queue/deliver.js +4 -5
  66. package/plugins/queue/lmtp.js +11 -14
  67. package/plugins/queue/qmail-queue.js +2 -2
  68. package/plugins/queue/quarantine.js +2 -2
  69. package/plugins/queue/rabbitmq.js +16 -17
  70. package/plugins/queue/rabbitmq_amqplib.js +1 -1
  71. package/plugins/queue/smtp_forward.js +6 -6
  72. package/plugins/queue/smtp_proxy.js +10 -1
  73. package/plugins/queue/test.js +2 -2
  74. package/plugins/rcpt_to.host_list_base.js +5 -5
  75. package/plugins/rcpt_to.in_host_list.js +2 -2
  76. package/plugins/relay.js +6 -7
  77. package/plugins/reseed_rng.js +1 -1
  78. package/plugins/status.js +37 -33
  79. package/plugins/tls.js +2 -2
  80. package/plugins/xclient.js +3 -2
  81. package/plugins.js +51 -54
  82. package/run_tests +3 -30
  83. package/server.js +190 -190
  84. package/smtp_client.js +30 -23
  85. package/{tests → test}/config/plugins +0 -2
  86. package/{tests → test}/config/smtp.ini +1 -1
  87. package/test/config/tls/example.com/_.example.com.key +28 -0
  88. package/test/config/tls/example.com/example.com.crt +25 -0
  89. package/test/connection.js +302 -0
  90. package/test/endpoint.js +94 -0
  91. package/{tests → test}/fixtures/line_socket.js +1 -1
  92. package/{tests → test}/fixtures/util_hmailitem.js +19 -25
  93. package/{tests → test}/host_pool.js +42 -57
  94. package/test/logger.js +258 -0
  95. package/test/outbound/hmail.js +141 -0
  96. package/test/outbound/index.js +220 -0
  97. package/test/outbound/qfile.js +126 -0
  98. package/test/outbound_bounce_net_errors.js +142 -0
  99. package/{tests → test}/outbound_bounce_rfc3464.js +110 -122
  100. package/test/plugins/auth/auth_base.js +484 -0
  101. package/test/plugins/auth/auth_vpopmaild.js +83 -0
  102. package/test/plugins/early_talker.js +104 -0
  103. package/test/plugins/mail_from.is_resolvable.js +35 -0
  104. package/test/plugins/queue/smtp_forward.js +206 -0
  105. package/test/plugins/rcpt_to.host_list_base.js +122 -0
  106. package/test/plugins/rcpt_to.in_host_list.js +193 -0
  107. package/test/plugins/relay.js +303 -0
  108. package/test/plugins/status.js +130 -0
  109. package/test/plugins/tls.js +70 -0
  110. package/test/plugins.js +228 -0
  111. package/{tests → test}/queue/multibyte +0 -0
  112. package/{tests → test}/queue/plain +0 -0
  113. package/test/rfc1869.js +73 -0
  114. package/test/server.js +491 -0
  115. package/test/smtp_client.js +299 -0
  116. package/test/tls_socket.js +273 -0
  117. package/test/transaction.js +270 -0
  118. package/tls_socket.js +202 -252
  119. package/transaction.js +9 -24
  120. package/CONTRIBUTING.md +0 -1
  121. package/bin/dkimverify +0 -40
  122. package/config/access.domains +0 -13
  123. package/config/attachment.ctype.regex +0 -2
  124. package/config/attachment.filename.regex +0 -1
  125. package/config/avg.ini +0 -5
  126. package/config/bounce.ini +0 -15
  127. package/config/data.headers.ini +0 -61
  128. package/config/dkim/dkim_key_gen.sh +0 -78
  129. package/config/dkim_sign.ini +0 -4
  130. package/config/dkim_verify.ini +0 -7
  131. package/config/dnsbl.ini +0 -23
  132. package/config/greylist.ini +0 -43
  133. package/config/helo.checks.ini +0 -52
  134. package/config/lookup_rdns.strict.ini +0 -12
  135. package/config/lookup_rdns.strict.timeout +0 -1
  136. package/config/lookup_rdns.strict.whitelist +0 -1
  137. package/config/lookup_rdns.strict.whitelist_regex +0 -5
  138. package/config/messagesniffer.ini +0 -18
  139. package/config/rcpt_to.blocklist +0 -1
  140. package/config/rdns.allow_regexps +0 -0
  141. package/config/rdns.deny_regexps +0 -0
  142. package/config/spamassassin.ini +0 -56
  143. package/config.js +0 -6
  144. package/dkim.js +0 -614
  145. package/docs/plugins/avg.md +0 -35
  146. package/docs/plugins/bounce.md +0 -69
  147. package/docs/plugins/clamd.md +0 -147
  148. package/docs/plugins/esets.md +0 -8
  149. package/docs/plugins/greylist.md +0 -90
  150. package/docs/plugins/helo.checks.md +0 -135
  151. package/docs/plugins/messagesniffer.md +0 -163
  152. package/docs/plugins/relay_acl.md +0 -29
  153. package/docs/plugins/relay_all.md +0 -15
  154. package/docs/plugins/relay_force_routing.md +0 -33
  155. package/docs/plugins/spamassassin.md +0 -180
  156. package/outbound/mx_lookup.js +0 -70
  157. package/plugins/auth/auth_ldap.js +0 -3
  158. package/plugins/avg.js +0 -162
  159. package/plugins/backscatterer.js +0 -25
  160. package/plugins/bounce.js +0 -381
  161. package/plugins/clamd.js +0 -381
  162. package/plugins/data.headers.js +0 -4
  163. package/plugins/data.uribl.js +0 -4
  164. package/plugins/dkim_sign.js +0 -395
  165. package/plugins/dkim_verify.js +0 -62
  166. package/plugins/dns_list_base.js +0 -221
  167. package/plugins/dnsbl.js +0 -146
  168. package/plugins/dnswl.js +0 -58
  169. package/plugins/esets.js +0 -71
  170. package/plugins/graph.js +0 -5
  171. package/plugins/greylist.js +0 -645
  172. package/plugins/helo.checks.js +0 -533
  173. package/plugins/messagesniffer.js +0 -381
  174. package/plugins/rcpt_to.ldap.js +0 -3
  175. package/plugins/rcpt_to.max_count.js +0 -24
  176. package/plugins/relay_all.js +0 -13
  177. package/plugins/spamassassin.js +0 -384
  178. package/tests/config/dkim/example.com/dns +0 -29
  179. package/tests/config/dkim/example.com/private +0 -6
  180. package/tests/config/dkim/example.com/public +0 -4
  181. package/tests/config/dkim/example.com/selector +0 -1
  182. package/tests/config/dkim.private.key +0 -6
  183. package/tests/config/dkim_sign.ini +0 -4
  184. package/tests/config/helo.checks.ini +0 -52
  185. package/tests/connection.js +0 -327
  186. package/tests/endpoint.js +0 -128
  187. package/tests/fixtures/vm_harness.js +0 -59
  188. package/tests/logger.js +0 -327
  189. package/tests/outbound/hmail.js +0 -112
  190. package/tests/outbound/index.js +0 -324
  191. package/tests/outbound/qfile.js +0 -67
  192. package/tests/outbound_bounce_net_errors.js +0 -173
  193. package/tests/plugins/auth/auth_base.js +0 -463
  194. package/tests/plugins/auth/auth_vpopmaild.js +0 -91
  195. package/tests/plugins/bounce.js +0 -307
  196. package/tests/plugins/clamd.js +0 -224
  197. package/tests/plugins/deprecated/relay_acl.js +0 -140
  198. package/tests/plugins/deprecated/relay_all.js +0 -59
  199. package/tests/plugins/dkim_sign.js +0 -315
  200. package/tests/plugins/dkim_signer.js +0 -108
  201. package/tests/plugins/dns_list_base.js +0 -259
  202. package/tests/plugins/dnsbl.js +0 -101
  203. package/tests/plugins/early_talker.js +0 -115
  204. package/tests/plugins/greylist.js +0 -58
  205. package/tests/plugins/helo.checks.js +0 -525
  206. package/tests/plugins/mail_from.is_resolvable.js +0 -116
  207. package/tests/plugins/queue/smtp_forward.js +0 -221
  208. package/tests/plugins/rcpt_to.host_list_base.js +0 -132
  209. package/tests/plugins/rcpt_to.in_host_list.js +0 -218
  210. package/tests/plugins/relay.js +0 -339
  211. package/tests/plugins/spamassassin.js +0 -171
  212. package/tests/plugins/status.js +0 -138
  213. package/tests/plugins/tls.js +0 -84
  214. package/tests/plugins.js +0 -247
  215. package/tests/rfc1869.js +0 -61
  216. package/tests/server.js +0 -510
  217. package/tests/smtp_client/auth.js +0 -105
  218. package/tests/smtp_client/basic.js +0 -101
  219. package/tests/smtp_client.js +0 -80
  220. package/tests/tls_socket.js +0 -333
  221. package/tests/transaction.js +0 -284
  222. /package/docs/{plugins → deprecated}/dkim_sign.md +0 -0
  223. /package/docs/{plugins → deprecated}/dkim_verify.md +0 -0
  224. /package/docs/{plugins → deprecated}/dnsbl.md +0 -0
  225. /package/docs/{plugins → deprecated}/dnswl.md +0 -0
  226. /package/docs/{plugins → deprecated}/rcpt_to.routes.md +0 -0
  227. /package/{tests → test}/.eslintrc.yaml +0 -0
  228. /package/{tests → test}/config/auth_flat_file.ini +0 -0
  229. /package/{tests → test}/config/dhparams.pem +0 -0
  230. /package/{tests → test}/config/host_list +0 -0
  231. /package/{tests → test}/config/outbound_tls_cert.pem +0 -0
  232. /package/{tests → test}/config/outbound_tls_key.pem +0 -0
  233. /package/{tests → test}/config/smtp_forward.ini +0 -0
  234. /package/{tests → test}/config/tls/ec.pem +0 -0
  235. /package/{tests → test}/config/tls/haraka.local.pem +0 -0
  236. /package/{tests → test}/config/tls/mismatched.pem +0 -0
  237. /package/{tests → test}/config/tls.ini +0 -0
  238. /package/{tests → test}/config/tls_cert.pem +0 -0
  239. /package/{tests → test}/config/tls_key.pem +0 -0
  240. /package/{tests → test}/fixtures/todo_qfile.txt +0 -0
  241. /package/{tests → test}/installation/config/test-plugin-flat +0 -0
  242. /package/{tests → test}/installation/config/test-plugin.ini +0 -0
  243. /package/{tests → test}/installation/config/tls.ini +0 -0
  244. /package/{tests → test}/installation/node_modules/load_first/index.js +0 -0
  245. /package/{tests → test}/installation/node_modules/load_first/package.json +0 -0
  246. /package/{tests → test}/installation/node_modules/test-plugin/config/test-plugin-flat +0 -0
  247. /package/{tests → test}/installation/node_modules/test-plugin/config/test-plugin.ini +0 -0
  248. /package/{tests → test}/installation/node_modules/test-plugin/package.json +0 -0
  249. /package/{tests → test}/installation/node_modules/test-plugin/test-plugin.js +0 -0
  250. /package/{tests → test}/installation/plugins/base_plugin.js +0 -0
  251. /package/{tests → test}/installation/plugins/folder_plugin/index.js +0 -0
  252. /package/{tests → test}/installation/plugins/folder_plugin/package.json +0 -0
  253. /package/{tests → test}/installation/plugins/inherits.js +0 -0
  254. /package/{tests → test}/installation/plugins/load_first.js +0 -0
  255. /package/{tests → test}/installation/plugins/plugin.js +0 -0
  256. /package/{tests → test}/installation/plugins/tls.js +0 -0
  257. /package/{tests → test}/loud/config/dhparams.pem +0 -0
  258. /package/{tests → test}/loud/config/tls/goobered.pem +0 -0
  259. /package/{tests → test}/loud/config/tls.ini +0 -0
  260. /package/{tests → test}/mail_specimen/base64-root-part.txt +0 -0
  261. /package/{tests → test}/mail_specimen/varied-fold-lengths-preserve-data.txt +0 -0
  262. /package/{tests → test}/queue/1507509981169_1507509981169_0_61403_e0Y0Ym_1_fixed +0 -0
  263. /package/{tests → test}/queue/1507509981169_1507509981169_0_61403_e0Y0Ym_1_haraka +0 -0
  264. /package/{tests → test}/queue/1508269674999_1508269674999_0_34002_socVUF_1_haraka +0 -0
  265. /package/{tests → test}/queue/1508455115683_1508455115683_0_90253_9Q4o4V_1_haraka +0 -0
  266. /package/{tests → test}/queue/zero-length +0 -0
  267. /package/{tests → test}/test-queue/delete-me +0 -0
package/Dockerfile CHANGED
@@ -13,7 +13,7 @@
13
13
  # DOCKER-VERSION 0.5.3
14
14
 
15
15
  # See http://phusion.github.io/baseimage-docker/
16
- FROM phusion/baseimage:master
16
+ FROM phusion/baseimage:focal-1.2.0
17
17
 
18
18
  MAINTAINER Justin Plock <jplock@gmail.com>
19
19
 
@@ -23,8 +23,8 @@ RUN /etc/my_init.d/00_regen_ssh_host_keys.sh
23
23
 
24
24
  RUN sed 's/main$/main universe/' -i /etc/apt/sources.list
25
25
  RUN DEBIAN_FRONTEND=noninteractive apt-get -y -q update
26
- RUN DEBIAN_FRONTEND=noninteractive apt-get -y -q install python-software-properties g++ make git curl
27
- RUN curl -sL https://deb.nodesource.com/setup_10.x | setuser root bash -
26
+ RUN DEBIAN_FRONTEND=noninteractive apt-get -y -q install software-properties-common g++ make git curl
27
+ RUN curl -sL https://deb.nodesource.com/setup_18.x | setuser root bash -
28
28
  RUN DEBIAN_FRONTEND=noninteractive apt-get -y -q install nodejs && \
29
29
  apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
30
30
 
package/Plugins.md CHANGED
@@ -1,115 +1,128 @@
1
1
  # Haraka Plugins
2
2
 
3
- To create your own plugin, see:
4
- - the [plugin template][template] that includes all the boilerplate
5
- - the [Write a Plugin][write-plugin] tutorial
6
- - the [Plugins](plugins-doc) section of [the manual](https://haraka.github.io)
3
+ To create your own plugin, see [Write a Plugin][write-plugin].
7
4
 
8
5
  ## Installing NPM packaged plugins
9
6
 
10
- NPM packaged plugins can be installed in the `npm` directory where Haraka was installed (where depends on your OS platform and whether you specified `-g`) or the Haraka install directory (haraka -i this_path). This example installs _my-great-plugin_ in the Haraka install directory:
7
+ Plugins can be installed in the directory where Haraka was installed (where depends on your OS platform and whether you specified `-g`) or the Haraka install directory (haraka -i this\_path). This example installs _my-great-plugin_ in the Haraka install directory:
11
8
 
12
- ````
9
+ ```
13
10
  cd /etc/haraka
14
11
  npm install haraka-plugin-my-great-plugin
15
- ````
12
+ ```
16
13
 
17
14
  NPM then installs the plugin and its dependencies in a `node_modules` directory within the Haraka install directory.
18
15
 
19
16
  ## Plugin Registry
20
17
 
21
- A mostly comprehensive list of plugins known to be working and maintained.
22
- Create a PR adding yours to this list.
23
-
24
- | Plugin | Description |
25
- | ------------------------- | ------------- |
26
- | [access][url-access] | ACLs based on IPs, domains, email addrs, etc. |
27
- | [accounting_files][url-acc-files] | Retrieve, Store and Archive custom information of outbound traffic |
28
- | [aliases][url-aliases] | Email aliases |
29
- | [ASN][url-asn] | Get ASN info for remote senders |
30
- | [attachment][url-attach] | Restrict attachment types |
31
- | [auth-enc-file][url-authencflat] | Auth against user/pass in an encrypted file |
32
- | auth/[flat_file][url-authflat] | Auth against user/pass in a file |
33
- | auth/[auth_bridge][url-authbridge] | Auth against remote MTA |
34
- | [auth-imap][url-auth-imap] | Auth against IMAP server |
35
- | auth/[auth_ldap][url-auth-ldap] | Auth against LDAP |
36
- | auth/[auth_proxy][url-authproxy] | Auth against remote MTA |
37
- | auth/[auth_vpopmaild][url-authvpop] | Auth against vpopmaild |
38
- | [avg][url-avg] | AVG antivirus scanner |
39
- | [backscatterer][url-scatter] | Check remote IP against ips.backscatterer.org |
40
- | [block_me][url-blockme] | Populate block list via forwarded emails |
41
- | [bounce][url-bounce] | Many options for bounce processing |
42
- | [clamd][url-clamd] | Anti-Virus scanning with ClamAV |
43
- | [connect.p0f][url-p0f] | TCP Fingerprinting |
44
- | [data.signatures][url-sigs] | Block emails whose bodies match signatures |
45
- | [uribl][url-uribl] | Block based on URI blacklists |
46
- | [dcc][url-dcc] | Distributed Checksum Clearinghouse |
47
- | [delay_deny][url-delay] | Delays all pre-DATA 'deny' results |
48
- | [dkim_sign][url-sign] | DKIM sign outbound messages |
49
- | [dkim_verify][url-dkimv] | Verify DKIM signatures on incoming messages |
50
- | [opendkim][url-opendkim] | DKIM sign and verify email messages |
51
- | [dnsbl][url-dnsbl] | Check remote MTAs against DNS blacklists |
52
- | [dnswl][url-dnswl] | Check remote MTAs against DNS whitelists |
53
- | [dovecot][url-dovecot] | Recipient validation & SMTP AUTH against dovecot |
54
- | [early_talker][url-early] | Reject remotes that talk early |
55
- | [esets][url-esets] | Virus scanning with ESET Mail Security |
56
- | [fcrdns][url-fcrdns] | Forward Confirmed reverse DNS |
57
- | [geoip][url-geoip] | get geographic information about mail senders |
58
- | [greylist][url-greylist] | Greylisting |
59
- | [headers][url-headers] | Inspect and verify various email headers |
60
- | [helo.checks][url-helo] | Validaty checks of the HELO string |
61
- | [karma][url-karma] | Dynamic scoring of incoming connections |
62
- | [known-senders][url-known-senders] | Reward emails from those you send mail to |
63
- | [LDAP][url-ldap] | Aliases, Auth, and Recipient validation from LDAP |
64
- | [Limit][url-limit] | Apply many types of limits to SMTP connections |
65
- | [log.elasticsearch][url-elastic] | Store message metadata in Elasticsearch |
66
- | [log reader][url-logreader] | extract log entries from the haraka log file |
67
- | [syslog][url-syslog] | Log to syslog |
68
- | [mail_from.is_resolvable][url-mfres] | Verifies the MAIL FROM domain resolves to a MX |
69
- | [messagesniffer][url-msgsniff] | Anti-spam via [MessageSniffer][url-ms] |
70
- | [milter][url-milter] | milter support |
71
- | [mongodb][mongo-url] | Queue emails to MongoDB |
72
- | [outbound-logger][url-outbound-logger] | JSON logging of outbound email traffic. Logs useful metadata about delivered/bounced emails |
73
- | [prevent_credential_leaks][url-creds] | Prevent users from emailing their credentials |
74
- | [process_title][url-proctitle] | Populate `ps` output with activity counters |
75
- | queue/[discard][url-qdisc] | queues messages to /dev/null |
76
- | queue/[lmtp][url-qlmtp] | deliver queued messages via LMTP |
77
- | queue/[qmail-queue][url-qmail] | queue to qmail |
78
- | queue/[quarantine][url-qquart] | queue to a quarantine directory |
79
- | queue/[rabbitmq][url-qrabbit] | queue to RabbitMQ |
80
- | queue/[rabbitmq_amqplib][url-qrabbita] | queue to RabbitMQ using amqplib |
81
- | queue/[rails][url-qrails] | queue messages to a Rails app using [Action Mailbox][url-action-mailbox] |
82
- | queue/[smtp_bridge][url-qbridge] | Bridge SMTP sessions to another MTA |
83
- | queue/[smtp_forward][url-qforward] | Forward emails to another MTA |
84
- | queue/[smtp_proxy][url-qproxy] | Proxy SMTP connections to another MTA |
85
- | [recipient-routes][url-rroutes] | Route emails based on their recipient(s) |
86
- | [redis][url-redis] | multi-purpose Redis db connection(s) |
87
- | [rcpt_to.in_host_list][url-rhost] | Define local email domains in a file |
88
- | [rcpt_to.ldap][url-rcpt-ldap] | Validate recipients against LDAP |
89
- | [rcpt-postgresql][url-postgres] | validate recipients against PostgreSQL
90
- | [rcpt_to.qmail_deliverable][url-rqmd] | Validate recipients against Qmail-Deliverable |
91
- | [record_envelope_addresses][url-recordenv] | Adds message headers with ENV recips |
92
- | [relay][url-relay] | Manage relay permissions |
93
- | [reseed_rng][url-rng] | Reseed the RNG |
94
- | [rspamd][url-rspamd] | Scan emails with rspamd |
95
- | [spamassassin][url-spamass] | Scan emails with SpamAssassin |
96
- | [spf][url-spf] | Perform SPF checks |
97
- | [srs][url-srs] | Sender Rewriting Scheme |
98
- | [tarpit][url-tarpit] | Slow down connections |
99
- | [tls][url-tls] | Implements TLS |
100
- | [toobusy][url-toobusy] | Defers connections when too busy |
101
- | [vmta][url-vmta] | Virtual MTA management |
102
- | [watch][url-watch] | Watch live SMTP traffic in a web interface |
103
- | [wildduck][url-wildduck] | provides recipient checks against Wild Duck |
104
- | [xclient][url-xclient] | Implements XCLIENT |
18
+ A comprehensive list of known plugins. Create a PR to add yours to these lists.
105
19
 
20
+ ### Auth Plugins
106
21
 
22
+ | Name | Description |
23
+ | -------------------------------- | ------------------------------------------------- |
24
+ | [auth-enc-file][url-authencflat] | Auth against user/pass in an encrypted file |
25
+ | [flat_file][url-authflat] | Auth against user/pass in a file |
26
+ | [auth_bridge][url-authbridge] | Auth against remote MTA |
27
+ | [auth-imap][url-auth-imap] | Auth against IMAP server |
28
+ | [auth_ldap][url-auth-ldap] | Auth against LDAP |
29
+ | [auth_proxy][url-authproxy] | Auth against remote MTA |
30
+ | [auth_vpopmaild][url-authvpop] | Auth against vpopmaild |
31
+ | [dkim][url-dkim] | DKIM sign & verify |
32
+ | [dovecot][url-dovecot] | SMTP AUTH & recipient validation against dovecot |
33
+ | [LDAP][url-ldap] | Aliases, Auth, and Recipient validation from LDAP |
34
+ | [mailauth][url-mailauth] | Email Auth (SPF, DKIM, DMARC, ARC, & BIMI) |
35
+ | [opendkim][url-opendkim] | DKIM sign and verify email messages |
36
+ | [spf][url-spf] | Perform SPF checks |
37
+
38
+ ### Queue Plugins
39
+
40
+ | Name | Description |
41
+ | -------------------------------- | ------------------------------------------------------------------------ |
42
+ | [discard][url-qdisc] | queues messages to /dev/null |
43
+ | [kafka][url-kafka] | Queue inbound mail to a Kafka topic |
44
+ | [lmtp][url-qlmtp] | deliver queued messages via LMTP |
45
+ | [mongodb][mongo-url] | Queue emails to MongoDB |
46
+ | [qmail-queue][url-qmail] | queue to qmail |
47
+ | [quarantine][url-qquart] | queue to a quarantine directory |
48
+ | [rabbitmq][url-qrabbit] | queue to RabbitMQ |
49
+ | [rabbitmq_amqplib][url-qrabbita] | queue to RabbitMQ using amqplib |
50
+ | [rails][url-qrails] | queue messages to a Rails app using [Action Mailbox][url-action-mailbox] |
51
+ | [smtp_bridge][url-qbridge] | Bridge SMTP sessions to another MTA |
52
+ | [smtp_forward][url-qforward] | Forward emails to another MTA |
53
+ | [smtp_proxy][url-qproxy] | Proxy SMTP connections to another MTA |
54
+ | [wildduck][url-wildduck] | queue messages to Wild Duck |
55
+
56
+ ### Filtering Plugins
57
+
58
+ | Name | Description |
59
+ | ------------------------------ | ------------------------------------------ |
60
+ | [attachment][url-attach] | Restrict attachment types |
61
+ | [avg][url-avg] | AVG antivirus scanner |
62
+ | [clamd][url-clamd] | Anti-Virus scanning with ClamAV |
63
+ | [data.signatures][url-sigs] | Block emails whose bodies match signatures |
64
+ | [dcc][url-dcc] | Distributed Checksum Clearinghouse |
65
+ | [esets][url-esets] | Virus scanning with ESET Mail Security |
66
+ | [messagesniffer][url-msgsniff] | Anti-spam via [MessageSniffer][url-ms] |
67
+ | [milter][url-milter] | milter support |
68
+ | [rspamd][url-rspamd] | Scan emails with rspamd |
69
+ | [spamassassin][url-spamass] | Scan emails with SpamAssassin |
70
+ | [uribl][url-uribl] | Block based on URI blacklists |
71
+
72
+ ### Every other Plugin
73
+
74
+ | Name | Description |
75
+ | ------------------------------------------ | ------------------------------------------------------------------------------------------- |
76
+ | [access][url-access] | ACLs based on IPs, domains, email addrs, etc. |
77
+ | [accounting_files][url-acc-files] | Retrieve, Store and Archive custom information of outbound traffic |
78
+ | [aliases][url-aliases] | Email aliases |
79
+ | [ASN][url-asn] | Get ASN info for remote senders |
80
+ | [block_me][url-blockme] | Populate block list via forwarded emails |
81
+ | [bounce][url-bounce] | Many options for bounce processing |
82
+ | [delay_deny][url-delay] | Delays all pre-DATA 'deny' results |
83
+ | [dns-list][url-dns-list] | Check remote MTAs against DNS black, white, and karma lists |
84
+ | [dovecot][url-dovecot] | Recipient validation & SMTP AUTH against dovecot |
85
+ | [early_talker][url-early] | Reject remotes that talk early |
86
+ | [fcrdns][url-fcrdns] | Forward Confirmed reverse DNS |
87
+ | [geoip][url-geoip] | get geographic information about mail senders |
88
+ | [greylist][url-greylist] | Greylisting |
89
+ | [headers][url-headers] | Inspect and verify various email headers |
90
+ | [helo.checks][url-helo] | Validity checks of the HELO string |
91
+ | [karma][url-karma] | Dynamic scoring of incoming connections |
92
+ | [known-senders][url-known-senders] | Reward emails from those you send mail to |
93
+ | [LDAP][url-ldap] | Aliases, Auth, and Recipient validation from LDAP |
94
+ | [Limit][url-limit] | Apply many types of limits to SMTP connections |
95
+ | [log.elasticsearch][url-elastic] | Store message metadata in Elasticsearch |
96
+ | [log reader][url-logreader] | extract log entries from the haraka log file |
97
+ | [syslog][url-syslog] | Log to syslog |
98
+ | [mail_from.is_resolvable][url-mfres] | Verifies the MAIL FROM domain resolves to a MX |
99
+ | [outbound-logger][url-outbound-logger] | JSON logging of outbound email traffic. Logs useful metadata about delivered/bounced emails |
100
+ | [p0f][url-p0f] | TCP Fingerprinting |
101
+ | [prevent_credential_leaks][url-creds] | Prevent users from emailing their credentials |
102
+ | [process_title][url-proctitle] | Populate `ps` output with activity counters |
103
+ | [recipient-routes][url-rroutes] | Route emails based on their recipient(s) |
104
+ | [redis][url-redis] | multi-purpose Redis db connection(s) |
105
+ | [rcpt_to.in_host_list][url-rhost] | Define local email domains in a file |
106
+ | [rcpt_to.ldap][url-rcpt-ldap] | Validate recipients against LDAP |
107
+ | [rcpt-postgresql][url-postgres] | validate recipients against PostgreSQL |
108
+ | [qmail-deliverable][url-rqmd] | Validate recipients against Qmail-Deliverable |
109
+ | [record_envelope_addresses][url-recordenv] | Adds message headers with ENV recips |
110
+ | [relay][url-relay] | Manage relay permissions |
111
+ | [reseed_rng][url-rng] | Reseed the RNG |
112
+ | [batv-srs][url-batv] | BATV & SRS |
113
+ | [srs][url-srs] | Sender Rewriting Scheme |
114
+ | [tarpit][url-tarpit] | Slow down connections |
115
+ | [tls][url-tls] | Implements TLS |
116
+ | [toobusy][url-toobusy] | Defers connections when too busy |
117
+ | [vmta][url-vmta] | Virtual MTA management |
118
+ | [watch][url-watch] | Watch live SMTP traffic in a web interface |
119
+ | [wildduck][url-wildduck] | provides recipient checks against Wild Duck |
120
+ | [xclient][url-xclient] | Implements XCLIENT |
107
121
 
108
122
  <!-- URLs tucked safely out of the way -->
109
123
 
110
- [template]: https://github.com/haraka/haraka-plugin-template
111
124
  [write-plugin]: https://github.com/haraka/Haraka/wiki/Write-a-Plugin
112
- [plugins-doc]: https://haraka.github.io/manual/Plugins.html
125
+ [plugins-doc]: https://haraka.github.io/core/Plugins
113
126
  [url-access]: https://github.com/haraka/haraka-plugin-access
114
127
  [url-acc-files]: https://github.com/acharkizakaria/haraka-plugin-accounting-files/blob/master/README.md
115
128
  [url-action-mailbox]: https://guides.rubyonrails.org/action_mailbox_basics.html
@@ -123,11 +136,12 @@ Create a PR adding yours to this list.
123
136
  [url-auth-ldap]: https://github.com/haraka/haraka-plugin-auth-ldap
124
137
  [url-authproxy]: https://github.com/haraka/Haraka/blob/master/docs/plugins/auth/auth_proxy.md
125
138
  [url-authvpop]: https://github.com/haraka/Haraka/blob/master/docs/plugins/auth/auth_vpopmaild.md
126
- [url-avg]: https://github.com/haraka/Haraka/blob/master/docs/plugins/avg.md
139
+ [url-avg]: https://github.com/haraka/haraka-plugin-avg
140
+ [url-batv]: https://www.npmjs.com/package/haraka-plugin-batv
127
141
  [url-scatter]: https://github.com/haraka/Haraka/blob/master/docs/plugins/backscatterer.md
128
142
  [url-blockme]: https://github.com/haraka/Haraka/blob/master/docs/plugins/block_me.md
129
- [url-bounce]: https://github.com/haraka/Haraka/blob/master/docs/plugins/bounce.md
130
- [url-clamd]: https://github.com/haraka/Haraka/blob/master/docs/plugins/clamd.md
143
+ [url-bounce]: https://www.npmjs.com/package/haraka-plugin-bounce
144
+ [url-clamd]: https://github.com/haraka/haraka-plugin-clamd
131
145
  [url-dovecot]: https://github.com/haraka/haraka-plugin-dovecot
132
146
  [url-fcrdns]: https://github.com/haraka/haraka-plugin-fcrdns
133
147
  [url-p0f]: https://github.com/haraka/haraka-plugin-p0f
@@ -136,17 +150,15 @@ Create a PR adding yours to this list.
136
150
  [url-uribl]: https://github.com/haraka/haraka-plugin-uribl
137
151
  [url-dcc]: https://github.com/haraka/haraka-plugin-dcc
138
152
  [url-delay]: https://github.com/haraka/Haraka/blob/master/docs/plugins/delay_deny.md
139
- [url-sign]: https://github.com/haraka/Haraka/blob/master/docs/plugins/dkim_sign.md
140
- [url-dkimv]: https://github.com/haraka/Haraka/blob/master/docs/plugins/dkim_verify.md
153
+ [url-dkim]: https://github.com/haraka/haraka-plugin-dkim
141
154
  [url-opendkim]: https://www.npmjs.com/package/haraka-plugin-opendkim
142
- [url-dnsbl]: https://github.com/haraka/Haraka/blob/master/docs/plugins/dnsbl.md
143
- [url-dnswl]: https://github.com/haraka/Haraka/blob/master/docs/plugins/dnswl.md
155
+ [url-dns-list]: https://github.com/haraka/haraka-plugin-dns-list
144
156
  [url-early]: https://github.com/haraka/Haraka/blob/master/docs/plugins/early_talker.md
145
- [url-esets]: https://github.com/haraka/Haraka/blob/master/docs/plugins/esets.md
157
+ [url-esets]: https://github.com/haraka/haraka-plugin-esets
146
158
  [url-geoip]: https://github.com/haraka/haraka-plugin-geoip
147
159
  [url-graph]: https://github.com/haraka/haraka-plugin-graph
148
- [url-greylist]: https://github.com/haraka/Haraka/blob/master/docs/plugins/greylist.md
149
- [url-helo]: https://github.com/haraka/Haraka/blob/master/docs/plugins/helo.checks.md
160
+ [url-greylist]: https://github.com/haraka/haraka-plugin-greylist
161
+ [url-helo]: https://github.com/haraka/haraka-plugin-helo.checks
150
162
  [url-karma]: https://github.com/haraka/haraka-plugin-karma
151
163
  [url-known-senders]: https://github.com/haraka/haraka-plugin-known-senders
152
164
  [url-elastic]: https://github.com/haraka/haraka-plugin-elasticsearch/
@@ -156,7 +168,7 @@ Create a PR adding yours to this list.
156
168
  [url-logreader]: https://github.com/haraka/haraka-plugin-log-reader
157
169
  [url-milter]: https://github.com/haraka/haraka-plugin-milter
158
170
  [url-mfres]: https://github.com/haraka/Haraka/blob/master/docs/plugins/mail_from.is_resolvable.md
159
- [url-msgsniff]: https://github.com/haraka/Haraka/blob/master/docs/plugins/messagesniffer.md
171
+ [url-msgsniff]: https://github.com/haraka/haraka-plugin-messagesniffer
160
172
  [url-ms]: http://www.armresearch.com/Products/
161
173
  [url-creds]: https://github.com/haraka/Haraka/blob/master/docs/plugins/prevent_credential_leaks.md
162
174
  [url-postgres]: https://github.com/haraka/haraka-plugin-rcpt-postgresql
@@ -180,7 +192,7 @@ Create a PR adding yours to this list.
180
192
  [url-relay]: https://github.com/haraka/Haraka/blob/master/docs/plugins/relay.md
181
193
  [url-rng]: https://github.com/haraka/Haraka/blob/master/docs/plugins/reseed_rng.md
182
194
  [url-rspamd]: https://github.com/haraka/haraka-plugin-rspamd
183
- [url-spamass]: https://github.com/haraka/Haraka/blob/master/docs/plugins/spamassassin.md
195
+ [url-spamass]: https://github.com/haraka/haraka-plugin-spamassassin
184
196
  [url-spf]: https://github.com/haraka/haraka-plugin-spf
185
197
  [url-srs]: https://github.com/swerter/haraka-plugins/blob/master/plugins/srs.js
186
198
  [url-tarpit]: https://github.com/haraka/Haraka/blob/master/docs/plugins/tarpit.md
@@ -192,4 +204,5 @@ Create a PR adding yours to this list.
192
204
  [url-xclient]: https://github.com/haraka/Haraka/blob/master/docs/plugins/xclient.md
193
205
  [mongo-url]: https://github.com/Helpmonks/haraka-plugin-mongodb
194
206
  [url-outbound-logger]: https://github.com/mr-karan/haraka-plugin-outbound-logger
195
-
207
+ [url-kafka]: https://github.com/benjamonnguyen/haraka-plugin-queue-kafka
208
+ [url-mailauth]: https://www.npmjs.com/package/haraka-plugin-mailauth
package/README.md CHANGED
@@ -1,12 +1,8 @@
1
-
2
- Haraka - a Node.js Mail Server
3
- ------------------------------
1
+ ## Haraka - a Node.js Mail Server
4
2
 
5
3
  ![Tests](https://github.com/haraka/Haraka/actions/workflows/ci.yml/badge.svg)
6
4
  [![Coverage Status][cov-img]][cov-url]
7
5
 
8
-
9
-
10
6
  Haraka is a highly scalable [node.js][1] email server with a modular
11
7
  plugin architecture. Haraka can serve thousands of concurrent connections
12
8
  and deliver thousands of messages per second. Haraka and plugins are written
@@ -26,9 +22,8 @@ queued for outbound delivery.
26
22
 
27
23
  ### Getting Help
28
24
 
29
- * [Join the mailing list][8] (implemented as a Haraka plugin)
30
- * [GitHub Issues][15]
31
-
25
+ - [Join the mailing list][8] (implemented as a Haraka plugin)
26
+ - [GitHub Issues][15]
32
27
 
33
28
  ### Screencast
34
29
 
@@ -49,7 +44,6 @@ code in Haraka.
49
44
  Plugins are provided for running mail through [SpamAssassin][9], validating
50
45
  [HELO][10] names, checking [DNS Blocklists][11], and [many others][12].
51
46
 
52
-
53
47
  ### Installing Haraka
54
48
 
55
49
  Haraka requires [node.js][1] to run. Install Haraka with [npm][2]:
@@ -93,7 +87,6 @@ overall behaviour of Haraka. By default, only messages to domains listed
93
87
  in `config/host_list` will be accepted and then delivered via the
94
88
  `smtp-forward` plugin. Configure the destination in `config/smtp_forward.ini`.
95
89
 
96
-
97
90
  ### Read the Fine Manual
98
91
 
99
92
  ```sh
@@ -103,7 +96,6 @@ haraka -h plugins/$name
103
96
  The docs detail how each plugin is configured. After editing
104
97
  `config/plugins`, restart Haraka and enjoy!
105
98
 
106
-
107
99
  ### Running from git
108
100
 
109
101
  If you are unable to use npm to install Haraka, you can run from git by
@@ -140,14 +132,13 @@ SpamAssassin and a hacker on [Qpsmtpd][13].
140
132
  [6]: https://github.com/haraka/Haraka/blob/master/docs/plugins/dkim_sign.md
141
133
  [7]: https://en.wikipedia.org/wiki/Mail_delivery_agent
142
134
  [8]: mailto:haraka-sub@harakamail.com
143
- [9]: https://haraka.github.io/manual/plugins/spamassassin.html
144
- [10]: https://haraka.github.io/manual/plugins/helo.checks.html
145
- [11]: https://haraka.github.io/manual/plugins/dnsbl.html
146
- [12]: https://github.com/haraka/Haraka/tree/master/plugins
135
+ [9]: https://haraka.github.io/plugins/spamassassin
136
+ [10]: https://haraka.github.io/plugins/helo.checks
137
+ [11]: https://haraka.github.io/plugins/dnsbl
138
+ [12]: https://github.com/haraka/Haraka/blob/master/Plugins.md
147
139
  [13]: https://github.com/smtpd/qpsmtpd/
148
140
  [15]: https://github.com/haraka/Haraka/issues
149
141
  [16]: https://github.com/haraka/Haraka/blob/master/LICENSE
150
142
  [17]: https://github.com/baudehlo
151
-
152
143
  [cov-img]: https://codecov.io/github/haraka/Haraka/coverage.svg
153
144
  [cov-url]: https://codecov.io/github/haraka/Haraka?branch=master
package/TODO CHANGED
@@ -1,8 +1,6 @@
1
1
  - Milter support
2
2
  - Ability to modify the body of email
3
3
  - Done for banners. Modifying the rest, not so much.
4
- - Plugins to copy from Qpsmtpd:
5
- - dspam
6
4
 
7
5
  Outbound improvements
8
6
  - Provide better command line tools for manipulating/inspecting the queue
@@ -16,29 +14,8 @@ Plugin behavior changes
16
14
  only when requested, with a sunset date.
17
15
  - data.uribl; expand short URLs before lookups, add support for uri-a (sbl.spamhaus.org), uri-ns, uri-ns-a lookup types.
18
16
 
19
-
20
- Remove the following deprecated plugins
21
- - rdns.regexp
22
- - data.nomsgid (subsumed into data.headers.js)
23
- - data.noreceived ""
24
- - data.rfc5322_header_checks ""
25
- - daemonize
26
- - mail_from.nobounces (subsumed into bounce.js)
27
- - mail_from.blocklist
28
- - rcpt_to.blocklist
29
- - lookup_rdns_strict
30
- - mail_from.access (replaced by access.js)
31
- - rcpt_to.access ""
32
- - connect.rdns_access ""
33
- - relay_acl (replaced by relay.js)
34
- - relay_all ""
35
- - relay_force_routing ""
36
-
37
- Move the following plugins:
38
- - test_queue -> queue/test_queue
39
-
40
17
  Built-in HTTP server
41
- - uses the same TLS/SSL certs as smtpd
18
+ - use the same TLS/SSL certs as smtpd
42
19
  - auth against SMTP-AUTH provider
43
20
 
44
21
  Update tests to detect HARAKA_NETWORK_TESTS and skip network tests unless it's set