FAQ

How different is Neverest CLI from Himalaya CLI?

The Neverest project’s scope is email synchronization.

The Himalaya project’s scope is email management. This scope is really large: creating folders, listing and filtering envelopes, sending messages, but also synchronizing accounts, like Neverest. The main difference is that Himalaya synchronizes folders and emails from a remote source (like IMAP) to a local Maildir instance in order to enable offline support. Neverest is more generic, it synchronizes folders and emails between two sources (local or remote, namely left and right).

If you want to synchronize two sources together, or just backup your emails, Neverest CLI is the best choice.

If you want to manage your emails with optional offline support, Himalaya CLI fits better.

Why using Neverest CLI over OfflineIMAP or mbsync?

OfflineIMAP is a CLI written in Python to synchronize remote IMAP emails with a local Maildir. The project did not receive any update for the past years, and many bugs are in pending state. Plus the synchronization process is really slow.

mbsync is a CLI written in C to synchronize two sources together (either IMAP or Maildir). The project seems still active, but is hard to properly configure.

Neverest CLI is written in Rust, and tries to combine the best of both tools: using a safer language than Python, being as fast as mbsync, easy to configure (thanks to the simple TOML API and the wizard), and benefit from a growing community / ecosystem. By using email-lib, it also prevents reinvention of the wheel. The lib is being used by more and more tools, which will make the lib AND the lib consumers more resilient over time.

How can I debug Neverest CLI?

The simplest way is to use --debug and --trace arguments.

The advanced way is based on environment variables:

  • RUST_LOG=<level>: determine the log level filter, can be one of off, error, warn, info, debug and trace.
  • RUST_SPANTRACE=1: enables the spantrace (a span represent periods of time in which a program was executing in a particular context).
  • RUST_BACKTRACE=1: enables the error backtrace.
  • RUST_BACKTRACE=full: enables the full error backtrace, which include source lines where the error originated from.

Logs are written to the stderr, which means that you can redirect them easily to a file:

RUST_LOG=debug neverest 2>/tmp/neverest.log

How the wizard discovers IMAP config?

All the lookup mechanisms use the email address domain as base for the lookup. It is heavily inspired from the Thunderbird Autoconfiguration protocol. For example, for the email address test@example.com, the lookup is performed as (in this order):

  1. check for autoconfig.example.com
  2. look up of example.com in the ISPDB (the Thunderbird central database)
  3. look up MX example.com in DNS, and for mx1.mail.hoster.com, look up hoster.com in the ISPDB
  4. look up SRV example.com in DNS
  5. try to guess (imap.example.com, smtp.example.com…)

Feel free to send any suggestion at ~soywod/pimalaya@lists.sr.ht.