.\" meli - meli.1 .\" .\" Copyright 2017-2019 Manos Pitsidianakis .\" .\" This file is part of meli. .\" .\" meli is free software: you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by .\" the Free Software Foundation, either version 3 of the License, or .\" (at your option) any later version. .\" .\" meli is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public License .\" along with meli. If not, see . .\" .de Shortcut .Sm .Aq \\$1 \ .Po .Em shortcuts.\\$2\&. Ns .Em \\$3 .Pc .Sm .. .de ShortcutPeriod .Aq \\$1 .Po .Em shortcuts.\\$2\&. Ns .Em \\$3 .Pc Ns .. .de Command .Bd -ragged .Cm \\$* .Ed .sp .. .Dd July 29, 2019 .Dt MELI 1 .Os .Sh NAME .Nm meli .Nd Meli Mail User Agent. meli is the Greek word for honey .Sh SYNOPSIS .Nm .Op Fl -help | h .Op Fl -version | v .Op Fl -config Ar path .Bl -tag -width flag -offset indent .It Fl -help | h Show help message and exit. .It Fl -version | v Show version and exit. .It Fl -config Ar path Start meli with given configuration file. .It Cm create-config Op Ar path Create configuration file in .Pa path if given, or at .Pa $XDG_CONFIG_HOME/meli/config.toml .It Cm test-config Op Ar path Test a configuration file for syntax issues or missing options. .It Cm man Op Ar page Print documentation page and exit (Piping to a pager is recommended). .It Cm print-default-theme Print default theme keys and values in TOML syntax, to be used as a blueprint. .It Cm print-loaded-themes Print all loaded themes in TOML syntax. .It Cm compiled-with Print compile time feature flags of this binary. .It Cm view View mail from input file. .El .Sh DESCRIPTION .Nm is a terminal mail client aiming for extensive and user-frendly configurability. .Bd -literal ^^ .-=-=-=-. ^^ ^^ (`-=-=-=-=-`) ^^ (`-=-=-=-=-=-=-`) ^^ ^^ ^^ (`-=-=-=-=-=-=-=-`) ^^ ( `-=-=-=-(@)-=-=-` ) ^^ (`-=-=-=-=-=-=-=-=-`) ^^ (`-=-=-=-=-=-=-=-=-`) ^^ (`-=-=-=-=-=-=-=-=-`) ^^ (`-=-=-=-=-=-=-=-=-`) ^^ ^^ (`-=-=-=-=-=-=-=-`) ^^ (`-=-=-=-=-=-=-`) ^^ ^^ (`-=-=-=-=-`) `-=-=-=-=-` ^^ .Ed .Sh STARTING WITH meli When launched for the first time, .Nm will search for its configuration directory, .Pa $XDG_CONFIG_HOME/meli/ Ns \&. If it doesn't exist, you will be asked if you want to create one and presented with a sample configuration file .Pq Pa $XDG_CONFIG_HOME/meli/config.toml that includes the basic settings required for setting up accounts allowing you to copy and edit right away. See .Xr meli.conf 5 for the available configuration options. .Pp At any time, you may press .Shortcut \&? general toggle_help for a searchable list of all available actions and shortcuts, along with every possible setting and command that your version supports. .Pp The main visual navigation tool, the left-side sidebar may be toggled with .ShortcutPeriod ` listing toggle_menu_visibility \&. .Pp Each mailbox may be viewed in 4 modes: Plain views each mail individually, Threaded shows their thread relationship visually, Conversations collapses each thread of emails into a single entry, Compact shows one row per thread. .Pp If you're using a light color palette in your terminal, you should set .Em theme = "light" in the .Em terminal section of your configuration. See .Xr meli-themes 5 for complete documentation on user themes. .Pp See .Xr meli 7 for a more detailed tutorial on using .Nm Ns \&. .Sh VIEWING MAIL Open attachments by typing their index in the attachments list and then .ShortcutPeriod a envelope_view open_attachment \&. .Nm will attempt to open text inside its pager, and other content via .Cm xdg-open Ns \&. Press .Shortcut m envelope_view open_mailcap instead to use the mailcap entry for the MIME type of the attachment, if any. See .Sx FILES for the location of the mailcap files and .Xr mailcap 5 for their syntax. You can save individual attachments with the .Command save-attachment Ar INDEX Ar path-to-file command. .Ar INDEX is the attachment's index in the listing. If the path provided is a directory, the attachment is saved with its filename set to the filename in the attachment, if any. If the 0th index is provided, the entire message is saved. If the path provided is a directory, the message is saved as an eml file with its filename set to the messages message-id. .Sh SEARCH Each e-mail storage backend has a default search method assigned. .Em IMAP uses the SEARCH command, .Em notmuch uses libnotmuch and .Em Maildir/mbox performs a slow linear search. It is advised to use a search backend on .Em Maildir/mbox accounts. .Nm Ns , if built with sqlite3, includes the ability to perform full text search on the following fields: .Em From , .Em To , .Em Cc , .Em Bcc , .Em In-Reply-To , .Em References , .Em Subject and .Em Date . The message body (in plain text human readable form) and the flags can also be queried. To enable sqlite3 indexing for an account set .Em search_backend to .Em sqlite3 in the configuration file and to create the sqlite3 index issue command: .Command index Ar ACCOUNT_NAME Ns To search in the message body type your keywords without any special formatting. To search in specific fields, prepend your search keyword with "field:" like so: .Pp .D1 subject:helloooo or subject:\&"call for help\&" or \&"You remind me today of a small, Mexican chihuahua.\&" .Pp .D1 not ((from:unrealistic and (to:complex or not "query")) or flags:seen,draft) .Pp .D1 alladdresses:mailing@example.com and cc:me@example.com .Pp Boolean operators are .Em or Ns , .Em and and .Em not .Po alias: .Em \&! .Pc String keywords with spaces must be quoted. Quotes should always be escaped. .sp .Sy Important Notice about IMAP/JMAP .sp To prevent downloading all your messages from your IMAP/JMAP server, don't set .Em search_backend to .Em sqlite3 Ns \&. .Nm will relay your queries to the IMAP server. Expect a delay between query and response. Sqlite3 on the contrary at reasonable mailbox sizes should have a non noticable delay. .Ss QUERY ABNF SYNTAX .Bl -bullet .It .Li query = \&"(\&" query \&")\&" | from | to | cc | bcc | alladdresses | subject | flags | has_attachments | query \&"or\&" query | query \&"and\&" query | not query .It .Li not = \&"not\&" | \&"!\&" .It .Li quoted = ALPHA / SP *(ALPHA / DIGIT / SP) .It .Li term = ALPHA *(ALPHA / DIGIT) | DQUOTE quoted DQUOTE .It .Li tagname = term .It .Li flagval = \&"passed\&" | \&"replied\&" | \&"seen\&" | \&"read\&" | \&"junk\&" | \&"trash\&" | \&"trashed\&" | \&"draft\&" | \&"flagged\&" | tagname .It .Li flagterm = flagval | flagval \&",\&" flagterm .It .Li from = \&"from:\&" term .It .Li to = \&"to:\&" term .It .Li cc = \&"cc:\&" term .It .Li bcc = \&"bcc:\&" term .It .Li alladdresses = \&"alladdresses:\&" term .It .Li subject = \&"subject:\&" term .It .Li flags = \&"flags:\&" flag | \&"tags:\&" flag | \&"is:\&" flag .El .Sh TAGS .Nm supports tagging in notmuch and IMAP/JMAP backends. Tags can be searched with the `tags:` or `flags:` prefix in a search query, and can be modified by .Command tag add TAG and .Command tag remove TAG (see .Xr meli.conf 5 TAGS Ns , settings .Ic colors and .Ic ignore_tags for how to set tag colors and tag visibility) .Sh COMPOSING .Ss Opening the message Composer tab To create a new mail message, press .Shortcut m listing new_mail while viewing a mailbox. To reply to a mail, press .ShortcutPeriod R envelope_view reply \&. Both these actions open the mail composer view in a new tab. .Ss Editing text .Bl -bullet -compact .It Edit the header fields by selecting with the arrow keys and pressing .Shortcut Enter general focus_in_text_field to enter .Em INSERT mode and .Cm Esc key to exit. .It At any time you may press .Shortcut e composing edit_mail Ns to launch your editor (see .Xr meli.conf 5 COMPOSING Ns , setting .Ic editor_command for how to select which editor to launch). .It Your editor can be used in .Nm Ns \&'s embed terminal emulator by setting .Ic embed to .Em true in your composing settings .Po You can return to .Nm at any time by pressing .Aq Ctrl-Z .Pc .It When launched, your editor captures all input until it exits or stops. .It To stop your editor and return to .Nm press .Aq Ctrl-z and to resume editing press the .Ic edit_mail command again. .El .Ss Attachments Attachments may be handled with the .Cm add-attachment Ns , .Cm remove-attachment commands (see below). .Ss Sending Finally, pressing .Shortcut s composing send_mail will send your message according to your settings .Po see .Xr meli.conf 5 COMPOSING Ns , setting name .Ic send_mail .Pc Ns \&. With no Draft or Sent mailbox, .Nm tries first saving mail in your INBOX and then at any other mailbox. On complete failure to save your draft or sent message it will be saved in your .Em tmp directory instead and you will be notified of its location. .Ss Drafts To save your draft without sending it, issue .Em COMMAND .Cm close and select 'save as draft'. .sp To open a draft for further editing, select your draft in the mail listing and press .Ic edit_mail Ns \&. .Sh CONTACTS .Nm supports two kinds of contact backends: .sp .Bl -enum -compact -offset indent .It an internal format that gets saved under .Pa $XDG_DATA_HOME/meli/account_name/addressbook Ns \&. .It vCard files (v3, v4) through the .Ic vcard_folder option in the account section. The path defined as .Ic vcard_folder can hold multiple vCards per file. They are loaded read only. .El .sp See .Xr meli.conf 5 ACCOUNTS for the complete account configuration values. .Sh MODES .Bl -tag -compact -width 8n .It NORMAL is the default mode .It COMMAND commands are issued in .Em COMMAND mode, by default started with .Shortcut \&: general enter_command_mode and exited with .Aq Esc key. .It EMBED is the mode of the embed terminal emulator .It INSERT captures all input as text input, and is exited with .Cm Esc key. .El .Ss COMMAND Mode .Ss Mail listing commands .Bl -tag -width 36n .It Cm set Ar plain | threaded | compact | conversations set the way mailboxes are displayed .El .TS allbox tab(:); lb l. conversations:shows one entry per thread compact:shows one row per thread threaded:shows threads as a tree structure plain:shows one row per mail, regardless of threading .TE .Bl -tag -width 36n .It Cm sort Ar subject | date \ Ar asc | desc sort mail listing .It Cm subsort Ar subject | date \ Ar asc | desc sorts only the first level of replies. .It Cm go Ar n where .Ar n is a mailbox prefixed with the .Ar n number in the side menu for the current account .It Cm toggle thread_snooze don't issue notifications for thread under cursor in thread listing .It Cm search Ar STRING search mailbox with .Ar STRING query. Escape exits search results. .It Cm select Ar STRING select threads matching .Ar STRING query. .It Cm set seen, set unseen Set seen status of message. .It Cm import Ar FILEPATH Ar MAILBOX_PATH Import mail from file into given mailbox. .It Cm copyto, moveto Ar MAILBOX_PATH Copy or move to other mailbox. .It Cm copyto, moveto Ar ACCOUNT Ar MAILBOX_PATH Copy or move to another account's mailbox. .It Cm delete Delete selected threads. .It Cm export-mbox Ar FILEPATH Export selected threads to mboxcl2 file. .It Cm create-mailbox Ar ACCOUNT Ar MAILBOX_PATH create mailbox with given path. Be careful with backends and separator sensitivity (eg IMAP) .It Cm subscribe-mailbox Ar ACCOUNT Ar MAILBOX_PATH subscribe to mailbox with given path .It Cm unsubscribe-mailbox Ar ACCOUNT Ar MAILBOX_PATH unsubscribe to mailbox with given path .It Cm rename-mailbox Ar ACCOUNT Ar MAILBOX_PATH_SRC Ar MAILBOX_PATH_DEST rename mailbox .It Cm delete-mailbox Ar ACCOUNT Ar MAILBOX_PATH deletes mailbox in the mail backend. This action is unreversible. .El .Ss Mail view commands .Bl -tag -width 36n .It Cm pipe Ar EXECUTABLE Ar ARGS pipe pager contents to binary .It Cm filter Ar EXECUTABLE Ar ARGS filter and display pager contents through command .It Cm list-post post in list of viewed envelope .It Cm list-unsubscribe unsubscribe automatically from list of viewed envelope .It Cm list-archive open list archive with .Cm xdg-open .El .Ss composing mail commands .Bl -tag -width 36n .It Cm add-attachment Ar PATH in composer, add .Ar PATH as an attachment .It Cm add-attachment < Ar CMD Ar ARGS in composer, pipe .Ar CMD Ar ARGS output into an attachment .It Cm add-attachment-file-picker Launch command defined in the configuration value .Ic file_picker_command in .Xr meli.conf 5 TERMINAL .It Cm add-attachment-file-picker < Ar CMD Ar ARGS Launch command .Ar CMD Ar ARGS Ns \&. The command should print file paths in stderr, separated by NULL bytes. .It Cm remove-attachment Ar INDEX remove attachment with given index .It Cm toggle sign toggle between signing and not signing this message. If the gpg invocation fails then the mail won't be sent. See .Xr meli.conf 5 PGP for PGP configuration. .It Cm save-draft saves a copy of the draft in the Draft folder .El .Ss generic commands .Bl -tag -width 36n .It Cm open-in-tab opens envelope view in new tab .It Cm close closes closeable tabs .It Cm setenv Ar KEY=VALUE set environment variable .Ar KEY to .Ar VALUE .It Cm printenv Ar KEY print environment variable .Ar KEY .It Cm quit Quits .Nm Ns \&. .It Cm reload-config Reloads configuration but only if account configuration is unchanged. Useful if you want to reload some settings without restarting .Nm Ns \&. .El .Sh SHORTCUTS See .Xr meli.conf 5 SHORTCUTS for shortcuts and their default values. .Sh EXIT STATUS .Nm exits with 0 on a successful run. Other exit statuses are: .Bl -tag -width 5n .It 1 catchall for general errors .It 101 process panic .El .Sh ENVIRONMENT .Bl -tag -width "$XDG_CONFIG_HOME/meli/plugins/*" -offset indent .It Ev EDITOR Specifies the editor to use .It Ev MELI_CONFIG Override the configuration file .It Ev NO_COLOR When present (regardless of its value), prevents the addition of ANSI color. The configuration value .Ic use_color overrides this. .El .Sh FILES .Nm uses the following parts of the XDG standard: .Bl -tag -width "$XDG_CONFIG_HOME/meli/plugins/*" -offset indent .It Ev XDG_CONFIG_HOME defaults to .Pa ~/.config/ .It Ev XDG_CACHE_HOME defaults to .Pa ~/.cache/ .El .Pp and appropriates the following locations: .Bl -tag -width "$XDG_CONFIG_HOME/meli/plugins/*" -offset indent .It Pa $XDG_CONFIG_HOME/meli/ User configuration directory .It Pa $XDG_CONFIG_HOME/meli/config.toml User configuration file, see .Xr meli.conf 5 for its syntax and values. .It Pa $XDG_CONFIG_HOME/meli/hooks/* Reserved for event hooks. .It Pa $XDG_CONFIG_HOME/meli/plugins/* Reserved for plugin files. .It Pa $XDG_CACHE_HOME/meli/* Internal cached data used by meli. .It Pa $XDG_DATA_HOME/meli/* Internal data used by meli. .It Pa $XDG_DATA_HOME/meli/meli.log Operation log. .It Pa /tmp/meli/* Temporary files generated by .Nm Ns \&. .El .Pp Mailcap entries are searched for in the following files, in this order: .Pp .Bl -enum -compact -offset indent .It .Pa $XDG_CONFIG_HOME/meli/mailcap .It .Pa $XDG_CONFIG_HOME/.mailcap .It .Pa $HOME/.mailcap .It .Pa /etc/mailcap .It .Pa /usr/etc/mailcap .It .Pa /usr/local/etc/mailcap .El .Sh SEE ALSO .Xr meli.conf 5 , .Xr meli-themes 5 , .Xr meli 7 , .Xr xdg-open 1 , .Xr mailcap 5 .Sh CONFORMING TO .Bl -bullet -compact .It XDG Standard .Lk https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html Ns \&. .It mailcap file, RFC 1524: A User Agent Configuration Mechanism For Multimedia Mail Format Information .It RFC 5322: Internet Message Format .It RFC 6532: Internationalized Email Headers .It RFC 2047: MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text .It RFC 3676: The Text/Plain Format and DelSp Parameters .It RFC 3156: MIME Security with OpenPGP .It RFC 2183: Communicating Presentation Information in Internet Messages: The Content-Disposition Header Field .It RFC 2369: The Use of URLs as Meta-Syntax for Core Mail List Commands and their Transport through Message Header Fields .It .Li maildir .Lk https://cr.yp.to/proto/maildir.html Ns \&. .It RFC 5321: Simple Mail Transfer Protocol .It RFC 3461: Simple Mail Transfer Protocol (SMTP) Service Extension for Delivery Status Notifications (DSNs) .It RFC 4954: SMTP Service Extension for Authentication .It RFC 6152: SMTP Service Extension for 8-bit MIME Transport .It RFC 4616: The PLAIN Simple Authentication and Security Layer (SASL) Mechanism .It RFC 3501: INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1 .It RFC 3691: Internet Message Access Protocol (IMAP) UNSELECT command .It RFC 4549: Synch Ops for Disconnected IMAP4 Clients .It RFC 7162: IMAP Extensions: Quick Flag Changes Resynchronization (CONDSTORE) and Quick Mailbox Resynchronization (QRESYNC) .It RFC 8620: The JSON Meta Application Protocol (JMAP) .It RFC 8621: The JSON Meta Application Protocol (JMAP) for Mail .It RFC 3977: Network News Transfer Protocol (NNTP) .It RFC 6048: Network News Transfer Protocol (NNTP) Additions to LIST Command .It vCard Version 3, RFC 2426: vCard MIME Directory Profile .It vCard Version 4, RFC 6350: vCard Format Specification .It RFC 6868 Parameter Value Encoding in iCalendar and vCard .El .Sh AUTHORS Copyright 2017-2022 .An Manos Pitsidianakis Mt manos@pitsidianak.is Released under the GPL, version 3 or greater. This software carries no warranty of any kind (See COPYING for full copyright and warranty notices). .Pp .Lk https://meli.delivery