Skip to main content
Before you can send email from your own domain (e.g. [email protected]), you need to register the domain with SES and prove you own it by publishing DNS records. This guide walks through every step.

What DNS records are required

Record typePurpose
CNAME × 3DKIM — proves Wraps/SES is authorised to sign email on your behalf
TXTSPF — tells receiving servers which IPs may send from your domain
TXTDMARC — instructs receivers what to do with unauthenticated mail
All three record types are required for good deliverability. Skipping DMARC is the single most common reason email lands in spam.

Step-by-step setup

1

Add the domain to SES

wraps email domains add -d yourapp.com
This registers yourapp.com with AWS SES and generates the DKIM signing keys.
2

Get the DKIM CNAME records

wraps email domains get-dkim -d yourapp.com
The command prints three CNAME records in the form:
abc123._domainkey.yourapp.com  →  abc123.dkim.amazonses.com
def456._domainkey.yourapp.com  →  def456.dkim.amazonses.com
ghi789._domainkey.yourapp.com  →  ghi789.dkim.amazonses.com
Add all three to your DNS provider.
3

Add SPF and DMARC records

Add the following TXT records at your DNS provider.SPF — add at yourapp.com (or merge into an existing SPF record):
v=spf1 include:amazonses.com ~all
DMARC — add at _dmarc.yourapp.com:
v=DMARC1; p=none; rua=mailto:[email protected]
Start with p=none to collect reports without blocking mail, then tighten to p=quarantine or p=reject once you’ve confirmed all legitimate senders are covered.
4

Wait for DNS propagation

DNS changes typically propagate within 5–30 minutes. In rare cases (especially with long TTLs) it can take up to 48 hours.You can monitor progress without waiting:
wraps email domains verify -d yourapp.com
Run this repeatedly until all checks pass. The command checks DKIM CNAME records, SPF, and DMARC.
5

Verify the domain is active

Once DNS has propagated, the verify command shows a success message:
✓ DKIM     3/3 CNAME records verified
✓ SPF      v=spf1 include:amazonses.com ~all
✓ DMARC    v=DMARC1; p=none; rua=mailto:[email protected]
You can now send email from any address at yourapp.com.

Managing domains

List all domains

wraps email domains list
Shows every domain registered in SES along with its verification status.

Remove a domain

wraps email domains remove -d yourapp.com
Use -f / --force to skip the confirmation prompt.
Removing a domain from SES immediately stops all email sending from that domain. This action cannot be undone.

Common DNS record examples

SPF

If you already have an SPF record, add include:amazonses.com to it rather than creating a second TXT record (a domain can only have one SPF record):
# Before
v=spf1 include:_spf.google.com ~all

# After
v=spf1 include:_spf.google.com include:amazonses.com ~all

DMARC

# Monitoring only (safe to start here)
v=DMARC1; p=none; rua=mailto:[email protected]

# Quarantine (move failing mail to spam)
v=DMARC1; p=quarantine; rua=mailto:[email protected]

# Reject (block failing mail entirely)
v=DMARC1; p=reject; rua=mailto:[email protected]

Run a deliverability audit

After your domain is verified, run a full deliverability audit to catch any configuration issues:
wraps email check yourapp.com
See the Deliverability guide for full details on what this checks and how to interpret the results.

Build docs developers (and LLMs) love