Skip to content
AC-INFO Kft · Hungary
Back to the blog

13 min readCase studies

Zimbra OSE Has Run Out of Road: What an Enterprise Mail Migration Actually Costs

Zimbra Open Source Edition is end of life and every release before 10.1 is unsupported. What our own move from Zimbra to Mailu to a managed provider cost in hours, money and data that IMAP leaves behind.

Zimbra Open Source Edition has run out of road. Zimbra’s own FAQ calls it “an end-of-life version with no updates or support”, every release line before 10.1 is past its support dates, and five Zimbra vulnerabilities were added to CISA’s list of flaws exploited in the wild in 2026 alone. The paid 10.1 line is a different case: it is supported until 31 December 2027.

Moving off it costs less money than most teams expect, and more attention. On our own migration the hands-on work is about 15 minutes per domain plus 5 minutes per mailbox, the hosting bill ended up roughly where it started, and the real cost sits in what IMAP does not carry: calendars, contacts, filters and shares.

We have been on every side of this decision. We ran Zimbra for many years, for ourselves and for clients with on-premise installs, moved to Mailu in 2024, put Mailu on Kubernetes in 2025, and in 2026 we are retiring it for a managed provider. The numbers below were measured read-only on 8 October 2026 on our production K3s cluster. Client details are anonymised.

The migration at a glance

Question Short answer
Is Zimbra finished? OSE and every release before 10.1: yes. Licensed 10.1: supported to 31 December 2027
What does “unsupported” mean? 19 Zimbra entries in the CISA KEV catalogue, 5 of them added in 2026
How much hands-on time? About 15 minutes per domain plus 5 minutes per mailbox
What does IMAP leave behind? Calendars, contacts, filters, signatures, shares, distribution lists, Briefcase
What did our self-hosted stack cost? About €11 a month in infrastructure, plus the operations time
What does the managed plan cost? $120 a year, flat, for a 75 GB pool
What broke? The sync job ran out of memory on mailboxes above 10 GB

Is Zimbra really running out of road?

It depends on which Zimbra. The honest answer has two halves, and a reader on a licensed, patched 10.1 install should not be told the sky is falling.

Version Status on Zimbra’s product lifecycle page
8.8.15 Technical guidance ended 31 December 2024
9.0 Ended 30 June 2025, after an extension
10.0 Ended 31 December 2025
10.1 General support to 31 December 2027, technical guidance to 30 June 2028
Open Source Edition “An end-of-life version with no updates or support” (Zimbra FAQ)

Zimbra stopped publishing free binary builds with version 9.0 in 2020. The 10.x line needs a licence, the Outlook connector, ActiveSync and archiving sit in the higher tier, and there is no public price list, only a “get a quote” form.

So if a server runs OSE or anything before 10.1, the road has already ended. On 10.1 the organisation is paying for two more years and will then decide again.

What does “unsupported” mean for a mail server?

A mail server is reachable from the internet by design, which makes the patch date the number that matters. The CISA Known Exploited Vulnerabilities catalogue lists only flaws with evidence of real attacks. On 13 October 2026 it holds 19 Zimbra entries. Four were added in 2025 and five in 2026:

CVE Added to KEV Type
CVE-2025-68645 22 January 2026 Remote file inclusion
CVE-2020-7796 17 February 2026 Server-side request forgery
CVE-2025-66376 18 March 2026 Cross-site scripting
CVE-2025-48700 20 April 2026 Cross-site scripting
CVE-2026-73570 21 August 2026 OS command injection

Two details show how this plays out on an old install. CVE-2024-45519, a command execution flaw in the postjournal service rated 10.0, was added in October 2024 and fixed in 8.8.15 P46, 9.0.0 P41, 10.0.9 and 10.1.1: every line still got its patch. The August 2026 entry was fixed in 10.1.20 only. A fix published after a branch’s end date does not arrive on that branch. And old flaws do not retire: CVE-2020-7796 entered the catalogue in February 2026, six years after it was assigned.

Why did we leave Zimbra, and then self-hosting?

