DKIM
A public key in your DNS that lets receivers verify each message was signed by you and not altered in transit. Required to send.
SPF
Published on a custom
MAIL FROM subdomain so the envelope sender aligns with your domain — and no third-party sending service shows in your headers.DMARC
A policy record telling receivers what to do with mail that fails DKIM or SPF. Drin seeds a safe
p=none to start.Add the domain
Add a domain in the dashboard on the Domains page, or over the API. The response is the domain plus the exact DNS records to publish — every record references only your own domain, never the underlying mail provider.POST /v1/domains
status: "pending" and a records array. Each record carries a purpose (dkim, mail_from, or dmarc) and a verified flag that starts false:
201 Created
Publish the DNS records
Copy each record from the response (or the dashboard) into your DNS provider exactly as given — thetype, name (host), value, and, for the MX record, the priority. The values are unique to your domain, so always take them from your own Add-domain response, never from this page.
- DKIM — a
TXT(or CNAME) record at a._domainkeyhost. This is what actually authorizes sending. - MAIL FROM — an
MXand aTXT(SPF) record on asend.subdomain. These align the return-path so receivers — and Gmail’s “mailed-by” — see your domain, not ours. - DMARC — a
TXTrecord at_dmarc.Drin seedsp=noneso you can monitor before you enforce.
Where each value goes. The host/name fields differ slightly between DNS providers — some want the full name, some want it relative to your zone. See the DNS provider guides for Cloudflare, Namecheap, GoDaddy, Route 53, and Vercel.
Verify
DNS changes can take anywhere from a minute to a few hours to propagate. Drin checks for your records automatically on a background schedule. To check immediately after pasting them, hit Verify now in the dashboard, or call the verify endpoint — it re-checks your records right now and returns the fresh status.POST /v1/domains/{id}/verify
cURL
pending
Records are saved but not yet confirmed in DNS. We keep re-checking in the background; you can keep refreshing.
verified
DKIM is confirmed and the domain can send. MAIL FROM and DMARC often confirm a beat later than DKIM — that’s normal, and each record’s
verified flag reflects the truth independently.Send from it
Oncestatus is verified, use any address at that domain as your from. The cleanest pattern is to look up your verified domains in code so you never hardcode an address that might not be ready yet:
Node.js
Test mode vs. your own domain
The shared onboarding domain exists so you can integrate and ship a working send before touching DNS. It runs in test mode and can only deliver to your own account’s address — perfect for development, useless for production. Verifying your own domain lifts that restriction and white-labels every message.| Shared onboarding domain | Your verified domain | |
|---|---|---|
| DNS setup | None | DKIM + SPF + DMARC |
| Recipients | Your own address only | Anyone |
from address | Shared, not your brand | Your brand |
| Branding in the inbox | Generic | Fully white-labeled |
| Good for | Trying it out, local dev | Production |
White-label
Drin uses BYODKIM, so the key lives in your DNS and every customer-facing record points at your domain. Combined with the custom MAIL FROM, recipients see your domain in themailed-by and signed-by lines — there is no mention of the sending infrastructure anywhere a recipient looks. Your customers’ mail looks like it came straight from you, because as far as the receiving mail server is concerned, it did.
DNS provider guides
Step-by-step on where to paste DKIM, SPF, and DMARC for Cloudflare, Namecheap, GoDaddy, Route 53, and Vercel.
Deliverability
Alignment, warm-up, and staying under bounce and complaint limits so your reputation stays clean.
Receive on this domain
Once verified, flip on receiving to give the domain an inbox — add one MX record and read inbound threads.
Domains API
Full reference for adding, listing, verifying, and deleting domains.
