Cuttlefish is a hosted mail delivery software

Cuttlefish Transactional Email Service

Open Source Mail Server With Modern Web Interface

Cuttlefish is a self hosted on premise Mail Delivery Software. Use Cuttlefish to send large volumes of emails with ease and analyze bounce rate.


There are lots of Mail Servers available online like Postal Mail, Squirrel Mail, Scalix but what makes Cuttlefish distinctive is its beautiful web interface which makes it very easy to use and monitor whats happening under the hood.

Cuttlefish supports SMTP protocol which helps you send email from your application with no effort, it helps you monitor in real time which emails are reaching at their destination and which are bouncing back. It also supports tracking of email like which one is opened and which links are clicked.

Another distinctive feature of Cuttlefish is that you can check your IP reputation with one click. Cuttlefish doesn’t support HTTP API yet but the development team has it on the cards and already working on it. So very soon we can expect it be available which will make it a better alternative to SendGrid and Mailgun.

Cuttlefish uses postfix for email delivery which is one of the most popular and reliable open source mail transfer agent that routes and delivers electronic mail.

System Requirements

In order to configure cuttlefish you must have the following softwares

  • Ruby 2.5.1
  • PostgresQL
  • Redis (2.4 or greater)
  • Postfix (Postfix is optional for local development or just trying it out. Some things like the email deliverability just won’t show anything)


Following are the key features of cuttlefish

  • Ensure delivery.
  • Real time analytics.
  • Easy to use.
  • Flexible.
  • Reliable.
  • Open source.


We use Vagrant and Ansible to automatically set up a fresh server with everything you need to run Cuttlefish. It’s a fairly complicated affair as Cuttlefish does have quite a few moving parts but all of this is with the purpose of making it easier for the developer sending mail.

These instructions are specifically for installing the server at

To install to a local test virtual machine

  1. Create a file ~/.cuttlefish_ansible_vault_pass.txt which contains the password for encrypting the secret values used in the deploy. The encrypted variables are at provisioning/roles/cuttlefish-app/vars/main.yml.
  2. Download base box and build virtual machine with everything needed for Cuttlefish. This will take a while (at least 30 mins or so)
        vagrant up
  1. Deploy the application. As this is the first deploy it will take quite a while (5 mins or so). Further deploys will be much quicker. We’re using the –set-before local_deploy=true flag to deploy to your local test virtual machine instead of production.
        bundle exec cap --set-before local_deploy=true deploy:setup deploy:cold foreman:export foreman:start
  1. Add to your local /etc/hosts file
  1. Point your web browser at