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

NameDescription
auth-enc-fileAuth against user/pass in an encrypted file
flat_fileAuth against user/pass in a file
auth_bridgeAuth against remote MTA
auth-imapAuth against IMAP server
auth_ldapAuth against LDAP
auth_proxyAuth against remote MTA
auth_vpopmaildAuth against vpopmaild
dkimDKIM sign & verify
dovecotSMTP AUTH & recipient validation against dovecot
LDAPAliases, Auth, and Recipient validation from LDAP
mailauthEmail Auth (SPF, DKIM, DMARC, ARC, & BIMI)
opendkimDKIM sign and verify email messages
spfPerform SPF checks

Queue Plugins

NameDescription
discardqueues messages to /dev/null
kafkaQueue inbound mail to a Kafka topic
lmtpdeliver queued messages via LMTP
mongodbQueue emails to MongoDB
qmail-queuequeue to qmail
quarantinequeue to a quarantine directory
rabbitmqqueue to RabbitMQ
rabbitmq_amqplibqueue to RabbitMQ using amqplib
railsqueue messages to a Rails app using Action Mailbox
smtp_bridgeBridge SMTP sessions to another MTA
smtp_forwardForward emails to another MTA
smtp_proxyProxy SMTP connections to another MTA
wildduckqueue messages to Wild Duck

Filtering Plugins

NameDescription
attachmentRestrict attachment types
avgAVG antivirus scanner
clamdAnti-Virus scanning with ClamAV
data.signaturesBlock emails whose bodies match signatures
dccDistributed Checksum Clearinghouse
esetsVirus scanning with ESET Mail Security
messagesnifferAnti-spam via MessageSniffer
miltermilter support
rspamdScan emails with rspamd
spamassassinScan emails with SpamAssassin
uriblBlock based on URI blacklists

Every other Plugin

NameDescription
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
block_mePopulate block list via forwarded emails
bounceMany options for bounce processing
delay_denyDelays all pre-DATA 'deny' results
dns-listCheck remote MTAs against DNS black, white, and karma lists
dovecotRecipient validation & SMTP AUTH against dovecot
early_talkerReject remotes that talk early
fcrdnsForward Confirmed reverse DNS
geoipget geographic information about mail senders
greylistGreylisting
headersInspect and verify various email headers
helo.checksValidity 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
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
outbound-loggerJSON logging of outbound email traffic. Logs useful metadata about delivered/bounced emails
p0fTCP Fingerprinting
prevent_credential_leaksPrevent users from emailing their credentials
process_titlePopulate ps output with activity counters
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
qmail-deliverableValidate recipients against Qmail-Deliverable
record_envelope_addressesAdds message headers with ENV recips
relayManage relay permissions
reseed_rngReseed the RNG
batv-srsBATV & SRS
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