In March 2024 we published a case study of a Zimbra Open Source Edition install for an enterprise. Its “lessons learned” section named two limits of OSE plainly: no online backup and no high-availability option without the commercial licence. Those two limits are the reason our own mail left Zimbra the same year.

When Platform Why we moved on
Until 2024 Zimbra OSE, our own and client mail No high availability, no live backup in OSE
2024 Mailu on Docker First step off Zimbra: about a dozen clients, more than 100 mailboxes
March 2025 Mailu on Kubernetes (K3s) Same platform as everything else we run
2026 Managed, flat-fee provider Operations load

The last row needs explaining, because nothing was wrong with Mailu. We are fully satisfied with it. The stack on 8 October 2026:

Value
Mailboxes and domains 69 accounts on 11 domains
Mail storage 68 GB used on a 100 GB volume
Pods 12 (admin, antivirus, IMAP, 2 front ends, SMTP, spam filter, two webmails and helpers)
Requested 1,850m CPU, about 4.8 GiB memory
Actually used 105m CPU, 3.3 GiB memory (ClamAV alone 1.0 GiB)
Backup Once a month

Twelve pods, an antivirus that holds a gigabyte of memory, spam filter tuning, certificate and deliverability checks, upgrades: all of it for a service that is a side line for us, not the business. Two things made the decision easier to state honestly. The mail backup runs once a month, and a more frequent one is not feasible for us on this setup. And we tried to put single sign-on in front of the webmail, could not make it secure, and dropped the attempt.

Self-hosted mail is still a legitimate choice. It is just a choice to spend operations time, and we would rather spend ours on client infrastructure.

What does a mail migration actually cost?

Hands-on time

Measured across the domains moved so far, the work that needs a person is about 15 minutes per domain (DNS, provider setup, verification) plus about 5 minutes per mailbox (account, credentials check, sync, spot check). The time imapsync spends copying mail is not in that figure, because nobody watches it.

The largest move still ahead of us is a healthcare client with about 50 mailboxes. The arithmetic: 15 + 50 × 5 = 265 minutes, roughly four and a half hours of attention. We do not bill clients for the migration.

Progress on 8 October 2026: five domains with 12 accounts and about 50 GB have moved, and three domains with 49 accounts and about 35 GB are still to go. The remaining accounts sit on domains whose mail no longer arrives at Mailu.

Infrastructure, before and after

Mailu on K3s Managed, flat fee
Storage 100 GB volume, €5.72 a month 75 GB pool, included
Compute About a third of a €15.99 worker’s memory, roughly €5 a month None
Total About €11 a month, roughly €130 a year $30 a quarter, $120 a year
Operations Ours The provider’s

The compute share is an estimate: 4.8 GiB requested against the 15.2 GiB a worker offers. Even so, the conclusion is not sensitive to it. The infrastructure cost is roughly the same on both sides. Anyone who expects a managed provider to save money on hardware will be disappointed. What it buys back is time.

One number we cannot explain yet: the mail that occupied about 50 GB on Mailu shows as 32.18 GB at the destination. We have not established why, so we would not plan capacity on the assumption that mail shrinks in transit.

Per-seat suites against flat-fee mail

For the 50-mailbox case, at list prices read between 8 and 13 October 2026:

Destination List price 50 mailboxes, one year
Microsoft 365 Business Basic EEA (no Teams) €4.67 per user per month, paid annually €2,802
Google Workspace Starter €6.80 per user per month €4,080
Migadu Standard $290 a year per account, not per mailbox $290
MXroute reseller, 75 GB $30 a quarter $120

The comparison is not like for like, and that is the point. A per-seat suite brings shared calendars and office apps, and its price follows headcount. A flat-fee mail provider sells mailboxes: MXroute caps sending at 400 messages per hour per account, Migadu’s plans carry daily sending limits, and neither offers Outlook-native groupware. An organisation that lived inside Zimbra’s shared calendars is buying a suite. One that used Zimbra as a mail server is not.

What does IMAP leave behind?

