That's the whole integration.
# A JSON API and an SMTP port, backed by one Rust binary and one PostgreSQL.
curl -X POST https://mail.yourdomain.com/api/v2/server/messages \
-H "X-Server-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{
"from": "billing@yourdomain.com",
"to": ["customer@example.com"],
"template": "payment-receipt",
"template_model": {"amount": "49.00", "invoice": "INV-1042" }
}'Product
Everything your product needs. Nothing your marketing team wants.
{
"status": "success",
"time": 0.004,
"data": {
"messages": {
"customer@example.com": {
"id": 1042,
"token": "wYcpYAtIiG7R"
}
}
}
}API
One call, one receipt
A stable JSON envelope with stable error codes. Send with a template or raw HTML, query messages and deliveries, read stats — 73 endpoints, one OpenAPI spec.
220 mx.camelmailer.com ESMTP EHLO app.example.com 250-STARTTLS MAIL FROM:<billing@yourdomain.com> 250 OK RCPT TO:<customer@example.com> 250 OK
SMTP
Or just point your framework at port 25
Everything the HTTP API accepts you can hand over via SMTP with STARTTLS — same pipeline, same tracking. Useful for frameworks that already speak SMTP.
Templates
20 templates, ready to clone
Responsive HTML with plain-text twins for the mail every product sends. Import with one command, edit in the dashboard.
That's the entire production deployment.
Operations
A stack you can reason about
No queue cluster, no microservices. Back up one database and you have backed up everything.
-- every query runs inside a tenant context SELECT set_config( 'camelmailer.server_id', $1, true ); -- row-level security does the filtering
Isolation
Tenant isolation in the database
Every mail server is a tenant, enforced with PostgreSQL row-level security — not with WHERE clauses someone can forget.
Run it your way
Self-host it today. Or let us run it for you — in the EU.
git clone https://github.com/camelmailer/camelmailer
cd camelmailer
docker compose up -d --build
curl localhost:5000/health
{"status":"ok"}Self-hosted
Your infrastructure, your rules
docker compose up -d and you own the whole pipeline: unlimited everything, MIT licensed, no phone-home. If you can run Docker, you can run your own mail platform.
EU Cloud
The same code, on EU soil
The cloud runs the exact open-source code on EU infrastructure under EU jurisdiction. And the exit path is real: export your data, compose up on your own hardware, repoint DNS — done.

