SkillAgentSearch skills...

Neverest

CLI to synchronize, backup and restore emails

Install / Use

/learn @pimalaya/Neverest
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<div align="center"> <img src="./logo.svg" alt="Logo" width="128" height="128" /> <h1>📫 Neverest</h1> <p>CLI to synchronize, backup and restore emails,<br>based on <a href="https://crates.io/crates/email-lib"><code>email-lib</code></a></p> <p> <a href="https://github.com/pimalaya/neverest/releases/latest"><img alt="Release" src="https://img.shields.io/github/v/release/pimalaya/neverest?color=success"/></a> <a href="https://repology.org/project/neverest/versions"><img alt="Repology" src="https://img.shields.io/repology/repositories/neverest?color=success"></a> <a href="https://matrix.to/#/#pimalaya:matrix.org"><img alt="Matrix" src="https://img.shields.io/matrix/pimalaya:matrix.org?color=success&label=chat"/></a> </p> </div>

screenshot

The project is under active development, do not use in production before the final v1.0.0 (or at least do some manual backups).

Features

  • Multi-accounting
  • Interactive configuration via wizard (requires wizard feature)
  • Synchronize pair of backends together (namely left and right)
  • Partial synchronization based on filters
  • Restrictive synchronization based on permissions
  • IMAP backend (requires imap feature)
  • Maildir backend (requires maildir feature)
  • Notmuch backend (requires notmuch feature)
  • Backup and restore emails using the Maildir backend

Neverest CLI is written in Rust, and relies on cargo features to enable or disable functionalities. Default features can be found in the features section of the Cargo.toml.

Installation

The v1.0.0 is currently being tested on the master branch, and is the prefered version to use. Previous versions (including GitHub beta releases and repositories published versions) are not recommended.

Pre-built binary

Neverest CLI v1.0.0 can be installed with a pre-built binary. Find the latest pre-releases GitHub workflow and look for the Artifacts section. You should find a pre-built binary matching your OS.

Cargo (git)

Neverest CLI v1.0.0 can also be installed with cargo:

$ cargo install --frozen --force --git https://github.com/pimalaya/neverest.git

Other outdated methods

These installation methods should not be used until the v1.0.0 is finally released, as they are all (temporarily) outdated:

<details> <summary>Pre-built binary</summary>

Neverest CLI can be installed with a prebuilt binary:

# As root:
$ curl -sSL https://raw.githubusercontent.com/pimalaya/neverest/master/install.sh | sudo sh

# As a regular user:
$ curl -sSL https://raw.githubusercontent.com/pimalaya/neverest/master/install.sh | PREFIX=~/.local sh

These commands install the latest binary from the GitHub releases section.

Binaries are built with default cargo features. If you want to enable or disable a feature, please use another installation method.

</details> <details> <summary>Cargo</summary>

Neverest CLI can be installed with cargo:

$ cargo install neverest

# With only IMAP support:
$ cargo install neverest --no-default-features --features imap

You can also use the git repository for a more up-to-date (but less stable) version:

$ cargo install --git https://github.com/pimalaya/neverest.git neverest
</details> <details> <summary>Nix</summary>

Neverest CLI can be installed with Nix:

$ nix-env -i neverest

You can also use the git repository for a more up-to-date (but less stable) version:

$ nix-env -if https://github.com/pimalaya/neverest/archive/master.tar.gz

# or, from within the source tree checkout
$ nix-env -if .

If you have the Flakes feature enabled:

$ nix profile install neverest

# or, from within the source tree checkout
$ nix profile install

# you can also run Neverest directly without installing it:
$ nix run neverest
</details> <details> <summary>Sources</summary>

Neverest CLI can be installed from sources.

First you need to install the Rust development environment (see the rust installation documentation):

$ curl https://sh.rustup.rs -sSf | sh

Then, you need to clone the repository and install dependencies:

$ git clone https://github.com/pimalaya/neverest.git
$ cd neverest
$ cargo check

Now, you can build Neverest:

$ cargo build --release

Binaries are available under the target/release folder.

</details>

Configuration

Just run neverest, the wizard will help you to configure your default account.

You can also manually edit your own configuration, from scratch:

  • Copy the content of the documented ./config.sample.toml
  • Paste it in a new file ~/.config/neverest/config.toml
  • Edit, then comment or uncomment the options you want
