22 releases
new 0.8.10 | Dec 6, 2024 |
---|---|
0.8.9 | Nov 27, 2024 |
0.8.7 | Jul 30, 2024 |
0.8.5-rc.3 | Dec 11, 2023 |
0.0.0 | Jul 8, 2019 |
#53 in Email
528 downloads per month
5MB
115K
SLoC
meli
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!
#meli
on OFTC IRC- 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:
- Install
- Build
- Quick start
- Supported E-mail backends
- E-mail submission backends
- Non-exhaustive list of features
- HTML Rendering
- Documentation
Install
cargo install meli
orcargo install --git https://git.meli-email.org/meli/meli.git meli
crates.io link- Official Debian packages https://packages.debian.org/trixie/meli
- AUR (archlinux) https://aur.archlinux.org/packages/meli
- NetBSD with pkgsrc https://pkgsrc.se/mail/meli
- OpenBSD ports https://openports.pl/path/mail/meli
- macOS with MacPorts https://ports.macports.org/port/meli/
- Nix with Nixpkgs https://search.nixos.org/packages?query=meli
- Pre-built debian package, static binaries for
amd64
,arm64
architectures
Build
Run make
or cargo build --release --bin meli
.
For detailed building instructions, see BUILD.md
Cargo Compile-time Features
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 |
Quick start
# 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 --help
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.
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 run
See meli(7)
for an extensive tutorial and meli.conf(5)
for all configuration values.
Main view | Compact main view | Compose with embed terminal editor |
---|---|---|
Supported E-mail backends
Protocol | Support |
---|---|
IMAP | full |
Maildir | full |
notmuch | full[^0] |
mbox | read-only |
JMAP | functional |
NNTP / Usenet | functional |
[^0]: 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.
E-mail submission backends
- SMTP
- Pipe to shell script
- Server-side submission when supported
Non-exhaustive list of features
- 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_COLOR
support- 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
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)
).
Documentation
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 meli
or
meli -c ./test_config
Dependencies
~19–58MB
~1M SLoC