There are various email synchronization programs like offlineimap or mbsync, which have some inherent limitations:

  • mbsync does not support IMAP IDLE
  • offlineimap does not yet support Python 3, proper IDLE and threading support would need a complete rewrite

Features

  • support only IMAP, no POP3
  • IMAP IDLE support is a must, especially:
    • reconnection of dropped IDLE connections
    • support IDLE for all IMAP folders
  • be able to synchronize IMAP <-> Maildir at first, IMAP <-> IMAP would be nice to have
  • bullet-proof cryptography, especially with respect to certificate validation and resistance to downgrade attacks (preferably make the TLS version configurable)
  • use inotify API to support immediate synchronization back to the server if a message changes locally
  • as simple configuration as possible with good defaults

nice to have:

  • incorporate an API for external tagging tools like notmuch to synchronize tags if the remote supports it
  • GMail support

Implementation

Preferably in Rust, using the imap crate as the core.

Scope

Try to create a MVP, especially flesh out proper testing and learn enough about the problem.


Comments

  • cyphar
    3 months ago by cyphar | Reply

    Just one word of warning (I ran into this last time I tried to write an IMAP client in Rust) -- the IMAP crates all appear to be either slightly or completely broken. There are several but they're all forks of one another and the "best looking" one requires tokio.

Similar Projects

Gary - Kubernetes rethought. by mcounts

The goal of this project is two fold.

The fi...


Learn Rust by michalnowak

Learn Rust by following [The Rust Programming L...


libpathrs by cyphar

The plan is to implement a safe path resolution...