This is where the real cost of leaving Zimbra hides, because Zimbra is a collaboration suite and IMAP is a mail protocol.

  • imapsync says so itself: it “can’t migrate Contacts and Calendars”, because most mail systems do not expose them over IMAP (imapsync documentation).
  • Microsoft’s IMAP migration into Exchange Online “doesn’t migrate contacts, calendar items, or tasks”, and stops at 500,000 items per mailbox (Microsoft Learn).
  • Filters, signatures, shares, distribution lists and the Briefcase do not travel with IMAP at all. They are rebuilt by hand or dropped by decision.

On the Zimbra side, calendars and contacts have to be exported separately, as ICS and CSV files, one mailbox at a time. Test the export and the import on one real mailbox before promising anything to users. imapsync can also log in through an admin account (--authuser1), so a Zimbra migration does not require collecting every user’s password.

The tooling: imapsync as a Kubernetes Job, and where it broke

The copy itself runs as a one-shot Kubernetes Job. The design goal was that a failed migration must be obvious and must not have touched anything.

apiVersion: batch/v1
kind: Job
metadata:
  name: imapsync
spec:
  backoffLimit: 0                  # no blind retries
  ttlSecondsAfterFinished: 86400
  activeDeadlineSeconds: 86400     # a hung IMAP session cannot linger
  template:
    spec:
      restartPolicy: Never
      securityContext:
        runAsNonRoot: true
      containers:
        - name: imapsync
          image: jauderho/imapsync@sha256:...   # pinned by digest
          envFrom:
            - secretRef:
                name: imapsync-creds
          resources:
            limits:
              memory: 2Gi          # 512Mi was OOM-killed

Three decisions matter more than the YAML:

  • It fails closed. The runner calls imapsync --justlogin against both servers first. If either login is rejected, the Job stops before a single message is read.
  • A dry run is one variable away. DRY=1 adds --dry, so the first run against a real mailbox writes nothing.
  • Credentials do not linger. They live in a Secret that the wrapper deletes when the Job ends, and inside the pod they are written to mode 0600 files, never to the command line.

What broke: with a 512 Mi memory limit the Job was OOM-killed on mailboxes above 10 GB, while parsing the headers of a folder with about 100,000 messages. On 29 September 2026 the limit went to 2 Gi. With backoffLimit: 0 the failure was visible at once and nothing retried in a loop, which is the only reason it cost minutes and not a night.

Will the provider sign a DPA?

Ask this before the first mailbox moves, not after. We asked two providers in writing in September 2026 and got two opposite answers.

  • MXroute told us it will not sign an Article 28 data processing agreement, Standard Contractual Clauses or a UK IDTA. Our server is currently in Germany, but residency is not guaranteed. Their position is public and stated without hedging on their GDPR page.
  • Migadu sent a pre-signed DPA (version 1.2, covering Article 28 and the Swiss FADP): mailbox data in the EEA and Switzerland only, encrypted backups kept for up to 14 days and removed within 30 days of termination, and a delegated “domain only” admin role per client.

Neither answer is wrong. They describe two different products, and the price table above shows what the difference costs. For our own mail we chose the flat-fee provider and disclosed it in our privacy policy. For a client’s mail the question belongs to the client, who is the controller: if a provider without a DPA is not acceptable to them, the alternative is an EEA provider that signs one.

Who should not migrate?

  • Teams on a licensed, patched Zimbra 10.1 that use the shared calendars, the Briefcase and the Outlook connector every day. Support runs to the end of 2027. Plan the decision for 2027 and do not migrate in a panic now.
  • Organisations with a hard data-sovereignty requirement and people to run the platform. Self-hosting is still valid there. The move is to a maintained self-hosted stack, not to SaaS: Mailcow has built-in imapsync jobs, Stalwart covers IMAP, JMAP, CalDAV and CardDAV but is still before its 1.0 release, and Carbonio CE comes from the Zextras side of the Zimbra ecosystem.
  • Anyone who has not decided where calendars and shares will live. Starting the IMAP copy first feels like progress and creates a half-migrated organisation.
  • Anyone doing it only to cut the hosting bill. Ours stayed roughly the same.

