SPF, DKIM & DMARC Checker
Audit your sending domain's email authentication setup. Verify SPF mechanisms and lookup limits, test DKIM selector cryptographic keys, inspect DMARC policy alignment, and check MX server reachability.
Why sender authentication matters.
Protect your domain reputation and ensure your transactional and marketing emails land directly in inboxes instead of spam folders.
Meet 2024+ Gmail & Yahoo Requirements
Google and Yahoo strictly enforce SPF, DKIM, and DMARC for custom domains sending to personal inboxes. Missing or unaligned records lead directly to spam filtering.
Prevent Phishing & Domain Spoofing
A strict DMARC policy (p=reject) instructs global recipient mailboxes to discard fraudulent emails pretending to originate from your brand.
Eliminate SPF PermErrors
RFC 7208 imposes a strict 10 DNS lookup limit on SPF records. Exceeding 10 lookups triggers a permanent failure and drops inbox rates.
Verify Cryptographic Signatures
Ensure your DKIM public key is published with strong 2048-bit RSA encryption and properly matches your sending ESP headers.
Audit authentication records programmatically.
Integrate automated SPF, DKIM, and DMARC verification into your onboarding flow with our zero-setup public API.
Install the Node.js package
npm install reloop-emailAudit email authentication records with Node.js
1import Reloop from 'reloop-email';2
3const reloop = new Reloop(process.env.RELOOP_API_KEY);4
5const report = await reloop.tools.authChecker({6 domain: 'stripe.com',7 selector: 's1', // Optional DKIM selector8});9
10console.log(`Score: ${report.score}/100 (Grade: ${report.grade})`);11console.log(`DMARC Policy: p=${report.dmarc.policy}`);12console.log(`SPF: ${report.spf.rawRecord}`);13console.log(`DKIM (${report.dkim.selector}): ${report.dkim.keyLength}-bit RSA`);Inspect JSON authentication report (200 OK)
1{2 "domain": "stripe.com",3 "resolvedAt": "2026-08-30T12:00:00.000Z",4 "responseTimeMs": 48,5 "score": 100,6 "grade": "A+",7 "verdict": "fully_aligned",8 "verdictLabel": "Fully Protected & Aligned",9 "spf": {10 "status": "pass",11 "published": true,12 "rawRecord": "v=spf1 include:_spf.google.com ~all",13 "qualifier": "~all",14 "lookupCount": 1,15 "mechanisms": ["include:_spf.google.com", "~all"],16 "includes": ["_spf.google.com"],17 "ip4": [],18 "ip6": [],19 "warnings": []20 },21 "dkim": {22 "status": "pass",23 "published": true,24 "selector": "s1",25 "rawRecord": "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...",26 "publicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8...",27 "keyLength": 2048,28 "algorithm": "rsa",29 "testedSelectors": ["s1", "google", "default"],30 "warnings": []31 },32 "dmarc": {33 "status": "pass",34 "published": true,35 "rawRecord": "v=DMARC1; p=reject; rua=mailto:dmarc-reports@stripe.com; pct=100; aspf=s",36 "policy": "reject",37 "subdomainPolicy": "reject",38 "percentage": 100,39 "rua": ["mailto:dmarc-reports@stripe.com"],40 "ruf": [],41 "dkimAlignment": "relaxed (r)",42 "spfAlignment": "strict (s)",43 "warnings": []44 },45 "mx": {46 "status": "pass",47 "published": true,48 "provider": "Google Workspace",49 "records": [50 { "exchange": "aspmx.l.google.com", "priority": 1 },51 { "exchange": "alt1.aspmx.l.google.com", "priority": 5 }52 ],53 "warnings": []54 },55 "bimi": {56 "status": "pass",57 "published": true,58 "rawRecord": "v=BIMI1; l=https://stripe.com/bimi.svg",59 "svgUrl": "https://stripe.com/bimi.svg",60 "vmcUrl": null61 },62 "mtaSts": {63 "status": "pass",64 "published": true,65 "rawRecord": "v=STSv1; id=20240101",66 "mode": "enforce"67 },68 "diagnostics": [69 {70 "id": "dmarc-record",71 "name": "DMARC Policy Enforcement",72 "category": "dmarc",73 "status": "pass",74 "message": "DMARC published with strict policy 'p=reject' and aggregate reporting",75 "details": "v=DMARC1; p=reject; rua=mailto:dmarc-reports@stripe.com"76 },77 {78 "id": "spf-record",79 "name": "Sender Policy Framework (SPF)",80 "category": "spf",81 "status": "pass",82 "message": "SPF published with 1/10 DNS lookups and '~all' qualifier",83 "details": "v=spf1 include:_spf.google.com ~all"84 },85 {86 "id": "dkim-record",87 "name": "DKIM Signature & Key",88 "category": "dkim",89 "status": "pass",90 "message": "Found 2048-bit RSA key for selector 's1'",91 "details": "s1._domainkey.stripe.com"92 },93 {94 "id": "mx-records",95 "name": "Mail Routing (MX)",96 "category": "mx",97 "status": "pass",98 "message": "Configured with 2 mail exchange server(s) via Google Workspace"99 }100 ]101}Frequently asked questions.
Everything you need to know about SPF lookup limits, DKIM selectors, DMARC policies, and mail deliverability standards.
Ship your first email in minutes
Open-source, deliverability-focused, and yours to self-host or run on Reloop Cloud. No lock-in, no rewrite later.