Repolode
pimalaya

pimalaya/himalaya

A command-line email client written in Rust for managing mail over IMAP, SMTP, JMAP, Gmail and Microsoft Graph.

Open-source alternative to:ThunderbirdOutlook

Stars
7,605
Forks
267
Open issues
6
Last commit
yesterday

What is it?

Himalaya is a command-line interface for reading, searching, sending and organizing email. Instead of an interactive terminal interface, it runs as stateless shell commands, so mail can be handled from scripts or combined with other command-line tools. It offers a shared API for mailboxes, envelopes, flags, messages and attachments, plus protocol-specific subcommands that expose each backend's full surface.

The project supports IMAP, SMTP, ManageSieve, JMAP, the Gmail REST API and Microsoft Graph, and can read local Maildir, m2dir and mbox stores. Authentication covers common SASL mechanisms, OAuth bearer tokens supplied by an external helper, and secrets pulled from commands such as pass. Account discovery uses PACC, Thunderbird autoconfiguration, SRV records and JMAP session resolution, and configuration lives in a TOML file with multi-account support.

Himalaya is written in Rust and gates backend support behind cargo features. Pre-built binaries are available for several package managers, and output can be emitted as JSON with --json.

Key features

  • 01Shared commands for mailboxes, envelopes, flags, messages and attachments across backends
  • 02Supports IMAP, SMTP, ManageSieve, JMAP, Gmail REST API and Microsoft Graph
  • 03Reads local Maildir, m2dir and mbox mail stores
  • 04Automatic account discovery via PACC, Thunderbird autoconfig and SRV records
  • 05SOCKS5 and HTTP proxy support, plus TOML multi-account configuration
  • 06JSON output via --json for scripting

Use cases

  • Searching and archiving mail from shell scripts or cron jobs
  • Managing a mailbox over SSH without a graphical client
  • Sending mail from scripts or build pipelines through SMTP
  • Managing Sieve filtering rules on a mail server

Quick start

  1. 1

    Install via Homebrew

    brew install himalaya
  2. 2

    Run himalaya; the wizard asks for your email address and discovers the account settings

    himalaya

Things to know

  • Gmail requires an app password with 2-step verification, or an external OAuth token helper such as ortie.
  • Outlook requires OAuth 2.0 via an external helper such as ortie, since basic authentication is retired.
  • Proton Mail requires running Proton Bridge locally to provide IMAP and SMTP access.
  • There is no in-place command to edit an account; changes mean re-running the wizard and merging its TOML output.

In collections

Topics

FAQ

What is himalaya?
A command-line email client written in Rust for managing mail over IMAP, SMTP, JMAP, Gmail and Microsoft Graph. Himalaya is a command-line interface for reading, searching, sending and organizing email. Instead of an interactive terminal interface, it runs as stateless shell commands, so mail can be handled from scripts or combined with other command-line tools. It offers a shared API for mailboxes, envelopes, flags, messages and attachments, plus protocol-specific subcommands that expose each backend's full surface.
Is himalaya free to use? What license does it have?
himalaya is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
Is himalaya still maintained?
Actively maintained. The last commit to himalaya was on Nov 6, 2026.
What can I use himalaya for?
Searching and archiving mail from shell scripts or cron jobs Managing a mailbox over SSH without a graphical client Sending mail from scripts or build pipelines through SMTP Managing Sieve filtering rules on a mail server
How do I install himalaya?
Install via Homebrew: brew install himalaya Run himalaya; the wizard asks for your email address and discovers the account settings: himalaya
Where can I get himalaya?
The source code and installation instructions are on GitHub: https://github.com/pimalaya/himalaya

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects