~6,000/s
Accepted
Emails accepted by the API and stored durably, p99 under 27 ms.
A complete delivery engine with reputation built in. One binary, no external database, open source.
const res = await fetch("https://mail.example.com/emails", { method: "POST", headers: { Authorization: `Bearer ${Bun.env.BUNZZLE_KEY}`, "Idempotency-Key": "order-42", }, body: JSON.stringify({ from: "Shop <hello@example.com>", to: ["ana@example.org", "ben@example.net", "cleo@example.com", "dan@example.io"], subject: "Your order has shipped", html: "<p>It is on its way.</p>", }),});
$ sudo bunzzle doctor[ok] EHLO name: mail.example.com[ok] DKIM self-check: verifies against live DNS[ok] DMARC: TXT _dmarc.example.com is correct11 ok, 0 warnings, 0 problems
The installer checks the signed release, creates a user and a systemd sandbox for each of the six roles and starts them. Set three values, then bunzzle doctor tells you what is left to fix.
$ curl -fsSLO https://github.com/bunzzle/bunzzle/releases/latest/download/install.sh$ sudo sh install.sh
BUNZZLE_EHLO_NAME=mail.example.comBUNZZLE_SOURCE_IPS=203.0.113.10BUNZZLE_PUBLIC_URL=https://mail.example.comBUNZZLE_INBOUND_PORT=25
A 2-CPU, 2 GB Linux machine, with the load generator and test mail servers on the same CPUs. See the method
Emails accepted by the API and stored durably, p99 under 27 ms.
End to end, with STARTTLS and two DKIM signatures each.
Two thirds of it is the RSA signature.
All roles together, during sustained sending.