Epic: Alerting & Persistence
Deferred: webhook delivery (A3) ships first. Pick this up once the notifier interface from A3 exists.
Why
A common ask for headless home servers that have no chat platform: send alert notifications by email.
Scope
An optional SMTP sink using net/smtp (standard library) with STARTTLS. Optional digest mode to batch multiple alerts into one message.
Reuse & touch points
- Extends the notifier interface introduced in A3 (
internal/alert/notify.go).
internal/config/config.go — new alerts.email: block (host/port/from/to/auth).
API & config impact
Config only. No new runtime dependency (std-lib net/smtp).
Acceptance criteria
- Against a stub SMTP server, a fired alert produces a well-formed message.
- A misconfigured mailer logs an error but never blocks metric collection.
Epic: Alerting & Persistence
Why
A common ask for headless home servers that have no chat platform: send alert notifications by email.
Scope
An optional SMTP sink using
net/smtp(standard library) with STARTTLS. Optional digest mode to batch multiple alerts into one message.Reuse & touch points
internal/alert/notify.go).internal/config/config.go— newalerts.email:block (host/port/from/to/auth).API & config impact
Config only. No new runtime dependency (std-lib
net/smtp).Acceptance criteria