BSD/Linux/macos terminal email client with support for multiple accounts and Maildir / mbox / notmuch / IMAP / JMAP / NNTP (Usenet).
Try an old, outdated but online and interactive web demo powered by WebAssembly!
- Say hello on
#melion OFTC IRC, or, #meli:matrix.orgMatrix bridge (if operational)- Mailing lists
- Main repository https://git.meli-email.org/meli/meli Report bugs and/or feature requests in meli's issue tracker
Table of contents:
-
Crates.io with
cargoon all supported systems and architectures https://crates.io/crates/melicargo install meli
Install latest development snapshot from git repository:
cargo install --git https://git.meli-email.org/meli/meli.git meli
-
Official Debian (and Debian derivatives) packages https://packages.debian.org/trixie/meli
apt install meli
-
AUR (archlinux) https://aur.archlinux.org/packages/meli
-
OpenSUSE https://build.opensuse.org/package/show/openSUSE:Factory/meli
-
Alpine Linux https://pkgs.alpinelinux.org/packages?name=meli
apk install meli
-
NetBSD with pkgsrc https://pkgsrc.se/mail/meli
-
OpenBSD ports https://openports.pl/path/mail/meli
-
macOS with
-
Homebrew https://formulae.brew.sh/formula/meli
brew install meli
-
MacPorts https://ports.macports.org/port/meli/
port install meli
-
-
Nix with Nixpkgs https://search.nixos.org/packages?query=meli
-
Pre-built debian package, static binaries for
amd64,arm64architectures
Run make or cargo build --release --bin meli.
See make help output for information on how to use the Makefile.
For detailed building instructions, see BUILD.md
meli supports opting in and out of features at compile time with cargo features.
The contents of the default feature are:
default = ["sqlite3", "notmuch", "smtp", "dbus-notifications", "gpgme", "cli-docs", "jmap", "static"]A list of all the features and a description for each follows:
| Feature flag | Dependencies | Notes |
|---|---|---|
notmuch |
maildir feature |
Provides the notmuch backend |
jmap |
http feature, url crate with serde feature |
Provides the JMAP backend |
smtp |
tls feature |
Integrated async SMTP client |
sqlite3 |
rusqlite crate with bundled-full feature |
Used in caches |
sqlite3-static |
rusqlite crate with bundled-full feature |
Same as sqlite3 feature but provided for consistency and in case sqlite3 feature stops bundling libsqlite3 statically in the future. |
smtp-trace |
smtp feature |
Connection trace logs on the trace logging level |
gpgme |
GPG use by dynamically loading libgpgme.so |
|
tls-static |
native-tls crate with vendored feature |
Links with OpenSSL statically where it's used |
http-static |
isahc crate with static-curl feature |
Links with curl statically |
dbus-notifications |
notify-rust dependency |
Uses DBus notifications |
dbus-static |
notify-rust dependency and enableds its d_vendored feature |
Includes the dbus library statically. |
cli-docs |
flate2 dependency |
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] |
libz-static |
libz-sys dependency and enables its static feature |
Allows for the transitive dependency libz (from curl) to be linked statically. |
static |
enables tls-static, http-static, sqlite3-static, dbus-static, libz-static features |
# Create configuration file in ${XDG_CONFIG_HOME}/meli/config.toml:
$ meli create-config
# Edit configuration in ${EDITOR} or ${VISUAL}:
$ meli edit-config
# Optionally, install manual pages if installed via cargo:
$ meli install-man
# Ready to go.
$ meli
# You can read any manual page with the CLI subcommand `man`:
$ meli man meli.7
# See help output for all options and subcommands.
$ meli --helpSee 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.
Examples for configuration file settings can be found in meli.conf.examples(5)
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.:
MELI_CONFIG=./test_config cargo runSee meli(7) for an extensive tutorial and meli.conf(5) for all configuration values.
| Main view | Compact main view | Compose with embed terminal editor |
|---|---|---|
| Protocol | Support |
|---|---|
| IMAP | full |
| Maildir | full |
| notmuch | full1 |
| mbox | read-only |
| JMAP | functional |
| NNTP / Usenet | functional |
- SMTP
- Pipe to shell script
- Server-side submission when supported
- TLS
- email threading support
- multithreaded, async operation
- optionally run your editor of choice inside meli, with an embedded xterm-compatible terminal emulator
- plain text configuration in TOML
- ability to open emails in UI tabs and switch to them
- optional sqlite3 index search
- override almost any setting per mailbox, per account
- contact list (+read-only vCard and mutt alias file support)
- forced UTF-8 (other encodings are read-only)
- configurable shortcuts
- theming
NO_COLORsupport- ascii-only drawing characters option
- view text/html attachments through an html filter command (w3m by default)
- pipe attachments/mail to stuff
- use external attachment file picker instead of typing in an attachment's full path
- GPG signing, encryption, signing + encryption
- GPG signature verification
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)).
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, or use the [-c, --config] argument:
MELI_CONFIG=./test_config melior
meli -c ./test_configFootnotes
-
there's no support for searching through all email directly, you'd have to create a mailbox with a notmuch query that returns everything and search inside that mailbox. ↩