<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: GlitchGuard</title>
    <description>The latest articles on DEV Community by GlitchGuard (getglitchguard).</description>
    <link>https://dev.to/getglitchguard</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F13948%2F64664463-e77e-494f-9b09-72a455655372.png</url>
      <title>DEV Community: GlitchGuard</title>
      <link>https://dev.to/getglitchguard</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/getglitchguard"/>
    <language>en</language>
    <item>
      <title>SPF, DKIM and DMARC: A Practical Email Authentication Guide</title>
      <dc:creator>GlitchGuard</dc:creator>
      <pubDate>Sun, 09 Aug 2026 16:48:19 +0000</pubDate>
      <link>https://dev.to/getglitchguard/spf-dkim-and-dmarc-a-practical-email-authentication-guide-4g15</link>
      <guid>https://dev.to/getglitchguard/spf-dkim-and-dmarc-a-practical-email-authentication-guide-4g15</guid>
      <description>&lt;h1&gt;
  
  
  SPF, DKIM and DMARC: A Practical Email Authentication Guide
&lt;/h1&gt;

&lt;p&gt;Modern businesses rarely send email from only one system.&lt;/p&gt;

&lt;p&gt;A typical domain may send mail through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Workspace or Microsoft 365&lt;/li&gt;
&lt;li&gt;a CRM&lt;/li&gt;
&lt;li&gt;an ecommerce platform&lt;/li&gt;
&lt;li&gt;a marketing automation tool&lt;/li&gt;
&lt;li&gt;a support desk&lt;/li&gt;
&lt;li&gt;a booking system&lt;/li&gt;
&lt;li&gt;a transactional email provider&lt;/li&gt;
&lt;li&gt;password reset infrastructure&lt;/li&gt;
&lt;li&gt;billing software&lt;/li&gt;
&lt;li&gt;website contact forms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of those systems may send messages that appear to come from the same business domain.&lt;/p&gt;

&lt;p&gt;So how does a receiving mail server determine whether those messages are legitimate?&lt;/p&gt;

&lt;p&gt;That is where SPF, DKIM, and DMARC come in.&lt;/p&gt;

&lt;p&gt;They are related technologies, but they solve different problems.&lt;/p&gt;

&lt;p&gt;A useful mental model is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SPF   = Is this sending infrastructure authorized?

DKIM  = Does this message contain a valid cryptographic signature?

DMARC = Does successful authentication align with the domain
        visible to the recipient?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DMARC then adds policy and reporting on top of those authentication results.&lt;/p&gt;

&lt;p&gt;Let's break down how the three systems work.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. SPF: Sender Authorization
&lt;/h2&gt;

&lt;p&gt;SPF stands for &lt;strong&gt;Sender Policy Framework&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is published as a DNS TXT record and describes which mail infrastructure is authorized to send on behalf of a domain.&lt;/p&gt;

&lt;p&gt;A simplified SPF record might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;v=spf1 include:_spf.examplemail.com -all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A receiving mail server can evaluate the SPF policy when it receives a message.&lt;/p&gt;

&lt;p&gt;At a high level, it asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is the system delivering this message included in the sending policy for the relevant domain?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If yes, SPF can pass.&lt;/p&gt;

&lt;p&gt;If not, SPF may fail.&lt;/p&gt;

&lt;h3&gt;
  
  
  Common SPF mechanisms
&lt;/h3&gt;

&lt;p&gt;An SPF record may contain mechanisms such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ip4:
ip6:
a
mx
include:
exists:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It also ends with a qualifier such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-all
~all
?all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The correct policy depends on the organization's mail architecture.&lt;/p&gt;

&lt;p&gt;Do not copy an SPF record from another domain without understanding what it authorizes.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Common SPF Problems
&lt;/h2&gt;

&lt;p&gt;SPF configurations often become messy as businesses add more email providers.&lt;/p&gt;

