Skip to content

Releases: postalsys/emailengine

v2.74.0

Choose a tag to compare

@github-actions github-actions released this 23 Jul 09:55
38283c2

2.74.0 (2026-07-23)

This release adds per-account compatibility and TLS controls for connecting to non-standard IMAP and SMTP servers, and makes outbound delivery safer: internal errors can no longer cause queued messages to be silently discarded.

Highlights:

  • New account settings. Accounts can opt out of IMAP4rev2 for servers whose IMAP4rev2 support misbehaves, and can allow invalid TLS certificates on a per-account basis - for both the IMAP and SMTP connection - instead of relying on the global "ignoreMailCertErrors" setting.
  • No more lost outbound mail on internal errors. Delivery permanence is now decided by the actual SMTP response, not by internal status codes, so an RPC timeout or worker restart during a send is retried instead of discarding the queued message. Transient 4xx rejections such as greylisting are also retried instead of being dropped on the first attempt.
  • Token minting is gated. While no admin password is set, access tokens can no longer be minted anonymously: the admin UI route requires an authenticated session and the API route refuses unauthenticated callers. The documented headless provisioning flows keep working.
  • More resilient IMAP sync. Folders that are listed by the server but reject SELECT (for example Dovecot shared-namespace roots) are parked instead of repeatedly tearing down the whole connection, and servers that drop connections shortly after login no longer trigger rapid reconnect loops.
  • Hardened build and setup. The Docker image ships the previously missing root-level CLI modules and is smoke tested before it is published, and the setup script creates production secret files owner-only.
  • Dependency updates, including ImapFlow 1.5.0.

Features

  • imap: add a per-account IMAP4rev2 opt-out and account-level TLS certificate override (59764fd)
  • ui: add the account-level invalid-certificate override to the SMTP settings as well (7d1b9e4)

Bug Fixes

  • ci: give the Docker builds a cache backend and smoke test by digest (4554d90)
  • ci: smoke-test the image before publishing and harden the allowlist test (c285fcb)
  • deps: update dependencies (3370f0a)
  • deps: update dependencies (e1256b2)
  • deps: update dependencies (imapflow 1.5.0) (8cc45ac)
  • docker: ship the root-level CLI modules in the image (a63cb4e)
  • gitignore: cover every local env file, not just the exact name (16124d5)
  • imap: park phantom folders and throttle short-lived-connection reconnects (da97da3)
  • imap: store the connection error response as text, not as a parsed object (3cf8d2e)
  • setup: create production secret files owner-only (52f0527)
  • submit: retry transient 4xx SMTP rejections and gate token minting on the request principal (1688c86)
  • submit: stop discarding queued mail on non-SMTP 5xx errors (f80f475)
  • test: provision scope-test tokens as a trusted local caller (20ca781)
  • tokens: refuse to mint an access token before an admin password is set (ff3dd47)

Performance Improvements

  • docker: cache the dependency install and smoke test the CLI in the image (e275733)

v2.73.1

Choose a tag to compare

@github-actions github-actions released this 21 Jul 11:23
a884eb0

2.73.1 (2026-07-21)

Bug Fixes

  • imap: stop the OAuth token renewal reconnect loop that pinned the CPU (eff5727)
  • restore the scan CLI command and stop packing secrets into the tarball (edddb4e)

v2.73.0

Choose a tag to compare

@github-actions github-actions released this 20 Jul 21:18
46a10f2

2.73.0 (2026-07-20)

