> For the complete documentation index, see [llms.txt](https://docs.mailofly.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mailofly.com/guides/deliverability/domains.md).

# Domains & DNS

Verify your apex domain so Mailofly can send authenticated mail via **domain relay** — branded `@yourdomain.com` delivery through Amazon SES.

**In the app:** [Domains](https://www.mailofly.com/user/domains)

***

## Why verify a domain?

| Benefit        | Detail                                        |
| -------------- | --------------------------------------------- |
| Branded From   | Send as `hello@yourcompany.com`               |
| DKIM signing   | Automatic via SES CNAME records               |
| Deliverability | SPF + DMARC alignment with your domain        |
| Trust          | Recipients see your domain, not a shared pool |

Domain relay accounts **require** a verified domain before creation.

***

## Setup flow

### 1. Add your domain

1. Open [**Domains**](https://www.mailofly.com/user/domains)
2. Enter your **apex domain** (e.g. `mailofly.com` — not a subdomain)
3. Mailofly registers the domain with Amazon SES and generates DNS records

### 2. Publish DNS records

Open the domain detail page. You'll see a table of records to add at your DNS provider:

| Record type              | Purpose                                     |
| ------------------------ | ------------------------------------------- |
| **DKIM (CNAME)**         | SES-provided CNAMEs for email signing       |
| **SPF (TXT)**            | Authorizes SES to send on your behalf       |
| **MAIL FROM (MX + TXT)** | Bounce handling subdomain (when configured) |
| **DMARC (TXT)**          | Recommended at `_dmarc.yourdomain.com`      |

{% hint style="info" %}
DNS propagation can take up to 48 hours. Most providers update within 15–30 minutes.
{% endhint %}

### 3. Verify

Click **Verify DNS** on the domain detail page. Status updates when SPF, DKIM, and DMARC checks pass.

Verified domains appear when creating **Domain relay** accounts under Accounts.

***

## Example DMARC record

```
_dmarc.yourdomain.com  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com"
```

Start with `p=none` for monitoring, then tighten to `quarantine` or `reject` once confident.

***

## Plan limits

| Plan       | Max domains |
| ---------- | ----------- |
| Free       | 2           |
| Basic      | 5           |
| Scale      | 15          |
| Enterprise | Unlimited   |

Additional domains available as add-ons on paid plans.

***

## Troubleshooting

| Issue                 | Fix                                                                      |
| --------------------- | ------------------------------------------------------------------------ |
| DKIM pending          | Confirm CNAME records match exactly — no trailing dots in some providers |
| SPF fail              | Ensure only one SPF TXT at apex; merge includes if needed                |
| Verification stuck    | Wait for TTL expiry; click Verify DNS again                              |
| Domain already in SES | Contact support if domain was used in another AWS account                |

Check [**Mail logs**](/guides/operations/mail-logs.md) after sending to see SMTP-level errors.

***

## Related

* [Sending accounts](/guides/deliverability/accounts.md) — create domain relay after verification
* [Mail logs](/guides/operations/mail-logs.md) — debug delivery failures
* [External Integrations → SMTP providers](https://docs.mailofly.com/integrations/smtp-providers)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.mailofly.com/guides/deliverability/domains.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
