Plugins
To create your own plugin, see Write a Plugin.
Installing NPM packaged plugins
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:
cd /etc/haraka
npm install haraka-plugin-my-great-plugin
NPM then installs the plugin and its dependencies in a node_modules directory within the Haraka install directory.
Plugin Registry
A comprehensive list of known plugins. Create a PR to add yours to these lists.
Auth Plugins
| Name | Description | 
|---|---|
| auth-enc-file | Auth against user/pass in an encrypted file | 
| flat_file | Auth against user/pass in a file | 
| auth_bridge | Auth against remote MTA | 
| auth-imap | Auth against IMAP server | 
| auth_ldap | Auth against LDAP | 
| auth_proxy | Auth against remote MTA | 
| auth_vpopmaild | Auth against vpopmaild | 
| dkim | DKIM sign & verify | 
| dovecot | SMTP AUTH & recipient validation against dovecot | 
| LDAP | Aliases, Auth, and Recipient validation from LDAP | 
| mailauth | Email Auth (SPF, DKIM, DMARC, ARC, & BIMI) | 
| opendkim | DKIM sign and verify email messages | 
| spf | Perform SPF checks | 
Queue Plugins
| Name | Description | 
|---|---|
| discard | queues messages to /dev/null | 
| kafka | Queue inbound mail to a Kafka topic | 
| lmtp | deliver queued messages via LMTP | 
| mongodb | Queue emails to MongoDB | 
| qmail-queue | queue to qmail | 
| quarantine | queue to a quarantine directory | 
| rabbitmq | queue to RabbitMQ | 
| rabbitmq_amqplib | queue to RabbitMQ using amqplib | 
| rails | queue messages to a Rails app using Action Mailbox | 
| smtp_bridge | Bridge SMTP sessions to another MTA | 
| smtp_forward | Forward emails to another MTA | 
| smtp_proxy | Proxy SMTP connections to another MTA | 
| wildduck | queue messages to Wild Duck | 
Filtering Plugins
| Name | Description | 
|---|---|
| attachment | Restrict attachment types | 
| avg | AVG antivirus scanner | 
| clamd | Anti-Virus scanning with ClamAV | 
| data.signatures | Block emails whose bodies match signatures | 
| dcc | Distributed Checksum Clearinghouse | 
| esets | Virus scanning with ESET Mail Security | 
| messagesniffer | Anti-spam via MessageSniffer | 
| milter | milter support | 
| rspamd | Scan emails with rspamd | 
| spamassassin | Scan emails with SpamAssassin | 
| uribl | Block based on URI blacklists | 
Every other Plugin
| Name | Description | 
|---|---|
| access | ACLs based on IPs, domains, email addrs, etc. | 
| accounting_files | Retrieve, Store and Archive custom information of outbound traffic | 
| aliases | Email aliases | 
| ASN | Get ASN info for remote senders | 
| block_me | Populate block list via forwarded emails | 
| bounce | Many options for bounce processing | 
| delay_deny | Delays all pre-DATA 'deny' results | 
| dns-list | Check remote MTAs against DNS black, white, and karma lists | 
| dovecot | Recipient validation & SMTP AUTH against dovecot | 
| early_talker | Reject remotes that talk early | 
| fcrdns | Forward Confirmed reverse DNS | 
| geoip | get geographic information about mail senders | 
| greylist | Greylisting | 
| headers | Inspect and verify various email headers | 
| helo.checks | Validity checks of the HELO string | 
| karma | Dynamic scoring of incoming connections | 
| known-senders | Reward emails from those you send mail to | 
| LDAP | Aliases, Auth, and Recipient validation from LDAP | 
| Limit | Apply many types of limits to SMTP connections | 
| elasticsearch | Store message metadata in Elasticsearch | 
| log reader | extract log entries from the haraka log file | 
| syslog | Log to syslog | 
| mail_from.is_resolvable | Verifies the MAIL FROM domain resolves to a MX | 
| outbound-logger | JSON logging of outbound email traffic. Logs useful metadata about delivered/bounced emails | 
| p0f | TCP Fingerprinting | 
| prevent_credential_leaks | Prevent users from emailing their credentials | 
| process_title | Populate psoutput with activity counters | 
| recipient-routes | Route emails based on their recipient(s) | 
| redis | multi-purpose Redis db connection(s) | 
| rcpt_to.in_host_list | Define local email domains in a file | 
| rcpt_to.ldap | Validate recipients against LDAP | 
| rcpt-postgresql | validate recipients against PostgreSQL | 
| qmail-deliverable | Validate recipients against Qmail-Deliverable | 
| record_envelope_addresses | Adds message headers with ENV recips | 
| relay | Manage relay permissions | 
| reseed_rng | Reseed the RNG | 
| batv-srs | BATV & SRS | 
| srs | Sender Rewriting Scheme | 
| tarpit | Slow down connections | 
| tls | Implements TLS | 
| toobusy | Defers connections when too busy | 
| vmta | Virtual MTA management | 
| watch | Watch live SMTP traffic in a web interface | 
| wildduck | provides recipient checks against Wild Duck | 
| xclient | Implements XCLIENT |