To create your own plugin, see:

Installing NPM packaged plugins

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:

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 mostly comprehensive list of plugins known to be working and maintained. Create a PR adding yours to this list.

accessACLs based on IPs, domains, email addrs, etc.
accounting_filesRetrieve, Store and Archive custom information of outbound traffic
aliasesEmail aliases
ASNGet ASN info for remote senders
attachmentRestrict attachment types
auth-enc-fileAuth against user/pass in an encrypted file
auth/flat_fileAuth against user/pass in a file
auth/auth_bridgeAuth against remote MTA
auth-imapAuth against IMAP server
auth/auth_ldapAuth against LDAP
auth/auth_proxyAuth against remote MTA
auth/auth_vpopmaildAuth against vpopmaild
avgAVG antivirus scanner
backscattererCheck remote IP against
block_mePopulate block list via forwarded emails
bounceMany options for bounce processing
clamdAnti-Virus scanning with ClamAV
connect.p0fTCP Fingerprinting
data.signaturesBlock emails whose bodies match signatures
data.uriblBlock based on URI blacklists
dccDistributed Checksum Clearinghouse
delay_denyDelays all pre-DATA 'deny' results
dkim_signDKIM sign outbound messages
dkim_verifyVerify DKIM signatures on incoming messages
opendkimDKIM sign and verify email messages
dnsblCheck remote MTAs against DNS blacklists
dnswlCheck remote MTAs against DNS whitelists
dovecotRecipient validation & SMTP AUTH against dovecot
early_talkerReject remotes that talk early
esetsVirus scanning with ESET Mail Security
fcrdnsForward Confirmed reverse DNS
geoipget geographic information about mail senders
headersInspect and verify various email headers
helo.checksValidaty checks of the HELO string
karmaDynamic scoring of incoming connections
known-sendersReward emails from those you send mail to
LDAPAliases, Auth, and Recipient validation from LDAP
LimitApply many types of limits to SMTP connections
log.elasticsearchStore message metadata in Elasticsearch
log readerextract log entries from the haraka log file
syslogLog to syslog
mail_from.is_resolvableVerifies the MAIL FROM domain resolves to a MX
messagesnifferAnti-spam via MessageSniffer
miltermilter support
mongodbQueue emails to MongoDB
prevent_credential_leaksPrevent users from emailing their credentials
process_titlePopulate ps output with activity counters
queue/discardqueues messages to /dev/null
queue/lmtpdeliver queued messages via LMTP
queue/qmail-queuequeue to qmail
queue/quarantinequeue to a quarantine directory
queue/rabbitmqqueue to RabbitMQ
queue/rabbitmq_amqplibqueue to RabbitMQ using amqplib
queue/smtp_bridgeBridge SMTP sessions to another MTA
queue/smtp_forwardForward emails to another MTA
queue/smtp_proxyProxy SMTP connections to another MTA
recipient-routesRoute emails based on their recipient(s)
redismulti-purpose Redis db connection(s)
rcpt_to.in_host_listDefine local email domains in a file
rcpt_to.ldapValidate recipients against LDAP
rcpt-postgresqlvalidate recipients against PostgreSQL
rcpt_to.qmail_deliverableValidate recipients against Qmail-Deliverable
record_envelope_addressesAdds message headers with ENV recips
relayManage relay permissions
reseed_rngReseed the RNG
rspamdScan emails with rspamd
spamassassinScan emails with SpamAssassin
spfPerform SPF checks
srsSender Rewriting Scheme
tarpitSlow down connections
tlsImplements TLS
toobusyDefers connections when too busy
vmtaVirtual MTA management
watchWatch live SMTP traffic in a web interface
wildduckprovides recipient checks against Wild Duck
xclientImplements XCLIENT