Skip to content

Release history

Haraka releases

Fast, highly extensible, and event driven SMTP server.

All releases

10 shown

Review required
v3.3.2 Security relevant
Dependencies

Dependency security bump

Review required
v3.3.1 Breaking risk
Auth Dependencies

@email-address removal + postel option + fetch exposure

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]