finds.dev← search

// the find

mlandauer/cuttlefish

★ 1,624 · Ruby · NOASSERTION · updated Jun 2024

Transactional email server with a lovely web interface

Cuttlefish is a self-hosted transactional email server that wraps Postfix with a Rails web UI, adding open/click tracking, bounce management, DKIM signing, and a GraphQL API. It's for teams who want Mailgun-style observability without the vendor dependency or per-email cost. Been running in production at OpenAustralia Foundation for years, handling over a million emails a month.

Automatic DKIM signing that just works — no manual DNS key rotation, the app handles it. Hard bounce deny list is automatic: once an address hard bounces, Cuttlefish silently suppresses future sends to it without you writing any code. The GraphQL API has full parity with the UI, so anything you can do by clicking you can automate. Docker Compose dev setup is genuinely fast to get running — one rake command and you're looking at a working mail stack.

The deployment story is stuck in 2018: the docs require Ansible 2.5 with Python 2.7, Vagrant, and Capistrano 2, and the instructions are specifically written for one organization's server rather than a general setup. Maintenance has visibly slowed — last push was June 2024, CI still runs on Travis, and the README openly calls out the Capistrano 2 gotcha without fixing it. No multi-tenancy in the proper sense: 'teams' exist but the model is one Cuttlefish instance per organization, so if you want to offer this as a service to multiple independent customers you'll need to build isolation yourself. Storing the full email body for recently sent messages is useful for debugging but the retention policy is vague — in high-volume scenarios you'll hit storage pressure before you realize it.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →