selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Eonvelope logo

Self-host Eonvelope

0.8.1

Self-hosted email archive with multi-protocol support

BetaOpen SourceAGPL-3.0
Updated9 hours ago
LanguagePython
Setup difficultyModerate
MobilePWA
Stars
281
Port
443 (HTTPS web interface)
Docker
dacid99/eonvelope
Install with Docker Compose

What is Eonvelope?

Eonvelope is an open-source self-hosted email archive built with Django that preserves emails from multiple accounts using IMAP, POP, Microsoft Exchange, and JMAP protocols. It automatically fetches and archives emails continuously, identifies related emails and conversations, and supports importing/exporting in various formats. The web interface is mobile-friendly with PWA support. It integrates with Paperless-ngx for document archival, Immich for photos/videos, Nextcloud for contacts, and Searxng for search. It also supports OIDC authentication via Keycloak, Authelia, or Authentik, and exports Prometheus metrics. Deployment is via Docker Compose, Podman, or Kubernetes with a MariaDB database (PostgreSQL and SQLite also supported). A slim mode reduces resource usage for low-spec systems. Licensed under AGPL-3.0.

Eonvelope alternatives

Should you self-host Eonvelope?

Eonvelope scores 49/100 on selfhost.directory (how scoring works) and ranks #61 of 106 in Email. It has 281 GitHub stars.

It shipped 13 stable releases in the past year. The latest, 0.8.1, came out on 14 October 2026. New versions land roughly every 3 weeks.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is AGPL-3.0-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is Listmonk (80/100, 24 012 stars). It scores higher overall, so compare the two before you pick. See Eonvelope vs Listmonk side by side.

Features

  • Automatic continuous email archiving
  • Conversation threading
  • Email import and export
  • Email restoration
  • Immich integration
  • Multi-protocol email fetching
  • Nextcloud integration
  • OIDC Authentication
  • Paperless-ngx integration
  • Progressive Web App (PWA)
  • Prometheus MetricsNot available in slim mode
  • REST API with OpenAPI schemaNot available in slim mode
  • Searxng integration
  • Slim mode for low-spec systems
  • Two-factor authentication (TOTP)

Eonvelope README

How to install Eonvelope

Install Eonvelope with Docker Compose

Docker and Docker Compose installed
Environment variables
SECRET_KEY, DATABASE, DATABASE_USER, DATABASE_PASSWORD, DJANGO_SUPERUSER_PASSWORD, ALLOWED_HOSTS, SLIM, DATABASE_TYPE, OIDC_CONFIG, etc.

services: db: image: mariadb:latest container_name: eonvelope-db volumes: - eonvelope-db-data:/var/lib/mysql environment: MARIADB_DATABASE: email_archive_django MARIADB_USER: user MARIADB_PASSWORD: passwd MARIADB_ROOT_PASSWORD: example restart: unless-stopped healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] start_period: 20s start_interval: 5s interval: 1m timeout: 5s retries: 3 web: image: dacid99/eonvelope:latest container_name: eonvelope-web volumes: - eonvelope-archive:/mnt/archive - eonvelope-logs:/var/log/eonvelope ports: - 1122:443 environment: DATABASE: email_archive_django DATABASE_USER: user DATABASE_PASSWORD: passwd DJANGO_SUPERUSER_PASSWORD: rootqwertz123 SECRET_KEY: 'PLEASE_REPLACE_ME_WITH_THE_OUTPUT_OF_A_STRONG_RANDOM_GENERATOR!' ALLOWED_HOSTS: localhost,eonvelope.mydomain.tld restart: unless-stopped depends_on: db: condition: service_healthy

volumes: eonvelope-db-data: eonvelope-archive: eonvelope-logs:

Minimal docker-compose example from documentation. Change all passwords before use.

How to configure Eonvelope

  • ALLOWED_HOSTSAll allowed host URLs separated by commas.

    All allowed host URLs separated by commas.

  • DATABASEThe name of the database for Eonvelope. Must match the MARIADB_DATABASE value of the MariaDB config.

    The name of the database for Eonvelope. Must match the MARIADB_DATABASE value of the MariaDB config.

  • DATABASE_HOSTdbThe hostname of the database that is used.

    The hostname of the database that is used.

  • DATABASE_PASSWORDThe user's password for the DB. Must match the MARIADB_PASSWORD value of the MariaDB config.

    The user's password for the DB. Must match the MARIADB_PASSWORD value of the MariaDB config.

  • DATABASE_TYPEmysqlThe type of database that is used. Possible values are mysql, postgresql and sqlite3.

    The type of database that is used. Possible values are mysql, postgresql and sqlite3.

    values: mysql, postgresql, sqlite3

  • DATABASE_USERThe username for the DB. Must match the MARIADB_USER value of the MariaDB config.

    The username for the DB. Must match the MARIADB_USER value of the MariaDB config.

  • DJANGO_SUPERUSER_PASSWORDThe password of the Eonvelope admin user that is created by default.

    The password of the Eonvelope admin user that is created by default.

  • OIDC_AUTO_SIGNUPTrueWhether to use OIDC info for signup on first login.

    Whether to use OIDC info for signup on first login.

    values: True, False

  • OIDC_ONLYFalseWhether to disable login with local accounts.

    Whether to disable login with local accounts.

    values: True, False

  • REGISTRATION_ENABLEDFalseSet this to True to allow self-sign-on.

    Set this to True to allow self-sign-on.

    values: True, False

  • SECRET_KEYA random string, the longer the better. This is the heart of Django's cryptographic functionalities.

    A random string, the longer the better. This is the heart of Django's cryptographic functionalities.

  • SLIMFalseSet this to True if you run Eonvelope on a system with sparse resources. In slim mode, some plugins will not be loaded.

    Set this to True if you run Eonvelope on a system with sparse resources. In slim mode, some plugins will not be loaded.

    values: True, False

Eonvelope releases & version history

FAQ

How can I contribute to this project?

Everyone is welcome to help. Check out the quickstart and codestyle guidelines in the developers section.

Parts of the user interface are not accessible on my device, what can I do?

Report accessibility issues via an issue using the missing-accessibility template.

My language is missing in the translations, can I help to add it?

Yes, translation is done via Weblate. If the language is also missing there, file an issue using the missing-language template.

I have found a problem with the application, what should I do?

First check if the problem is specific to your setup. If not, file an issue in one of the online repositories. For security issues, contact developers privately.

If I delete an account in Eonvelope, does that delete the account on the mailserver too?

No, only the data in the Eonvelope database will be deleted. Eonvelope never destroys data on your mailserver.

Do I need a license to use this application?

The project is licensed under AGPLv3, which allows free use. Only if you alter and publish the source code must you release it under the same license.

Do I need special hard- or software to run Eonvelope?

Everything that can run containers is viable, including modern Linux, Windows, macOS, and FreeBSD.

I am new to self-hosting, how can I set up an instance the easiest?

The simplest path is described on the quickstart page which uses Docker Compose with a minimal configuration.

More in Archiving & Preservation

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…