Menu

Installation

Run Oxidt Mail locally

Prerequisites

  • Rust 1.98 — rustup.rs
  • Topcoat CLI — cargo install topcoat-cli --version 0.10.0 --locked
  • Bun — bun.sh (for Tailwind CSS)
  • PostgreSQL and an SMTP catcher such as Mailpit

Quick Start

1

Create your env file

bash
cd app
just bootstrap

This copies .env.example to .env with a fresh SESSION_SECRET. Set DATABASE_URL to your database and SMTP_HOST/SMTP_PORT to Mailpit.

2

Turn sending on locally

Add SENDING_ENABLED=true to .env. Without SES_* keys, every email goes to the SMTP relay, so Mailpit catches campaigns, welcome and confirmation emails.

3

Build CSS and run

bash
bun install
PORT=8080 just serve

Open http://localhost:8080 and sign in with a code from Mailpit. Migrations run at startup.

4

Send your first issue

Create a newsletter, subscribe on its archive page (/archive/<slug>), then write a campaign and press Send now.

Checks

bash
cargo clippy -p oxidt-mail -p mail-core --all-targets -- -D warnings
DATABASE_URL=postgres://... cargo test -p oxidt-mail -p mail-core

The database tests need a role allowed to CREATE DATABASE: each test gets its own migrated database.