#maildir #imap #cli

app vsync

Synchronization between IMAP and local maildir

19 releases

0.10.0 Nov 1, 2023
0.9.3 Jun 13, 2023
0.9.2 Feb 20, 2023
0.7.0 Nov 18, 2022
0.5.0 Jun 29, 2022

#20 in Email

Download history 20/week @ 2023-08-15 18/week @ 2023-08-22 20/week @ 2023-09-05 1/week @ 2023-09-12 18/week @ 2023-09-19 5/week @ 2023-09-26 1/week @ 2023-10-03 2/week @ 2023-10-17 3/week @ 2023-10-24 36/week @ 2023-10-31 23/week @ 2023-11-07 1/week @ 2023-11-14 23/week @ 2023-11-21 62/week @ 2023-11-28

109 downloads per month



vsync IMAP to maildir synchronization

Crates.io builds.sr.ht status

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

NOTE: until vsync 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:

  • As of version 0.9.3, vsync 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 vsync --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 failed or interrupted sync, run vsync --list and inspect the result
    • If in doubt, run vsync --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.


vsync 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 = "~/.maildir"
remote = "imap.example.com:993"
user = "myusername"
pass-cmd = "pass show mail/myaccount"
# or use this:
#password = "s3cr34"

The Vomit project

Both vomit-sync and vsync 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.


~404K SLoC