How to set up an affordable email service with a little help from Jeff

Julian Dm
4 min readMay 7, 2021

If you wish to add a custom email domain (yourname@example.com) to your microsoft 365 account you are greeted with a great example of cross-selling: it’s only possible if you registered your domain at godaddy.com...

As a somewhat happy Microsoft 365 user myself i probably would have taken that offer, hadn’t i already parked my domain (juliandemourgues.com) at AWS.

But here we are and for the sake of curiosity let’s try out an often overlooked service by Amazon: AWS Workmail

What you’ll need

  • Any Email client (Outlook in this example)
  • A registered Domain and a registrar other than godaddy.com (ideally at AWS Route53 in this example, if you already registered your domain at godaddy it’s probably more feasible to use microsoft)
  • An AWS account

Upside of this solution

  • independence from email-client and registrar
  • 50GB email storage per email
  • a browser-based email client for minimalists

Downside of this solution:

  • 4$ per custom email address per month (i.e. test@example.com). Although that’s a steal if you use this address daily..
  • the browser-based email client is very spartanic to put it lightly. (I still use outlook as a client for this reason)

Let’s get started

So our goal is to setup a managed email environment on AWS without too much hassle and for basic day-to-day email communication. For that we’ll use the Service AWS Workmail — an advanced and more consumer-friendly version of Amazon SES.

Why not using SES which is part of the free tier?

SES is not fully managed. Yes it’s an email server but it won’t transmit incoming email to your email client out-of-the box. Instead you need at least one S3 bucket to store the emails and a lambda function to forward them.

This is a justified programming expense if you are planning to handle thousands of emails in bulks, for example email campaigns or other automatised tasks, or if you just want incoming emails forwarded to you from your professional to private email address without any other features. This option is basically for free if you already have a domain and a bit of programming know-how!.

For our purposes however it’s just about having a fancy (and more professional) email address.

And on top of that we might need some of the features that WorkMail provides, like calender functionality, a browser based email client (if you want to cut ties with Office 365) or just a simple group feature (if you want to assign multiple users to one address, i.e. support@example.com)

Setting up the AWS Side

Let’s go to:

https://eu-west-1.console.aws.amazon.com/workmail/v2/home?region=eu-west-1#/create-organization

This is assuming you live in the EU. Amazon only provides 3 email servers: on the east coast (us-east-1), west coast (us-west-2) and in Ireland (eu-west-1).

Then, In AWS Workmail you need to create an organization which acts as a very lean IAM wrapper:

Since i had my website (juliandemourgues.com) already running on Route53 i could just choose the first selection on top and most of the necessary entries got automatically added to the hosted zone in Route 53.

However i still had to manually add some entries into Route 53 myself and wait for the “Verified” status. You’ll find this information by navigating to <your_organisation> — Domains — <your_custom_domain>

I cut out the security relevant data. There might be some more entries you need to add to your DNS Service (Route 53 here)

Copy and paste all required entries into the DNS provider until the Status shows “Verified”. If you are using Route53 you’ll find your hosted zone (in my example juliandemourgues.com) here: https://console.aws.amazon.com/route53/v2/hostedzones

Setting up your client

This one is easy once you find the right information buried somewhere in the AWS Docs.

There’s custom docs for setting up an outlook client that didn’t work for me (probably wrong version). That’s why i can recommend to go for the IMAP alternative from the start. This should work with any client. https://docs.aws.amazon.com/workmail/latest/userguide/using_IMAP.html

For Example with outlook, This process will be almost identical in all email clients (gmail, thunderbird, etc…):

add a new account and select “manual setup“ and then IMAP.

Then just enter in- and outgoing server endpoints:

  • In: imap.mail.eu-west-1.awsapps.com:993 with SSL
  • Out: smtp.mail.eu-west-1.awsapps.com:465 with SSL

And there you go. You have a custom email address now.

If you found this helpful then consider giving a clap for the algorithm, if not write me at hello@juliandemourgues.com and let’s look at it together.

Happy to help!

Sources

https://aws.amazon.com/de/getting-started/hands-on/setup-email-receiving-pipeline/

https://aws.amazon.com/de/workmail/

https://console.aws.amazon.com/route53/v2/hostedzones

https://docs.aws.amazon.com/workmail/latest/userguide/using_IMAP.html

--

--

Julian Dm

Freelance RNA Developer (React + Node + AWS) working from Berlin. Learn more on juliandemourgues.com