Haraka (software)

{{Short description|FLOSS SMTPd in JavaScript based on Node.js}}

{{Infobox software

| name = Haraka

| developer = Matt Sergeant

| released = May 2011

| latest release version = {{wikidata|property|edit|reference|P348}}

| latest release date = {{start date and age|{{wikidata|qualifier|P348|P577}}}}

| repo = {{URL|https://github.com/haraka/Haraka}}

| programming language = Node.js, JavaScript

| operating system = Unix-like, Windows

| genre = Mail transfer agent

| license = MIT License

| website = {{URL|https://haraka.github.io}}

}}

Haraka is an open source{{cite web|url=https://github.com/haraka/Haraka/blob/master/LICENSE|website=GitHub|accessdate=14 February 2015|title=Haraka License}} SMTP server. Its architecture is plugin-oriented{{cite web|title=Haraka Plugins|url=https://github.com/haraka/Haraka/tree/master/plugins|website=Haraka Source Code|publisher=GitHub|accessdate=15 February 2015}} and event-driven. The server and its plugins are written in JavaScript{{cite web|title=Haraka Language Statistics|url=https://github.com/haraka/Haraka/search?l=javascript|website=Haraka Source Repository|publisher=GitHub|accessdate=15 February 2015}} using the Node.js framework.{{Cite web |url=https://haraka.github.io/README.html |title=Haraka Manual » README |access-date=2017-11-01 |archive-date=2017-10-28 |archive-url=https://web.archive.org/web/20171028122341/http://haraka.github.io/README.html |url-status=dead }}

Haraka follows a plugin model, implementing a very lightweight SMTP core and providing developers hooks into the mail flow.{{cite web|title=Writing Haraka Plugins|url=https://haraka.github.io/manual/Plugins.html|website=Haraka Docs|publisher=GitHub|accessdate=15 February 2015|archive-date=14 February 2015|archive-url=https://web.archive.org/web/20150214170953/http://haraka.github.io/manual/Plugins.html|url-status=dead}} Almost all of Haraka's functionality is built as plugins.

Through its use of the V8 JavaScript engine and asynchronous I/O, the author claims the server is capable of handling thousands of messages per second.{{cite web|title=Haraka Readme|url=https://haraka.github.io/README.html#Performance|website=Haraka|publisher=GitHub|accessdate=15 February 2015|archive-date=28 October 2017|archive-url=https://web.archive.org/web/20171028122341/http://haraka.github.io/README.html#Performance|url-status=dead}}

Bounce.io announced that they regularly handle 2 to 5 thousand simultaneous SMTP connections{{cite web|title=Tech Shoutout - Haraka at bounce.io|url=https://bounce.io/tech-shoutout-haraka-at-bounce-io/|website=Bounce.io|accessdate=15 February 2015|url-status=dead|archiveurl=https://web.archive.org/web/20150215022431/https://bounce.io/tech-shoutout-haraka-at-bounce-io/|archivedate=15 February 2015}} with Haraka.

Typical Usage

Haraka is frequently used as a filtering MTA in front of other MTAs that lack the performance and/or filtering capabilities of Haraka. Craigslist uses Haraka{{cite web|title=Craigslist Uses Haraka|url=http://baudehlo.com/2012/02/17/craigslist-deploys-haraka/|website=Matt Sergeant|accessdate=15 February 2015|archive-date=15 February 2015|archive-url=https://web.archive.org/web/20150215092236/http://baudehlo.com/2012/02/17/craigslist-deploys-haraka/|url-status=dead}} to handle inbound and then forward validated connections to Postfix.{{cite web|title=About, Thanks|url=http://www.craigslist.org/about/thanks|website=Craigslist|accessdate=15 February 2015}} Bounce.io similarly uses Haraka to accept incoming messages and deliver them to their application engine. Mail Toaster 6 uses Haraka{{cite web|title=SMTP Haraka|url=https://www.tnpi.net/wiki/MT6_SMTP|website=Mail Toaster 6|publisher=tnpi.net|accessdate=15 February 2015|archive-date=19 October 2014|archive-url=https://web.archive.org/web/20141019123917/http://www.tnpi.net/wiki/MT6_SMTP|url-status=dead}} similarly to accept incoming mail and forward to a qmail based message store.

Features

  • SMTP Authentication via LDAP,{{cite web|title=auth_ldap|url=https://haraka.github.io/manual/plugins/auth/auth_ldap.html|website=Haraka|accessdate=15 February 2015|archive-date=15 February 2015|archive-url=https://web.archive.org/web/20150215082247/https://haraka.github.io/manual/plugins/auth/auth_ldap.html|url-status=dead}} vpopmaild,{{cite web|title=auth_vpopmaild|url=https://github.com/haraka/Haraka/blob/master/docs/plugins/auth/auth_vpopmaild.md|website=Haraka|accessdate=15 February 2015}} flat_file, or SMTP proxy.
  • Access control by domain, IP, sender, or recipient.{{cite web|title=access|url=https://github.com/haraka/Haraka/blob/master/docs/plugins/access.md|website=Haraka|accessdate=15 February 2015}}
  • Bounce validation, optionally blocking forged or invalid bounces.
  • Virus filtering with ClamAV and AVG
  • ASN lookups and filtering
  • Forward Confirmed reverse DNS validation
  • GeoIP reporting and optional filtering
  • Detection of remote Operating System
  • Header validation: make sure required headers are present, singular headers are not duplicated, and values are credible.
  • URIBL lookups of senders IP, helo hostname, envelope sender, and message contents
  • DKIM validation and signing (native)
  • DNSBL support
  • Early talker detection
  • HELO hostname validation (8 tests)
  • Karma, a heuristics scoring engine that weighs the results of all plugins and smites or blesses each connection.
  • Messagesniffer (requires SNF installation)
  • Rate limiting, by host, sender, or recipient
  • Recipient validation in flat file, LDAP, Redis, or qmail-deliverabled.
  • SpamAssassin, via spamd.
  • SPF (native)
  • TLS / SSL
  • Overload detection and automatic deferral of new connections.

See also

References

{{Reflist}}