Author: williamwhite

  • What Is DKIM Record and How Email Signing Works

    What Is DKIM Record and How Email Signing Works

    You're trying to figure out why a message that looked fine in your outbox still ends up questioned by the next mailbox provider. In many cases, the missing piece is a DKIM record, because it lets the receiving server verify that your message really came from your domain and wasn't altered on the way.

    In plain terms, DKIM meaning is simple. It's a signing system for email, and the DKIM record is the DNS entry that publishes the public key used to check that signature. If you've ever wondered why one inbox sees your mail as normal while another treats it with suspicion, DKIM is often part of that answer, especially when it's paired with SPF and DMARC.

    A useful mental model is this. Your sending system adds a seal to the message, and your DNS record gives the recipient the public reference needed to check that seal. That's why publishing a correct record matters for deliverability and for reducing spoofing risk, not just for “security checkbox” reasons. People start with the definition, then quickly realise they also need the workflow, the record format, and the common failure points.

    A diagram explaining that a DKIM record connects a public key for DNS verification with a digital signature.

    What Is a DKIM Record

    A DKIM record is a DNS TXT record that publishes the public half of a cryptographic key pair. The sending mail system keeps the private key, signs outgoing mail, and the recipient looks up the public key in DNS to verify that signature. That's the core idea behind what is a DKIM record, and it's why the record lives in your domain's DNS rather than inside the message itself.

    The simple version is this. If your domain signs a message, the receiver can ask, “Does this signature match the public key that domain published?” If the answer is yes, the recipient gets a strong signal that the message came from a system that knows the private key and that the signed parts of the message weren't changed in transit. The key point is that DKIM checks authenticity of the signed content, not just the sending IP.

    That's also why DKIM sits between your outbound mail system and the recipient's filtering logic. The sending server creates the signature, DNS provides the reference key, and the mailbox provider uses both during verification. For a plain-language map of how email routing works alongside DNS, see our note on MX records and mail flow.

    Why the record matters in practice

    DKIM isn't only about theory. A 2024 measurement of the top 1 million domains found that 96.6% of DKIM records were valid when they existed, which suggests that published records are usually configured correctly once domains deploy them. But adoption is still uneven, because a 2022 USENIX study found that only 28.1% of Alexa Top 1 Million domains had enabled DKIM, and 2.9% of those were misconfigured, so publishing the record is still a meaningful baseline rather than an automatic default for everyone (adoption and validation data).

    Practical rule: DKIM helps most when it's one part of a complete authentication setup, not a standalone fix.

    That distinction matters if you send from a custom domain, run a small business, or route mail through more than one service. A correct DKIM record gives receivers a stable place to verify your signatures, and that can improve trust in your mail when the message reaches spam filters and authentication checks.

    A five-step infographic showing how DKIM signatures secure email authenticity and verify message integrity during transit.

    How DKIM Signatures Work

    The signing process starts before the message leaves your server. The sending mail transfer agent, or MTA, selects parts of the email, usually specific headers and the body, and creates a hash of that content. It then signs that hash with the private key and places the result into a DKIM-Signature header.

    Reading the signature header

    A DKIM signature usually carries several fields that tell the receiver how to verify the message. The important ones are the signing domain, the selector, the algorithm, and the signature itself. In current guidance, the v=DKIM1 tag identifies the version, p= holds the base64 public key in DNS, k= defaults to RSA but can also support ed25519 in newer guidance, and h= restricts acceptable hash algorithms, with sha256 commonly recommended over older options (technical DKIM tag guidance).

    The receiver then does the reverse work. It reads the selector and domain from the DKIM header, looks up the matching public key in DNS, recomputes the hash, and checks whether the signature still matches. If the message changed after signing, verification fails, which is how DKIM flags tampering or rewriting during transit. This verification flow
    is why DKIM provides evidence of message integrity.

    A header often looks conceptually like this, even though your exact fields will vary by provider.

    DKIM-Signature: v=DKIM1; a=rsa-sha256; d=example.com; s=default; ...

    The d= value shows the signing domain, while s= shows the selector. The selector matters because it tells the receiver which DNS name to query, usually something like selector._domainkey.yourdomain, and that structure is one reason key rotation is practical. According to DKIM deployment guidance, DKIM is commonly deployed as a TXT record with a long selector-scoped hostname, so DNS length and quoting rules matter when you publish it.

    A valid signature tells you the message was signed and the signed content stayed intact. It doesn't, by itself, prove the sender should be trusted for policy enforcement.

    That last point is where many readers get stuck. A passing DKIM check is strong evidence of message integrity, but mailbox providers still combine it with other signals before deciding whether to place mail in the inbox, spam, or quarantine.

    DKIM vs SPF vs DMARC

    DKIM, SPF, and DMARC solve different problems, and email gets messy when people treat them as interchangeable. SPF authorises sending sources, DKIM signs the message itself, and DMARC ties those signals to the visible From domain and a policy decision. The best way to think about them is as layers, not competitors.

    What each protocol proves

    SPF asks whether the sending server is allowed to send for the domain used in the SMTP envelope. DKIM asks whether the message was signed by a domain that holds the matching private key. DMARC then asks whether one of those authenticated domains aligns with the address your recipient sees in the From field (DMARC and alignment overview).

    That alignment piece is the part many people miss. DMARC passes when either SPF or DKIM passes and matches the visible From domain, which is why a message can have a valid signature and still fail policy if the authenticated domain doesn't line up with what the user sees. SPF also has a well-known forwarding weakness, while DKIM often survives forwarding if the signed content remains unchanged, so most operators configure both for resilience.

    Protocol What it proves Where the record lives Limitation on its own
    DKIM The message was signed by a domain that controls the private key DNS TXT record under the selector-scoped DKIM host Doesn't enforce policy by itself
    SPF The sending server is allowed to use the envelope domain DNS TXT record on the sending domain Doesn't authenticate the visible From address
    DMARC The message aligns with the From domain and follows a policy DNS TXT record at the DMARC host Depends on SPF or DKIM working correctly

    For a sender who wants to keep mail under direct control, this matters as much as the record itself. DKIM sits in your DNS control plane, so you choose who signs, what key is published, and how you rotate it. That's one reason many privacy-minded operators prefer keeping their authentication setup close to their own infrastructure instead of leaving it scattered across multiple vendors.

    How to Set Up a DKIM Record

    A solid DKIM setup begins with the record format. The TXT payload is a tag-value string, and the important pieces are v=DKIM1, k= for the key type, and p= for the base64 public key. Some deployments also use optional tags like t=s and t=y, which can affect enforcement and testing behaviour, so you should only set them when your provider tells you they're appropriate (record format guidance).

    The normal setup flow

    First, your mail provider either assigns a selector or lets you choose one. Then it generates the key pair, gives you the public portion, and tells you where to publish it in DNS. After that, you add the TXT record at the selector-scoped hostname, wait for propagation, and enable signing in the provider console if signing doesn't start automatically.

    A realistic example looks like this in structure, even though your exact key will be different:

    v=DKIM1; k=rsa; p=BASE64ENCODEDPUBLICKEY

    The selector usually forms part of the hostname, which is why people often publish the record at a name like default._domainkey.example.com. That scoping lets one domain rotate keys, separate mail streams, or run more than one sender without replacing everything at once. It also explains why long records need careful quoting and escaping in DNS tools, because a pasted key can break if the provider wraps text badly.

    What to watch during publishing

    DKIM records rarely fail because the idea is wrong. They fail because the hostname is off by a character, the key was copied incompletely, or the provider expects the record in a slightly different format. Neutral documentation also notes that DKIM supports long selector-scoped TXT records, so you should expect DNS length limits and formatting rules to matter when you publish the key (DNS publishing guidance).

    Some providers also support multiple selectors, which helps during provider changes or key rotation. That's useful when one service sends transactional mail and another handles newsletters, because each service can sign with its own key without stepping on the other. If you switch platforms later, you can keep the old selector live long enough to avoid breaking messages that are still in flight.

    If you publish the record but don't turn on signing, the DNS entry exists, but outbound mail still won't carry a valid DKIM signature.

    Testing and Troubleshooting DKIM

    Publishing the record is only half the job. The other half is checking whether a real message can still be verified after it leaves your system, passes through DNS, and lands in a recipient inbox. A simple verification path is to inspect the DNS record, send a test message, and then read the message headers for the DKIM result.

    Three checks that catch most problems

    The first check is a DNS lookup. You want to confirm that the selector resolves to the TXT record you expect and that the key text is intact. The second is a test email to a mailbox where you can open the full headers, like Gmail or Outlook, and look for the DKIM-Signature line plus the authentication result.

    The third is an online validator, which can catch syntax mistakes before they turn into mail failures. We recommend using a validator alongside your provider's own test tools, because a record can look fine in DNS and still fail if the selector, key, or signing domain doesn't match the mail being sent. For a real-world setup checklist that includes mail authentication as part of the larger flow, see our email authentication setup guide.

    Common breakpoints show up during migrations. Old selectors stay published after a provider switch, a DNS change hasn't propagated yet, a long base64 string was pasted with the wrong quotes, or a marketing platform signs from a different domain than the one your messages show to recipients. Those are ordinary operational mistakes, not edge cases, and they're especially common when a small business moves from one mailbox provider to another.

    A short troubleshooting pattern

    Start by checking whether the selector in the header matches the selector in DNS. Then confirm that the body and headers weren't rewritten by a relay, list manager, or forwarding service in a way that breaks the signature. If the DNS record is correct but the message still fails, the problem often sits in the sending app, not in DNS itself.

    When you change providers, test every sender separately. Transactional mail, staff mail, support systems, and newsletter tools often use different signing paths, and each one can fail for a different reason. A careful rollout catches those differences early, before customers start asking why your message looks suspicious.

    Why DKIM Matters for Private and Canadian Email

    DKIM is mature, but it's not universal. The adoption data earlier showed that many domains still don't publish it, and that unevenness is exactly why impersonation remains easy for attackers. A domain with a valid DKIM record gives mailbox providers a stable way to judge whether the mail was signed by the domain owner's own system.

    For privacy-sensitive senders, the location of the record matters too. The DKIM public key lives in your DNS control plane, and the same is true for DMARC reporting addresses, so your authentication policy sits under the governance of the domain owner rather than inside a vendor's black box. That's relevant when you care about where your mail metadata lives and which jurisdiction controls the infrastructure around it.

    A few common myths keep causing confusion. DKIM does not block every phishing attempt on its own, and a valid signature does not mean the message deserves trust without DMARC alignment and other checks. It also isn't something that magically appears just because you signed up with a big provider, because custom domains still need their own authentication setup and maintenance.

    Typewire is one option for that model, because we run our own email infrastructure and support DKIM for configured domains. In practice, that means the signing setup stays tied to the service you control, instead of being bolted onto a wider cloud stack you don't manage directly. For small businesses that want email under Canadian jurisdiction and want to keep authentication records in their own control plane, that separation can make day-to-day operations much clearer.


    If you want help setting up DKIM, SPF, and DMARC on a custom domain without adding extra cloud complexity, visit Typewire and start with a setup that keeps your authentication records and email infrastructure under your control. If you're moving mail from another provider, we can help you plan the switch so your signatures, selectors, and DNS records stay consistent during the transition.

  • “DMARC Policy Not Enabled”: What It Means and How to Fix It

    “DMARC Policy Not Enabled”: What It Means and How to Fix It

    DMARC policy not enabled is more than a technical warning, it means your domain is still exposed to spoofed email. In most cases, either no DMARC record exists or the record is set to p=none, which collects reports but does not tell inbox providers to block anything. The fix is to publish an enforced DMARC record at _dmarc.yourdomain.com.

    If that warning just showed up in a scanner, the real question is simple: what is missing, and how do you fix it without disrupting legitimate mail? That matters because a domain can look fine in DNS while still offering no real protection. Until DMARC enforcement is in place, attackers can imitate your domain more easily, and mailbox providers have less guidance on how to handle suspicious messages.

    What the Warning Actually Means

    DMARC, which stands for Domain-based Message Authentication, Reporting, and Conformance, sits on top of SPF and DKIM. SPF checks which servers may send for your domain, and DKIM signs messages so receivers can verify they weren't altered. DMARC then checks whether those signals align with the visible From address, so the message really matches the domain your customers see.

    A DMARC policy not enabled warning usually means one of two things. Either there's no DMARC TXT record at all, or the record exists but uses p=none, which is monitoring-only. That state tells receiving servers to report failures, not act on them, so spoofed mail can still get through.

    Why alignment matters

    Alignment is the part many owners miss. You can have SPF and DKIM in place, but if they don't line up with the From domain, DMARC still won't enforce anything. That's why checking only SPF or only DKIM gives you a false sense of safety.

    A quick internal refresher can help here, and we've covered the basics in our guide to what DMARC is and how it fits into email security. The key point is simple, DMARC turns authentication into a policy decision.

    For a small business, this is about more than blocking fakes. Unenforced mail can land in spam or get treated as suspicious by receivers that do enforce DMARC, which hurts outreach and customer trust. If your domain looks “set up” but still says DMARC policy not enabled, you're seeing the gap between visibility and actual protection.

    Why You Are Seeing It

    The warning shows up for a few common reasons, and each one points to a different kind of fix. A brand-new domain may never have had a DMARC record published. A longer-running domain may have a record stuck at p=none because nobody revisited it after setup. A migration can also break the record if the DNS host changed and the TXT value didn't move cleanly.

    An infographic explaining three common reasons for receiving a DMARC policy not enabled error warning message.

    Fresh domain versus stale setup

    A fresh domain often looks healthy everywhere else, which is why this warning catches people off guard. The site works, mail flows, and SPF may already be present, but DMARC never got added. In that case, the scanner is telling you the domain is visible in DNS but not protected by a DMARC policy.

    A stale setup is subtler. Someone may have copied a basic record years ago, chose p=none, and left it there. That record still reports on mail, but it doesn't stop anything, so the warning keeps appearing.

    Third-party senders complicate the picture

    Newsletters, CRMs, ticketing systems, and payment notices all add moving parts. If those services send mail for you, they can change how SPF and DKIM behave, which affects whether DMARC can enforce cleanly. That's why the warning often shows up right when a business starts sending more serious volume or adds another tool to the stack.

    Practical rule: if you recently added a sender, changed DNS providers, or moved your mail platform, check DMARC before you change anything else.

    The 2026 adoption gap makes this common, not unusual. Valimail's research found that 75-80% of domains with published DMARC records are stuck in monitoring mode, leaving themselves without actual enforcement protection.

    That context explains why your warning is so often just a sign that the domain is still in the broad non-enforcing majority.

    How to Check Your Current DMARC Record

    Start with the DNS record, not with the scanner's opinion. You need to see what is published before you change anything, because a record that looks fine in a dashboard can still be missing or misread in live DNS. That matters for deliverability and for brand protection, since a weak or broken DMARC setup can leave receivers guessing about whether your mail is legitimate.

    A quick lookup with dig or nslookup can show whether a TXT record exists at the DMARC host name. If you prefer a web tool, an MXToolbox-style lookup works as a backup and helps confirm what third parties can see. The point is to inspect the live DNS, not a cached copy or a remembered setting from last year.

    Reading the record line by line

    A DMARC record is a TXT value made of tags. The main ones are v for version, p for policy, rua for aggregate reports, ruf for failure reports, pct for percentage, sp for subdomains, and the alignment tags adkim and aspf. A record that begins with v=DMARC1; p=none is the clearest sign that you are still in monitoring mode.

    A typical monitoring record reads like a label on a file folder, version first, then policy, then reporting and alignment details. If p=none is present, the domain is not enforcing anything yet. If you see a malformed record, or the version tag is missing, the scanner may treat it the same way as no policy at all.

    If your DNS is managed at your registrar, check the domain's DNS section there first. If a third-party host handles DNS, look in that platform instead, because that is where the published record lives.

    If you need a closer look at SPF before you decide what to fix next, review how SPF records work and how to create one. SPF and DMARC are linked, so confirming both helps you avoid chasing the wrong error.

    Step-by-Step Fix

    Start by publishing a valid DMARC TXT record at the _dmarc host, then move from monitoring to enforcement in stages. That approach keeps legitimate mail flowing while you learn which systems send as your domain. It also gives you time to catch alignment problems before receivers start treating failed messages differently.

    Here's the simplest safe starting point for a small business, v=DMARC1; p=none; rua=mailto:reports@yourdomain.com; adkim=r; aspf=r. That setup tells mailbox providers to monitor, report, and leave delivery alone while you review the results. If you are still sorting out SPF, review how to create an SPF record and why it matters for DMARC alignment, since SPF and DMARC work together and a weak SPF record can make a DMARC rollout look broken when it is really just misaligned.

    DMARC policy tags and what each one does

    Tag Purpose Example value
    v Declares the DMARC version DMARC1
    p Sets the policy for the domain none
    rua Sends aggregate reports mailto:reports@yourdomain.com
    ruf Requests failure reports mailto:forensics@yourdomain.com
    pct Applies policy to a percentage of mail 100
    sp Sets policy for subdomains quarantine
    adkim Sets DKIM alignment mode r
    aspf Sets SPF alignment mode r

    Once the monitoring record is live, you can tighten it to p=quarantine, then to p=reject after your reports show the legitimate sources are aligned. Quarantine tells receivers to place failing mail in spam, while reject stops it at the SMTP layer. That staged path protects inbox placement and brand trust while you move from watching reports to enforcing policy.

    A few DNS hosts label the field differently, but the setup is the same. The host name is _dmarc, the value is the policy string, and the save button is the last step. If you send from a custom domain on Typewire, you still use the same DNS record format, so there is no special DMARC version for that setup.

    Rolling Out Enforcement Safely

    The cleanest rollout is a three-stage path, monitoring, quarantine, then reject. You should not jump straight to reject unless you already know every legitimate sender is aligned. If you do, you risk blocking mail from your own newsletters, invoicing tools, or help desk systems.

    A three-stage infographic illustrating the recommended process for rolling out DMARC email authentication security policies safely.

    Monitoring first, then tightening

    A typical monitoring period is two to four weeks at p=none, because you need enough report data to see all the mail streams that speak for your domain. During that time, you're looking for normal senders, not just obvious ones. Marketing platforms, receipt systems, and password-reset mail can all show up in the aggregate data.

    After that, many teams move to p=quarantine for another short test window. The exact time matters less than the signal, which is whether legitimate mail still aligns while suspicious mail gets pushed into spam. Once those reports look clean, p=reject becomes the final step.

    For a small business with only one or two sending sources, the rollout is often faster because there's less to map. That doesn't mean you skip the monitoring stage, it just means you can review the report set more quickly. The goal is confidence, not speed for its own sake.

    Use the reports as your checklist. If every normal sender is aligned and nothing unexpected keeps appearing, enforcement is usually ready.

    The global adoption numbers make this staged approach even more sensible. As of August 2026, DMARCDKIM.com's monitoring of 1.3 million domains found that 68.6% have no effective DMARC protection, while only 11.5% have full
    protection with p=reject at 100% enforcement. That's a reminder that strong enforcement is still the exception, so a careful rollout matters.

    Troubleshooting Common Pitfalls

    A first DMARC rollout usually goes off track for ordinary reasons. A third-party sender may be passing SPF or DKIM in its own way, but not aligning with your visible From domain. The report inbox may also be full, closed, or pointed at the wrong address, so you never see the data that should guide the change. A policy change made before those reports are reviewed creates the same problem, because the record is published but the domain still has blind spots.

    If reports stop arriving, check the rua address first. A typo in the reporting address or a mailbox that no longer accepts mail can leave you without feedback while DMARC is still publishing. If you use a parser, confirm that it still accepts the inbound XML files and that someone reviews the dashboard, because raw reports are easy to miss once they start piling up.

    Common breakpoints and quick fixes

    A sender can pass SPF and still fail DMARC if the visible From domain does not align. DKIM can fail for the same reason when the signing domain belongs to a vendor instead of your own domain. The fix is to have the third-party platform sign mail with your domain, or to authorise that sender correctly in its setup so the authenticated domain matches the one recipients see.

    Another common slip is setting pct=100 too early. That tells receivers to apply the policy to all mail, which only works once alignment is steady across your normal mail streams. If you still see failures in the reports, lower the rollout pressure first, then tighten the policy after the aligned traffic stays clean.

    A practical check helps catch mistakes quickly. Send mail from a source you know is not authorised. If DMARC is working at the stage you chose, that message should be quarantined or rejected.

    If you need a clearer picture of how SPF, DKIM, and DMARC fit together, our deliverability note on email sender authentication and inbox placement is useful background. It explains why one misconfigured sender can affect the whole domain.

    Verifying It Is Working

    A DMARC rollout should start acting like a real filter, not just a line in DNS. Re-run the lookup and confirm the published record now shows p=quarantine or p=reject. Then check that third-party scanners stop reporting the domain as missing a policy. If the warning still appears, the record may be published at the wrong host, or an old value may still be cached somewhere.

    The clearest live test is to send a message from a sender you have not authorised. With quarantine, that mail should land in spam or junk. With reject, the receiving server should block it. That difference matters because it shows the policy is protecting your brand and not just sitting there for display.

    A hand points to a computer screen showing a successfully found DMARC policy for example.com.

    A simple final checklist

    • Confirm the record exists: Make sure the DMARC TXT entry is published at the right host.

    • Check the policy: Verify it moved from p=none to p=quarantine or p=reject.

    • Review the reports: Look for aligned senders before you tighten further.

    • Test the result: Send a non-authorised message and see whether it is blocked or filtered.

    For a business using a custom domain on Typewire, the same DNS steps apply, and the result is easy to observe. Your domain stops saying “monitor only” and starts telling receivers how to handle spoofed mail. That gives you a clear signal that your brand is harder to impersonate and your legitimate mail has a cleaner path to the inbox. For a wider view of how authentication supports delivery, see email sender authentication and inbox placement.