Send Emails from AWS SES using Namecheap as DNS Provider (with DKIM)

Kyle Higginson
3 min readOct 31, 2021

--

AWS made changes to how SES domains are verified for sending, but all documentation still describes the domain verification process using the legacy unsupported TXT records. This doc explains how to do verify a domian using CNAME records.

AWS Console Message

How To Verify a Domain for Sending

This will guide you through the process of verifying a domain in AWS SES to allow you to send emails from any address using that domain, eg. noreply@cleancoding.dev and hello@cleancoding.dev. You won’t need to verify these two email addresses separately.

This will also set up DomainKeys Identified Mail (DKIM), which ensures your emails appear more legitimate to your recipients and are less likely to go to Junk or Spam folders.

I recently set this up for my new course - cleancoding.dev, to allow me to send confirmation emails to purchasers of the course.

  1. Go to the AWS SES dashboard.
  2. Click on Verified identities in the left menu.
  3. Then click Create identity at the top right of the dashboard. This will leave you at the page shown below.

4. Choose Domain as Identity type.

5. Enter the domain in the input field. This should just be the domain, eg. cleancoding.dev

7. Click Create identity at the bottom right.

You will now be taken to the identities detail page, and the identity will be in status “Verification pending”.

8. Under the DomainKeys Identified Mail (DKIM) section, expand View DNS records. You will see something like the screenshot shown below.

9. Now go to your Namecheap.com acccount and click Manage on the domain which you want to configure email for, as seen below.

10. Once in the manage dashboard, click on Advanced DNS, you should see the Host Records section.

11. Click Add new record and choose CNAME Record as your record type.

12. Fill in the Host of the first record with the value from SES. Host is the Name field from SES. For this field, it is important that you remove the domain from the end of the Name (Namecheap automatically append this for us). For example:

SES Name will be something like this: rsrmrkzj25yoaioyx7wg5b6peh4sqphj._domainkey.cleancoding.dev

The Host which you should enter into Namecheap will be: rsrmrkzj25yoaioyx7wg5b6peh4sqphj._domainkey

13. Fill in the information from SES in for Value of the first record. Value is the Value field from SES.

14. You can leave TTL as Automatic.

15. Repeat steps 11, 12, 13 and 14 for the other 2 DNS records which SES provided us.

16. Click Save all changes.

The resulting CNAME records in Namecheap will look something like this:

17. You’re done! It took around 15 minutes for SES to verify the changes. Once complete, the Identity Status in SES will change to Verified and AWS will send you an email to comfirm that the identity has been verified.

Hopefully this helped. I set this up for my new course focused on writing clean code. Check it out — CleanCoding.dev

--

--