Everyone else on OSE or a release before 10.1 should treat the migration as a security task with a date, not as a project for a quiet quarter.

The order we work in

  1. Inventory of the email accounts: mailboxes and their sizes.
  2. Create the accounts on the new server.
  3. Lower the DNS TTL, then change the MX to the new server, together with SPF, DKIM and DMARC.
  4. First sync of the existing mail, after a dry run.
  5. Onboard the users to the new server.
  6. Cutover: the new server becomes the only one in use.
  7. Second sync three days later, for anything that still reached the old server.
  8. Decommission the old server after a 30-day retention period.

Mail is one case of a pattern: measure first, dry run, fail closed, cut over, and only then delete. It is how we run every infrastructure migration, whether as a one-off project under our infrastructure services or as part of a Fractional DevOps retainer where the platform stays healthy afterwards. If an end-of-life Zimbra server is on the risk register and nobody owns the date, book a free discovery call.

Common questions about leaving Zimbra

Is Zimbra Open Source Edition still supported?

No. Zimbra's own FAQ describes the Open Source Edition as an end-of-life version with no updates or support. Free binary builds stopped with version 9.0 in 2020, and the 10.x line needs a paid licence. An install that still runs OSE receives no security fixes from the vendor.

How long is Zimbra 10.1 supported?

According to Zimbra's product lifecycle page, Zimbra 10.1 has general support until 31 December 2027 and technical guidance until 30 June 2028. Zimbra 10.0 reached the end of technical guidance on 31 December 2025, version 9.0 on 30 June 2025 and 8.8.15 on 31 December 2024. A licensed, patched 10.1 install is therefore not out of support, but it needs a decision before the end of 2027.

Does imapsync migrate calendars and contacts?

No. The imapsync documentation states that it cannot migrate contacts and calendars, because most mail systems do not expose them over IMAP. Microsoft's IMAP migration into Exchange Online has the same limit: it does not migrate contacts, calendar items or tasks. Calendars and contacts have to be exported separately, for example as ICS and CSV files, and filters, signatures, shares and distribution lists have to be rebuilt on the new side.

How long does a mail migration take per mailbox?

On our own migration from Mailu to a managed provider the hands-on work is about 15 minutes per domain plus about 5 minutes per mailbox. A client with about 50 mailboxes therefore needs roughly four and a half hours of attention, not counting the time imapsync runs unattended. Mailboxes above 10 GB need extra care: our sync job ran out of memory on them until its limit was raised from 512 Mi to 2 Gi.

Is a self-hosted mail server cheaper than a managed provider?

Not in our case. Our self-hosted Mailu stack cost about 11 euros a month in infrastructure: 5.72 euros for a 100 GB volume plus roughly a third of the memory of a 15.99 euro worker node. The flat-fee managed plan that replaces it costs 120 US dollars a year. The infrastructure cost was roughly the same, and the real saving is the operations time. Per-seat suites are a different order of magnitude: about 2,800 euros a year for 50 mailboxes on Microsoft 365 Business Basic (EEA, no Teams) at list price.

More articles

11 min

How We Cut Kubernetes Resource Overhead by 50% Using Only Built-in Tools

Running a production Kubernetes cluster efficiently is one of those challenges that looks straightforward on paper but reveals surprising complexity the moment you start digging into the actual numbers. Recently, we completed a resource optimization project on a production K3s cluster hosting multiple workloads — databases, observability stacks, mail servers, web applications, and more — […]

Case studies

9 min

How to Automate Business Workflows with GitHub Actions and AI Language Models

There is a class of business problem that every growing company knows well: the recurring task that is too complex to ignore, too repetitive to be worth a senior engineer’s time, and too important to leave entirely to chance. Weekly competitor monitoring. Automated market intelligence reports. Structured summaries of customer feedback delivered directly to the […]

Case studies

Want this run for you?

A free 30-minute discovery call. Engineer to engineer.

Book a free call