Skip to main content

Domain Verification

Verify your sending domains to improve deliverability and prevent spoofing. Posta checks SPF, DKIM, and DMARC DNS records.

Register a Domain

POST /api/v1/workspaces/current/domains
curl -X POST http://localhost:9000/api/v1/workspaces/current/domains \
-H "Authorization: Bearer <jwt>" \
-H "X-Posta-Workspace-Id: 1" \
-H "Content-Type: application/json" \
-d '{"domain": "yourdomain.com"}'

Response:

{
"success": true,
"data": {
"id": 1,
"domain": "yourdomain.com",
"ownership_verified": false,
"spf_verified": false,
"dkim_verified": false,
"dmarc_verified": false,
"verification_token": "abc123def456",
"dns_records": {
"verification": {
"type": "TXT",
"host": "yourdomain.com",
"value": "posta-verification=abc123def456"
},
"spf": {
"type": "TXT",
"host": "yourdomain.com",
"value": "v=spf1 include:_spf.posta ~all"
},
"dkim": {
"type": "CNAME",
"host": "posta._domainkey.yourdomain.com",
"value": "posta._domainkey.posta"
},
"dmarc": {
"type": "TXT",
"host": "_dmarc.yourdomain.com",
"value": "v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com"
}
}
}
}

Add DNS Records

Add the following DNS records to your domain:

1. Ownership Verification (TXT)

TypeHostValue
TXTyourdomain.composta-verification=<verification_token>

2. SPF Record (TXT)

TypeHostValue
TXTyourdomain.comv=spf1 include:_spf.posta ~all

3. DKIM Record (CNAME)

TypeHostValue
CNAMEposta._domainkey.yourdomain.composta._domainkey.posta

4. DMARC Record (TXT)

TypeHostValue
TXT_dmarc.yourdomain.comv=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com

Verify DNS Records

After adding DNS records, trigger verification:

POST /api/v1/workspaces/current/domains/{id}/verify
curl -X POST http://localhost:9000/api/v1/workspaces/current/domains/1/verify \
-H "Authorization: Bearer <jwt>" \
-H "X-Posta-Workspace-Id: 1"

Response:

{
"success": true,
"data": {
"domain": {
"id": 1,
"domain": "yourdomain.com",
"ownership_verified": true,
"spf_verified": true,
"dkim_verified": true,
"dmarc_verified": false
},
"verification": {
"ownership_verified": true,
"spf_verified": true,
"dkim_verified": true,
"dmarc_verified": false
},
"fully_verified": false
}
}
tip

DNS propagation can take up to 48 hours. If verification fails, wait and try again.

Domain Enforcement

When require_verified_domain is enabled in user settings, Posta will reject emails from unverified domains. This adds an extra layer of security to prevent unauthorized sending.

List Domains

GET /api/v1/workspaces/current/domains?page=1&size=20

Get Domain Details

GET /api/v1/workspaces/current/domains/{id}

The response includes the current dns_records values alongside the domain's verification status.

Delete a Domain

DELETE /api/v1/workspaces/current/domains/{id}