&lt;p&gt;Common problems include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no SPF record at all&lt;/li&gt;
&lt;li&gt;multiple SPF records&lt;/li&gt;
&lt;li&gt;old providers that were never removed&lt;/li&gt;
&lt;li&gt;missing current sending services&lt;/li&gt;
&lt;li&gt;malformed syntax&lt;/li&gt;
&lt;li&gt;excessive DNS lookups&lt;/li&gt;
&lt;li&gt;unnecessary nested &lt;code&gt;include&lt;/code&gt; mechanisms&lt;/li&gt;
&lt;li&gt;misunderstanding what SPF actually authenticates&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Multiple SPF records
&lt;/h3&gt;

&lt;p&gt;One common mistake is creating a second SPF record whenever a new provider is added.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;v=spf1 include:_spf.google.com -all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and separately:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;v=spf1 include:mail.exampleprovider.com -all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Publishing multiple independent SPF policies for the same hostname can cause SPF evaluation problems.&lt;/p&gt;

&lt;p&gt;The legitimate services should normally be represented within one valid policy.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. SPF Does Not Authenticate the Visible From Address by Itself
&lt;/h2&gt;

&lt;p&gt;This is an important distinction.&lt;/p&gt;

&lt;p&gt;Consider an email displaying:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight email"&gt;&lt;code&gt;&lt;span class="nt"&gt;From&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="na"&gt; sales@example.com&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The recipient sees:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But SPF does not simply inspect that visible From header.&lt;/p&gt;

&lt;p&gt;SPF evaluates the domain associated with the SMTP envelope.&lt;/p&gt;

&lt;p&gt;That means SPF can technically pass while the domain authenticated through SPF differs from the domain visible to the recipient.&lt;/p&gt;

&lt;p&gt;This is one reason DMARC exists.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. SPF and Forwarding
&lt;/h2&gt;

&lt;p&gt;SPF can also be affected by forwarding.&lt;/p&gt;

&lt;p&gt;Imagine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sender
  ↓
Original Mail Server
  ↓
Forwarding Server
  ↓
Recipient
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The recipient may see the forwarding server as the infrastructure delivering the message.&lt;/p&gt;

&lt;p&gt;That server may not be authorized by the original sender's SPF record.&lt;/p&gt;

&lt;p&gt;The result can be an SPF failure even though the original sender was legitimate.&lt;/p&gt;

&lt;p&gt;DKIM often survives forwarding more effectively when the message is not modified in a way that breaks its signature.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. DKIM: Cryptographic Message Authentication
&lt;/h2&gt;

&lt;p&gt;DKIM stands for &lt;strong&gt;DomainKeys Identified Mail&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of primarily checking the sending infrastructure, DKIM adds a cryptographic signature to the email.&lt;/p&gt;

&lt;p&gt;The sending system has a private key.&lt;/p&gt;

&lt;p&gt;The corresponding public key is published in DNS.&lt;/p&gt;

&lt;p&gt;A receiving server can use the public key to verify the message signature.&lt;/p&gt;

&lt;p&gt;The architecture looks roughly like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sending System
     |
     | Private Key
     v
Create DKIM Signature
     |
     v
Email Message
     |
     v
Receiving Server
     |
     | DNS lookup
     v
Public DKIM Key
     |
     v
Verify Signature
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the verification succeeds, DKIM passes.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. DKIM Selectors
&lt;/h2&gt;

&lt;p&gt;DKIM uses something called a &lt;strong&gt;selector&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A DNS lookup may look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;selector1._domainkey.example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The selector allows a domain to maintain multiple DKIM keys.&lt;/p&gt;

&lt;p&gt;This is useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;key rotation&lt;/li&gt;
&lt;li&gt;multiple sending providers&lt;/li&gt;
&lt;li&gt;different applications&lt;/li&gt;
&lt;li&gt;migration between email systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An email's &lt;code&gt;DKIM-Signature&lt;/code&gt; header tells the receiving server which signing domain and selector to query.&lt;/p&gt;

&lt;p&gt;A simplified header may contain fields such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;d=example.com;
s=selector1;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;d = signing domain
s = selector
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  7. Common DKIM Problems
&lt;/h2&gt;

