Appearance
Importing mail
Bring your existing mail into clacks two ways — live over IMAP, or from a backup file. Both run in the background, are safe to re-run, and never duplicate a message that already exists in the target mailbox (content-hash dedup). Manage them from the webmail's Import tab or the CLI.
From another IMAP server
Point clacks at the old server; it pulls every folder, resumably (a re-run only fetches new mail):
sh
docker compose exec clacks clacks migrate test --host imap.gmail.com --user you@gmail.com
docker compose exec clacks clacks migrate add you@yourdomain.com --host imap.gmail.com --user you@gmail.com
docker compose exec clacks clacks migrate status 1- Auth is username + password. For Gmail, Outlook, and iCloud use an app-specific password.
CLACKS_SECRETmust be set — it encrypts the stored source password. Without it, IMAP import is disabled (file import still works).- Flags:
--port,--security ssl|starttls,--password(prompted if omitted),--insecure(accept a self-signed source certificate). pause,resume, andremovedo what they say; removing a job wipes the stored credentials and keeps the imported mail.
The webmail's Import tab has the same flow with presets for popular providers.
From a backup file
Upload a .zip on the Import tab (or use the CLI), containing any of:
.emlfiles — the folder each file sits in becomes the mailbox (Thunderbird-style exports)..mboxfiles — one mailbox per file (Gmail Takeout, etc.).- A Proton Mail export (
<id>.eml+<id>.metadata.json+labels.json) — folders, read/unread, starred, replied state, custom labels, and original dates are all preserved.
sh
docker compose exec clacks clacks migrate import backup.zip you@yourdomain.comRe-uploading the same backup imports nothing new. Upload size is capped by CLACKS_LIMITS_MAX_UPLOAD_MB (default 2048).
Proton Mail
Proton has no public IMAP, so use their official Export tool, zip the output folder, and upload it — the metadata files carry your folder structure and flags across.