Skip to content

Stalwart Blog

Migration proxy: zero-downtime upgrades

A good number of Stalwart deployments are still on an older release for one reason: upgrading between versions meant a maintenance window, and downtime on a mail server is the one thing nobody wants to schedule. We promised a zero-downtime path built from two tools. Vandelay, the data-transfer half, shipped a couple of weeks ago. Today we are shipping the second and final part, the migration proxy, and with it the full workflow is real: a live deployment can move from an older Stalwart version to v0.16 one account at a time, with no scheduled maintenance window and nothing for end users to reconfigure.

Vandelay: the JMAP importer-exporter

Many Stalwart deployments are running an older version not because the operators want to, but because upgrading across a major release can mean migrating off an older database schema, and that means downtime. We promised a zero-downtime migration path built from two parts, a proxy and a transfer tool, and the question we hear most is when it will arrive. Today we are shipping the first part: Vandelay, a one-shot account migration and backup utility for JMAP that also imports from IMAP, CalDAV, CardDAV, WebDAV, ManageSieve, Maildir, Google Takeout, and (experimentally) Microsoft Exchange.

MTA Hooks at the IETF

Two years ago we shipped MTA Hooks in Stalwart Mail Server as a modern, HTTP-based alternative to Milter. In the time since, it has gone from a Stalwart feature to a protocol used across thousands of deployments worldwide, with implementations being built by third parties and interest from major players in the mail filtering ecosystem. We are now taking the next step: standardizing MTA Hooks at the IETF, so that it stops being “the Stalwart way of doing things” and becomes an open protocol that any MTA and any filter can speak.

Stalwart v0.16: A New Foundation

After more than three months of focused work, we are thrilled to announce the release of Stalwart v0.16. This is easily the most ambitious release we have ever shipped, with literally hundreds of new features, improvements, and fixes across every corner of the server.

We will be upfront about something: v0.16 will feel like a new product on first contact. Several long-standing concepts have been reworked, a few have been removed, and many new ones have been introduced. This was a deliberate choice. Stalwart has been under continuous development for nearly five years, and both the feature set and the user base have grown far beyond what the original configuration and management layer was designed for. Rather than keep patching around those limits, we took the opportunity to rebuild the foundation. The payoff is a much cleaner architecture and a long list of features that were simply not implementable before, many of which had been sitting on the community wishlist for years.

Let’s walk through the highlights.