Repolode
rustmailer

rustmailer/bichon

A self-hosted Rust email archiver that downloads mail from IMAP accounts into a searchable archive with a REST API and WebUI.

Stars
2,068
Forks
91
Open issues
29
Last commit
17 hours ago

What is it?

Bichon is a self-hosted server for long-term email archiving. It downloads messages from one or more IMAP accounts, supports password and OAuth 2.0 login, and builds a full-text search index so mail from all accounts can be searched together. It is an archiver rather than an email client, so it does not send, compose, or reply to messages; its optional SMTP server only receives mail.

Archived data is kept in three embedded layers: Tantivy for full-text indexing, a Zstd-compressed blob store for raw emails and attachments, and an embedded key-value database for metadata. Identical message bodies and attachments are stored once using BLAKE3 content hashing. Incremental syncs fetch only new messages by UID, and accounts can be scheduled with cron expressions.

The project provides a WebUI with thread grouping, attachment search, tags, a contacts view and dashboard analytics, plus an OpenAPI-documented REST API. Multi-user access uses built-in and custom roles with per-account permissions. CLI tools import EML, MBOX, Thunderbird profiles and PST files and export MBOX.

Key features

  • 01Concurrent IMAP download with password and OAuth 2.0 login, plus SOCKS5 proxy routing per account
  • 02Incremental UID-based sync and scheduled downloads with cron expressions
  • 03Full-text search across subject, body, sender, recipients and attachments
  • 04Content deduplication of emails and attachments via BLAKE3 hashing
  • 05Multi-user RBAC with custom roles and account-level access control
  • 06Import from EML, MBOX, Thunderbird and PST; export to MBOX

Use cases

  • Keeping a long-term offline archive of work or personal email from several providers
  • Searching across years of mail from multiple IMAP accounts in one place
  • Preserving mailboxes before a provider migration or account closure
  • Migrating old EML, MBOX or PST exports into a single searchable archive

Quick start

  1. 1

    Pull the Docker image

    docker pull rustmailer/bichon:latest
  2. 2

    Create the data directory

    mkdir -p ./bichon-data
  3. 3

    Run the container and open http://localhost:15630

    docker run -d --name bichon -p 15630:15630 -v $(pwd)/bichon-data:/data --user 1000:1000 -e BICHON_ROOT_DIR=/data -e BICHON_ENCRYPT_PASSWORD=your-secure-password-here rustmailer/bichon:latest

Things to know

  • Default admin password is admin@bichon, so it must be changed right after first start.
  • Network file systems (NFS, SMB) are not supported for data directories.
  • Bichon is an archiver only and cannot send, compose, or reply to email.

In collections

Topics

FAQ

What is bichon?
A self-hosted Rust email archiver that downloads mail from IMAP accounts into a searchable archive with a REST API and WebUI. Bichon is a self-hosted server for long-term email archiving. It downloads messages from one or more IMAP accounts, supports password and OAuth 2.0 login, and builds a full-text search index so mail from all accounts can be searched together. It is an archiver rather than an email client, so it does not send, compose, or reply to messages; its optional SMTP server only receives mail.
Is bichon free to use? What license does it have?
bichon is open source under the AGPL-3.0 license. Check the license terms before using it in commercial products.
Is bichon still maintained?
Actively maintained. The last commit to bichon was on Nov 6, 2026.
What can I use bichon for?
Keeping a long-term offline archive of work or personal email from several providers Searching across years of mail from multiple IMAP accounts in one place Preserving mailboxes before a provider migration or account closure Migrating old EML, MBOX or PST exports into a single searchable archive
How do I install bichon?
Pull the Docker image: docker pull rustmailer/bichon:latest Create the data directory: mkdir -p ./bichon-data Run the container and open http://localhost:15630: docker run -d --name bichon -p 15630:15630 -v $(pwd)/bichon-data:/data --user 1000:1000 -e BICHON_ROOT_DIR=/data -e BICHON_ENCRYPT_PASSWORD=your-secure-password-here rustmailer/bichon:latest
Where can I get bichon?
The source code and installation instructions are on GitHub: https://github.com/rustmailer/bichon

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

Related projects