A little while ago, when I took over as Chief Digital Officer for Burda Romania, I started to search for a self hosted email marketing platform to replace an old Interspire installation (running through Amazon SES) that was constantly crashing due to filling the server’s hard drive space at an insane pace, while proving a bit difficult to use for the people in charge with sending the newsletters for the portfolio of content sites we have.
In the same time, we had some of our newsletters already migrated to MailChimp, but the monthly cost for it was piling up at a few hundred dollars and I thought I could try to cut a bit these costs in order to use the savings for other, more important things. On top of this, due to a Yahoo temporary ban on one of our email sending domains, MailChimp discarded a whooping 30k email list because it bounced (so we had to start over again registering those people, just because most of them had Yahoo email addresses).
Thus, after a few days of Internet searching, I ran into all these articles all commending various platforms that could deliver emails at a fraction of the cost of MailChimp, among which Sendy was the main product described. It was my first time trying to do anything with Amazon AWS, as it was a platform I have never used before, but I decided to give Sendy a go so that I rediscover my tech skills I haven’t used in almost 10 years.
I took on the Internet to find resources to do this and the main resource I identified was Brad Johnson’s tutorial. While the Sendy installation part is well detailed (I had some things that I ran into and were missing in his article), the Amazon SES setup was left for self discovery through the Amazon documentation (which, while very good, takes a while to get used to because of the different terminology used).
The Amazon installation & setup process
I won’t go into a lot of details regarding the Amazon EC2 & SES setup needed to run Sendy (if you decided to host it on Amazon and not other hosting service), but I will try to outline the main things that I think are important to remember and provide direct links to the related Amazon documentation.
The main docs Brad points to are the key ones you should start from: setting up with Amazon for EC2 and getting started with Amazon EC2 Linux instances. However, you should make sure you follow the proper steps into setting up your Amazon environment:
If you don’t already have an account, sign up for Amazon AWS on their website. Now, although you could do anything you want with your AWS main account in terms of using AWS services, it is recommended that you create a dedicated IAM user for your Sendy installation. Make sure your user is an Administrator (can be setup for all services or only for selected ones) so that it can access any other related Amazon AWS service needed for your needs.
Once you create your user, you need to create a pair of security keys that will allow you to connect to your future EC2 instance (the actual server where Sendy will be installed). One thing to remember is that you need a different pair of keys for each region that you have services installed in (Amazon uses 10 different world regions, 3 in US, 2 in Europe, 4 in Asia and 1 in Pacific).
Thus, deciding on the region you want to use becomes very important. When I created my first EC2 instance I didn’t pay attention and I chose the EU-West 2 (Frankfurt) region because, being located in Romania, with the European Internet backbone being in Frankfurt, I thought to myself I will have the smallest latency when delivering the email marketing services I was planning to deploy.
Well… I was out of luck. After installing the EC2 instance and moving over to setting up SES services for Sendy I realized they were only available in the EU-West 1 (Ireland) region. This forced me to create a copy of my instance (its image, actually) and move it over across regions (which is something detailed here, if you ever need to do it).
Going back to the EC2 installation process, you need to create a VPC (virtual private cloud) and a security group for your instance so that you and others can connect to it through SSH and FTP/HTTP. You will probably have to also assign an elastic IP address to your EC2 instance as well (which are free, if you have them attached to an EC2 instance).
Once you have all these things setup you can start creating the actual server you will install Sendy on. You go to the instance option on your left side menu EC2 dashboard and click on launch instance. While setting your instance up, you have to connect it to your already created VPC and security group. Then, you can attach the already created elastic IP to it so that it has a public interface to which to connect to.
There are several options you can select, some of them being small enough to qualify for a free tier (12 months after you open your AWS account you can use some services for free). In my case, for about 15 sites (or clients if you want) and a daily volume of about 150.000 emails, I used an Ubuntu t2.micro instance with its default 30gb storage (which works pretty well so far).
The Sendy installation & setup process
Once you have your instance up and running and you connect to it, you can start following Brad’s guide, which is detailed enough for you to get started with configuring your server. There are a few hops you will have to jump over during the installation, such some outdated information as the Ubuntu version on the t2.micro instances is now slightly different. Don’t worry though, Google will help you out with it.
Once you’re done with that, you can move over to Sendy’ Getting Started Guide, which is pretty straight forward. You need to make sure you setup and validate your domains and email addresses with Amazon SES (and this requires that you have access to your domain’s DNS).
Once you have everything up and running, check out Sendy’s Forums for more details related to the configuration tweaks needed for things such as crontab (to be able to schedule campaigns and run autoresponders) or if you need help troubleshooting your installation. One issue that you might run into while setting up crontab is the fact that on top of the config options provided to you by Sendy, for security reasons, more recent versions of Linux will require you to add a user (the one used for your Sendy/Apache installation) before the command you setup to run in your /etc/crontab file (i.e. username php /home/sendy/scheduled.php).
Your turn now! 🙂
Well, I hope this little guide has helped you set up your own Sendy platform (or at least convinced you to try it out). If you run in any issues that I might be able to help with, just drop me a comment and I will try to help you out as time allows.
If you enjoyed this article, use the banner below or the affiliate links from this article to buy your own copy of Sendy.