Features

  • add generic OIDC SSO for admin login (71854d4)
  • add group-based authorization for OIDC SSO (c988506)
  • add OIDC_FORCED (SSO-only login) and OIDC_LOGOUT (RP-initiated logout) (1751ddb)
  • make OIDC post-logout redirect optional (OIDC_POST_LOGOUT_REDIRECT_URI) (ae9169d)
  • rebuild the open source license listing (ebe5e90)
  • Tailwind v4 + FlyonUI admin UI theme (d648da1)
  • theme: centralize the ACE editor fullscreen toggle (bf9a6db)
  • theme: centralize the native datalist autocomplete builder (7b737b1)
  • theme: convert auth and public layouts to Tailwind/FlyonUI (568de9e)
  • theme: convert config core pages to Tailwind/FlyonUI (93f7c06)
  • theme: convert Document Store pages to Tailwind/FlyonUI (5b2b687)
  • theme: convert internals pages to Tailwind/FlyonUI (06a670e)
  • theme: convert OAuth2 config pages to Tailwind/FlyonUI (a787584)
  • theme: convert shared partials, replace bootstrap-autocomplete with datalists (eb3fdf1)
  • theme: convert the accounts pages to FlyonUI (f54f5bc)
  • theme: convert the admin shell to Tailwind v4 + FlyonUI (d9ab031)
  • theme: convert the dashboard page to FlyonUI (c4a719c)
  • theme: convert the gateways pages to FlyonUI (6b176fa)
  • theme: convert the tokens and templates pages to FlyonUI (a650568)
  • theme: convert webhooks pages to Tailwind/FlyonUI (77b4438)
  • theme: follow the admin theme in the ACE editors (51bc909)
  • theme: move the TLS certificate labels to FlyonUI tooltips (eabc578)
  • theme: rebuild the public pages as framework-free HTML/CSS/JS (f3a34c0)
  • theme: replace ClipboardJS with a central copy-to-clipboard handler (216334d)
  • theme: restyle the stat cards to the FlyonUI dashboard idiom (e53dd27)
  • theme: retire the Bootstrap legacy clusters and dead assets (836e36f)
  • theme: retire the bootstrap-compat shim and jQuery (7669c5c)
  • theme: sync the embedded message browser with the admin theme (858fbcd)
  • theme: use HSTogglePassword for the secret reveal buttons (2ea2c11)
  • ui: add search to the remaining paged admin list views (22ff78f)
  • ui: align the Workers page with the list-view conventions (8bb421b)
  • ui: apply the account-view toolbar treatment to all detail views (a6d36f0)
  • ui: reorganize the account view around actions, status and density (097329e)
  • ui: reorganize the admin menu, split settings pages, and redesign the dashboard (4ec4118)
  • ui: standardize admin list views with row actions and copyable ids (722244f)
  • ui: unify list-view info sections with a page-header subtitle (925d5fa)
  • ui: use the row-actions kebab on the Workers table (bdbb6d9)

