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

79 lines
2.0 KiB
Markdown

# 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
```sh
go build ./cmd/arcline-email
```
## Running
```sh
./arcline-email --config /etc/arcline-email/config.toml
```
## Configuration
See `docs/config.md` (coming soon).
## License
MIT. See [LICENSE](LICENSE).