From PST files to your servers: mail
mccb imports PST and OST files: mail over IMAP, appointments over CalDAV, contacts over CardDAV. It is built for sysadmins and hosting providers who migrate batches of mailboxes.
- Precheck
- Calendar
- Contacts
- Verify
anna.pst- Mail60
- Appointments8
- Contacts12
IMAPmail.example.com
0 / 60
CalDAVmail.example.com
0 / 8
CardDAVmail.example.com
0 / 12
Connection cut
1IdleSendingUnknownLooking it upOn the server, skippedAbsent, sent againSame UID, overwritten2IdleSendingUnknownLooking it upOn the server, skippedAbsent, sent againSame UID, overwritten3IdleSendingUnknownLooking it upOn the server, skippedAbsent, sent againSame UID, overwritten4IdleSendingUnknownLooking it upOn the server, skippedAbsent, sent againSame UID, overwritten
Press Start, then cut the connection whenever you like.Precheck: IMAP, DAV and the quota.Mail goes first, newest first, over parallel connections.Appointments next, over CalDAV. Each one has a fixed UID.Contacts last, over CardDAV. Each one has a fixed UID.Verify: folder counts are compared, and a sample of messages is read back by hash.The connection is gone, and nobody knows if the items in flight arrived. mccb retries by itself first; this demo jumps straight to the resume.Resume: items already done are skipped. Each mail in flight is looked up on the server by its X-PST-Import-Id, and sent again only if absent.Done, with one report per mailbox. Press Replay to try again, and cut it somewhere else.
How it works
One server, many mailboxes, one report each.
Add a server
The target IMAP server, with automatic DAV discovery.
Add accounts
One by one, or by CSV (
email;password[;login]).Upload and assign
Resumable uploads, with a preview of accents and attachments before anything is written.
Run and read
Run them all, follow the live log, and read one report per mailbox.
Limits
Read this before you migrate.
Validate a migration on a test mailbox before running it on production data.
- One administrator, one host
One shared password, no accounts or roles. SQLite on a local disk, no high availability.
- Encrypted PSTs are not handled
A PST whose content is encrypted or protected by a password gives errors or is marked invalid.
- Corrupted PSTs can crash libpff
Affected items are skipped and reported. Past a limit of crashes the job fails, and a badly damaged PST can be rejected.
- Plain HTTP
Port 22362 speaks plain HTTP. Put mccb behind a reverse proxy and do not expose the port directly.
- amd64 only
The published image is for
linux/amd64.
Get mccb running
Open http://<host>:22362 and sign in with the printed password. It is shown once. Details are in the docs.
$ mkdir mccb && cd mccb
$ curl -fsSLO https://raw.githubusercontent.com/yetysw/mccb/main/docker-compose.yml
$ docker compose up -d
$ docker compose logs web | grep -A2 "Admin password"