SPF, DKIM, and DMARC Explained
How the three core email-authentication protocols work together to establish verifiable sender identity at the domain level.
On this page
Email was never designed with authentication in mind. The three protocols that retrofit trust onto SMTP — SPF, DKIM, and DMARC — are often deployed piecemeal, leaving gaps that spoofing campaigns exploit. This post walks through how they reinforce one another.
The Problem with Bare SMTP
By default, any server can claim to send mail on behalf of any domain. There is no built-in mechanism to verify that a message claiming to come from billing@example.com actually originated from infrastructure authorized by example.com. SPF, DKIM, and DMARC each close part of this gap.
SPF: Authorizing Senders
Sender Policy Framework publishes, via DNS, the list of hosts permitted to send mail for a domain. A receiving server checks the envelope sender against this record.
v=spf1 include:_spf.srrrs.com -all
The -all qualifier instructs receivers to reject any host not explicitly listed. A common misconfiguration is using ~all (soft fail), which weakens enforcement.
DKIM: Signing Messages
DomainKeys Identified Mail attaches a cryptographic signature to each outbound message. The receiver retrieves the public key from DNS and verifies the signature, confirming the message was not altered in transit.
DMARC: Tying It Together
DMARC builds on SPF and DKIM, adding alignment checks and a policy directive. It also enables aggregate reporting, giving domain owners visibility into who is sending mail in their name.
v=DMARC1; p=reject; rua=mailto:dmarc@srrrs.com; adkim=s; aspf=s
Rolling out p=reject directly is risky. Most teams start at p=none to gather reports, then progress to quarantine and finally reject.
Summary
SPF authorizes senders, DKIM guarantees integrity, and DMARC enforces policy while providing visibility. Deployed together with strict alignment, they make domain-level email spoofing substantially harder. At the edge, SRRRS evaluates all three before a message reaches internal routing.