Part 12 of the grommunio 2026 series shows a generic IMAP migration to grommunio with imapsync. The lab covered inventory, target preparation, initial sync, delta sync, resume, bulk migration and web validation.

Overview

Source: isolated Dovecot IMAP server with realistic test mailboxes.

Target: grommunio Appliance 2026.06.1 with gromox 3.10.123.

Tooling: imapsync 2.229 from the grommunio appliance packages.

Result: initial sync, delta sync, idempotency, resume, bulk and web validation passed.

What IMAP Migrates And What It Does Not

IMAP migrates mailbox contents, folders, typical message flags, internal dates and attachments. IMAP does not automatically migrate calendars, contacts, tasks, server-side rules, Sieve rules, delegations, shared mailbox permissions, public folders, GAL data, identities, passwords or mobile device profiles.

Tested Environment

  • grommunio-release 2026.06.1
  • gromox 3.10.123
  • grommunio-imapsync 2.229
  • imapsync 2.229
  • Source IMAP via isolated Dovecot lab server

Source Baseline

json
{
"source": "alice@example.test",
"state": "before initial sync",
"totalMessages": 12,
"folders": {
"INBOX": {
"messages": 6,
"unread": 4,
"flagged": 1,
"sampleFlags": [
"\\Recent",
"\\Seen \\Recent",
"\\Flagged \\Recent"
]
},
"Drafts": {
"messages": 1,
"sampleFlags": [
"\\Draft \\Recent"
]
},
"Sent": {
"messages": 1,
"sampleFlags": [
"\\Seen \\Recent"
]
},
"Trash": {
"messages": 1,
"sampleFlags": [
"\\Seen \\Recent"
]
},
"Junk": {
"messages": 1,
"sampleFlags": [
"\\Recent"
]
},
"Projects": {
"messages": 1,
"sampleFlags": [
"\\Recent"
]
},
"Projects/2024": {
"messages": 1,
"sampleFlags": [
"\\Answered \\Recent"
]
},
"Archive": {
"messages": 0
}
},
"attachments": [
"migration-proof.txt",
"larger-attachment.bin"
]
}

Prepare The grommunio Target

Before syncing, the domain, users, mailboxes, passwords, IMAP privileges and web access were prepared. imapsync does not create the full grommunio identity structure.

json
{
"target": "alice@example.test",
"state": "before initial sync",
"totalMessages": 0,
"folders": {
"INBOX": 0,
"Drafts": 0,
"Sent Items": 0,
"Deleted Items": 0,
"Junk Email": 0
}
}

Initial Sync

bash
imapsync --host1 source.example.test --port1 993 --ssl1 --user1 alice@example.test --passfile1 /root/imapsync-lab/secrets/alice-source.pass --host2 mail.example.test --port2 993 --ssl2 --user2 alice@example.test --passfile2 /root/imapsync-lab/secrets/alice-target.pass --automap --subscribe
bash
Initial sync: PASS
Host1 -> Host2: source IMAP -> grommunio IMAP
Messages transferred : 12
Messages skipped : 0
Detected errors : 0
Return value : 0 (EX_OK)
Folder mapping : Sent -> Sent Items, Trash -> Deleted Items, Junk -> Junk Email

Delta Sync And Idempotency

The second imapsync run added only the delta data and did not duplicate existing mail.

json
{
"deltaSync": "PASS",
"transferred": 3,
"skipped": 12,
"errors": 0,
"targetAfterDelta": {
"totalMessages": 15,
"flagged": 3,
"folders": {
"INBOX": {
"messages": 8,
"flagged": 2,
"sampleFlags": [
"\\Flagged",
"\\Seen",
""
]
},
"Delta/NewFolder": {
"messages": 1,
"flagged": 1,
"sampleFlags": [
"\\Flagged"
]
},
"Drafts": {
"messages": 1,
"sampleFlags": [
"\\Draft"
]
},
"Projects/2024": {
"messages": 1,
"sampleFlags": [
"\\Answered"
]
}
}
}
}

Attachment And Web Validation

Resume, Bulk And Negative Test

bash
Resume test: PASS
Interrupted first run: intentionally stopped
Rerun transferred : 179
Rerun skipped : 3
Final target count : 182/182 messages
Detected errors : 0
Return value : 0 (EX_OK)
bash
Negative test: PASS
Scenario : wrong source password
Result : source login rejected
IMAP response: NO [AUTHENTICATIONFAILED] Authentication failed
Return value : 161 (EXIT_AUTHENTICATION_FAILURE_USER1)

Cutover Model

  • Run the initial sync before the cutover window.
  • Test target users and grommunio Web.
  • Switch mail flow separately; MX is not imapsync.
  • Freeze or control source access.
  • Run the final delta sync.
  • Validate grommunio Web and clients.

Result Check / Technical Acceptance

Tooling

Check
Check grommunio-imapsync and imapsync
Expected result
imapsync is usable on the appliance
Status
PASS

Initial sync

Check
Synchronize pilot mailbox
Expected result
Folders, mail, flags, dates and attachments exist on target
Status
PASS

Delta sync

Check
Sync new source mail and flag changes
Expected result
Only delta is added, no duplicates
Status
PASS

Resume

Check
Repeat interrupted run
Expected result
Rerun completes mailbox
Status
PASS

Bulk

Check
Synchronize multiple users
Expected result
Additional mailboxes migrate successfully
Status
PASS

Web

Check
Check grommunio Web
Expected result
Migrated mail, folders and attachments are visible
Status
PASS

Conclusion

Generic IMAP migration to grommunio is reproducible with imapsync when target users are prepared, password files are used, folder mapping is validated and the delta/cutover model is planned explicitly.