static.apur.in

SPF, DKIM and DMARC for one small domain

2026-06-27

Three records, each solving a different question. Confusion between them is why people publish all three, still land in spam, and then add more records.

SPF

apur.in.  TXT  "v=spf1 ip4:203.0.113.10 include:_spf.example.net -all"

DKIM

sel2026._domainkey.apur.in.  TXT  "v=DKIM1; k=rsa; t=s; p=MIGfMA0GCSq...long..."

DMARC

_dmarc.apur.in.  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@apur.in; pct=100; adkim=r; aspf=r"

Publish p=none first and read the aggregate reports for a few weeks. The reports answer a question you cannot answer by thinking: who else is sending as this domain — mailing lists, a scan-to-email printer, an old cron job, a forgotten relay. Each source is a row with the connecting IP and whether SPF and DKIM passed and aligned.

Then move in steps, and only as far as the reports justify: p=none → p=quarantine → p=reject. Jumping straight to reject is how people discover that the printer had been sending all the password resets.

Two things people forget

Reverse DNS. The connecting IP must resolve to a hostname that resolves back to that IP, and the HELO name should match it. No authentication record rescues a server with no PTR; a surprising number of filters stop right there.

MTA-STS and TLS-RPT. If the domain receives mail, these two are worth publishing: a _mta-sts TXT record with a version stamp, a policy file served over HTTPS at /.well-known/mta-sts.txt starting at mode=testing, and a _smtp._tls TXT record so that TLS failures report themselves to you rather than silently downgrading.

Verifying

dig +short TXT apur.in
dig +short TXT sel2026._domainkey.apur.in
dig +short TXT _dmarc.apur.in
postscreen -d  /  postfix -t        # what the local MTA believes it will send

Then send one real message to a mailbox you control on a strict provider and read the Authentication-Results header in the received message. It states SPF, DKIM and DMARC results in one line, and it is the only evidence that counts.

← manuals