&lt;p&gt;Typical DKIM failures include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DKIM was never enabled&lt;/li&gt;
&lt;li&gt;the public key is missing from DNS&lt;/li&gt;
&lt;li&gt;the selector is incorrect&lt;/li&gt;
&lt;li&gt;the public/private keys no longer match&lt;/li&gt;
&lt;li&gt;a provider rotated its key but DNS was not updated&lt;/li&gt;
&lt;li&gt;the message was modified after signing&lt;/li&gt;
&lt;li&gt;the DKIM signature is malformed&lt;/li&gt;
&lt;li&gt;the signing domain does not align for DMARC&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;DKIM configuration should therefore be verified publicly rather than assuming that clicking "Enable DKIM" inside an email provider completed the DNS configuration correctly.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. DKIM Can Pass While DMARC Still Fails
&lt;/h2&gt;

&lt;p&gt;This surprises many people.&lt;/p&gt;

&lt;p&gt;Suppose the recipient sees:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight email"&gt;&lt;code&gt;&lt;span class="nt"&gt;From&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="na"&gt; support@example.com&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But the message carries a valid DKIM signature from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;d=emailprovider.net
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The DKIM signature itself may be completely valid.&lt;/p&gt;

&lt;p&gt;DKIM therefore passes.&lt;/p&gt;

&lt;p&gt;But the signing domain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;emailprovider.net
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;does not necessarily align with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That particular DKIM authentication result may therefore fail to satisfy DMARC.&lt;/p&gt;

&lt;p&gt;Again, this is where domain alignment becomes important.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. DMARC: Alignment, Policy and Reporting
&lt;/h2&gt;

&lt;p&gt;DMARC stands for:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Domain-based Message Authentication, Reporting and Conformance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DMARC builds on SPF and DKIM.&lt;/p&gt;

&lt;p&gt;Its major contribution is connecting technical authentication with the domain that the recipient actually sees.&lt;/p&gt;

&lt;p&gt;Suppose a message displays:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight email"&gt;&lt;code&gt;&lt;span class="nt"&gt;From&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="na"&gt; billing@example.com&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The visible From domain is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DMARC asks whether successful SPF or DKIM authentication aligns with that domain.&lt;/p&gt;

&lt;p&gt;The simplified logic is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 Email arrives
                       |
                       v
              Check SPF authentication
                       |
                       v
              Does SPF domain align?
                    /      \
                  Yes       No
                   |         |
                   |         v
                   |    Check DKIM
                   |         |
                   |         v
                   |   Does DKIM align?
                   |       /     \
                   |     Yes      No
                   |      |        |
                   v      v        v
                 DMARC PASS      DMARC FAIL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A message does not necessarily require both SPF and DKIM alignment.&lt;/p&gt;

&lt;p&gt;One valid aligned authentication path can be enough for DMARC to pass.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. SPF Alignment
&lt;/h2&gt;

&lt;p&gt;For SPF to satisfy DMARC:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;SPF must pass.&lt;/li&gt;
&lt;li&gt;The SPF-authenticated domain must align with the visible From domain.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Visible From:
example.com

SPF-authenticated domain:
example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is aligned.&lt;/p&gt;

&lt;p&gt;A subdomain relationship may also align depending on the DMARC alignment mode.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. DKIM Alignment
&lt;/h2&gt;

&lt;p&gt;For DKIM to satisfy DMARC:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The DKIM signature must pass.&lt;/li&gt;
&lt;li&gt;The DKIM signing domain must align with the visible From domain.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Visible From:
example.com

DKIM d=:
example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aligned.&lt;/p&gt;

&lt;p&gt;Another example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Visible From:
example.com

DKIM d=:
emailvendor.net
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DKIM may still pass technically.&lt;/p&gt;

&lt;p&gt;But that signature may not satisfy DMARC alignment.&lt;/p&gt;

&lt;h2&gt;
  
  
  12. DMARC Alignment Modes
&lt;/h2&gt;

&lt;p&gt;DMARC supports relaxed and strict alignment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Relaxed alignment
&lt;/h3&gt;

&lt;p&gt;A subdomain can align with the organizational domain.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mail.example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;may align with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Strict alignment
&lt;/h3&gt;

