Skip to content

Release history

Haraka releases

Fast, highly extensible, and event driven SMTP server.

All releases

8 shown

Review required
v3.2.0 Breaking risk
Dependencies Breaking upgrade

address-rfc282 replacement

Review required
v3.1.6 Breaking risk
Dependencies Auth

Dependency removals

v3.1.5 Bug fix

Fixed SMTP forward queue hook to call next() after delivery.

Full changelog
  • fix(smtp_forward): update AUTH to match WHATWG URL API #3546
  • fix(smtp_forward): queue hook now calls next() after delivery
    — see haraka/message-stream#17
  • deps(all): bump versions to latest
  • test: refactor server, use smtp_client for all tests #3548
  • test runner is now node --test #3547
  • test(smtp_client, tls_socket, smtp_forward): 95% coverage #3546
  • ci: added explicit minimal permissions
v3.1.4 Breaking risk

Fixed crash on duplicate QUIT commands in outbound connections.

Full changelog

Fixed

  • fix: add ensure_body for late parse_body=true #3539
  • fix(outbound): prevent ERR_UNHANDLED_ERROR crash #3538
  • fix(txn): more robust handling of body filter additions #3537
  • fix(conn): avoid connection fault when 2x QUIT sent #3536
  • fix(txn): more robust handling of broken messages #3535
  • fix(connection): pause after odd SMTP command sequence #3525

Changed

  • chore(plugins): deleted deprecated core_require
  • dep(rabbitmq): repackaged as NPM module #3526
  • deps(all): bump versions
  • doc(Plugins): add sections filter, enrichment, and logging #3534
    • added dropbox-plugin #3543
  • es2024: #3527, #3528
    • outbound replace fs callback with promises and async/await #3528
    • dep(async): remove dep by replacing async.map with Queue
    • use startsWith instead of indexOf === 0
    • use spread syntax instead of [].concat and {}.assign
    • use implicit arrow function returns
    • replace deprecated substr with slice or substring
  • test(outbound/queue): added tests #3531
  • test: fixes for test-fixtures 1.4 & local plugins that do require('./')
    • TL;DR: bundled plugins don't need a special require any more
    • fixtures/plugin behaves more like real one, test accordingly
    • refactored connection, transaction, and outbound to node --test #3541
      • transaction.js (48 → 62 tests)
      • connection.js (24 → 51 tests)
      • moved ./test/outbound_* to ./test/outbound/, and fixed race conditions
    • move TLS tests to haraka-tls #3542
    • improve coverage for transaction, rfc1869, xclient, and record_envelope_addresses #3524
v3.1.3 Breaking risk
Breaking changes
  • Removed the 'graph' dependency which used the unmaintained sqlite3 library
Full changelog
  • fix(config): spool_dir and spool_after belong in connection.ini #3518
  • fix(outbound): aggregate error path #3519
  • fix(haraka): getHooks regex to grab only hook names
  • deps(graph): removed, sqlite3 library is unmaintained
  • deps: bump all to latest
  • doc: fix no plugin names displayed with haraka --order #3517
v3.1.2 Breaking risk
⚠ Upgrade required
  • All dependencies bumped to latest versions; review changelogs for transitive changes.
  • Removed temporary dependency `tmp` (only used in attachment plugin).
Breaking changes
  • Minimum Node.js version raised to 20+
  • Renamed configuration key `dot_stuffing` to `dot_stuffed`
Notable features
  • Configurable outbound IPv4/IPv6 preference using `inet_prefer`
  • RabbitMQ AMQPlib now supports optional exchange arguments and message priority configuration
Full changelog
  • smtp_forward: [domain selector] : user + domain #3501
  • rspamd: revert to older plugin version #3493
  • feat: push to a 'release' branch with package-lock.json #3474
  • change: finish renaming dot_stuffing to dot_stuffed #3473
  • deps: require node 20+
  • deps: bump all deps to latest
  • deps: bump message-stream to 1.3.0, add some missing ^ chars
  • dep(tmp): deleted, only used in attachment plugin
  • feat(outbound): configurable outbound IPv4/IPv6 preference using inet_prefer
  • feat(outbound): deferred hook is now passed the failed recips and mx #3505
  • feat(rabbitmq_amqplib): configurable optional exchange arguments #3472
  • feat(rabbitmq_amqplib): configurable message priority #3472
  • fix: auth_proxy TLS upgrade works again #3514
  • doc(Plugins): add save-sent #3497
  • doc(README): update DKIM plugin link, #3490
  • style: run prettier in repo #3504

Beta — feedback welcome: [email protected]