A fast, highly extensible, and event driven SMTP server
Haraka is a highly scalable node.js email server with a modular plugin architecture. Haraka can serve thousands of concurrent connections and deliver thousands of messages per second. Haraka and plugins are written in asynchronous JS and are very fast.
Haraka makes no attempt to be a mail store (like Exchange or Postfix/Exim/Qmail), a LDA, nor an IMAP server (like Dovecot or Courier). Haraka is typically used with such systems.
Haraka has a scalable outbound mail delivery engine built in. Mail marked as
relaying(such as via an
authplugin) is automatically queued for outbound delivery.
Haraka's plugin architecture provides an easily extensible MTA that complements traditional MTAs that excel at managing mail stores but do not have sufficient filtering.
The plugin system makes it easy to code new features. A typical example is providing qmail-like extended addresses to an Exchange system, whereby you could receive mail as
# If the second command gives "nobody" errors, uncomment & run the next command # npm -g config set user root npm install -g Haraka
After installation, use the
harakabinary to set up the service.
First, create the service:
haraka -i /path/to/haraka_test
That creates the directory
plugindirectories within. It also sets the host name used by Haraka to the output of
hostnameis not correct, edit
config/host_list. For example, to receive mail addressed to
Finally, start Haraka using root permissions:
haraka -c /path/to/haraka_test
And it will run.
To choose which plugins run, edit
config/plugins. Plugins control the overall behaviour of Haraka. By default, only messages to domains listed in
config/host_listwill be accepted and then delivered via the
smtp-forwardplugin. Configure the destination in
haraka -h plugins/$name
The docs detail how each plugin is configured. After editing
config/plugins, restart Haraka and enjoy!
If you are unable to use npm to install Haraka, you can run from git by following these steps:
First clone the repository:
$ git clone https://github.com/haraka/Haraka.git $ cd Haraka
Install Haraka's node.js dependencies locally:
$ npm install
config/smtp.inito specify the plugins and config you want.
Finally run Haraka:
$ node haraka.js
Haraka is MIT licensed - see the LICENSE file for details.