github postalsys/emailengine v2.79.7

2 hours ago

2.79.7 (2026-08-31)

Nine fixes, no new surface. Three are worth knowing about before upgrading.

TLS certificates renewed a month after they expired. The renewal timer compared validTo against Date.now() - RENEW_TLS_AFTER, which is the expiry date thirty days in the past: it read as "renew with thirty days left" and meant "renew thirty days after it died". Any instance relying on built-in ACME was serving an expired certificate for a month at a time. Renewal is now derived from each certificate's own lifetime, which also survives Let's Encrypt going from 90 day certificates to 64 and then 45. Renewal never reached the IMAP proxy either, so it kept offering the old certificate until something unrelated restarted it; both servers are now reloaded together.

A passkey could be registered without a password. Registration is gated behind a password confirmation and sign-in deliberately is not, but both ceremonies drew challenges from one keyspace, so a nonce minted by the unauthenticated sign-in endpoint could be spent completing a registration. Challenges are now namespaced per ceremony, and the password is confirmed again at the step that actually stores the credential.

SSO stayed off for the process lifetime after one failed discovery. A single unreachable IdP at boot left the OIDC strategy unregistered until someone restarted EmailEngine, which on a forced instance looks like the admin panel reverting to password login on its own. Discovery is now retried in the background and SSO comes up in place.

The two dependency commits collapse nodemailer and then encoding-japanese back to a single copy each. The latter is not housekeeping: libmime and imapflow were pinned to a version that decoded the CP932 extension areas to a replacement character, including the IBM extended area that carries surname kanji seen in ordinary Japanese From and To headers.

Bug Fixes

  • bind WebAuthn challenges to the ceremony that minted them (6b2073b)
  • deps: collapse encoding-japanese to a single copy for the CP932 areas (8ae2109)
  • deps: update dependencies and collapse nodemailer to a single copy (cf814e9)
  • retry OIDC discovery instead of disabling SSO for the process lifetime (dbbbf43)
  • tls: renew certificates before they expire, not a month after (fa150e8)
  • ui: disable the stored-log download when an account has no logs (5137b71)
  • ui: move the passkey list onto a page of its own (7cb42c4)
  • ui: show a busy state on the buttons that start slow work (6c63479)
  • ui: stop offering to clear stored logs an account does not have (e02f09a)

Don't miss a new emailengine release

NewReleases is sending notifications on new releases.