&lt;p&gt;The domains must match exactly.&lt;/p&gt;

&lt;p&gt;DMARC records can control this with settings such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aspf=s
adkim=s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aspf = SPF alignment mode
adkim = DKIM alignment mode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Most organizations should understand the consequences before changing alignment modes.&lt;/p&gt;

&lt;h2&gt;
  
  
  13. A Basic DMARC Record
&lt;/h2&gt;

&lt;p&gt;A simple DMARC record could look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;v=DMARC1; p=none; rua=mailto:dmarc@example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The record is normally published at:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;_dmarc.example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Important fields include:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;v=
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Protocol version.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;p=
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Policy.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rua=
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aggregate report destination.&lt;/p&gt;

&lt;p&gt;Other options may control subdomain policy, alignment behavior, percentages, and additional reporting behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  14. DMARC Policies
&lt;/h2&gt;

&lt;p&gt;There are three main policy levels.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;p=none&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;v=DMARC1; p=none; rua=mailto:dmarc@example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is primarily a monitoring policy.&lt;/p&gt;

&lt;p&gt;DMARC authentication is evaluated, but the domain is not requesting quarantine or rejection of failing messages.&lt;/p&gt;

&lt;p&gt;This is often useful when deploying DMARC initially.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;p=quarantine&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The domain asks receiving systems to treat DMARC-failing mail with greater suspicion.&lt;/p&gt;

&lt;p&gt;Depending on the receiver, that may mean spam-folder placement or other restricted handling.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;p=reject&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;v=DMARC1; p=reject; rua=mailto:dmarc@example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The domain requests rejection of messages that fail DMARC.&lt;/p&gt;

&lt;p&gt;This provides stronger protection against certain forms of domain spoofing.&lt;/p&gt;

&lt;p&gt;However, moving immediately to &lt;code&gt;p=reject&lt;/code&gt; without understanding every legitimate sender can disrupt real email.&lt;/p&gt;

&lt;h2&gt;
  
  
  15. Why DMARC Reporting Matters
&lt;/h2&gt;

&lt;p&gt;DMARC reporting can help reveal who is sending mail associated with your domain.&lt;/p&gt;

&lt;p&gt;Reports may show infrastructure belonging to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Workspace&lt;/li&gt;
&lt;li&gt;Microsoft 365&lt;/li&gt;
&lt;li&gt;CRM systems&lt;/li&gt;
&lt;li&gt;ecommerce platforms&lt;/li&gt;
&lt;li&gt;marketing tools&lt;/li&gt;
&lt;li&gt;support platforms&lt;/li&gt;
&lt;li&gt;transactional providers&lt;/li&gt;
&lt;li&gt;old forgotten vendors&lt;/li&gt;
&lt;li&gt;unauthorized senders&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That visibility is extremely useful.&lt;/p&gt;

&lt;p&gt;A business may discover that an application installed three years ago is still sending mail.&lt;/p&gt;

&lt;p&gt;Or that a legitimate provider was never configured correctly.&lt;/p&gt;

&lt;p&gt;Or that unknown infrastructure is attempting to use the domain.&lt;/p&gt;

&lt;h2&gt;
  
  
  16. Inventory Every Email Sender
&lt;/h2&gt;

&lt;p&gt;Before making major authentication changes, build an inventory.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Corporate email
Google Workspace

Marketing
Klaviyo

CRM
HubSpot

Transactional email
Amazon SES

Support
Zendesk

Website forms
Application backend

Billing
Stripe-related notifications

Ecommerce
Shopify
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then determine how each service uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SPF&lt;/li&gt;
&lt;li&gt;DKIM&lt;/li&gt;
&lt;li&gt;custom return paths&lt;/li&gt;
&lt;li&gt;custom DKIM domains&lt;/li&gt;
&lt;li&gt;DMARC alignment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is much safer than editing DNS reactively.&lt;/p&gt;

&lt;h2&gt;
  
  
  17. Authentication Flow Example
&lt;/h2&gt;

&lt;p&gt;Consider this message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;From: orders@example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The business sends through an ecommerce email provider.&lt;/p&gt;

