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.
- package/.eslintrc.yaml +5 -9
- package/.prettierrc.yml +1 -0
- package/CONTRIBUTORS.md +11 -0
- package/Changes.md +1393 -1211
- package/Dockerfile +3 -3
- package/Plugins.md +119 -106
- package/README.md +7 -16
- package/TODO +1 -24
- package/bin/haraka +197 -298
- package/config/auth_flat_file.ini +2 -0
- package/config/auth_vpopmaild.ini +4 -2
- package/config/dhparams.pem +8 -0
- package/config/mail_from.is_resolvable.ini +4 -2
- package/config/me +1 -0
- package/config/outbound.ini +0 -2
- package/config/plugins +36 -35
- package/config/rabbitmq_amqplib.ini +8 -1
- package/config/smtp.ini +0 -1
- package/config/smtp.json +17 -0
- package/config/tls_cert.pem +23 -0
- package/config/tls_key.pem +28 -0
- package/connection.js +46 -73
- package/contrib/bsd-rc.d/haraka +3 -1
- package/contrib/plugin2npm.sh +6 -36
- package/docs/Connection.md +1 -1
- package/docs/CoreConfig.md +2 -2
- package/docs/Logging.md +7 -21
- package/docs/Outbound.md +104 -210
- package/docs/Plugins.md +47 -40
- package/docs/Transaction.md +59 -82
- package/docs/{plugins → deprecated}/connect.rdns_access.md +1 -1
- package/docs/{plugins → deprecated}/mail_from.access.md +1 -1
- package/docs/{plugins → deprecated}/rcpt_to.access.md +1 -1
- package/docs/plugins/auth/auth_vpopmaild.md +15 -19
- package/docs/plugins/auth/flat_file.md +23 -30
- package/docs/plugins/queue/rabbitmq_amqplib.md +7 -0
- package/docs/plugins/queue/smtp_forward.md +1 -1
- package/docs/plugins/queue/smtp_proxy.md +5 -10
- package/docs/plugins/relay.md +2 -2
- package/docs/plugins/tls.md +29 -9
- package/endpoint.js +16 -13
- package/haraka.js +10 -14
- package/host_pool.js +5 -5
- package/line_socket.js +3 -4
- package/logger.js +44 -28
- package/outbound/client_pool.js +27 -23
- package/outbound/config.js +4 -6
- package/outbound/fsync_writestream.js +1 -1
- package/outbound/hmail.js +180 -220
- package/outbound/index.js +86 -99
- package/outbound/qfile.js +1 -1
- package/outbound/queue.js +55 -43
- package/outbound/timer_queue.js +3 -2
- package/outbound/tls.js +19 -7
- package/package.json +66 -55
- package/plugins/.eslintrc.yaml +0 -6
- package/plugins/auth/auth_base.js +30 -12
- package/plugins/auth/auth_proxy.js +14 -12
- package/plugins/auth/auth_vpopmaild.js +30 -20
- package/plugins/auth/flat_file.js +17 -12
- package/plugins/block_me.js +1 -1
- package/plugins/data.signatures.js +2 -4
- package/plugins/early_talker.js +2 -1
- package/plugins/mail_from.is_resolvable.js +65 -135
- package/plugins/queue/deliver.js +4 -5
- package/plugins/queue/lmtp.js +11 -14
- package/plugins/queue/qmail-queue.js +2 -2
- package/plugins/queue/quarantine.js +2 -2
- package/plugins/queue/rabbitmq.js +16 -17
- package/plugins/queue/rabbitmq_amqplib.js +1 -1
- package/plugins/queue/smtp_forward.js +6 -6
- package/plugins/queue/smtp_proxy.js +10 -1
- package/plugins/queue/test.js +2 -2
- package/plugins/rcpt_to.host_list_base.js +5 -5
- package/plugins/rcpt_to.in_host_list.js +2 -2
- package/plugins/relay.js +6 -7
- package/plugins/reseed_rng.js +1 -1
- package/plugins/status.js +37 -33
- package/plugins/tls.js +2 -2
- package/plugins/xclient.js +3 -2
- package/plugins.js +51 -54
- package/run_tests +3 -30
- package/server.js +190 -190
- package/smtp_client.js +30 -23
- package/{tests → test}/config/plugins +0 -2
- package/{tests → test}/config/smtp.ini +1 -1
- package/test/config/tls/example.com/_.example.com.key +28 -0
- package/test/config/tls/example.com/example.com.crt +25 -0
- package/test/connection.js +302 -0
- package/test/endpoint.js +94 -0
- package/{tests → test}/fixtures/line_socket.js +1 -1
- package/{tests → test}/fixtures/util_hmailitem.js +19 -25
- package/{tests → test}/host_pool.js +42 -57
- package/test/logger.js +258 -0
- package/test/outbound/hmail.js +141 -0
- package/test/outbound/index.js +220 -0
- package/test/outbound/qfile.js +126 -0
- package/test/outbound_bounce_net_errors.js +142 -0
- package/{tests → test}/outbound_bounce_rfc3464.js +110 -122
- package/test/plugins/auth/auth_base.js +484 -0
- package/test/plugins/auth/auth_vpopmaild.js +83 -0
- package/test/plugins/early_talker.js +104 -0
- package/test/plugins/mail_from.is_resolvable.js +35 -0
- package/test/plugins/queue/smtp_forward.js +206 -0
- package/test/plugins/rcpt_to.host_list_base.js +122 -0
- package/test/plugins/rcpt_to.in_host_list.js +193 -0
- package/test/plugins/relay.js +303 -0
- package/test/plugins/status.js +130 -0
- package/test/plugins/tls.js +70 -0
- package/test/plugins.js +228 -0
- package/{tests → test}/queue/multibyte +0 -0
- package/{tests → test}/queue/plain +0 -0
- package/test/rfc1869.js +73 -0
- package/test/server.js +491 -0
- package/test/smtp_client.js +299 -0
- package/test/tls_socket.js +273 -0
- package/test/transaction.js +270 -0
- package/tls_socket.js +202 -252
- package/transaction.js +9 -24
- package/CONTRIBUTING.md +0 -1
- package/bin/dkimverify +0 -40
- package/config/access.domains +0 -13
- package/config/attachment.ctype.regex +0 -2
- package/config/attachment.filename.regex +0 -1
- package/config/avg.ini +0 -5
- package/config/bounce.ini +0 -15
- package/config/data.headers.ini +0 -61
- package/config/dkim/dkim_key_gen.sh +0 -78
- package/config/dkim_sign.ini +0 -4
- package/config/dkim_verify.ini +0 -7
- package/config/dnsbl.ini +0 -23
- package/config/greylist.ini +0 -43
- package/config/helo.checks.ini +0 -52
- package/config/lookup_rdns.strict.ini +0 -12
- package/config/lookup_rdns.strict.timeout +0 -1
- package/config/lookup_rdns.strict.whitelist +0 -1
- package/config/lookup_rdns.strict.whitelist_regex +0 -5
- package/config/messagesniffer.ini +0 -18
- package/config/rcpt_to.blocklist +0 -1
- package/config/rdns.allow_regexps +0 -0
- package/config/rdns.deny_regexps +0 -0
- package/config/spamassassin.ini +0 -56
- package/config.js +0 -6
- package/dkim.js +0 -614
- package/docs/plugins/avg.md +0 -35
- package/docs/plugins/bounce.md +0 -69
- package/docs/plugins/clamd.md +0 -147
- package/docs/plugins/esets.md +0 -8
- package/docs/plugins/greylist.md +0 -90
- package/docs/plugins/helo.checks.md +0 -135
- package/docs/plugins/messagesniffer.md +0 -163
- package/docs/plugins/relay_acl.md +0 -29
- package/docs/plugins/relay_all.md +0 -15
- package/docs/plugins/relay_force_routing.md +0 -33
- package/docs/plugins/spamassassin.md +0 -180
- package/outbound/mx_lookup.js +0 -70
- package/plugins/auth/auth_ldap.js +0 -3
- package/plugins/avg.js +0 -162
- package/plugins/backscatterer.js +0 -25
- package/plugins/bounce.js +0 -381
- package/plugins/clamd.js +0 -381
- package/plugins/data.headers.js +0 -4
- package/plugins/data.uribl.js +0 -4
- package/plugins/dkim_sign.js +0 -395
- package/plugins/dkim_verify.js +0 -62
- package/plugins/dns_list_base.js +0 -221
- package/plugins/dnsbl.js +0 -146
- package/plugins/dnswl.js +0 -58
- package/plugins/esets.js +0 -71
- package/plugins/graph.js +0 -5
- package/plugins/greylist.js +0 -645
- package/plugins/helo.checks.js +0 -533
- package/plugins/messagesniffer.js +0 -381
- package/plugins/rcpt_to.ldap.js +0 -3
- package/plugins/rcpt_to.max_count.js +0 -24
- package/plugins/relay_all.js +0 -13
- package/plugins/spamassassin.js +0 -384
- package/tests/config/dkim/example.com/dns +0 -29
- package/tests/config/dkim/example.com/private +0 -6
- package/tests/config/dkim/example.com/public +0 -4
- package/tests/config/dkim/example.com/selector +0 -1
- package/tests/config/dkim.private.key +0 -6
- package/tests/config/dkim_sign.ini +0 -4
- package/tests/config/helo.checks.ini +0 -52
- package/tests/connection.js +0 -327
- package/tests/endpoint.js +0 -128
- package/tests/fixtures/vm_harness.js +0 -59
- package/tests/logger.js +0 -327
- package/tests/outbound/hmail.js +0 -112
- package/tests/outbound/index.js +0 -324
- package/tests/outbound/qfile.js +0 -67
- package/tests/outbound_bounce_net_errors.js +0 -173
- package/tests/plugins/auth/auth_base.js +0 -463
- package/tests/plugins/auth/auth_vpopmaild.js +0 -91
- package/tests/plugins/bounce.js +0 -307
- package/tests/plugins/clamd.js +0 -224
- package/tests/plugins/deprecated/relay_acl.js +0 -140
- package/tests/plugins/deprecated/relay_all.js +0 -59
- package/tests/plugins/dkim_sign.js +0 -315
- package/tests/plugins/dkim_signer.js +0 -108
- package/tests/plugins/dns_list_base.js +0 -259
- package/tests/plugins/dnsbl.js +0 -101
- package/tests/plugins/early_talker.js +0 -115
- package/tests/plugins/greylist.js +0 -58
- package/tests/plugins/helo.checks.js +0 -525
- package/tests/plugins/mail_from.is_resolvable.js +0 -116
- package/tests/plugins/queue/smtp_forward.js +0 -221
- package/tests/plugins/rcpt_to.host_list_base.js +0 -132
- package/tests/plugins/rcpt_to.in_host_list.js +0 -218
- package/tests/plugins/relay.js +0 -339
- package/tests/plugins/spamassassin.js +0 -171
- package/tests/plugins/status.js +0 -138
- package/tests/plugins/tls.js +0 -84
- package/tests/plugins.js +0 -247
- package/tests/rfc1869.js +0 -61
- package/tests/server.js +0 -510
- package/tests/smtp_client/auth.js +0 -105
- package/tests/smtp_client/basic.js +0 -101
- package/tests/smtp_client.js +0 -80
- package/tests/tls_socket.js +0 -333
- package/tests/transaction.js +0 -284
- /package/docs/{plugins → deprecated}/dkim_sign.md +0 -0
- /package/docs/{plugins → deprecated}/dkim_verify.md +0 -0
- /package/docs/{plugins → deprecated}/dnsbl.md +0 -0
- /package/docs/{plugins → deprecated}/dnswl.md +0 -0
- /package/docs/{plugins → deprecated}/rcpt_to.routes.md +0 -0
- /package/{tests → test}/.eslintrc.yaml +0 -0
- /package/{tests → test}/config/auth_flat_file.ini +0 -0
- /package/{tests → test}/config/dhparams.pem +0 -0
- /package/{tests → test}/config/host_list +0 -0
- /package/{tests → test}/config/outbound_tls_cert.pem +0 -0
- /package/{tests → test}/config/outbound_tls_key.pem +0 -0
- /package/{tests → test}/config/smtp_forward.ini +0 -0
- /package/{tests → test}/config/tls/ec.pem +0 -0
- /package/{tests → test}/config/tls/haraka.local.pem +0 -0
- /package/{tests → test}/config/tls/mismatched.pem +0 -0
- /package/{tests → test}/config/tls.ini +0 -0
- /package/{tests → test}/config/tls_cert.pem +0 -0
- /package/{tests → test}/config/tls_key.pem +0 -0
- /package/{tests → test}/fixtures/todo_qfile.txt +0 -0
- /package/{tests → test}/installation/config/test-plugin-flat +0 -0
- /package/{tests → test}/installation/config/test-plugin.ini +0 -0
- /package/{tests → test}/installation/config/tls.ini +0 -0
- /package/{tests → test}/installation/node_modules/load_first/index.js +0 -0
- /package/{tests → test}/installation/node_modules/load_first/package.json +0 -0
- /package/{tests → test}/installation/node_modules/test-plugin/config/test-plugin-flat +0 -0
- /package/{tests → test}/installation/node_modules/test-plugin/config/test-plugin.ini +0 -0
- /package/{tests → test}/installation/node_modules/test-plugin/package.json +0 -0
- /package/{tests → test}/installation/node_modules/test-plugin/test-plugin.js +0 -0
- /package/{tests → test}/installation/plugins/base_plugin.js +0 -0
- /package/{tests → test}/installation/plugins/folder_plugin/index.js +0 -0
- /package/{tests → test}/installation/plugins/folder_plugin/package.json +0 -0
- /package/{tests → test}/installation/plugins/inherits.js +0 -0
- /package/{tests → test}/installation/plugins/load_first.js +0 -0
- /package/{tests → test}/installation/plugins/plugin.js +0 -0
- /package/{tests → test}/installation/plugins/tls.js +0 -0
- /package/{tests → test}/loud/config/dhparams.pem +0 -0
- /package/{tests → test}/loud/config/tls/goobered.pem +0 -0
- /package/{tests → test}/loud/config/tls.ini +0 -0
- /package/{tests → test}/mail_specimen/base64-root-part.txt +0 -0
- /package/{tests → test}/mail_specimen/varied-fold-lengths-preserve-data.txt +0 -0
- /package/{tests → test}/queue/1507509981169_1507509981169_0_61403_e0Y0Ym_1_fixed +0 -0
- /package/{tests → test}/queue/1507509981169_1507509981169_0_61403_e0Y0Ym_1_haraka +0 -0
- /package/{tests → test}/queue/1508269674999_1508269674999_0_34002_socVUF_1_haraka +0 -0
- /package/{tests → test}/queue/1508455115683_1508455115683_0_90253_9Q4o4V_1_haraka +0 -0
- /package/{tests → test}/queue/zero-length +0 -0
- /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:
|
|
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
|
|
27
|
-
RUN curl -sL https://deb.nodesource.com/
|
|
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
|
-
|
|
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
|
|
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/
|
|
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/
|
|
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://
|
|
130
|
-
[url-clamd]: https://github.com/haraka/
|
|
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-
|
|
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-
|
|
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/
|
|
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/
|
|
149
|
-
[url-helo]: https://github.com/haraka/
|
|
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/
|
|
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/
|
|
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
|

|
|
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
|
-
|
|
30
|
-
|
|
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/
|
|
144
|
-
[10]: https://haraka.github.io/
|
|
145
|
-
[11]: https://haraka.github.io/
|
|
146
|
-
[12]: https://github.com/haraka/Haraka/
|
|
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
|
-
-
|
|
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
|