#imap #maildir

app m2sync

Tool for synchronizing IMAP and local m2dir

1 unstable release

0.11.0 May 15, 2024

#77 in Email



m2sync IMAP to m2dir synchronization

Crates.io builds.sr.ht status

m2sync is a small CLI wrapper around vomit-m2sync. It aims to provide access to all functionality that vomit-m2sync offers. Currently, syncing a local m2dir and a remote IMAP mailbox in both directions is supported. m2sync has to be run periodically to keep the two synchronized.

NOTE: until m2sync has reached version 1.0 it has to be considered experimental, and it is entirely possible that it will delete your email!

Here is some quick steps to hopefully avoid that:

  • Currently, m2sync will refuse to delete an entire mailbox (folder) unless the --force option is used
  • The code paths for one-way and two-way sync are explicitly kept seperate, so if you just want to get the remote state locally, run m2sync --pull, it will not touch your remote mailbox
  • A state cache is required for two-way sync to function properly, but caches are hard. One area of concern are potentially untested failure cases:
    • After any hard-interrupted sync, run m2sync --list and inspect the result
    • If in doubt, run m2sync --pull once (potentially undoing some local changes) to get back to a clean state

Reach out to the mailing list if you have questions.

For more usage information, see the man page.


m2sync uses vomit-config, which means the default configuration file location is $XDG_CONFIG_DIR/vomit/config.toml (usually ~/.config/vomit/config.toml).

Example configuration file:

local = "~/.mail"
remote = "imap.example.com:993"
user = "myusername"
pass-cmd = "pass show mail/myaccount"
# or use this:
#password = "s3cr34"

The Vomit project

Both vomit-m2sync and m2sync are part of the Vomit project.


Please send patches to the vomit mailing list.


The mailing list is open for all kinds of feedback, questions, and discussions.


~766K SLoC