Files
email/README.md
Blake Ridgway 725bd460a5 Initial commit
2026-03-21 18:55:52 -05:00

2.0 KiB

arcline-email

A self-hosted mail server written in Go. Handles inbound and outbound SMTP, IMAP access, DKIM signing, and SPF/DMARC verification — no third-party relay required.

Status

Early development. Not production-ready.

Goals

  • Full SMTP server (inbound on port 25, submission on 587/465)
  • IMAP server (143/993) for client access
  • Maildir-based message storage
  • Username/password authentication with SASL
  • TLS on all listeners (Let's Encrypt or bring-your-own cert)
  • DKIM signing for outbound mail
  • SPF and DMARC verification for inbound mail
  • Outbound routing via MX DNS lookup
  • Admin API for managing domains, mailboxes, and aliases

Non-Goals (for now)

  • Webmail UI
  • Anti-spam scoring engine (may integrate rspamd via milter later)
  • Multi-server clustering

Tech Stack

  • Language: Go 1.22+
  • SMTP: emersion/go-smtp
  • IMAP: emersion/go-imap
  • Mail parsing: emersion/go-message
  • SASL: emersion/go-sasl
  • Storage: Maildir (filesystem)
  • Config: TOML

Project Layout

arcline-email/
├── cmd/
│   └── arcline-email/   — main entry point
├── internal/
│   ├── smtp/            — SMTP server (inbound + submission)
│   ├── imap/            — IMAP server
│   ├── storage/         — Maildir storage layer
│   ├── auth/            — user authentication
│   ├── dkim/            — DKIM signing and verification
│   ├── spf/             — SPF checking
│   ├── dmarc/           — DMARC policy enforcement
│   └── admin/           — admin API
├── config/              — config parsing and validation
├── docs/                — protocol notes, architecture docs
├── todo.md
├── CONTRIBUTING.md
├── LICENSE
└── README.md

Building

go build ./cmd/arcline-email

Running

./arcline-email --config /etc/arcline-email/config.toml

Configuration

See docs/config.md (coming soon).

License

MIT. See LICENSE.