A full-featured, secure mail server in Go for self-hosting your own domain's email with low maintenance.
haraka/Haraka
A highly scalable, event-driven SMTP mail server in Node.js whose behaviour is extended through a plugin system.
- Stars
- 5,633
- Forks
- 721
- Open issues
- 4
- Last commit
- yesterday
What is it?
Haraka is an SMTP server written in asynchronous JavaScript for Node.js. It is built to handle thousands of concurrent connections and to deliver large volumes of messages with low latency. It is commonly deployed as a filtering MTA for inbound mail, or as a message submission agent (MSA) on ports 465 and 587 with authentication and DKIM enabled.
Haraka is not a mail store, a local delivery agent, or an IMAP server. It sits in front of those systems. Every SMTP transaction passes through a set of hooks such as connect, helo, mail, rcpt, data and queue, and each hook can be extended with a short JavaScript plugin. Plugins are asynchronous, so lookups against DNS, Redis or an HTTP API do not block the server. A built-in outbound delivery engine queues mail flagged as relaying.
The project provides a large registry of plugins covering authentication, DNS blocklists, DKIM, SpamAssassin, rspamd, Redis, ClamAV and queue backends. Installation is through npm, and the `haraka` command creates a service directory with config and plugins subdirectories.
Key features
- 01Handles thousands of concurrent SMTP connections with asynchronous JavaScript.
- 02Extensible through hook-based plugins for every stage of an SMTP transaction.
- 03Built-in outbound delivery queue for relayed mail.
- 04Plugins for DKIM, SPF-style checks, DNS blocklists, SpamAssassin, rspamd and ClamAV.
- 05Installable with npm and configurable through plain config files.
Use cases
- Filtering inbound mail for a domain with spam and virus checks before it reaches a mail store.
- Running a submission server on port 465 or 587 with authentication and DKIM signing.
- Routing tagged or aliased addresses to an Exchange or IMAP backend with custom rules.
Quick start
- 1
Install Haraka globally via npm
npm install -g Haraka - 2
Create a service directory
haraka -i /path/to/haraka_test - 3
Start Haraka
haraka -c /path/to/haraka_test
Things to know
- Haraka is an SMTP server only and is not a mail store or IMAP server; it must be paired with other systems.
- Requires configuring plugins and domains before it is useful out of the box.
Topics
FAQ
- What is Haraka?
- A highly scalable, event-driven SMTP mail server in Node.js whose behaviour is extended through a plugin system. Haraka is an SMTP server written in asynchronous JavaScript for Node.js. It is built to handle thousands of concurrent connections and to deliver large volumes of messages with low latency. It is commonly deployed as a filtering MTA for inbound mail, or as a message submission agent (MSA) on ports 465 and 587 with authentication and DKIM enabled.
- Is Haraka free to use? What license does it have?
- Haraka is open source under the MIT license. Check the license terms before using it in commercial products.
- Is Haraka still maintained?
- Actively maintained. The last commit to Haraka was on Nov 5, 2026.
- What can I use Haraka for?
- Filtering inbound mail for a domain with spam and virus checks before it reaches a mail store. Running a submission server on port 465 or 587 with authentication and DKIM signing. Routing tagged or aliased addresses to an Exchange or IMAP backend with custom rules.
- How do I install Haraka?
- Install Haraka globally via npm: npm install -g Haraka Create a service directory: haraka -i /path/to/haraka_test Start Haraka: haraka -c /path/to/haraka_test
- Where can I get Haraka?
- The source code and installation instructions are on GitHub: https://github.com/haraka/Haraka
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
All-in-one mail server in Go that handles SMTP sending and receiving, IMAP storage, and DKIM/SPF/DMARC authentication in one daemon.
A single-file, self-hosted private email server with SMTP, POP3 and IMAP support plus a web mail management interface for your own domain.
Dovecot is an open-source IMAP and POP3 mail server that gives users access to mail stored on a server.
A self-hosted mail server packaged as a set of Docker images, covering SMTP, IMAP, POP3 and webmail.
Java library that wraps Jakarta Mail in a simple builder API for composing and sending well-formed MIME emails over SMTP.