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

2.4 KiB

arcline-email — Todo

Phase 1: MVP (Core Mail Flow)

Project Setup

  • Initialize Go module (go mod init arcline-email)
  • Set up directory structure (cmd/, internal/, config/)
  • Add .gitignore
  • Wire up config parsing (TOML)
  • Structured logging (log/slog)
  • Graceful shutdown (signal handling)

SMTP — Inbound (Port 25)

  • Basic SMTP listener using emersion/go-smtp
  • Receive inbound mail for local domains
  • TLS support (STARTTLS)
  • Reject mail for unknown domains
  • Write received messages to Maildir

SMTP — Submission (Ports 587 / 465)

  • Authenticated submission listener
  • SASL PLAIN / LOGIN auth
  • Enforce auth before relaying
  • Outbound routing via MX DNS lookup
  • Delivery retry queue with backoff

IMAP (Ports 143 / 993)

  • IMAP server using emersion/go-imap
  • Authenticate users
  • Serve mailboxes from Maildir storage
  • Support INBOX, Sent, Drafts, Trash folders
  • IDLE command support

Storage

  • Maildir layout per user (/var/mail/{domain}/{user}/)
  • Message write (new mail delivery)
  • Message read / list / delete (for IMAP)
  • Quota tracking (basic)

Authentication

  • User store (flat file or SQLite — TBD)
  • Password hashing (bcrypt)
  • Domain and mailbox management (add/remove)

TLS

  • Load cert/key from disk
  • Auto-renew via ACME / Let's Encrypt (optional)

Phase 2: Mail Hygiene

  • DKIM signing on outbound mail
  • DKIM verification on inbound mail
  • SPF record lookup and enforcement
  • DMARC policy parsing and enforcement
  • Reject or quarantine based on DMARC policy
  • DNSBL checks on inbound connections (basic blocklist)

Phase 3: Admin & Operations

  • Admin HTTP API (manage domains, mailboxes, aliases)
  • Alias support (forward info@ → real mailbox)
  • Catch-all address support
  • Metrics endpoint (Prometheus)
  • Log shipping / structured access logs
  • Systemd unit file

Phase 4: Hardening

  • Rate limiting on SMTP connections
  • Connection-level blocklist (IP deny list)
  • Greylisting (optional)
  • rspamd milter integration (optional)
  • Deliverability testing (SPF/DKIM/DMARC pass verification)
  • Blacklist monitoring

Stretch / Future

  • Webmail UI (separate project)
  • Multi-domain virtual hosting
  • Sieve filtering support
  • JMAP support