Mail DNS records
Every DNS record Mail Hosting and SMTP Relay ask for, what each one does, and when we publish them into your zone for you.
In the dashboard
Each domain on a mail service has its own list of records. To see it, open the service from Email, go to the Domains tab and select the domain. The DNS records card lists every record with the exact value for that domain. This page explains each one.
Records by purpose
Section titled Records by purposeIn the names and values below, example.com stands for your domain and <base> for your service's mail host (see Placeholders).
| Record | Type | Name | Priority | Value | Service |
|---|---|---|---|---|---|
| Ownership | TXT | _mailverify.example.com |
mail-verify=<token> |
Both, unless we publish for you | |
| Inbound mail | MX | example.com |
10 |
mx1.<base>, one record for each mail server listed |
Mail Hosting |
| Standby inbound mail | MX | example.com |
20 |
A standby host, when the dashboard lists one | Mail Hosting |
| SPF | TXT | example.com |
v=spf1 include:_spf.<base> -all |
Both | |
| DKIM | TXT | <selector>._domainkey.example.com |
v=DKIM1; k=rsa; h=sha256; p=<key>, and a second record with k=ed25519 |
Both | |
| DMARC | TXT | _dmarc.example.com |
v=DMARC1; p=none; adkim=r; aspf=r, with the stage in p= |
Both | |
| Mail app setup | CNAME | autoconfig.example.com |
autoconfig.<base> |
Mail Hosting | |
| Outlook setup | CNAME | autodiscover.example.com |
autodiscover.<base> |
Mail Hosting | |
| Outlook setup | SRV | _autodiscover._tcp.example.com |
0 |
0 443 autodiscover.<base> |
Mail Hosting |
| JMAP | SRV | _jmap._tcp.example.com |
0 |
1 443 jmap.<base> |
Mail Hosting |
| CardDAV | SRV | _carddavs._tcp.example.com |
0 |
1 443 jmap.<base> |
Mail Hosting |
| Sending from mail apps | SRV | _submission._tcp.example.com |
0 |
1 587 smtp.<base> |
Mail Hosting |
| Reading in mail apps | SRV | _imaps._tcp.example.com |
0 |
1 993 imap.<base> |
Mail Hosting |
| TLS reporting | TXT | _smtp._tls.example.com |
v=TLSRPTv1;, with a rua=mailto: report address when the service has one |
Mail Hosting | |
| MTA-STS | CNAME | mta-sts.example.com |
mta-sts.<base> |
Mail Hosting | |
| MTA-STS | TXT | _mta-sts.example.com |
v=STSv1; id=<id> |
Mail Hosting |
Publish every record the card lists. Only some of them decide whether the domain is verified (see When a domain is verified); the rest let mail apps set themselves up and tell other mail servers to use TLS.
An SMTP Relay domain gets only the ownership, SPF, DKIM and DMARC records. It gets no MX record, so the domain's inbox stays wherever it is now.
Some domains list one more DKIM record with the note Signs the mail this domain sends through our outbound relay. Publish it as shown; its SPF record then also carries a second include:.
Placeholders
Section titled Placeholdersexample.com- Your domain, exactly as you added it. A subdomain such as
send.example.comgets records under its own name, such as_dmarc.send.example.com. <base>- The mail host of your service's region, such as
mail-fra.coritan.com. The MX suffix row on the service's Overview tab shows yours. <token>- A random value we make for the domain when you add it. It never changes while the domain is on the service.
<selector>- The name of a DKIM key, such as
cor202609rfor the RSA key andcor202609efor the Ed25519 key. Every domain has two keys, so it lists two DKIM records. <key>- The public half of the DKIM key. Copy the whole value from the dashboard.
<id>- A label for the domain's MTA-STS policy. It changes when the policy does, and the dashboard shows the current one.
What each check looks for
Section titled What each check looks forWe ask your domain's own nameservers first, so a record counts as soon as your DNS provider serves it. A problem the check finds shows in the Last problem row of the domain's page, under the domain's name on the Domains tab, and in the toast after Verify now.
- Ownership
- A TXT record at
_mailverify.example.comwhose value is exactlymail-verify=<token>. A domain whose records we publish into your zone passes without it. Keep the record in place: a later check that cannot find it sets the domain back to pending. - MX
- At least one MX record at the domain names one of the
mxhosts the dashboard lists. When the domain has MX records and none of them is ours, the check reportsMX points tofollowed by the hosts it found. - SPF
- A TXT record at the domain that starts with
v=spf1and contains_spf.<base>. Other mechanisms in the same record are fine. Keep one SPF record per name: add theinclude:to the record you have rather than publishing a second one. - DKIM
- The TXT record at each selector contains the key the dashboard shows. A missing or different key reports
DKIM selector <selector> not published. Until the keys exist, the check reportsNo DKIM keys yet: the mail engine has not made them. - DMARC
- A TXT record at
_dmarc.example.comthat starts withv=DMARC1, whosep=value is the domain's current stage. A different value reportsDMARC publishes p=none, expected p=quarantine(with the values found). See DMARC for the stages.
When a domain is verified
Section titled When a domain is verified| Service | Checks that must pass | Checks that are shown but not required |
|---|---|---|
| Mail Hosting | Ownership, MX, SPF and DKIM | DMARC |
| SMTP Relay | Ownership, SPF and DKIM | DMARC |
A domain that has not passed is pending, and the Domains tab shows how many of its checks have passed, such as Pending · 3/5. We check pending domains again about every ten minutes. We do not re-check a verified domain on a timer; Verify now checks it on demand.
Until ownership passes, the list has no DKIM records. We make the domain's keys once we find the ownership record, and the DKIM records then appear on the card.
The DNS records card
Section titled The DNS records card- Type
- The record type.
- Name
- The full name to create. Some DNS providers want only the part before your domain, such as
_dmarcfor_dmarc.example.com. - Priority
- The priority of an MX or SRV record.
- Value
- What the record holds. An SRV value is its weight, port and target, in that order. A note under a value explains a record that needs something from you.
- Status
- The result of the last check for that record: Verified or Missing. Only the ownership, inbound MX, SPF, DKIM and DMARC records get one. The others, a retiring DKIM key and the extra DKIM record for the outbound relay have none.
Name and value each have a copy button.
DKIM key rotation
Section titled DKIM key rotationWe replace each verified domain's two DKIM keys every 90 days.
| Stage | What happens | What the card shows |
|---|---|---|
| New keys | We make two new keys. The old keys keep signing. | The new records, with the note New DKIM key: publish now, the old one is retired after a week. |
| Switch | Once the check sees every new key in your DNS, the new keys sign instead. | The old records, with the note Retiring DKIM key: keep it one more week, then delete it. and no status |
| Retire | Seven days after the switch, the old records leave the list. | Only the new records. Delete the old ones from your DNS. |
When we publish into your zone, we add and delete these records ourselves. When your DNS is elsewhere, the switch waits until you publish the new keys.
Records we publish for you
Section titled Records we publish for youWhen you add a domain whose DNS zone is on Coritan DNS in the same account (the domain's own zone or a parent's), we write its records into the zone ourselves. Ownership passes at once, and the card reads We publish these into your hosted zone and keep them up to date.
- Each record we write has a TTL of 300 seconds and the comment
coritan-mail, followed by its purpose, in the zone's record list. - We update and delete only records with that comment.
- Verify now writes any missing records again before it checks.
- Removing the domain from the mail service deletes only our records.
A record already in your zone always wins over ours:
| Already in your zone | What we do |
|---|---|
| An SPF record at the domain | We add no SPF record. Add include:_spf.<base> to yours, or the SPF check fails. |
A DMARC record at _dmarc |
We add none. The domain's DMARC stage takes your record's p= value and is held there. Change p= in your record to move it. |
| A TLS reporting or MTA-STS TXT record | We add none. |
| A record at a DKIM selector's name, or at a name where we would add a CNAME or SRV record | We add none at that name. |
| MX records that point somewhere else | We add no MX and no MTA-STS records. A Mail Hosting domain stays pending until you delete the old MX records. |
Publish to your zone
Section titled Publish to your zoneWhen the domain is inside a zone on this account's DNS but we are not writing into it (for example, you created the zone after adding the domain), the domain's page shows a Publish to your zone card. Its button, which shows the number of records, creates them through your DNS with a TTL of 3600 seconds. A record that is already there counts as present rather than as a failure.
The card then reports how many records it created, how many were already present and how many it could not publish, with the reason for each. When all of them worked, it checks the domain a moment later. These records do not carry the coritan-mail comment, so we do not update them later: publish again after a DKIM rotation or a DMARC stage change.
A name you claimed under coritan.gg needs no step at all: we publish its records and check the domain when you add it.
Related
Section titled Related- Add a domain to Mail Hosting
- Add a sending domain to SMTP Relay
- DMARC
- Manage DNS records
- Mail troubleshooting
With the API
Section titled With the APIGet a domain's records and its last check:
curl https://api.coritan.com/api/v1/client/mail/4812/domains/311/records \
-H "Authorization: Bearer $CORITAN_TOKEN"
Use /client/smtp-relay/ in the path for an SMTP Relay service. The response holds the domain and the records to publish:
{
"domain": {
"id": 311,
"domain": "example.com",
"status": "pending",
"verification_method": "txt",
"checks": { "ownership": true, "mx": true, "spf": true, "dkim": false, "dmarc": true },
"dmarc_policy": "none",
"dmarc_pinned": false,
"last_checked_at": "2026-09-16T10:40:12Z",
"last_error": "DKIM selector cor202609r not published"
},
"records": [
{ "type": "TXT", "name": "_mailverify.example.com", "content": "mail-verify=3kP0vS8x", "purpose": "ownership" },
{ "type": "MX", "name": "example.com", "content": "mx1.mail-fra.coritan.com", "priority": 10, "purpose": "inbound" },
{ "type": "TXT", "name": "example.com", "content": "v=spf1 include:_spf.mail-fra.coritan.com -all", "purpose": "spf" },
{ "type": "TXT", "name": "cor202609r._domainkey.example.com", "content": "v=DKIM1; k=rsa; h=sha256; p=MIIBIjANBg...", "purpose": "dkim", "selector": "cor202609r" },
{ "type": "SRV", "name": "_imaps._tcp.example.com", "content": "imap.mail-fra.coritan.com", "priority": 0, "weight": 1, "port": 993, "purpose": "autoconfig" }
]
}
The example is shortened. Each record has these fields:
type,name,content- The record to publish.
nameis always the full name. priority,weight,port- Present on MX and SRV records.
purpose- What the record is for:
ownership,inbound,inbound_standby,spf,dkim,upstream_dkim,dmarc,autoconfig,autodiscover,jmap,carddav,tlsrptormta_sts. selector,state- On DKIM records.
stateispendingfor a new key to publish now andretiringfor an old key to keep for one more week.
domain.checks holds the result of the last check for ownership, MX, SPF, DKIM and DMARC. To run a check, see Add a domain to Mail Hosting. A domain that is not on the service answers 404 Domain not found.
API operations on this page
| Method | Path | What it does |
|---|---|---|
GET | /api/v1/client/mail/{service_id}/domains/{domain_id}/records | Domain records |
GET | /api/v1/client/smtp-relay/{service_id}/domains/{domain_id}/records | Domain records |