meli mail client - alpha release 0.4.1

update: 0.4.1 is supported for rust >= 1.39 Checkout current master or latest release tag for bug fixes since 0.4.1.


and other smaller additions. Consult the manpages for up-to-date information.



I use meli as my main client and though at times buggy, it is mostly stable enough to be usable. Data is treated immutably everywhere except for when you explicitly ask for mutation, meaning I don’t think data corruption is generally possible. I’d appreciate bug reports at this stage in order to start polishing it for a proper release.

IMAP, notmuch and… JMAP?

See example configuration files in meli.conf.5

IMAP accounts are retrieved on startup without any local caching. It is easy to implement though and I expect to do it soonish.

notmuch accounts don’t support new mail notifications yet. I have to check if I should use inotify just like in Maildir or poll the database’s mtime. notmuch search queries are passed to libnotmuch unchanged, though the app’s search syntax is quite similar.

JMAP is at an early stage still and unless you are a dev in pertinent projects or just really want to try it you shouldn’t care about it yet. I’ve written code using jmap-proxy for IMAP written in Perl. Authentication is still an unclear subject in JMAP and I haven’t a way to implement how fastmail, the company behind JMAP, does it without an account.

JMAP translates really well to Rust thanks to serde_json. By modeling JMAP Objects and methods as traits we can have some type safety in our queries:

One of JMAP’s features is the ability to reference the results of previous calls in the same request, thus preventing the need for round-trips:


vCard is haphazardly parsed and available along with meli contacts. They are read-only for now, until a more standard-compliant parser and serializer is written.


sqlite3 searching uses a simple query language based on the Gmail webclient one:

((from:unrealistic and (to:complex or not “query”)) or flags:seen,draft)

You can also explore your data with SQL by loading the database ($XDG_DATA_HOME/meli/) with the sqlite3 cli tool. IMAP searches are converted from this language to SEARCH queries. notmuch queries are not tampered with at all.

quick unsubscribe

If a newsletter has a List-Unsubscribe header, meli can send an unsubscribe request with the command list-unsubscribe. Other _List-*_ headers are also usable.


You can now open attachments using mailcap files. You can still open them with xdg-open as well.

account info

View supported mailstore features in the status tab:

vim-like motions

Prepend any move motion with a number n to repeat it n times.