Custom Domains
By default, agents send email from@useanima.sh. Add your own domain so agents send from an address like agent@yourcompany.com, improving deliverability and trust with recipients.
How it works
Anima uses a hybrid email architecture that separates inbound and outbound delivery:| Direction | Handled by | What it does |
|---|---|---|
| Inbound | Anima mail server | Receives incoming mail via SMTP and stores it in agent mailboxes |
| Outbound | AWS SES | Sends outgoing mail with DKIM signatures and manages delivery reputation |
| Storage | Anima | Persists every message and indexes it for search |
| Record | Points to | Direction |
|---|---|---|
MX (@) | mail.useanima.sh | Inbound |
SPF TXT (@) | include:amazonses.com | Outbound |
MAIL FROM MX/TXT (mail) | SES feedback endpoint + SPF | Outbound bounce handling |
| DKIM CNAME | SES-managed keys | Outbound signing |
DMARC TXT (_dmarc) | Your reporting address | Policy enforcement |
Add your domain
Create the domain in Anima
Go to Dashboard → Domains, click Add domain, and enter your root domain — for example
yourcompany.com. Anima immediately shows the DNS records you need to publish.Copy the required DNS records
Anima generates all required records for you. Add each one to your DNS provider:
| Record | Host | Purpose |
|---|---|---|
| TXT | @ | Proves you control the domain |
| MX | mail | Routes SES bounce traffic |
| TXT | mail | SPF for the SES custom MAIL FROM subdomain |
| CNAME | token-a._domainkey | Publishes DKIM keys |
| MX | @ | Routes inbound agent mail to Stalwart |
| TXT | @ (merge) | Authorizes outbound mail via SPF |
| TXT | _dmarc | Sets DMARC policy for the domain |
If you already have an SPF record at
@, add include:amazonses.com to the existing record rather than creating a second one. A domain must have exactly one SPF TXT record.Enter records in your DNS provider
Most providers automatically append your root domain to host values. Paste the Host column from Anima directly — for example
_dmarc, not _dmarc.yourcompany.com — to avoid creating duplicate suffixes.Provider notes:- Cloudflare — Appends root domain automatically. Use short host values.
- Route 53 — Supports manual entry; double-check long TXT values after pasting.
- Namecheap — Use
@,mail, and_dmarcas host values. - GoDaddy — Treat host fields as relative names unless the UI asks for a full FQDN.
Download the zone file (optional)
If your DNS provider supports BIND-format imports, use the Download zone file button in the Anima DNS setup view to publish all records at once.
Verify
Click Verify records in Anima. Each record shows one of three statuses:
- Valid — Correct. No changes needed.
- Missing — Not published yet, or still propagating. Wait and retry.
- Invalid — Published but the value is wrong. Compare the Anima row against your DNS provider and correct it.
AWS SES setup for outbound mail
Custom domain sending requires an AWS SES account. Complete this checklist before expecting outbound delivery to work:- Pick the SES region you want to send from.
- Create an SES domain identity for your sending domain.
- Publish the SES Easy DKIM CNAME records in your DNS provider.
- Configure SES custom MAIL FROM for
mail.<domain>and publish its MX and SPF TXT records. - Merge
include:amazonses.cominto your root SPF record. - Create an IAM user or role with
ses:SendEmailandses:SendRawEmailpermissions. - Store the SES region and credentials in your application’s secrets manager.
- Configure SNS bounce and complaint notifications.
- Request SES production access so you can send to non-verified recipients.
