Email server on EC2 with an elastic load balancer - email

Let's say I have a couple of ec2 instances with an elastic load balancer, and I want to run an email server on them so I can send and receive emails from multiple addresses. What is the best practice to do that?

It's sort of a broad question, but I can give you a (hopefully) helpful, specific answer. Email is a topic that doesn't get talked about much with AWS. In fact, this is where the benefits of the cloud can get a little... cloudy.
In my view, the key issue is email deliverability -- making sure that the emails sent from the cloud are reliably received by the intended recipients. Because of anti-spam measures employed by email providers, that means using IP addresses that have a good reputation. Unfortunately, that's not a big benefit of AWS. In fact, many spam filters simply drop emails sent from AWS IP's, and this is true for other cloud service providers as well.
So whenever I send any email from AWS, I always use a forwarding service such as SendGrid. Such companies offer SMTP forwarding in a secure way, and give you all the tools you need to reliably deliver both bulk and transactional emails.
At entry level, you use shared IP's and get the benefit of DKIM, open- and click-tracking, and bounce/block reporting. SendGrid helps to take care of managing your domain's reputation with the big providers. At higher service levels, they can help you warm up and maintain your own dedicated email-sending IP address to ensure that you are not impacted negatively by other SendGrid customers.
Of course, Amazon also sells Simple Email Service, and there are also other options such as sending through Gmail. I am in no way affiliated with any of these companies, but my main piece of advice to people wanting to send any kind of email from a cloud provider is to always use a third party service to maximise deliverability.
As to receiving emails, an Elastic Load Balancer isn't helpful for SMTP, though if you are providing webmail then it can help balance your port 80 traffic. For SMTP, use multiple MX records with the same weight, pointing to a set of hosts that can receive the email.
For your Mail Transport Agent, I recommend Postfix, but that's a matter of preference. You will find many people also recommending Qmail and Sendmail.

I agree with most of #platforms' answer in regards to receiving email in the "cloud", i.e., AWS. Especially the note about balancing port 80 traffic and the inability to balance SMTP (using multiple MX records instead). Just to give a different view on this matter, I had always set up a single MS Exchange Edge Transport Server for those tasks. In a Microsoft TechNet post they mention that a farm of 6 of these servers is able to safely handle around 13 million messages a day (even under peak load).
On the sending email from the "cloud", i.e. AWS, matter, I must disagree, though. I highly recommend using Amazon Simple Email Service (SES). It is fully integrated with the rest of your infrastructure, and the AWS SDKs have all the bindings you need for the majority of programming languages/platforms. As long as you correctly set up your Domain Records, DKIM, etc, you will have no trouble with deliverability. You also have the same reports about bounces, blocks, complaints, etc. Source: I have been using SES for years with no single complaint in regards to deliverability.

Related

Bulk Emailing Domain Usage

i am planning strategy for our bulk marketing emails and bulk recruitment emails. Shall we use seperate domains for marketing and recruitment bulk emails even if we are using SMTP Relay service of providers like Critsend and Sendgrid. Reason i am asking as i have read somewhere Domain Reputation is also very important in the long run and should use main domain : abc.com for normal transactional emails and every day communication with our clients and vendors and use seperate domains for Bulk Emailing.
We do have all these 3 domains (main abc.com, others abc.net and abc.org) for several years with us so we can setup quickly and start using though other 2 new domains have never been used for sending emails till date and we have used our main abc.com for sending transactional emails till date for all these years except once a few years ago for bulk emailing but that few 100 emails only.
Or if we are using your SMTP relay of these providers then the domain reputation of providers is required hence it will not matter whether we use other domains or just use our primary domain for everything?
Please help and advise.
For the most part the from address domain is what your sending reputation is associated with, so yes, I would recommend that you separate by domain.
The sending IP also has some effect, so if you have an especially bad reputation on one domain, it may cause deliverability issues for other domains with otherwise good sending reputation that use the same IPs, so it’s a good idea to split that too.