&lt;h3&gt;
  
  
  SPF
&lt;/h3&gt;

&lt;p&gt;The provider's infrastructure is authorized.&lt;/p&gt;

&lt;p&gt;Result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SPF: PASS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  DKIM
&lt;/h3&gt;

&lt;p&gt;The provider signs with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;d=example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DKIM: PASS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  DMARC
&lt;/h3&gt;

&lt;p&gt;Visible From:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DKIM signing domain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aligned.&lt;/p&gt;

&lt;p&gt;Result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DMARC: PASS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now consider another message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;From: orders@example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DKIM signs using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;d=vendor-mail.net
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DKIM: PASS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But that domain may not align with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If SPF also fails alignment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DMARC: FAIL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This illustrates why checking only "DKIM passed" is not enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  18. Common Authentication Mistakes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Multiple SPF records
&lt;/h3&gt;

&lt;p&gt;Combine legitimate sending sources into one valid SPF policy instead of publishing multiple independent SPF records.&lt;/p&gt;

&lt;h3&gt;
  
  
  Missing DKIM selectors
&lt;/h3&gt;

&lt;p&gt;Verify that every configured selector actually resolves in public DNS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Passing SPF but failing DMARC
&lt;/h3&gt;

&lt;p&gt;Inspect the SPF-authenticated domain and compare it with the visible From domain.&lt;/p&gt;

&lt;h3&gt;
  
  
  Passing DKIM but failing DMARC
&lt;/h3&gt;

&lt;p&gt;Inspect the DKIM &lt;code&gt;d=&lt;/code&gt; domain and check alignment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Publishing DMARC and ignoring reports
&lt;/h3&gt;

&lt;p&gt;DMARC provides visibility only when the organization actually monitors its sending environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enforcing too early
&lt;/h3&gt;

&lt;p&gt;Do not jump directly from no DMARC to aggressive rejection without identifying legitimate senders.&lt;/p&gt;

&lt;h3&gt;
  
  
  Forgetting application email
&lt;/h3&gt;

&lt;p&gt;Authentication audits often focus only on employee mailboxes.&lt;/p&gt;

&lt;p&gt;Do not forget:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;password resets&lt;/li&gt;
&lt;li&gt;invoices&lt;/li&gt;
&lt;li&gt;order receipts&lt;/li&gt;
&lt;li&gt;shipping notifications&lt;/li&gt;
&lt;li&gt;support replies&lt;/li&gt;
&lt;li&gt;booking confirmations&lt;/li&gt;
&lt;li&gt;website forms&lt;/li&gt;
&lt;li&gt;CRM automation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  19. SPF, DKIM and DMARC Do Not Guarantee Inbox Placement
&lt;/h2&gt;

&lt;p&gt;Passing all three is important.&lt;/p&gt;

&lt;p&gt;But email authentication is not equivalent to deliverability.&lt;/p&gt;

&lt;p&gt;Mailbox providers may also consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sender reputation&lt;/li&gt;
&lt;li&gt;IP reputation&lt;/li&gt;
&lt;li&gt;domain reputation&lt;/li&gt;
&lt;li&gt;complaint rates&lt;/li&gt;
&lt;li&gt;spam reports&lt;/li&gt;
&lt;li&gt;recipient engagement&lt;/li&gt;
&lt;li&gt;list quality&lt;/li&gt;
&lt;li&gt;bounce rates&lt;/li&gt;
&lt;li&gt;sending volume&lt;/li&gt;
&lt;li&gt;sending consistency&lt;/li&gt;
&lt;li&gt;message content&lt;/li&gt;
&lt;li&gt;unsubscribe behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of authentication as identity verification.&lt;/p&gt;

&lt;p&gt;It gives receiving systems stronger evidence that the message legitimately relates to the claimed domain.&lt;/p&gt;

&lt;p&gt;It does not force the receiving system to place the message in the inbox.&lt;/p&gt;

&lt;h2&gt;
  
  
  20. Practical Email Authentication Checklist
&lt;/h2&gt;

