- Why this information is public
- MX: who receives your email
- SPF and DKIM: who may send as you
- DMARC: the policy, and who reads the reports
- MTA-STS, TLS-RPT and DANE: protecting email in transit
- The web side: CDN, certificates and headers
- Your attack surface: subdomains and certificate logs
- From findings to fixes
- Why different sectors care
- What should be public, and what shouldn't
- What DNS can't tell you
- Good practice when reviewing a domain
- Check your own domain in two minutes
Why this information is public
For email to work between strangers, every mail server in the world needs to find out three things about your domain without asking you: where to deliver your mail, which servers may send it, and what to do when a message fails those checks. DNS is the only shared directory, so you publish the answers there, and anyone can look them up.
This post covers your email, website and exposed systems. A companion post, What your DNS reveals about the software you use, covers the SaaS tools that show up in your records.
That's by design, and it's useful for you. Reading your own records shows you your email setup as the rest of the internet sees it, including leftovers you forgot about. This post goes through the records worth knowing, using our own domain, globalsoc.com.au, as the example.
MX: who receives your email
MX (Mail eXchanger) records tell the world which servers accept mail for your domain. The host name usually says who runs the mailbox:
| If your MX looks like… | It means… |
|---|---|
*.mail.protection.outlook.com | Mail is delivered straight to Microsoft 365 (Exchange Online), with Microsoft's own filtering as the first line. |
aspmx.l.google.com and friends | Mail goes to Google Workspace. |
A security vendor's host name, such as *.mimecast.com, *.pphosted.com, *.iphmx.com, *.barracudanetworks.com, *.hydra.sophos.com or *.tmes.trendmicro.com | The domain sends all inbound mail through a secure email gateway first. The gateway cleans it, then passes it on to the real mailbox behind it. |
*.mx.cloudflare.net | The domain uses Cloudflare Email Routing, which forwards mail on to another mailbox. This is what globalsoc.com.au uses. |
Your own host name, such as mail.yourbusiness.com.au | A mail server run by the business or its IT provider. |
What to do with this
- Check it matches what you pay for. If you bought a gateway but your MX still points straight at Microsoft, attackers can skip the gateway entirely by delivering to the Microsoft address directly. The fix is to restrict inbound mail at Microsoft to your gateway's addresses.
- Look for a dead MX. An old host that no longer exists means mail to you can bounce, and an unregistered domain there could be registered by someone else and receive your email.
- If you don't use email on a domain, publish a null MX (
MX 0 .) so nothing is delivered.
SPF and DKIM: who may send as you
SPF lists the allowed sending servers
Your SPF record is a list of everything permitted to send email as your domain. Each include: is a service the business uses, which makes it a handy inventory of your email-sending tools: accounting, CRM, marketing, helpdesk, HR. (More on reading these in What your DNS reveals about the software you use.) Ours is:
v=spf1 include:_spf.mx.cloudflare.net include:_spf.google.com include:spf.protection.outlook.com -all
Read it left to right: Cloudflare, Google (our Gmail "Send mail as") and Microsoft (the Azure service that sends our alerts) may send as globalsoc.com.au, and -all means everyone else is rejected.
- Remove anything you no longer use. An old marketing tool's
include:is an open door. Anyone who gets into that account can send as you. - Mind the 10-lookup limit. Each
include:,a,mxandexists:costs one DNS lookup, nested ones included. Over 10 and SPF stops working for all your mail. Our DNS Audit counts them for you. - End with
-allor~all, never+all(which allows the whole internet).
DKIM is a signature, and its selector names the signer
DKIM signs each message with a private key. The matching public key sits in DNS under a selector, at selector._domainkey.yourdomain. The selector name usually shows which service does the signing:
| Selector | Usually means |
|---|---|
selector1, selector2 | Microsoft 365 |
google | Google Workspace |
k1, k2, k3 | Mailchimp |
s1, s2 | SendGrid (and some other senders) |
cf2024-1 | Cloudflare |
selector1-azurecomm-prod-net | Azure Communication Services (ours) |
- Every service that sends as you should have its own DKIM key. A service without one will fail DMARC alignment the moment you enforce a strict policy.
- Use 2048-bit keys. 1024-bit keys are still common and are being phased out.
- Know that selectors can't be listed. Only the sending service and you know the exact names, so a scan can only guess common ones. That's why "no DKIM found" is a prompt to check an email's headers, not proof it's missing.
DMARC: the policy, and who reads the reports
DMARC ties SPF and DKIM together and tells receivers what to do with email that fails. Two parts say the most about how seriously a domain treats email fraud. (Our earlier post explains how DMARC works in depth.)
| Tag | What it says |
|---|---|
p= | The policy. Missing or none: fake emails are still delivered, so invoice fraud and impersonation are easy. quarantine: fakes go to spam. reject: fakes are blocked. Ours is currently none, while we collect reports. |
rua= | Where daily aggregate reports go. Pointing to a DMARC reporting service (examples: dmarcian, Valimail, Red Sift OnDMARC, EasyDMARC, Proofpoint, Postmark) means someone turns the XML into something readable. Reports going to nowhere or a personal mailbox usually means nobody is reading them. |
ruf= | Where individual failure reports go. These can contain parts of real emails, so use a shared security mailbox rather than a person's. |
sp=, pct= | The subdomain policy and the percentage of mail the policy applies to. sp=none or a low pct quietly weaken protection. |
p=none with a reporting address. Read the reports for a few weeks and fix every legitimate sender that fails. Then move to quarantine, then reject. Skipping straight to reject is how businesses accidentally block their own invoices.MTA-STS, TLS-RPT and DANE: protecting email in transit
SPF, DKIM and DMARC are about who sent it. These three are about whether the message is encrypted on the way to you. Ordinary email between servers will quietly fall back to plain text if encryption fails, which lets an attacker on the network path read or alter it.
| Record | What it does |
|---|---|
MTA-STS_mta-sts. TXT, plus a policy file on your website | Tells senders: "only deliver to my listed mail servers, and only over verified TLS". Start in mode: testing, then switch to enforce. |
TLS-RPT_smtp._tls. TXT | Asks senders to email you a daily report of encryption failures, so you can see problems before you enforce MTA-STS. |
| DANE (TLSA) | Pins your mail server's certificate in DNS. Needs DNSSEC. Microsoft 365 and some national providers support it. |
Few small businesses use any of these yet, so having them is a sign of a careful email setup, and adding them is cheap.
The web side: CDN, certificates and headers
A visit to your website tells a browser (and a security reviewer) how it's hosted and how carefully it's protected:
| Where to look | What you'll see | What it tells you |
|---|---|---|
| A records, CNAMEs, server header | Cloudflare, Akamai, Imperva, AWS CloudFront, Azure Front Door, Fastly or Sucuri | A CDN or web application firewall (WAF) sits in front of the site and absorbs attacks before they reach it. |
A bare IP at a shared host, and a server header like Apache/2.4.x | Probably no WAF: the web server faces the internet directly, and the version number helps attackers find known flaws. | |
| Security headers, HSTS, TLS versions | Present or missing | How much web hardening has been done. Missing headers are cheap to add and block whole categories of attack. |
| Certificate issuer and expiry | Let's Encrypt, DigiCert, Sectigo | Free or paid certificates, and whether renewal is automated. A certificate that expires without notice takes a website offline. |
| CAA and DNSSEC | Often absent on small-business domains | Maturity markers. CAA limits who may issue certificates for you; DNSSEC stops forged DNS answers. |
| Name servers | Cloudflare, Route 53 or Azure DNS, versus the registrar's default | Whether your DNS is managed deliberately or left wherever the domain was bought. |
| RDAP (registration data) | Registrar and expiry date | The domain lifecycle. A domain close to expiry, with auto-renew off or an out-of-date card, is a business-continuity risk. |
Our own domain is a good example. GitHub Pages can't set security headers, so globalsoc.com.au scores lower on that check than we'd like. The fix is to put Cloudflare in front and add the headers there, which is the kind of finding we'd flag for any client in the same position.
Your attack surface: subdomains and certificate logs
Every public HTTPS certificate is recorded in open certificate transparency logs, which means a list of your subdomains is available to anyone, including people with bad intentions. Looking at that list yourself is one of the most useful things you can do, because it often includes systems nobody remembers:
| Subdomain pattern | What it suggests | Why it matters |
|---|---|---|
vpn., remote., sslvpn., fortigate., citrix., gp. | An internet-facing VPN or remote-access device | These are a leading ransomware entry point in ACSC advisories. They need prompt patching and multi-factor authentication. |
owa., mail. (on its own IP), adfs., sts. | On-premises Exchange or ADFS | High-value targets that are exploited often, and easy to forget when you've moved to the cloud. |
dev., test., staging., uat., old. | Non-production systems exposed publicly | Usually less protected, and sometimes loaded with real data. |
jira., confluence., gitlab., jenkins. | Self-hosted developer tools | A frequent source of serious vulnerabilities, and often holding source code and secrets. |
| A dangling CNAME | A subdomain pointing at a cloud resource that's been deleted | Subdomain takeover: someone else can claim that resource and serve content on your domain. High severity, and quick to fix. |
For each hostname on your own list, ask three questions: Do we still need it? Who owns it? Is it patched and behind multi-factor authentication? If any answer is "no" or "don't know", retire it or lock it down.
From findings to fixes
Most DNS review findings follow the same pattern: something visible, the business risk it creates, and a defined fix. Here are the common ones:
| Finding | The business risk | The fix |
|---|---|---|
No DMARC, or p=none | Anyone can send an invoice that looks exactly like it came from your accounts team. Payment-redirection fraud is among Australia's costliest cybercrimes (see the ACSC's Annual Cyber Threat Report). | SPF and DKIM for every sender, then DMARC stepped up to p=reject, usually over 4–6 weeks. |
| No DMARC reporting service, or reports going to a personal mailbox | You're collecting reports nobody reads. | Send reports to a reporting service or shared mailbox, and review them monthly. |
| SPF at 8–10 lookups, or a hand-flattened chain | One more email tool and all your mail starts failing SPF. | Clean up senders, then manage SPF centrally. |
| Microsoft 365 with default filtering only | You rely entirely on the standard filtering that comes with the licence. | A Microsoft 365 security review: Defender configuration, impersonation protection and multi-factor authentication. |
| A gateway and Defender licensing | You may be paying twice for the same job. | A licensing review, which often saves money. |
| No WAF, origin exposed, missing security headers | Your website sits directly on the internet with no shield. | Web hardening: Cloudflare WAF, security headers and TLS settings. |
vpn., owa. or adfs. exposed | These are the devices ransomware groups target first. | An authorised review of your external attack surface, with patching and multi-factor authentication. |
| Stale verification records and unused SaaS | Leftover accounts can become a back door. | A SaaS and offboarding audit. |
| Domain close to expiry, DNS left at the registrar | One missed renewal and your website and email go dark. | Domain and DNS management, with renewal reminders. |
| Anything that drifts over time | A fix that was right last year quietly breaks. | Daily monitoring that emails you when something changes. You can start it free from any DNS Audit report. |
Why different sectors care
| Sector | What's at stake |
|---|---|
| Real estate, conveyancers and law firms | Trust accounts and settlement payments, among the most targeted for invoice fraud. |
| Accountants and financial advisers | Client funds and tax data, plus ATO and ASIC expectations. |
| Health, including dental, GP and allied health | Patient records and the Notifiable Data Breaches scheme. |
| Anyone with cyber insurance | Renewal questionnaires increasingly ask whether DMARC and multi-factor authentication are in place. |
| Larger and regulated organisations | APRA CPS 234 (financial services), the SOCI Act (critical infrastructure) and the ACSC Information Security Manual's guidance on email authentication. |
What should be public, and what shouldn't
Some DNS information has to be public for the internet to work with you. Other information ends up there by accident and gives away more than it should. A good rule: publish what other organisations need in order to deal with you safely, and nothing that describes your inside.
| Public by design: keep and maintain it | Public by accident: review and remove |
|---|---|
|
|
Two practical habits help: use split-horizon DNS so internal names live only on your internal DNS servers, and put a review of your DNS zone on the calendar every six months, with the same urgency as renewing insurance.
What DNS can't tell you
- Published isn't deployed. A gateway in the MX record doesn't prove it's configured well, or that Microsoft's front door is locked behind it.
- It can't show internal controls such as multi-factor authentication, patching, backups or staff training. Those matter more than any DNS record.
- Records go stale. Leftover includes and verification records often outlive the services they were for. That's a cleanup list, not a failure.
- It says nothing about intent or quality. A missing record might be an oversight, or a deliberate choice for a domain that sends no email.
That's why we only ever present DNS findings as a checklist for the domain owner, and never as a score for someone else's business.
Good practice when reviewing a domain
Whether you're checking your own domain or an adviser is checking it for you, a few rules keep everyone on the right side of the law and of common courtesy:
- Own domain, or written permission. Reading public DNS records is fine. Going further, such as port scanning, trying to log in, attempting zone transfers or running vulnerability tests, needs the owner's written authorisation. Unauthorised testing can fall under the Criminal Code.
- Say what you saw, not what you assume. Use "appears" or "indicates", never "you are vulnerable". DNS shows the outside of a business; it can't show the controls inside.
- Be helpful, never alarming. A message that leads with serious-sounding findings and a demand to get in touch urgently reads like a shake-down. Describe the finding, the risk in plain words and the fix.
- Mind the Spam Act 2003. Anyone contacting a business about their email security must identify themselves, give a valid contact and include a way to opt out.
Check your own domain in two minutes
These commands work on any Windows laptop. Replace the domain with your own:
Resolve-DnsName globalsoc.com.au -Type MX # who receives mail
Resolve-DnsName globalsoc.com.au -Type TXT | Select -Expand Strings # SPF, verification records
Resolve-DnsName _dmarc.globalsoc.com.au -Type TXT | Select -Expand Strings # DMARC policy and reports
Resolve-DnsName _mta-sts.globalsoc.com.au -Type TXT # MTA-STS
Resolve-DnsName _smtp._tls.globalsoc.com.au -Type TXT # TLS-RPT
Or skip the commands: our free DNS Audit checks all of the above and 40 more settings in about 10 seconds, explains each finding in plain English and gives you the exact records to paste. It only works on domains you type in; it never contacts anyone's systems beyond the standard, lightweight checks described on the page.
Want your email setup checked and fixed?
We'll review your own records, tidy up SPF and DKIM, and walk you to DMARC enforcement without breaking your email.
Run a free DNS Audit →Talk to Yogesh