Migrating from NeoMutt (or Weremutt)¶
Antiphon has no config importer by design: a muttrc encodes years of workarounds for problems Antiphon does not have. This guide maps the concepts so the move is an afternoon, not a project.
The mental model shift¶
NeoMutt talks to your IMAP server (or reads a Maildir someone
else syncs) and does everything in one process. Antiphon
splits that: antiphond owns the network and syncs every
account into one local store, indexed by notmuch, sealed in an
encrypted vault at rest; the antiphon client only ever reads
the local store, so nothing in the UI waits on a server.
Practical consequences:
- No
$folder,$spoolfileor mailboxes list: every folder of every account is synced and appears in the sidebar; the unified view merges accounts. - No
$imap_user/$imap_pass: accounts live one-per-file inaccounts/*.toml, and passwords come frompassword_cmd(the samepass show ...command your muttrc probably already calls). - Search is notmuch query syntax everywhere, always scoped to
the accounts in view; virtual folders map to
[[saved_searches]].
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, gallery available) |
macro/bind |
[keys] table, vim-flavoured defaults |
| virtual-mailboxes (notmuch) | [[saved_searches]] |
The move, step by step¶
- Build and check the ground:
antiphon doctornames every missing piece (notmuch, gpg,$EDITOR, config). - Write one
accounts/<name>.tomlper account: host, user,password_cmd, identities withmatchpatterns for your aliases. Strict parsing means a typo fails loudly with the file and line, so iterate withantiphon doctor. - Set up the vault (recommended; see
the vault): configure
[vault] passphrase_cmd, thenantiphon vault createandantiphon doctor --init-store. - Start
antiphon: it launches the daemon, which performs the initial sync. A large mailbox takes a while on the first pass; the client is usable as mail lands. - Port your PGP trust: export the correspondents you verify
into the keyring directory (see OpenPGP):
gpg --armor --export alice@example.com > ~/.config/antiphon/pgp/alice.asc. - Recreate your virtual folders as
[[saved_searches]]and any list filing as[[rules]]entries. - Run both clients side by side for a week; the store is yours (plain Maildir + 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: import them into a folder of an account (copy the Maildir files in while the vault is mounted, then let the daemon index and upload).
- Scoring, limit-pattern muscle memory: use notmuch queries and saved searches instead.