&lt;p&gt;Use this when reviewing a business domain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Inventory every email sending service&lt;/li&gt;
&lt;li&gt;[ ] Confirm an SPF record exists&lt;/li&gt;
&lt;li&gt;[ ] Confirm only one valid SPF policy exists&lt;/li&gt;
&lt;li&gt;[ ] Remove obsolete SPF senders&lt;/li&gt;
&lt;li&gt;[ ] Check SPF DNS lookup complexity&lt;/li&gt;
&lt;li&gt;[ ] Enable DKIM for each supported provider&lt;/li&gt;
&lt;li&gt;[ ] Verify DKIM selectors publicly&lt;/li&gt;
&lt;li&gt;[ ] Check DKIM signing domains&lt;/li&gt;
&lt;li&gt;[ ] Publish a valid DMARC record&lt;/li&gt;
&lt;li&gt;[ ] Configure aggregate reporting&lt;/li&gt;
&lt;li&gt;[ ] Verify SPF alignment&lt;/li&gt;
&lt;li&gt;[ ] Verify DKIM alignment&lt;/li&gt;
&lt;li&gt;[ ] Monitor before increasing enforcement&lt;/li&gt;
&lt;li&gt;[ ] Review transactional email systems&lt;/li&gt;
&lt;li&gt;[ ] Review marketing platforms&lt;/li&gt;
&lt;li&gt;[ ] Review support systems&lt;/li&gt;
&lt;li&gt;[ ] Remove providers that are no longer used&lt;/li&gt;
&lt;li&gt;[ ] Retest after DNS or provider changes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  21. Useful GlitchGuard Checks
&lt;/h2&gt;

&lt;p&gt;You can inspect individual authentication components using:&lt;/p&gt;

&lt;p&gt;SPF Checker:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://getglitchguard.com/tools/spf-checker" rel="noopener noreferrer"&gt;https://getglitchguard.com/tools/spf-checker&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;DKIM Checker:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://getglitchguard.com/tools/dkim-checker" rel="noopener noreferrer"&gt;https://getglitchguard.com/tools/dkim-checker&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;DMARC Checker:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://getglitchguard.com/tools/dmarc-checker" rel="noopener noreferrer"&gt;https://getglitchguard.com/tools/dmarc-checker&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MX Lookup:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://getglitchguard.com/tools/mx-lookup" rel="noopener noreferrer"&gt;https://getglitchguard.com/tools/mx-lookup&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The tools are useful for inspecting what DNS currently publishes before changing records.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Takeaway
&lt;/h2&gt;

&lt;p&gt;SPF, DKIM, and DMARC become much easier to understand when each technology has a separate job.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SPF
→ Which infrastructure is authorized?

DKIM
→ Is there a valid cryptographic signature?

DMARC
→ Does valid authentication align with the visible From domain?

DMARC Policy
→ What should receivers do when authentication fails?

DMARC Reporting
→ What sending activity should the domain owner know about?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The biggest mistake is treating email authentication as a checkbox.&lt;/p&gt;

&lt;p&gt;A modern business may have many legitimate sending systems.&lt;/p&gt;

&lt;p&gt;You need to understand the entire sending environment.&lt;/p&gt;

&lt;p&gt;Then authenticate it deliberately.&lt;/p&gt;

&lt;p&gt;Original GlitchGuard guide:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://getglitchguard.com/blog/spf-dkim-dmarc-explained?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=email_authentication" rel="noopener noreferrer"&gt;https://getglitchguard.com/blog/spf-dkim-dmarc-explained?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=email_authentication&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check your SPF record:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://getglitchguard.com/tools/spf-checker" rel="noopener noreferrer"&gt;https://getglitchguard.com/tools/spf-checker&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check your DKIM record:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://getglitchguard.com/tools/dkim-checker" rel="noopener noreferrer"&gt;https://getglitchguard.com/tools/dkim-checker&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check your DMARC policy:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://getglitchguard.com/tools/dmarc-checker" rel="noopener noreferrer"&gt;https://getglitchguard.com/tools/dmarc-checker&lt;/a&gt;&lt;/p&gt;

</description>
      <category>email</category>
      <category>security</category>
      <category>dns</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
