BSD/Linux terminal email client with support for multiple accounts and Maildir / mbox / notmuch / IMAP / JMAP / NNTP (usenet).
Community links:
mailing lists | #meli
on OFTC IRC | Report bugs and/or feature requests in meli's issue tracker
Main repository: https://git.meli.delivery/meli/meli
Official mirrors: https://github.com/meli/meli
| | | |
:---:|:---:|:---:
|
|
Main view | Compact main view | Compose with embed terminal editor
meli aims for configurability, extensibility with sane defaults, and modern practices. It is a mail client for both casual and power users of the terminal.
A variety of email workflows and software stacks should be usable with meli. Integrate e-mail storage, sync, tagging system, SMTP client, contact management and editor of your choice to replace the defaults.
| Protocol | Support | |:------------:|:----------------| | IMAP | full | | Maildir | full | | notmuch | full* | | mbox | read-only | | JMAP | functional | | NNTP / Usenet| functional |
NO_COLOR
supportcargo install --git https://git.meli.delivery/meli/meli.git meli
See a comprehensive tour of meli
in the manual page meli(7)
.
See also the Quickstart tutorial online.
After installing meli
, see meli(1)
, meli.conf(5)
, meli(7)
and meli-themes(5)
for documentation.
Sample configuration and theme files can be found in the meli/docs/samples/
subdirectory.
Manual pages are also hosted online.
meli
by default looks for a configuration file in this location: $XDG_CONFIG_HOME/meli/config.toml
You can run meli with arbitrary configuration files by setting the $MELI_CONFIG
environment variable to their locations, i.e.:
sh
MELI_CONFIG=./test_config cargo run
For a quick start, build and install locally:
sh
PREFIX=~/.local make install
Available subcommands for make
are listed with make help
.
The Makefile should be POSIX portable and not require a specific make
version.
meli
requires rust 1.65 and rust's package manager, Cargo.
Information on how to get it on your system can be found here: https://doc.rust-lang.org/cargo/getting-started/installation.html
With Cargo available, the project can be built with make
and the resulting binary will then be found under target/release/meli
.
Run make install
to install the binary and man pages.
This requires root, so I suggest you override the default paths and install it in your $HOME
: make PREFIX=$HOME/.local install
.
You can build and run meli
with one command: cargo run --release
.
Some functionality is held behind "feature gates", or compile-time flags. The following list explains each feature's purpose:
gpgme
enables GPG support via libgpgme
(on by default)dbus-notifications
enables showing notifications using dbus
(on by default)notmuch
provides support for using a notmuch database as a mail backend (on by default)jmap
provides support for connecting to a jmap server and use it as a mail backend (on by default)sqlite3
provides support for builting fast search indexes in local sqlite3 databases (on by default)cli-docs
includes the manpage documentation compiled by either mandoc
or man
binary to plain text in meli
's command line. Embedded documentation can be viewed with the subcommand meli man [PAGE]
(on by default).Building with Debian's packaged cargo might require the installation of these two packages: librust-openssl-sys-dev librust-libdbus-sys-dev
A *.deb
package can be built with make deb-dist
To use the optional notmuch backend feature, you must have libnotmuch5
installed in your system.
In Debian-like systems, install the libnotmuch5
packages.
meli
detects the library's presence on runtime.
To use the optional gpg feature, you must have libgpgme
installed in your system.
In Debian-like systems, install the libgpgme11
package.
meli
detects the library's presence on runtime.
HTML rendering is achieved using w3m by default.
You can use the pager.html_filter
setting to override this (for more details you can consult meli.conf(5)
).
Development builds can be built and/or run with
cargo build
cargo run
There is a debug/tracing log feature that can be enabled by using the flag --feature debug-tracing
after uncommenting the features in Cargo.toml
.
The logs are printed in stderr when the env var MELI_DEBUG_STDERR
is defined, thus you can run meli
with a redirection (i.e 2> log
).
Code style follows the rustfmt.toml
file.