Configure custom domain email inexpensively using AWS SES for outbound mail, ImprovMX for inbound forwarding, and Gmail as your client. Complete AWS first (outbound), then ImprovMX (inbound), and finally Gmail.
AWS Simple Email Service (SES) handles outgoing messages for your domain. Verify your domain, add DNS records, request production access, and create SMTP credentials.
yourdomain.com
), leave DKIM enabled.Screenshot: SES domain verification workflow.
At your DNS provider, create the records exactly as SES displays. A typical set looks like:
; SES Domain verification
Type: TXT
Name: _amazonses.yourdomain.com
Value: "random-string-from-SES"
; DKIM (3 CNAMEs)
Type: CNAME
Name: abcdefghijklmnopqrstu._domainkey.yourdomain.com
Value: abcdefghijklmnopqrstu.dkim.amazonses.com
Type: CNAME
Name: vwxyz0123456789abcd._domainkey.yourdomain.com
Value: vwxyz0123456789abcd.dkim.amazonses.com
Type: CNAME
Name: 123456abcdef7890ghi._domainkey.yourdomain.com
Value: 123456abcdef7890ghi.dkim.amazonses.com
DNS propagation can take time. Wait until SES shows the identity as Verified.
In SES → your domain → MAIL FROM, set something like mail.yourdomain.com
.
SES will provide additional MX
and TXT
(SPF) records.
; MAIL FROM (example)
Type: MX
Name: mail.yourdomain.com
Priority: 10
Value: feedback-smtp.us-east-1.amazonses.com
Type: TXT
Name: mail.yourdomain.com
Value: "v=spf1 include:amazonses.com -all"
This helps SPF alignment and improves deliverability.
ses-smtp-user
.{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "*"
}
]
}
SMTP settings (example for us-east-1
):
SMTP Host: email-smtp.us-east-1.amazonaws.com
Port: 465 (SSL) or 587 (TLS)
Username: <SES SMTP username>
Password: <SES SMTP password>
ImprovMX forwards inbound mail to your Gmail address. You’ll add your domain and set MX records.
yourdomain.com
.you@yourdomain.com → yourgmail@gmail.com
.Screenshot: Domain added in ImprovMX with default forward.
; ImprovMX MX
Type: MX
Name: @
Priority: 10
Value: mx1.improvmx.com
Type: MX
Name: @
Priority: 20
Value: mx2.improvmx.com
Ensure there are no conflicting MX records for the root domain left over from other providers.
You can optionally add aliases (e.g., support@
, info@
) to forward to different Gmail addresses.
Add your custom address in Gmail and point SMTP at AWS SES.
you@yourdomain.com
.Screenshot: Adding your custom address in Gmail.
SMTP Server: email-smtp.us-east-1.amazonaws.com
Port: 465 (SSL) or 587 (TLS)
Username: <SES SMTP username>
Password: <SES SMTP password>
Secured connection: SSL/TLS (465) or STARTTLS (587)
Gmail will send a verification email to you@yourdomain.com
which ImprovMX forwards to your Gmail inbox.
Click the link or paste the code to confirm.
Screenshot: Gmail successfully sending from your custom domain.
you@yourdomain.com
and send to a non-Gmail address you control.DKIM=pass
, SPF=pass
, DMARC=pass
if configured.you@yourdomain.com
; verify it arrives via ImprovMX forwarding.email-smtp.us-east-1.amazonaws.com
).TXT
at that subdomain includes include:amazonses.com
.Type: TXT
Name: _dmarc.yourdomain.com
Value: "v=DMARC1; p=quarantine; rua=mailto:dmarc@yourdomain.com; ruf=mailto:dmarc@yourdomain.com; fo=1"
Adjust p=
(policy) as you gain confidence.
; SPF at root (if NOT using custom MAIL FROM)
Type: TXT
Name: yourdomain.com
Value: "v=spf1 include:amazonses.com -all"
; DMARC (monitoring mode)
Type: TXT
Name: _dmarc.yourdomain.com
Value: "v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com; ruf=mailto:dmarc@yourdomain.com; fo=1"
; MAIL FROM domain records (from SES)
Type: MX
Name: mail.yourdomain.com
Priority: 10
Value: feedback-smtp.us-east-1.amazonses.com
Type: TXT
Name: mail.yourdomain.com
Value: "v=spf1 include:amazonses.com -all"
Type: MX
Name: @
Priority: 10
Value: mx1.improvmx.com
Type: MX
Name: @
Priority: 20
Value: mx2.improvmx.com