Skip to content

MailFerry v2.0.0-rc.2 — IMAP Migration & Sync

Pre-release
Pre-release

Choose a tag to compare

@ajsap ajsap released this 18 Jul 12:01

MailFerry v2.0.0-rc.2 — Release Candidate

High-Performance Native IMAP Migration Engine.

This is the first published 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. (An
earlier internal candidate, rc.1, was superseded by this build before
public release; its content is documented in the changelog.)

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-tui headless 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 since the rc.1 build

  • 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.db is the canonical per-user State Database (replacing
    the ./migration.db working-directory default). An old development
    ./migration.db is detected and reported with explicit choices —
    never silently adopted or duplicated.
  • Zero-side-effect informational commands: --help, version,
    about, changelog, roadmap, config paths create 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,
    --portable mode.
  • 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 off is 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.2.

shasum -a 256 -c SHA256SUMS      # sha256sum -c on Linux

Issues and feedback: https://github.com/ajsap/mailferry/issues
Author: Andy Saputra andy@saputra.org · Licence: GNU AGPL v3.0