package

gitlab.com/renich/exu

0.1.0 / published Aug 14, 2026 / repository

EVALinux Virtual Mail Administration Suite for CentOS Stream 10 (Exim, Dovecot, Caddy mTLS, Web SPA, and eum CLI).

exu logo

exu

EVALinux Virtual Mail Administration Suite for CentOS Stream 10

Pipeline Status Release License: GPL v3 Crystal Platform Documentation


exu is a lightweight, statically-compiled Crystal web daemon and CLI administration suite providing secure, sovereign virtual mail administration for Exim, Dovecot, and Caddy on CentOS Stream 10.

Key Capabilities

  • 🌐 Web Dashboard SPA: Fast, modern web control plane with clean session login and logout.
  • ⚑ Standalone CLI (eum): Native, statically linked command-line administration tool sharing exact RBAC parity.
  • πŸ” Session-Based mTLS: Decoupled transport client certificate authentication with encrypted HMAC-SHA256 session cookies.
  • πŸ“ FHS 3.0 & YAML 1.2: Standardized /etc/exu/ configuration hierarchy and human-readable exu.yaml database.
  • πŸ›‘οΈ Zero-.rpmnew Churn: Non-invasive modular Exim includes (/etc/exim/exu-*.conf) and Dovecot drop-ins (/etc/dovecot/local.conf).
  • πŸ”’ Multi-Process Advisory Locking: POSIX flock synchronization preventing race conditions across concurrent Web and CLI operations.
  • πŸ”‘ DKIM, DMARC & DNS: Automatic RSA-2048 key generation, on-demand rotation, and copy-paste ready DNS records.
  • πŸ‘₯ Multi-Recipient Aliases: Comma-, semicolon-, or space-delimited forwarding with atomic single-recipient removal.
  • πŸ’Ύ Storage Retention: Domain decommissioning preserves mailbox spools (/var/mail/virtual/<domain>) by default.

Quick Start

1. Build Static Release Binaries

make release

2. Automated Host Setup

Run the idempotent setup script as root to configure dependencies, services, SELinux policies, and certificates:

sudo bash resources/usr/local/libexec/exu/setup.bash mail.example.com

3. CLI Management (eum)

# Provision a virtual domain and DKIM keypair
eum domain create example.com

# Create a virtual mailbox
eum user create admin@example.com

# Create a multi-recipient alias
eum alias create example.com support alice@example.com bob@example.com

# Display complete DNS configuration (MX, SPF, DKIM, DMARC)
eum domain dns example.com

Documentation

Comprehensive guides, specifications, and architecture records are available in the Sphinx Documentation Suite:

SectionDescription
Getting StartedHost installation, prerequisite setup, and initial configuration.
Web Dashboard ManualSPA walkthrough, session authentication, and mailbox operations.
CLI Reference (eum)Complete command-line syntax and option reference.
mTLS & PKI Setup GuideClient certificate generation, CA trust, and browser installation.
Client Auto-ConfigurationMozilla Thunderbird and Microsoft Outlook autodiscover protocols.
Troubleshooting PlaybookPermission diagnoses, lock contention, and SELinux resolutions.
Functional SpecificationsFormal functional requirements ([FUNC-001] to [FUNC-005]).
Technical BlueprintsFilesystem layouts, concurrency locking, and MTA integrations.
Architecture Decision RecordsImmutable design decisions (YAML standard, mTLS, storage retention).
Project RoadmapCompleted v0.1.0 capabilities and future milestones (v0.2.0 Quotas).
Crystal API ReferenceSource code class hierarchy and API docstrings.

Development

# Compile development binaries locally
make build

# Run unit & integration test suite (39 specs)
make test

# Run Flaw security static analyzer
make lint

# Build unified Sphinx documentation & Crystal API reference
make docs

Contributing & Code of Honor

This project adheres to the Universal Code of Honor. Please review the Contributing Guidelines before submitting contributions. All changes are logged in the Changelog.

Authors

  • RΓ©nich Bon Δ†iriΔ‡ (@renich) β€” Creator & Lead Architect
  • Gemini AI β€” Pair Programmer & Co-developer

API

  • Eum

    Eum is the command-line interface for the exu virtual mail administration suite.

  • Exu

    Exu is the main namespace for the exu web administration daemon.