I/O IMAP [](https://docs.rs/io-imap/latest/io_imap) [](https://matrix.to/#/#pimalaya:matrix.org) [](https://fosstodon.org/@pimalaya) [](https://pimalaya.org/sponsor/)

August 22, 2026 · View on GitHub

IMAP client library for Rust

This library is composed of 3 feature-gated layers:

  • Low-level I/O-free coroutines: no_std-compatible state machines containing the whole IMAP logic, usable anywhere
  • Mid-level light client: a standard, blocking client wrapping a stream you opened yourself
  • High-level full client: the light client plus TCP connections and TLS negotiations handled for you

Table of contents

Features

  • I/O-free coroutines: state machines with no socket, no async runtime and no forced I/O model; run them from any blocking, async or test harness.
  • Complete IMAP4rev1 command set: manage mailboxes, messages, flags and searches over a full standard session lifecycle.
  • Push notifications: keep a mailbox open with IDLE and receive live change events, refreshed periodically to survive middle-boxes.
  • Incremental resync: pull only what changed since the last sync with CONDSTORE and QRESYNC, powering the built-in mailbox watcher.
  • Server-side sorting and threading: SORT and THREAD support, with a client-side sorting fallback for servers lacking the extension.
  • Streaming upload and download: message bodies flow straight between the socket and your storage, never held in memory whole.
  • SASL authentication: ANONYMOUS, LOGIN, PLAIN, XOAUTH2, OAUTHBEARER and SCRAM-SHA-256 mechanisms, with optional client identification for providers requiring it.
  • Light client: a standard, blocking client exposing one method per IMAP command over a stream you opened yourself.
  • Full client with TLS support:
    • Rustls with ring crypto (requires rustls-ring feature, enabled by default)
    • Rustls with aws crypto (requires rustls-aws feature)
    • Native TLS (requires native-tls feature)

Tip

I/O IMAP is written in Rust and uses cargo features to gate backend support. The default feature set is declared in Cargo.toml or on docs.rs.

RFC coverage

RFCWhat is covered
2177IDLE: real-time mailbox change notifications pushed by the server
2971ID: client and server identification exchange, required by some providers before authentication
3501IMAP4rev1: greeting, capability, login and logout, mailbox listing, creation, renaming and subscription, selection and examination, fetch, store, search, copy, append, expunge, noop and STARTTLS
3691UNSELECT: discard the selected mailbox without expunging deleted messages
4315UIDPLUS: APPENDUID and COPYUID response codes carrying the UIDs assigned by append, copy and move
4959SASL-IR: initial client response inline with the authentication command, saving a round-trip
5161ENABLE: explicit activation of server capabilities
5256SORT and THREAD: server-side message sorting and threading, with a client-side sorting fallback for servers lacking the extension
6851MOVE: atomic message move between mailboxes
7162CONDSTORE and QRESYNC: incremental resync through mod-sequences and vanished message reporting on select, examine and fetch
7628OAUTHBEARER: OAuth 2.0 bearer token authentication, next to the pre-standard XOAUTH2
7677SCRAM-SHA-256: salted challenge-response authentication

Usage

See documentation at docs.rs.

Examples

See complete examples at ./examples.

Have also a look at real-world projects built on top of this library:

  • Himalaya CLI: CLI to manage emails
  • Himalaya TUI: TUI to manage emails
  • Neverest: CLI to synchronize emails
  • Mirador: CLI to watch mailbox changes and fire hooks on every event
  • Sirup: CLI to spawn pre-authenticated IMAP/SMTP sessions and expose them via Unix sockets

License

This project is licensed under either of:

Social

Sponsoring

nlnet

Special thanks to the NLnet foundation and the European Commission that have been financially supporting the project for years:

This program is part of Pimalaya, free software funded entirely by grants and donations. If you find it useful, consider sponsoring its development:

GitHub Ko-fi Buy Me a Coffee Liberapay thanks.dev PayPal