Skip to content

Migrating from NeoMutt (or Mutt)

There is no config importer. This guide maps every NeoMutt concept to its Antiphon equivalent so the move takes an afternoon.

What changes

  • antiphond owns the network and syncs every account into one local store; the antiphon client only reads that store, so the UI never waits on a server.
  • No mailboxes list: every folder of every account is synced and shown in the sidebar by default; opt folders out with folders_hidden and folders_unsynced rather than opting each one in.
  • Accounts live one per file in accounts/*.toml; passwords come from password_cmd (the same pass show ... your muttrc already calls).
  • Search is notmuch query syntax everywhere.

Concept map

NeoMutt Antiphon
~/.muttrc / neomuttrc config.toml + accounts/*.toml
account hooks (folder-hook) one file per account
$imap_pass / $smtp_pass password_cmd per account
mbsync/offlineimap + notmuch antiphond (built in)
$sendmail / msmtp [smtp] per account; daemon sends from a durable outbox
$record (Sent copy) automatic sent-copy filing
$editor $EDITOR in an embedded pane
send-hook/reply-hook identity tricks [[identity]] with match patterns
$pgp_default_key, crypt hooks pgp_sign + pgp_key per identity
sidebar patch built in
color commands a theme (vespers default)
macro/bind [keys] table, vim defaults
virtual-mailboxes (notmuch) [[saved_searches]]

Step by step

  1. Check the ground:

    antiphon doctor   # names every missing piece
    
  2. Write one accounts/<name>.toml per account: [imap] host, user and password_cmd, then an [[identity]] block per alias with match patterns. A typo fails loudly with the file and line, so re-run antiphon doctor as you go.

  3. Set up the vault (recommended; see the vault): set [vault] passphrase_cmd, then:

    antiphon vault create
    antiphon doctor --init-store
    
  4. Start the client; it launches the daemon and the initial sync. A large mailbox takes a while on the first pass, but the client is usable as mail lands.

    antiphon
    
  5. Port your PGP trust: export each correspondent you verify into the keyring directory (see OpenPGP):

    gpg --armor --export alice@example.com \
        > ~/.config/antiphon/pgp/alice.asc
    
  6. Recreate virtual folders as [[saved_searches]] and any list filing as [[rules]] entries.

  7. Run both clients side by side for a week. The store is a plain Maildir plus notmuch under the mount, so nothing locks you in. Then delete the muttrc.

What does not carry over

  • HTML composing: Antiphon is plaintext-first, permanently.
  • Local folders outside the synced accounts: copy their Maildir files into a folder of an account while the vault is mounted, then let the daemon index and upload them.
  • Scoring and limit-pattern muscle memory: use notmuch queries and saved searches instead.