# postmarkd

> A small daemon that runs next to your apps and delivers their mail through Postmark, whether they send over HTTP, SMTP, sendmail or a CLI.

- URL: https://rossedman.io/projects/postmarkd/

Sending mail should be one line. `postmarkd` runs as a systemd service or a container sidecar, holds the Postmark token in one place, fills in defaults like the From address, and sends in parallel with safe retries. Apps hand it mail however they already can:

```shell
echo "The nightly backup finished." | postmarkd send -to ops@example.com -subject "Backup OK"
```

- **Anything that uses `sendmail`.** Symlink it as `/usr/sbin/sendmail` and cron, `mail`, PHP `mail()` and git send through Postmark with no other change.
- **Apps that speak SMTP.** Point them at `localhost:2525`. No credentials, no TLS.
- **A Postmark-compatible HTTP API**, so apps with a Postmark SDK only change the base URL.
- **A black hole for tests.** `POSTMARKD_BLACKHOLE=true` answers like Postmark, sends nothing, and lets tests read back what was "sent". No account needed.
- **`postmarkd check-domain`** checks your DKIM, Return-Path and DMARC records from the command line.
- **systemd native and container ready**: socket activation, watchdog, Prometheus metrics, a 16 MB non-root image, and no dependencies outside the standard library.

Try it without a Postmark account:

```shell
docker run -d -p 8025:8025 -e POSTMARKD_BLACKHOLE=true ghcr.io/rossedman/postmarkd:0.1
curl localhost:8025/email -d '{"To":"you@example.com","Subject":"Hi","TextBody":"Hello"}'
```

Packages for Debian, Ubuntu and Fedora are on the [releases page](https://github.com/rossedman/postmarkd/releases), and the [docs](https://rossedman.io/postmarkd/) cover deployment, the API and benchmarks.
