MailFerry v2.0.0-rc.3 — IMAP Migration & Sync
Pre-releaseMailFerry v2.0.0-rc.3 — Release Candidate
High-Performance Native IMAP Migration Engine.
This is the final planned Release Candidate of MailFerry v2.0.0 —
the complete rewrite of MailFerry from Python to Go. It exists to gather
real-world testing before v2.0.0 is declared production-ready.
This is a pre-release, not the latest stable version. v1.0.0
(Python) remains the last stable release. Test carefully and keep your
source mailboxes until you have verified results. MailFerry never
expunges or deletes mail on either server, in any mode.
Highlights of the Go rewrite
- Native standalone binaries — one static executable per platform;
no Python, no Perl, no imapsync, no external runtime. macOS
(Apple Silicon + Intel), Linux (amd64 + arm64), Windows (amd64 + arm64). - Native IMAP engine — pipelined streaming FETCH→APPEND with bounded
memory, LITERAL+, STARTTLS/SSL, COMPRESS=DEFLATE, watchdogs, per-host
connection budgets. - Bubble Tea + Lip Gloss TUI — live dashboard plus nine more views on
F1–F10 (digit aliases for SSH/tmux), detail popups, search, follow-mode
logs, pause/retry controls, graceful-shutdown dialog; automatic TTY
detection with a--no-tuiheadless mode driving the same engine. - SQLite state management — per-message commit protocol (pure Go, no
CGO); resumable and duplicate-free; ack-lost APPEND reconciliation. - Self-healing — stall detection, connection recovery, Recovery Mode
with progressive failed-message isolation, persistent Failed Message
Registry, COMPLETED WITH WARNINGS semantics. - Multi-instance clustering — shared State Database, atomic mailbox
claiming, automatic takeover from offline workers.
New in rc.3 — multi-instance hardening
- Concurrent multi-process operation is first-class: several
MailFerry processes safely share the canonicalmailferry.db
(unique run/worker identities, WAL, busy timeouts, atomic claiming,
leases, heartbeats). Held mailboxes are reported plainly —
Mailbox already active: … owned by worker … (run …)— never
processed twice, and taken over automatically when released or when
their owner dies (verified with real OS-process tests, including
kill‑9 reclaim and exactly-once delivery under contention). - No silent exits: runs that copy nothing say why; headless runs
stream coordination events; every exit path restores the terminal
(second-Ctrl+C and engine-panic paths fixed). - Canonical src/dst CSV format —
srchost,…,dstpassword; the v1
old*/new*header is rejected with a clear rename hint.
Carried from rc.2
- Native OS-standard application paths, resolved centrally and
created lazily:
macOS~/Library/Application Support/MailFerry/· Linux XDG
($XDG_CONFIG_HOME,$XDG_STATE_HOME,$XDG_CACHE_HOME) · Windows
%APPDATA%/%LOCALAPPDATA%. Precedence: CLI flags → mailferry.toml →
native default. mailferry.dbis the canonical per-user State Database (replacing
the./migration.dbworking-directory default). An old development
./migration.dbis detected and reported with explicit choices —
never silently adopted or duplicated.- Zero-side-effect informational commands:
--help,version,
about,changelog,roadmap,config pathscreate nothing — no
configuration, directories, logs or database. Configuration is
generated on the first operational run or explicitly via
mailferry config(regression-tested). - Correct canonical slogan: High-Performance Native IMAP Migration
Engine — enforced by an automated identity test. - Restrictive file permissions (0700 directories, 0600 config/DB/logs
where the platform supports POSIX permissions). - Go-native documentation: rewritten README and CONTRIBUTING, new
end-user macOS installation guide
(docs/INSTALLATION-MACOS.md).
Known limitations (please test and report)
- Not implemented yet (planned for final v2.0.0): deduplication
mode, date-range migration (--from/--to),mailferry attach,
--portablemode. - macOS binaries are not Developer-ID signed and not notarised —
Gatekeeper will ask for a one-time Open Anyway approval on
downloaded binaries. Expected for this RC; see the
macOS installation guide.
Never disable Gatekeeper. - Clustering and COMPRESS=DEFLATE are automated-suite-tested and still
under real-world validation (--compress offis the conservative
fallback while diagnosing). - Windows console support is cross-compiled with limited interactive
testing.
Install & verify
Download the binary for your platform, verify its checksum against
SHA256SUMS, make it executable, and run mailferry version — it must
report MailFerry v2.0.0-rc.3.
shasum -a 256 -c SHA256SUMS # sha256sum -c on LinuxIssues and feedback: https://github.com/ajsap/mailferry/issues
Author: Andy Saputra andy@saputra.org · Licence: GNU AGPL v3.0