79 lines
2.0 KiB
Markdown
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).
|