email-deliverability-security — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited email-deliverability-security (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Email security has two faces — inbound (don't get phished) and outbound (don't get spoofed, don't land in spam). This skill is about the outbound posture: configuring SPF, DKIM, DMARC, and friends so your real mail authenticates and impostors are rejected.
Done right, this is a one-evening project per domain that pays off forever. Done wrong, your password reset emails land in junk and attackers send invoices to your customers from [email protected].
| Record | Purpose | Required? |
|---|---|---|
| SPF | Lists which servers are allowed to send for the domain | Yes |
| DKIM | Signs each message with a key in DNS; receiver verifies signature | Yes |
| DMARC | Tells receivers what to do when SPF or DKIM fails, and where to send reports | Yes |
| MTA-STS | Forces TLS between sending and receiving MTAs | Recommended |
| TLS-RPT | Receives reports of TLS failures | Recommended |
| BIMI | Shows your brand logo in supporting mail clients | Optional, requires DMARC enforcement + VMC |
| ARC | Preserves auth state when mail passes through forwarders (mailing lists) | Receiver-side mostly, set up if you forward |
A "fully authenticated" sending posture needs at least SPF + DKIM + DMARC with a real policy.
SPF lists every IP / hostname / third-party allowed to send from your domain.
v=spf1 mx include:_spf.google.com include:mailgun.org include:sendgrid.net -allKey rules:
~all (soft fail) is acceptable as a stepping stone but eventually move to -all.include: and a and mx mechanism counts. Many ESPs publish records that chain dozens of include: and silently push you over the limit. Use dmarcian's SPF surveyor to count.v=spf1 is a permanent fail.dig +short TXT example.com | grep -i 'v=spf1'
# Send a test mail to a Gmail address you own, view "Show original" — SPF: PASSDKIM is per-ESP. Each sending service gives you a public key to put in DNS; the ESP signs outgoing mail with the private key.
Add the records the ESP gives you, exactly. Common selectors: default._domainkey, mailgun._domainkey, s1._domainkey, etc.
mailgun._domainkey.example.com. TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQ..."Rules:
dig +short TXT mailgun._domainkey.example.com
# Test mail to Gmail → Show original → DKIM: PASS, domain alignment OKDMARC ties SPF + DKIM together and tells receivers what to do on failure. It also gives you reports about who is sending mail as you (legitimate or otherwise).
Start in monitoring mode (p=none) — don't break your own mail by going straight to reject:
_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:[email protected]; ruf=mailto:[email protected]; fo=1; adkim=s; aspf=s"Fields:
none, watch reports for 2–4 weeks.s is stricter; most ESPs work with r.Week 1–2: p=none, pct=100 — collect reports, identify all legitimate senders
Week 3–4: p=quarantine, pct=25 — 25% of failing mail goes to spam
Week 5–6: p=quarantine, pct=100
Week 7–8: p=reject, pct=25
Week 9+: p=reject, pct=100 — fully enforcedIf at any step the reports show a legitimate sender failing, pause and fix (add to SPF, get DKIM set up for that path) before advancing.
DMARC reports are XML. Use a parser — handling them by hand does not scale.
Free / cheap options:
Look in reports for:
p=reject is live, these get bounced.MTA-STS forces TLS between mail servers. Without it, an attacker on the path between sending and receiving MTAs can downgrade to plaintext.
Two pieces:
_mta-sts.example.com. TXT "v=STSv1; id=20260512000000;"https://mta-sts.example.com/.well-known/mta-sts.txt: version: STSv1
mode: enforce
mx: *.example.com
max_age: 86400mode: testing first if you're cautious; mode: enforce once you're sure your MX is reachable over TLS.
Pair with MTA-STS to get reports on TLS failures.
_smtp._tls.example.com. TXT "v=TLSRPTv1; rua=mailto:[email protected]"BIMI shows your brand logo in supporting mail clients (Gmail, Yahoo, Apple Mail). Requires:
p=quarantine or p=reject (so not on day one)default._bimi.example.com. TXT "v=BIMI1; l=https://example.com/logo.svg; a=https://example.com/vmc.pem"Skip until everything else is enforced. Marketing rather than security.
Subdomains. Receivers don't apply your apex DMARC policy to subdomains automatically. Either:
sp= in DMARC (subdomain policy) to specifymail.example.com, notifications.example.com, etc.For subdomains you never send from, v=DMARC1; p=reject; keeps attackers from spoofing them.
Apex CNAME problem. Some DNS hosts allow CNAME at the apex (example.com) via flattening. Most don't. If you can't put TXT at the apex, your DNS host is wrong for email.
Forwarders break SPF. When your user has set up auto-forward in their inbox, the forwarded mail comes from a different IP — your SPF won't authorize it. DKIM still passes because the signature travels with the message. This is why DKIM is more reliable than SPF for delivery-quality scoring.
Mailing lists break DKIM. Lists often rewrite the From header or modify the body, breaking the signature. ARC was designed to preserve auth state across hops; receivers that honor ARC can still trust the original auth result. If you operate or rely on mailing lists, look into ARC.
Cold-start a new ESP. New IP / domain pairs have no reputation. Warm up by ramping volume gradually over 2–4 weeks. Sudden bulk from a new domain → straight to spam.
Multiple SPF records. Two v=spf1 records is the most common configuration error in the wild. Merge into one.
Forgotten test/staging subdomains. A forgotten record for staging.example.com pointing to an old IP, with no DMARC, is a beautiful spoofing target. Audit all sending subdomains.
DOMAIN=example.com
dig +short TXT $DOMAIN | grep 'v=spf1'
dig +short TXT _dmarc.$DOMAIN
dig +short TXT default._domainkey.$DOMAIN # adjust selector
dig +short TXT mailgun._domainkey.$DOMAIN
dig +short TXT _mta-sts.$DOMAIN
dig +short TXT _smtp._tls.$DOMAIN
# End-to-end test — send mail to [email protected], then in Gmail → Show original
# Check "Authentication-Results" header for:
# spf=pass, dkim=pass, dmarc=passMost of this skill is about outbound, but a quick note on inbound:
[email protected], the reports themselves are inbound mail and need a place to landFor a fully-authenticated sending domain:
-all (or ~all as interim)rua= for aggregate reportsp=quarantine or p=reject (not stuck at p=none forever)sp= on apex)v=DMARC1; p=reject; sp=reject; to prevent spoofingdkim=pass spf=pass dmarc=passp=none indefinitely once monitoring is established~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.