Cheap Domain Mail

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.

1) AWS SES – Outbound Email

AWS Simple Email Service (SES) handles outgoing messages for your domain. Verify your domain, add DNS records, request production access, and create SMTP credentials.

1.1 Verify Your Domain

  1. Open the SES Console.
  2. Go to Verified identitiesCreate identity.
  3. Select Domain, enter your domain (e.g., yourdomain.com), leave DKIM enabled.
  4. Save the verification and DKIM records shown by SES.
SES domain verification screen

Screenshot: SES domain verification workflow.

1.2 Add DNS Records (TXT + DKIM CNAME)

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.

1.3 (Optional but Recommended) Set a Custom MAIL FROM Domain

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.

1.4 Request Production Access (Move Out of Sandbox)

  1. Go to AWS Support → Create case.
  2. Choose Service limit increaseSES Sending Limits.
  3. Explain your use case (transactional or personal business email), target region, expected volume.

1.5 Create IAM User & SMTP Credentials

  1. Open AWS IAMUsersAdd users → Name: ses-smtp-user.
  2. Access type: Programmatic access.
  3. Attach policy (minimal example):
{
"Version": "2012-10-17",
"Statement": [
{
    "Effect": "Allow",
    "Action": [
    "ses:SendEmail",
    "ses:SendRawEmail"
    ],
    "Resource": "*"
}
]
}
  1. Save the Access key ID and Secret access key.
  2. Convert them to SMTP credentials (SES docs provide a converter; many SDKs do as well).

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>

2) ImprovMX – Inbound Forwarding

ImprovMX forwards inbound mail to your Gmail address. You’ll add your domain and set MX records.

2.1 Add Your Domain & Default Forward

  1. Go to ImprovMX and sign in.
  2. Add domain → enter yourdomain.com.
  3. Set default forward: you@yourdomain.com → yourgmail@gmail.com.
ImprovMX dashboard domain added

Screenshot: Domain added in ImprovMX with default forward.

2.2 Update DNS MX Records

; 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.

3) Gmail – Send Mail As (Using SES)

Add your custom address in Gmail and point SMTP at AWS SES.

3.1 Add the Address

  1. Open Gmail → SettingsSee all settingsAccounts and Import.
  2. Under Send mail as, click Add another email address.
  3. Name: your display name, Email: you@yourdomain.com.
  4. Check Treat as an alias (usually yes).
Gmail 'Send mail as' setup

Screenshot: Adding your custom address in Gmail.

3.2 SMTP (AWS SES)

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.

3.3 Optional Settings

Gmail sending as custom domain

Screenshot: Gmail successfully sending from your custom domain.

4) Testing

  1. Outbound: From Gmail, compose a message using you@yourdomain.com and send to a non-Gmail address you control.
  2. Inspect headers of the received mail: verify DKIM=pass, SPF=pass, DMARC=pass if configured.
  3. Inbound: From a different account, send a message to you@yourdomain.com; verify it arrives via ImprovMX forwarding.

5) Common Pitfalls & Fixes

Appendix – Sample DNS Zone Snippets

A. Minimal SPF/DMARC with SES only

; 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"

B. With Custom MAIL FROM

; 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"

C. ImprovMX MX

Type: MX
Name: @
Priority: 10
Value: mx1.improvmx.com

Type: MX
Name: @
Priority: 20
Value: mx2.improvmx.com