LinuxCommandLibrary

elm

Start and manage email messages

TLDR

Initialize an Elm project, generates an elm.json file

$ elm init
copy

Start interactive Elm shell
$ elm repl
copy

Compile an Elm file, output the result to an index.html file
$ elm make [source]
copy

Compile an Elm file, output the result to a JavaScript file
$ elm make [source] --output=[destination].js
copy

Start local web server that compiles Elm files on page load
$ elm reactor
copy

Install Elm package from
$ elm install [author]/[package]
copy

SYNOPSIS

elm [options...] [folder]

PARAMETERS

-a
    Toggle ALL flag on startup

-A
    Read ALL folders

-c
    Create new folders

-d level
    Set debug level

-D name[=value]
    Define macro

-f folder
    Select initial folder/mailbox

-F format
    Set From: header format

-h
    Display help summary

-H headers
    Headers to display

-i file
    Initial keystrokes file

-I index-spec
    Initial index format

-k
    Keep empty folders

-l
    List folder summary

-L logspec
    Set logging

-m
    Enable MIME support

-n
    No folder locking

-N num
    Start at message number

-o
    Simple menu mode

-p program
    Set pager program

-q
    Quit immediately

-r | -R
    Set Reply-To or From header

-s subject
    Set initial Subject

-S format
    Sort index format

-t
    Toggle threading

-T type
    Terminal type

-u user
    Remote user for POP/IMAP

-v
    Verbose mode

-V var=value
    Set variable

-w
    Watch for new mail

-x
    Expert mode (no prompts)

--help
    Show full help

DESCRIPTION

Elm is a lightweight, full-screen email user agent (MUA) for Unix-like systems, designed for efficient terminal-based email management. It offers an intuitive menu-driven interface with keyboard navigation for reading, replying, forwarding, and deleting messages. Key features include folder support for organizing mail, alias files for address books, automatic sorting rules, MIME attachment handling, and basic search capabilities. Users can compose messages with a built-in editor, supporting headers like Subject and Cc. Elm reads from local mailboxes (Maildir, mbox formats) and supports POP/IMAP in compiled variants.

Unlike command-line tools like mailx, Elm provides visual threading, message indexing, and status lines for headers, making it suitable for power users preferring keyboard efficiency over graphical clients. It's highly configurable via ~/.elm/elm.rc, allowing custom key bindings, display formats, and filters. Though dated, it remains functional on modern systems with minimal dependencies.

CAVEATS

Elm is legacy software with limited maintenance; lacks full UTF-8, modern crypto (PGP/S/MIME optional), and HTML rendering. May require terminfo tweaks for some terminals. Not recommended for primary use over mutt or Thunderbird.

CONFIGURATION

Main config: ~/.elm/elm.rc. Sets variables like folder-default, editor, alias-file. Sample in /etc/elm/elm.rc or /usr/share/elm.

KEY BINDINGS

Arrow keys navigate; h/l previous/next; r reply; f forward; d delete; s save; ? help. Customizable in elm.rc.

FOLDERS

Uses ~/.elm/Mail/ for folders. Commands: c change, + new, copy move messages.

HISTORY

Developed by Dave Taylor in 1986 at U.C. Berkeley; first release 1987. Evolved through versions 1.x to 2.4 ML (1998), adding MIME, IMAP. Maintained sporadically by Michael Elkins and elm-dev group until early 2000s. Still packaged in many distros as 'heirloom-mailx' or standalone.

SEE ALSO

mutt(1), mailx(1), pine(1), mush(1), mail(1)

Copied to clipboard