Skip to content

SMTP and email

Configure outbound mail, dev-log mode, the selftest command, and deliverability tips.

Pulse sends mail for: password reset links, member invitations, subscriber confirmations, status-page update notifications, and the alert engine’s email channel.

SMTP_HOST=smtp.postmarkapp.com
SMTP_PORT=587
SMTP_USER=your-username
SMTP_PASS=your-password-or-api-key
SMTP_FROM=alerts@yourdomain.com
SMTP_STARTTLS=true # default true on 587
SMTP_TLS=false # set true for implicit TLS on 465

Leave SMTP_HOST blank to run in dev-log mode: every send is logged as a structured JSON line on the API container’s stdout with event=mail.dev_log. Useful for staging, never use in production.

Terminal window
docker compose exec api /pulse/api selftest mail --to you@example.com

The selftest sends a single test message via the configured transport. Errors are printed inline.

  • Use a domain with SPF + DKIM + DMARC published. Most managed senders (Postmark, SES, Mailgun, Resend) do this in a few clicks.
  • Don’t send from a personal address. alerts@yourcompany.com reads as legitimate; noreply@gmail.com doesn’t.
  • Pulse honours Return-Path; make sure your SMTP_FROM domain accepts bounces.