Bug Fixes

  • bump dependencies and refresh generated artifacts (4de7381)
  • bump ee-client/sentry-node/bullmq and refresh generated artifacts (b365690)
  • bump sentry-node/bullmq/nanoid/eslint and refresh generated artifacts (d9c26df)
  • cap webhook delivery attempts with a wall-clock timeout (ca263d7)
  • deps: update dependencies (3961788)
  • keep dashboard stats counters for the intended retention period (db175f7)
  • mint a session sid on every admin login path (e166fbf)
  • point documentation links to the learn.emailengine.app docs site (f947b27)
  • sso: reject unverified OIDC emails in the admin allow-list (34ff519)
  • sso: treat any present email_verified value as a strict boolean (89821cc)
  • theme: align the SSO setup buttons on the account security page (aee2d34)
  • theme: apply the post-merge release review findings (d36ce1b)
  • theme: apply the whole-branch review findings (965e652)
  • theme: cap tooltip width so long texts wrap (a805b3b)
  • theme: gate TLS certificate provisioning on a usable service domain (ef22689)
  • theme: indicate the selected tab in the admin UI tab strips (2aa6d22)
  • theme: load the ACE language-tools extension where pages expect it (d3d1592)
  • theme: render the API reference as a light island (ddf696c)
  • theme: repair the ACE editor toolbar chrome (4f492f1)
  • theme: tooltip stacking, empty-bubble gating and badge rounding (bdfea13)
  • theme: use a real list for the gateway usage notes (b860c28)
  • theme: use standard FlyonUI rounding on the auth pages (96b7028)
  • ui: add a visible exit for the ACE editor fullscreen mode ([0378d82](0378d82...
Read more

v2.72.4

Choose a tag to compare

@github-actions github-actions released this 11 Jul 08:01
0adf640

2.72.4 (2026-07-11)

Bug Fixes

  • bump imapflow/bullmq/bull-board/sentry-node/eerawlog/prettier (8f7b6bf)
  • clear the connecting flag if loading account data fails during reconnect (8d82167)
  • clear the pending changes debounce when closing a subconnection (a286f89)
  • disable subconnection when the monitored mailbox no longer exists (e1895d6)
  • do not report connectError when pause() interrupts a connection attempt (4d38e4f)
  • drop the reconnect timer handle when closing an IMAP connection (9f46c77)
  • ignore \NonExistent folders in mailbox listing (7ec96cf)
  • prevent overlapping and revived subconnection reconnect cycles (5754c07)
  • process refreshed folder listings so new folders emit mailboxNew (247c325)
  • reconcile disabled and active subconnections in setupSubConnections (85ebb54)
  • refresh folder listing when a listed mailbox is missing on SELECT (1e54d32)
  • require an exact path match in the missing-mailbox verification LIST (54e23c4)
  • reset IMAP reconnection backoff only after a successful sync (7138dab)
  • reset subconnection backoff only after the monitored mailbox is opened (f2bf297)
  • resolve the mailbox sync promise when a concurrent operation already selected the mailbox (7327dcc)
  • resolve the mailbox sync promise when opening fails before the sync starts (c2268af)
  • retry transient account data load failures during reconnect (7f18d4b)
  • revive missing-folder subconnections when the folder is re-created (254fce4)
  • scope the re-entrant open latch to the connection that emitted the event (627b6ee)
  • skip mailboxes that can not be selected during account sync (eaf09c1)
  • skip re-entrant mailbox open events while onOpen is already running (6d06b09)
  • stop opening IMAP connections for accounts paused while connecting (128aef3)
  • untrack bailed subconnection clients and harden the revival trigger (086a585)
  • untrack the IMAP client when connect() bails for a paused account (cface66)
  • update connection tracking when replacing a previous IMAP client (8e143c2)

v2.72.3

Choose a tag to compare

@github-actions github-actions released this 06 Jul 07:49
141a1eb

2.72.3 (2026-07-06)

Bug Fixes

  • bump imapflow to 1.4.4 (dedupe nodemailer/iconv-lite) (5acc8cd)
  • bump imapflow/mailparser/mailsplit/email-ai-tools (collapse iconv-lite) (51dcffb)
  • bump libmime/mailparser/smtp-server/pubface (uniform nodemailer) (eee89bb)
  • constant-time MS Graph clientState check and escape unsubscribe email (3def225)
  • escape Redis glob metacharacters in account-scoped SCAN patterns (603d9db)
  • escape untrusted email fields in message browser to prevent stored XSS (1159cc1)
  • gate hosted auth form with a single-use nonce and probe cap, harden serviceSecret (7ea4ff7)
  • harden hosted authentication form (SSRF gate, fail-closed HMAC, XSS) (4267df7)
  • HTML-escape json Handlebars helper to prevent stored XSS in error logs (af2c153)
  • override grunt's transitive js-yaml to 3.15.0 (GHSA-h67p-54hq-rp68) (024a923)
  • stop logging the MS Graph access token on HTTP 401 (f2f0300)
  • update dependencies (@postalsys/ee-client 1.3.2, nodemailer 9.0.3, bullmq 5.79.2, @sentry/node 10.63.0, @bull-board 8.0.2) (b954f67)
  • update dependencies (email-text-tools 2.4.10, email-ai-tools 1.13.10) (73df05c)
  • use constant-time comparison for secret and MAC checks (453caf3)
  • verify HMAC signature on the human-facing unsubscribe routes (e30be83)

v2.72.2

Choose a tag to compare

@github-actions github-actions released this 26 Jun 21:41
bdcd0b6

2.72.2 (2026-06-26)

Bug Fixes

  • reconnect error-state accounts after OAuth re-auth via create() (77cee1e)
  • resume sync after OAuth re-auth and enable Run sync for Gmail/Outlook (f3bef82)
  • update dependencies (libmime 5.4.0, mailparser 3.9.12, imapflow 1.4.3, email-ai-tools 1.13.9) (8c999d8)

v2.72.1

Choose a tag to compare

@github-actions github-actions released this 19 Jun 17:35
0710f10

2.72.1 (2026-06-19)

Bug Fixes

  • log expected API client errors (4xx) at warn instead of error (c51e347)

v2.72.0

Choose a tag to compare

@github-actions github-actions released this 18 Jun 18:35
5fc0e4e

2.72.0 (2026-06-18)

Features

  • adopt pre-existing Gmail Pub/Sub resources with ownership tracking (fe43fad)

v2.71.0

Choose a tag to compare

@github-actions github-actions released this 15 Jun 19:56
2e41958

2.71.0 (2026-06-15)

Features

  • add anonymized feature beacon to license validation (954d92a)
  • disable deprecated Document Store by default behind a feature gate (8790f75)

Bug Fixes

  • defer export worker job consumption until startup recovery completes (a21b0a5)
  • fail export when a folder cannot be indexed (36c9c9d)
  • filter transient fetch failures from Sentry and retry DNS errors (883b9b4)
  • retry transient errors in API-account batch export path (6cba7c7)
  • translate OAuth scope error page across 6 languages (4ae1919)
  • upgrade joi to 17.13.4 and @postalsys/certs to 1.0.15 (GHSA-q7cg-457f-vx79) (6ec77e5)

v2.70.0

Choose a tag to compare

@github-actions github-actions released this 11 Jun 12:29
303496c

2.70.0 (2026-06-11)

Features

  • allow enabling Sentry error reporting from the admin UI (a4076a4)
  • replace Bugsnag with self-hosted Sentry for error tracking (62de831)
  • tag Sentry error reports with instance id and license key (2e9683f)

Bug Fixes

  • align API response schemas with actual responses and fix uncovered API bugs (abacbf6)
  • align remaining API response schemas with actual responses (06136ab)
  • assign unassigned accounts after license activation (5677977)
  • do not crash at startup when a feature flag env variable is set to a falsy value (98ad979)
  • report correct nextAttempt time for queued messages (d5ebdfb)
  • resolve code review findings in Gmail bulk ops, exports, webhooks, and schemas (f0ddb46)