Getting optimal email deliverability from multiple domains using SendGrid with our SaaS product

We develop, deploy and maintain a web based booking system for a growing number of clients. The web application is branded for each client, including using their own domain name in the URL that users browse to.
We send booking confirmation emails via SendGrid and want them to appear to the recipient as though they are coming from the client's domain. We have not set up any subusers yet.
Our clients tend to have seasonal campaigns that result in occasional surges of booking-related email, followed by quiet periods.
We are happy with our current deliverability and have a good reputation score.
Assume that:
Our SaaS domain is mybookingapp.com.
Client domain is clienta.com (...clientb.com etc.)
We have control over DNS records for mybookingapp.com, clienta.com etc.
Currently, we have configured SendGrid's IP-whitelabelling so SendGrid identifies the originating server as mybookingapp.com ("Received: from o1.email.mybookingapp.com") with a From address of bookings#clienta.com.
We have got green ticks in all the SendGrid DNS settings so we know that DKIM, SPF and rDNS are OK.
I am acutely aware that the domain of the from address (bookings#clienta.com) does not match our application's domain name (mybookingapp.com). This results in mail clients like GMail showing the sender as "bookings#clienta.com via mybookingapp.com". This is slightly disconcerting for users because, until receiving the email, they don't know anything about mybookingapp.com. I also have a possibly unfounded suspicion that this discrepancy is affecting deliverability.
To meet client expectations, we are looking at options to remove all mention of mybookingapp.com from the email.
Should I:
a) Recommend we buy an IP address for every client and do IP-whitelabelling at a non-negligible cost of USD $30/month, particularly for a client that only does occasional campaigns. My research suggests that multiple dedicated IP addresses are usually used by companies with very high email volumes to keep their reputation safe and isolated.
b) Simply set up a whitelabelled domain for each client but continue to use a single IP address. My assumption is that this will cause an RDNS problem (because reverse lookup on an IP can only point to a single domain) and while eliminating the "via mybookingapp.com", possibly affect deliverability.
c) Do something else?
The "via mybookingapp.com" doesn't affect Deliverability, it only affects the user experience IF they didn't recognize the brand. I don't think is the case.
Yes, it's good practice isolate traffic and reputation, but sometimes it's not the right thing to do and the best solution is to use shared IPs.
I wouldn't suggest to buy a different IP for each client if their volume and frequency isn't high. The goal of a right setup is to find a good balance between the number of IPs and their daily volume.
Also remember that mailbox providers prefer "constant traffic" instead of IPs without traffic and sudden peaks, but those IPs need to be warmed up.
My suggestion is to assess your daily volume and the daily volume for each client, look at the domain density for providers like Microsoft and Google, and THEN decide if add more IPs, or separate the traffic.
Last but not least, you should check if you are having actual deliverability issues! maybe everything is just good this way.
Easiest and best way to know if you have deliverability problem is to check your performances by domain. Check the open rates by domain: if some is very low, there's probably a deliverability issue. If all the open rate trends are "compact" and show the same pattern, everything is fine.

How to acheive high email deliverability without sharing data with 3rd party ESP?

