Cuttlefish is an easy to setup and easy to use open source transactional email server
Sending a few emails from your app is easy. Sending lots becomes painful. There are so many hidden gotchas. Do your emails get delivered? Are you being considered a spammer? What about all those bounced emails?
Let's making sending lots of emails fun again!
And without the hidden dangers of vendor lock in of commercial transactional email services.
- Send email from your application using smtp in the usual way and get all sorts of added benefits for no effort
- A lovely web UI to browse what's happening
- Monitor in real time which emails arrive at their destination and which bounce
- Works with any web framework and language
- Automatically not send emails to destinations that have hard bounced in the past
- Track which emails are opened
- Statistics on emails sent, soft/hard bounced and held back
- Check your IP reputation with one click
- Easy to install and get going quickly
- Open source, so no vendor lock in.
Things on the cards
- REST API for deep integration with your application
- Multiple applications can each have their own SMTP authentication
- Super-easy link tracking
- DKIM signing
- "out of office" and bounce reply filtering
Dependencies: Ruby 1.9.3, MySQL, Postfix (Postfix is optional for local development or just trying it out. Some things like the email deliverability just won't show anything)
##To install:
bundle install
and edit config/database.yml
with your database settings
bundle exec rake db:setup
bundle exec foreman start
and point your browser at http://localhost:3000
##To install on your server:
Edit config/deploy.rb
Run:
cap deploy:setup
cap deploy:cold (the first time)
And on the server
cd /srv/www/cuttlefish.openaustraliafoundation.org.au/current
sudo foreman export upstart /etc/init -u deploy -a cuttlefish -f Procfile.production -l /srv/www/cuttlefish.openaustraliafoundation.org.au/shared/log --root /srv/www/cuttlefish.openaustraliafoundation.org.au/current
visudo
And add the following line:
deploy ALL = NOPASSWD: /usr/sbin/service
This allows the deploy user to sudo just to manage the upstart processes
If you use new relic just put your configuration file in shared/newrelic.yml on the server To record your deploys you will also need to add config/newrelic.yml on your local box. How annoying!
If you find what looks like a bug:
- Check the GitHub issue tracker to see if anyone else has reported issue.
- If you don't see anything, create an issue with information on how to reproduce it.
If you want to contribute an enhancement or a fix:
- Fork the project on GitHub.
- Make your changes with tests.
- Commit the changes without making changes to any files that aren't related to your enhancement or fix.
- Send a pull request.