Free tool · 100% in-browser
SPF, DKIM & DMARC record generator
Build correct SPF, DKIM and DMARC records for PowerMTA in seconds. The DKIM key pair is generated locally with the Web Crypto API — your private key never leaves your browser. Copy or download the results and the matching PowerMTA domain-key line, then publish in your DNS.
SPF record
TXT @ your domainAuthorize the IPs and services allowed to send for your domain.
v=spf1 -all Publish as a TXT record on example.com. Keep one SPF record per domain.
DKIM key & record
generated locallyA real RSA key pair, created in your browser. The private key never leaves this page.
DMARC record
TXT @ _dmarc.domainTell receivers what to do when SPF/DKIM don't align — and where to send reports.
_dmarc.example.com v=DMARC1; p=none; rua=mailto:[email protected]; pct=100; adkim=r; aspf=r Generator FAQ
Is this SPF/DKIM/DMARC generator free and private?+
Yes. Everything runs entirely in your browser — no data is sent to a server. DKIM key pairs are generated locally with the Web Crypto API, so your private key never leaves your machine. Copy or download the results and publish them in your own DNS.
How is the DKIM key generated?+
Your browser generates a real RSA key pair using the built-in Web Crypto API. You get the private key as a PEM file to keep on your PowerMTA server, the DNS TXT record (v=DKIM1; k=rsa; p=…) to publish, and the matching PowerMTA domain-key directive line.
My DKIM record is too long for DNS — what do I do?+
A 2048-bit DKIM public key exceeds the 255-character limit for a single DNS string. Most providers accept a TXT value split into multiple quoted strings — this tool shows the split version. If your provider has a single-field UI that rejects it, paste the whole value; many panels split it automatically.
Which DMARC policy should I publish first?+
Start with p=none and an rua reporting address you actually monitor. Watch the aggregate reports until SPF and DKIM align for all your legitimate mail, then tighten to p=quarantine and finally p=reject. Publishing reject before you've verified alignment can silently block your own mail.
Related: how authentication works in PowerMTA · check an existing SPF record