We are hosting customer data on behalf of companies/clients, and one of our tasks is to send out a very specific transactional email from us (with our email address as sender and reply-to) to clients customers.
We are trying to move away from storing the personal part of a customers data, including his email address. Of course, in order to be able to send out an email to a customer we need to at some point have access to the email address, but in our view it's a step in the right direction to retrieve the email address from the client during a session instead of retreiving it from our own database.
The problem now is that our unwillingness to have email addresses stored anywhere rules out using email service providers like Sendgrid. Instead we need to send out lots of emails through our own server, and this might hurt deliverability. I've been looking for a kind of "self hosted Sendgrid". One who will enable us to send bulks of emails, and one we can tweak to not store the sent emails.
One solution I've found is sendy.co who defines themselves as:
Sendy is a self hosted application that runs on your web server.
This sound promising, but then I read that emails are sent through Amazon's cloud:
Sendy uses multi-threading to send emails via Amazon SES.
I suppose this leads us back where we started, because then Amazon is storing the email addresses.
As I understand, the high deliverability that ESPs achieve is not only caused by state-of-the-art email headers, but also by their servers being recognized by Google/Gmail, Microsoft and other email hosts. So maybe a high deliverability just isn't possible without an ESP. But is there an alternative approach that lets us acheive relativly high deliverability without needing to involve a 3rd party server to do the sending?
The reason that people tend to pay for this service is because it is reasonably difficult/complicated/time consuming. If sending this email is a core part of your business, you'll want to hire a deliverability engineer to handle this. If it's not, I'd start by contacting the various transactional ESPs and see if you can find one that has an enterprise offering they're willing to tailor to this use case.
I think that I'm a little late to this. I hope that you figured out your question by now.
If you haven't then:
One alternative that you can try is to host your own server with an on-premise option. I would check out SocketLabs Hurricane MTA.
SocketLabs is a cloud ESP, like Sendgrid. But they also have a powerful on-premise option.
https://www.socketlabs.com/blog/introducing-hurricane-mta-3-0/

How to create an email account and set up email receiver when using AWS EC2 and SES?

So we are planning to use AWS SES for sending emails. But how do we set up the email receivers? And how do we create an email accounts? When activating AWS SES, it asks to verify an email account (eg. help#example.org)...
I tried to create a mail server on one of the instances using postfix following this article: http://flurdy.com/docs/postfix/, but it's not easy at all... Does anybody know any better alternatives?
Thanks.
SES is for sending email only. As you note, you must have some other way set up to receive email at least at the "From" address you intend to use, because Amazon will verify it before letting you send.
While you certainly could set up an email server and domain on an EC2 instance, it's very complicated. I recommend that you get an email service for just that purpose. If you only need a single address for all your messages, just get a free address from Google, Microsoft, Yahoo, etc.
If you need multiple addresses, consider getting Google Apps for Business, either for an existing or new domain name (it's easiest to set up if you have it register a new domain name for you). It's no longer free, but it's still quite cheap. A single user account can receive emails for every address in the domain, it's flexible, and it's reliable. It's a good companion to using SES for sending automated emails.
Use Amazon WorkMail if you prefer AWS. Gmail for work, Office 365, Hostgator, are some other examples. FYI, none of these providers simply provide domain emails. They come bundled with many other things such as chat clients, calenders, etc. Pricing of these services depends on what other things they are bundled with.
$4/user/month for AWS
$5/user/month for Google
$5/user/month for Microsoft
Since you are in AWS cloud, I will tell you a few things about Amazon WorkMail.
You get your own domain and 50GB of storage per user.
You get calendars for free.
You cannot use just any desktop mail client. You have to either use Outlook, or Mac's mail client, or the web interface. This is their weakest point. However, including other IMAP clients is in their roadmap (I guess atleast a year).
Integrates nicely with SES.
Important links:
FAQ page.
Features page.
There are many more features such as remotely removing emails from a device, managing your users, and so on.
What I can recommend you is to use Amazon WorkMail because they almost provide all the features supported by others, and you are tied with AWS anyway. AWS also recently launched Workspace and Workdocs (both separately billed) that will allow you to create a complete work solution. These services also combine nicely with IAM.

SMTP servers for bulk mailing

I got the authority from the user, and they subscribe to my newsletter.
Are there any free bulk mailing SMTP servers?
If not, which service (e.g., MailChimp) offers the largest mail-sent limit and subscriber limit?
In fact, can I build my own SMTP server and serve email just like MailChimp, given that my computer can handle the workload?
MailChimp offers up to 2000 contacts for free as long as you aren't spamming, so there's your best option.
You can definitely build your own SMTP server and roll your own mailing list software (MailChimp won't let you use your own, AFAIK) but you'd have to ensure that you are whitelisted in as many places as possible, have proper SPF records and DKIM in place, and your IP has a good reputation.