OpenSource-Hub
H

Haraka

5.6k stars·Developer Tools·SHA-256 checksum verified

A high-performance Node.js mail server with a modular plugin architecture for scalable email filtering and delivery.

Smart Download

Visit Project Homepage

No installer available yet — head to the source repository

High-performance Node.js mail server with plugin architecture for flexible filtering and delivery.

Core Features

  • Modular plugin architecture for easy extension
  • High performance: thousands of concurrent connections & messages per second
  • Built-in outbound delivery engine for relayed mail
  • Rich official plugins: anti-spam, DKIM, DNSBL, etc.
  • Lightweight: not a mail store, designed for filtering & forwarding

What It Can't Do

  • Haraka is not a full mail system; it requires a mail store (e.g., Dovecot, Exchange). Needs root to bind ports 25/587. Plugin configuration is flexible but requires reading docs.

Use Cases

  • Front-end filtering gateway for corporate mail systems
  • Complement Exchange or Postfix with flexible filtering
  • Build custom mail processing pipelines (address rewriting, content scanning)
  • Replace Qpsmtpd or use as high-performance MSA

Detailed Introduction

Haraka is a highly scalable Node.js email server that can handle thousands of concurrent connections and deliver thousands of messages per second. Its modular plugin architecture makes it easy to extend and customize, providing powerful spam protection and filtering capabilities. Unlike traditional MTAs that focus on mail storage, Haraka excels as a filtering MTA or MSA (Mail Submission Agent) when paired with storage systems like Exchange or Postfix. It includes a built-in outbound delivery engine for relayed mail. Plugins cover DNS blocklists, SpamAssassin, HELO validation, DKIM signing, and more. Ideal for developers and sysadmins needing flexible, high-performance email processing.

Troubleshooting & FAQ (2)

Troubleshooting
How to fix Haraka 'Cannot pipe while currently piping' error when using dkim plugin with signing disabled?

This error occurs in Haraka 3.1.4+ when the dkim plugin is enabled but signing is disabled. To resolve it, either enable DKIM signing by creating a dkim.ini file in your config directory with [sign]
enabled = true
, or apply the following patch to outbound/index.js that introduces a setImmediate delay before sending: await new Promise((resolve) => setImmediate(resolve)). This prevents a pipe conflict between the dkim verify stream and the outbound queue. The issue is fixed in later Haraka releases.

GitHub Issue #3551
Troubleshooting
How to fix Haraka 'ENOENT: no such file or directory' error when renaming queue tmp files?

This transient error is caused by an issue in FsyncWriteStream that was fixed in Haraka 3.3.0. Upgrade to Haraka 3.3.0 or later to resolve the problem. If the error persists after upgrading, check for filesystem permissions or I/O bottlenecks on the queue directory, and consider reporting the issue to the Haraka project with detailed logs.

GitHub Issue #3386

Tags

emailmail-servermtanodejsplugin

Getting Started

1

Download installer

Click the button above to download the installer for your system

2

Install the software

Double-click the downloaded installer and follow the prompts

3

Step 1: Install Node.js, then run npm install -g Haraka

4

Step 2: Create service directory: haraka -i /path/to/haraka_test

5

Step 3: Edit config/host_list to add your domain, edit config/plugins to enable plugins

Install Guide
  1. Step 1: Install Node.js, then run npm install -g Haraka
  2. Step 2: Create service directory: haraka -i /path/to/haraka_test
  3. Step 3: Edit config/host_list to add your domain, edit config/plugins to enable plugins
File Integrity

Checksum not available

This project has not published a SHA-256 checksum on its GitHub Release page

SHA256 Checksum

No checksum available

Download directly from GitHub Releases and verify file integrity yourself

All SHA-256 checksums on this platform are extracted from the project's official GitHub Release page, without any modification. You can independently verify them on the GitHub Releases page.

Open Source Transparency

View GitHub Source
Environment Guide

Uninstall Info

Run npm uninstall -g Haraka to remove the global package, then delete the service directory.

No Extra Dependencies

Ready to use after download. No additional runtime required.

Project Info
LicenseMIT
Last Updated2026-06-27 08:55:13
GitHub Repository

Having issues? Check the FAQ below

2 FAQs

Similar Projects