mccb

Features

What mccb does with your PST files

One image, two services: web (dashboard and API, port 22362) and worker (job queue). State is SQLite and files in ./data.

What it imports

  • Mail to IMAP

    Sent, Drafts, Trash and Junk go to the server's special folders. Every language and charset is preserved.

  • Calendars to CalDAV, contacts to CardDAV

    With automatic DAV discovery.

  • Newest first

    Mail is imported from the newest to the oldest, across all folders.

Built for batches

  • Accounts by CSV

    Add accounts one by one, or by CSV (email;password[;login]).

  • Resumable uploads

    Large PST files upload in chunks, each one checked by SHA-256. Free space is checked first.

  • Preview

    See accents and attachments before anything is written.

  • Reports

    Live progress, log and JSON report per mailbox.

Safe to interrupt

  • Resume without duplicates

    Pause, stop, crash or restart: a resume checks the server and never duplicates a message.

  • Crashes stay contained

    Every job and every PST analysis runs in its own subprocess, so a crash of the native PST library cannot take the worker down.

  • Checks

    After the mail phase, each folder's message count is compared to what was sent, and a sample of messages is read back and compared by hash.

Running it

  • Tuning

    Auto or manual tuning of message builders and IMAP connections, per server.

  • Mailbox passwords

    Stored encrypted. The application can decrypt them, so protect ./data and the SECRET_KEY.

  • Backup

    Everything is in ./data, including secret.key: without it the stored mailbox passwords cannot be decrypted.

What it does not do

  • Several administrators

    A single administrator: one shared password, no accounts or roles.

  • Several hosts

    SQLite on a local disk: a single host, no high availability, no NFS.

  • Encrypted PSTs

    Encrypted or password-protected PSTs have no dedicated handling. They give errors or are marked invalid. Do not rely on it.

  • Survive every corrupted PST

    A corrupted PST can crash libpff. Affected items are skipped and reported, and past MAX_CHILD_CRASHES crashes the job fails.

  • HTTPS

    Port 22362 speaks plain HTTP. Put mccb behind a reverse proxy and do not expose the port directly.

  • Other architectures

    The published image is for linux/amd64 only.

  • Decode everything perfectly

    Items with no charset information may decode imperfectly in some languages.

  • Make up for the target server

    Results depend on the target IMAP and DAV server.

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"