<details> <summary>Proton Mail (Bridge)</summary>

When using Proton Bridge, emails are synchronized locally and exposed via a local IMAP/SMTP server. This implies 2 things:

  • Id order may be reversed or shuffled, but envelopes will still be sorted by date.
  • SSL/TLS needs to be deactivated manually.
  • The password to use is the one generated by Proton Bridge, not the one from your Proton Mail account.
[accounts.proton]
left.backend.type = "maildir"
left.backend.root-dir = "~/.Mail/proton"

right.backend.type = "imap"
right.backend.host = "127.0.0.1"
right.backend.port = 1143
right.backend.encryption = false
right.backend.login = "example@proton.me"
right.backend.auth.type = "password"
right.backend.auth.raw = "*****"

Keeping your password inside the configuration file is good for testing purpose, but it is not safe. You have 2 better alternatives:

  • Save your password in any password manager that can be queried via the CLI:

    right.backend.auth.cmd = "pass show proton"
    
  • Use the global keyring of your system (requires the keyring cargo feature):

    right.backend.auth.keyring = "proton-example"
    

    Running neverest configure proton will ask for your IMAP password, just paste the one generated previously.

</details> <details> <summary>Gmail</summary>

Google passwords cannot be used directly. There is two ways to authenticate yourself:

Using App Passwords

This option is the simplest and the fastest. First, be sure that:

  • IMAP is enabled
  • Two-step authentication is enabled
  • Less secure app access is enabled

First create a dedicated password for Neverest.

[accounts.gmail]
# this is important in order not to sync twice your account
folder.filters.exclude = ["[Gmail]/All Mail"]

left.backend.type = "maildir"
left.backend.root-dir = "~/.Mail/gmail"

right.backend.type = "imap"
right.backend.host = "imap.gmail.com"
right.backend.port = 993
right.backend.login = "example@gmail.com"
right.backend.auth.type = "password"
right.backend.auth.raw = "*****"

right.folder.aliases.inbox = "INBOX"
right.folder.aliases.sent = "[Gmail]/Sent Mail"
right.folder.aliases.drafts = "[Gmail]/Drafts"
right.folder.aliases.trash = "[Gmail]/Trash"

Keeping your password inside the configuration file is good for testing purpose, but it is not safe. You have 2 better alternatives:

  • Save your password in any password manager that can be queried via the CLI:

    right.backend.auth.cmd = "pass show gmail"
    
  • Use the global keyring of your system (requires the keyring cargo feature):

    right.backend.auth.keyring = "gmail-example"
    

    Running neverest configure gmail will ask for your IMAP password, just paste the one generated previously.

Using OAuth 2.0

This option is the most secure but the hardest to configure. It requires the oauth2 and keyring cargo features.

First, you need to get your OAuth 2.0 credentials by following this guide. Once you get your client id and your client secret, you can configure your Neverest account this way:

[accounts.gmail]
# this is important in order not to sync twice your account
folder.filters.exclude = ["[Gmail]/All Mail"]

left.backend.type = "maildir"
left.backend.root-dir = "~/.Mail/gmail"

right.backend.type = "imap"
right.backend.host = "imap.gmail.com"
right.backend.port = 993
right.backend.login = "example@gmail.com"
right.backend.auth.type = "oauth2"
right.backend.auth.client-id = "*****"
right.backend.auth.auth-url = "https://accounts.google.com/o/oauth2/v2/auth"
right.backend.auth.token-url = "https://www.googleapis.com/oauth2/v3/token"
right.backend.auth.pkce = true
right.backend.auth.scope = "https://mail.google.com/"

right.folder.aliases.inbox = "INBOX"
right.folder.aliases.sent = "[Gmail]/Sent Mail"
right.folder.aliases.drafts = "[Gmail]/Drafts"
right.folder.aliases.trash = "[Gmail]/Trash"

Running neverest configure gmail will complete your OAuth 2.0 setup and ask for your client secret.

</details> <details> <summary>Outlook</summary>
[accounts.outlook]
left.backend.typ
View on GitHub
GitHub Stars298
CategoryDevelopment
Updated6d ago
Forks10

Languages

Rust

Security Score

100/100

Audited on Mar 21, 2026

No findings