Haraka -- 一个 Node.js 邮件服务器
Haraka 是一个高度可伸缩的 node.js 电子邮件服务器,具有模块化的插件架构。Haraka 可以提供数千个并发连接,每秒可以发送数千条消息。Haraka 和插件是用异步 JS 编写的,速度非常快。
Haraka 提供极高的性能以及灵活的插件系统,允许 Javascript 程序员完全访问服务器的行为。 它在一些高流量网站中被大量使用 —— 请参阅官网“已知用户”链接以获得推荐。
Haraka 有非常好的垃圾邮件保护(参见插件),可以很好地用作过滤 MTA(邮件传输代理)。它也可以作为一个 MSA(邮件提交代理) 运行在端口587上,并启用了 auth 和 dkim_sign 插件。
Haraka 不会尝试成为邮件存储(如 Exchange 或 Postfix/Exim/Qmail)、LDA,也不是 IMAP 服务器(如 Dovecot 或 Courier)。 Haraka 通常与此类系统一起使用。
Haraka 内置了可扩展的出站邮件交付引擎。标记为中继的邮件(例如通过 auth 插件)会自动排队等待出站交付。
获得帮助
- 加入邮件列表 (作为Haraka插件实现)
- 加入我们在
#haraka
freenode 的 IRC。 - GitHub Issues
截屏
为什么要使用 Haraka?
Haraka 的插件架构提供了一个易于扩展的 MTA,它补充了传统的 MTA,后者擅长管理邮件存储,但没有足够的过滤功能。
插件系统使编写新特性变得很容易。一个典型的例子是向 Exchange 系统提供类似 qmail 的扩展地址,这样您可以以 user-anyword@domain.com 接收邮件,但仍然可以将其正确路由到 user@domain.com。这在 Haraka 中只是几行代码的事。
提供插件用于通过 SpamAssassin 运行邮件、验证 HELO 名称、检查 DNS 阻止列表以及 许多其他插件。
安装 Haraka
Haraka 需要 node.js 才能运行。 用 npm 安装 Haraka:
npm install -g Haraka
安装后,使用 haraka 二进制文件来设置服务。
运行 Haraka
首先,创建服务:
haraka -i /path/to/haraka_test
这将创建目录 haraka_test,其中包含 config 和 plugin 目录。它还将 Haraka 使用的主机名设置为 hostname 的输出。
如果主机名不正确,请编辑 config/host_list。例如,要接收发往 user@domain.com 的邮件,请将 domain.com 添加到 config/host_list 文件中。
最后,使用 root 权限启动 Haraka:
haraka -c /path/to/haraka_test
它将运行。
配置 Haraka
要选择运行哪些插件,请编辑 config/plugins。插件控制 Haraka 的整体行为。默认情况下,只接受 config/host_list 中列出的域的消息,然后通过 smtp-forward 插件传递。在 config/smtp_forward.ini 中配置目标。
阅读精细手册
haraka -h plugins/$name
文档详细说明了每个插件的配置方式。编辑 config/plugins 后,重新启动 Haraka 并享受它!
从 git 运行
如果您无法使用 npm 安装 Haraka,可以按照以下步骤从 git 运行:
首先克隆存储库:
$ git clone https://github.com/haraka/Haraka.git $ cd Haraka
在本地安装 Haraka 的 node.js 依赖项:
$ npm install
编辑 config/plugins 和 config/smtp.ini 以指定所需的插件和配置。
最后运行 Haraka:
$ node haraka.js
许可和作者
Haraka 基于 MIT 许可发布 -- 有关详细信息,请参阅LICENSE文件。
Haraka 是由 Matt Sergeant 发起的一个项目,他在电子邮件和反垃圾邮件领域工作了10年。之前他一直是 SpamAssassin 的项目负责人和 Qpsmtpd 项目大神。
(Second edition: vz revised at 2019.08.09)