How to Migrate from Zimbra to Carbonio

Learning how to migrate Zimbra Carbonio servers is becoming an essential skill for mail server administrators. With Zimbra's open-source edition seeing less active development, many organizations want a modern, actively maintained alternative — and Zextras Carbonio Community Edition is the natural successor, sharing Zimbra's DNA while adding a refreshed architecture. In this guide, you will learn how to migrate Zimbra to Carbonio safely: backing up your source server, provisioning the Carbonio target, choosing a migration method, cutting over DNS, and validating everything afterward. Follow the steps in order.

How to Migrate Zimbra Carbonio: Prerequisites

A successful migration starts with planning. Before touching either server, complete this checklist:

  • Schedule a maintenance window. Even a well-run migration needs a quiet period for the final delta sync and DNS cutover.
  • Lower DNS TTL values (to 300 seconds) at least 24–48 hours before cutover so MX changes propagate fast.
  • Inventory everything: number of accounts, total mailstore size, distribution lists, aliases, and shared folders.
  • Gather credentials for the Zimbra admin console, both servers' SSH, and your DNS provider.
  • Ensure the target has at least 2x the source mailstore size in free disk space.

Source Zimbra Server Checklist

  • Note the Zimbra version (zmcontrol -v) and confirm the admin console is reachable.
  • Export the account list: zmprov -l gaa > /root/accounts.txt.
  • Record SSL certificates, custom skins, and zimlets in use.
  • Skip dormant accounts — migrating dead mailboxes wastes time.

Target Carbonio Server Requirements

  • A fresh install of Ubuntu 20.04 or 22.04 LTS (Carbonio installs only on a clean system, never over Zimbra).
  • Minimum 8 GB RAM (16 GB recommended for 50+ mailboxes), 4 vCPUs, and fast SSD storage.
  • A fully qualified hostname (e.g., mail.example.com) that resolves in DNS before installation.
  • Open ports: 25, 80, 443, 143, 993, 587, 465, 7071, and 8443 as needed.

Back Up Your Zimbra Server

Never start a migration without a verified backup of the source. At minimum, stop Zimbra services and take a full copy of /opt/zimbra:

zmcontrol stop
rsync -avH /opt/zimbra/ /backup/zimbra-full/
zmcontrol start

For extra safety, export individual mailboxes too:

zmmailbox -z -m user@example.com getRestURL "//?fmt=tgz" > /backup/user-example-com.tgz

Verify file sizes and, ideally, restore one test mailbox — an untested backup is just a hope.

Provision the Carbonio Target Server

When you migrate Zimbra to Carbonio, the target must be a clean server — Carbonio CE installs only on a fresh Ubuntu system. Spin up a VPS with enough RAM and disk for your mailbox count; Contabo's VPS plans are a budget-friendly pick for mail servers. Set the hostname, point DNS at the new IP, then install Carbonio:

hostnamectl set-hostname mail.example.com
apt update
apt install carbonio-directory-server carbonio-proxy carbonio-mta \
  carbonio-appserver carbonio-user-management
carbonio-bootstrap

Complete the bootstrap wizard, create your domain, and confirm the admin panel and webmail load first.

Migration Approach 1: Zextras Migration Tool

The officially recommended way to migrate Zimbra to Carbonio is the Zextras migration utility, which transfers accounts, passwords, mail, contacts, calendars, and shares while preserving folder structures. Install the migration package on the Carbonio server, point it at the source Zimbra host, and run the import per domain. Because it migrates server-side, it handles large mailboxes faster than IMAP syncing. Run it first against a single test account and compare mailbox item counts on both sides before the full run.

Migration Approach 2: imapsync (IMAP-to-IMAP Sync)

If you prefer a mailbox-by-mailbox sync to migrate Zimbra to Carbonio, imapsync is the battle-tested choice. Create the accounts on Carbonio first, then sync each one:

imapsync --host1 zimbra-old.example.com --user1 user@example.com --password1 'OLD_PASS' \
  --host2 carbonio-new.example.com --user2 user@example.com --password2 'NEW_PASS' \
  --ssl1 --ssl2 --automap --useheader 'Message-Id'

Script it over your account list and re-run it nightly during the transition week; the final run just before cutover is your delta sync. imapsync preserves flags, folders, and dates.

Migration Approach 3: Mailbox Archive Export and Import

For stubborn mailboxes — corrupted folders, giant attachments, or accounts that fail IMAP sync — export the mailbox as a TGZ archive from Zimbra and import it into the matching Carbonio account:

# On Zimbra: export the mailbox archive
zmmailbox -z -m user@example.com getRestURL "//?fmt=tgz" > /backup/user.tgz
# On Carbonio: import the archive into the migrated account

Archive migration is slower and loses some metadata — use it only for problem accounts.

DNS Cutover: Point MX Records to Carbonio

After you migrate Zimbra to Carbonio data, the actual cutover is a DNS change. Do it in this order:

  1. Stop mail services on the old Zimbra server (zmcontrol stop) to prevent split delivery.
  2. Run one final delta sync so no messages are left behind.
  3. Update the MX record to the Carbonio hostname and update SPF to include the new server IP.
  4. Generate and publish new DKIM keys on Carbonio, and check your DMARC policy still aligns.
  5. Update the reverse DNS (PTR) record for the new IP — a missing PTR is a classic deliverability killer.

With TTL at 300 seconds, most mail flow switches within minutes — watch the mail queue and logs during the first hour for bounces.

Post-Migration Testing Checklist

Do not declare victory until every item below passes:

  • Send and receive test mail internally and to external providers (Gmail, Outlook).
  • Log in via webmail, IMAP, and mobile (ActiveSync) for several accounts.
  • Verify calendar entries, shared folders, and delegated access still work.
  • Confirm distribution lists and aliases deliver to all members.
  • Check spam filtering behavior and out-of-office replies.
  • Run a DNS report to confirm SPF, DKIM, and DMARC all pass on the new server.

Rollback Plan If Something Goes Wrong

Keep the old Zimbra server intact — powered on, mail services stopped — until you are confident in the new system. If the cutover fails:

  • Revert the MX record to the old Zimbra hostname (TTL is already low, so this propagates fast).
  • Restart Zimbra services with zmcontrol start.
  • Any mail that landed on Carbonio during the failed window can be synced back with imapsync in reverse.

Decide your rollback trigger in advance — e.g., if core mail flow is not stable within 2 hours, roll back. A plan agreed before the window is worth ten made under pressure.

Post-Migration Checks and Cleanup

Once mail is flowing on Carbonio, rebuild mailbox search indexes, re-create your backup schedule on the new server, and update internal documentation pointing at the old host. Monitor disk usage and mail queues daily for the first week. After 1–2 weeks of stable operation with no missing-mail complaints, decommission the old Zimbra server.

Key Takeaways

  • A plan to migrate Zimbra Carbonio always starts with a verified, restorable backup of the source server.
  • Lower DNS TTL to 300 seconds at least a day before cutover for a fast, clean switch.
  • Use the Zextras tool for full-fidelity moves, imapsync for flexible per-mailbox syncs, and TGZ archives only for problem accounts.
  • Cut over DNS in the right order — stop old services, final delta sync, MX/SPF/DKIM/PTR — and test everything before announcing completion.
  • Keep the old Zimbra server intact until post-migration checks pass, so rollback is one MX change away.

Related Guides

Leave a Comment Cancel reply

Exit mobile version