Email authentication · SPF · DKIM · DMARC · EU

Your emails are going to spam. It is almost always three DNS records, and we fix them in a day.

Invoices not arriving, quotes unanswered, Gmail and Outlook quietly filing you under junk. The cause is usually SPF, DKIM or DMARC set up wrong — by a web person, on a Friday, from a paragraph in a handover document. Nobody checked it afterwards. We do, we fix it, and we keep checking.

Fix my domain — from €49 Check one domain, free

Written reply, same day. Fix delivered within 24 hours. No calls, no demo, no signup.

The fix · fixed price · 24 hours

Three tiers. Pick the one that matches how many things send mail as your domain.

Every tier ends the same way: the records written out exactly as they must be published, a before/after check from the authoritative nameservers, and a written explanation of what was wrong. You paste the records, or your web person does, and we verify. We never ask for your DNS login.

TierWhat you getPrice
Basic
one domain · one sender
SPF, DKIM and DMARC set up or repaired for one domain and one sending platform (Google Workspace, Microsoft 365, or one email service). Records delivered within 24 hours, verified after you publish them. Written explanation included. €49one domain
24-hour delivery
Standard
one domain · every sender
Everything in Basic, for every source that sends as your domain — mailbox, CRM, newsletter tool, transactional service (SES, Resend, SendGrid…), website forms — all aligned. DMARC moved from p=none to a policy that actually protects you, with reporting switched on. One written report of what was wrong and what we changed. €119one domain
48-hour delivery
Premium
up to 5 domains · or an agency
Standard, for up to five domains — yours, or your clients' under your name. Then 30 days of us reading the DMARC reports as they arrive, with one follow-up fix for whatever they reveal. Reports go to you, white-label if you want them that way. €249up to 5 domains
+ 30 days of reading

After the fix, most people want someone to keep watching. That is the monitoring line in the price list: €29 per domain per month, and we read the reports — you do not.

Order a fix — email the domain name

Reply the same working day with a Stripe payment link and the questions we need answered. Work starts when it is paid.

Why it breaks

The instruction is right there in the documentation, and it is the exact thing people get wrong

Odoo's own documentation tells the customer to add its include to the SPF record they already have, and warns them in writing:

"If the domain name already has an SPF record, the record must be updated. Do not create a new one, as a domain must have only one SPF record."

— Odoo 19.0 documentation, Configure DNS records to send emails

So the person doing it adds a second record instead of editing the first. Both records now exist. Under RFC 7208 §4.5 the receiver does not pick the stricter one, or the first one — SPF is discarded for the domain entirely, and reported as permerror.

Nothing bounces. Nobody gets an error. Mail keeps flowing on DKIM alone until a receiver somewhere decides it doesn't like the sender, and then a client rings you, because as far as they are concerned the ERP is the thing that changed.

The same mistake appears without an ERP anywhere near it — most often as a leftover from a domain migration, one record added beside another instead of replacing it. We find it on implementation partners' own domains, not only their clients': two records sitting there while the DMARC reports record it daily into a mailbox nobody opens.

What we actually check

Public DNS, queried at the source, with the unknowns marked as unknown

No mailbox access. No credentials. No data processing agreement to negotiate before anyone can start. Everything below is readable from outside, which is exactly why it is also readable by whoever is deciding whether to trust your client's mail.

Per domain

  • SPF — record count, syntax, recursive include-counting against the ten-lookup limit, and which all mechanism ends it
  • DKIM — selectors published directly or delegated by CNAME to Microsoft 365, Google, SendGrid, SES, and the key behind them
  • DMARC — policy, alignment mode, subdomain policy, and whether rua= points anywhere real
  • MX — routing, including null MX for domains that correctly accept no mail at all
  • Reverse DNS and blacklist status on the addresses involved

Two things most checkers skip

  • We query the domain's authoritative nameservers, not a recursive resolver. Recursive resolvers cache the answer "this does not exist" — so a record published twenty minutes ago reads as missing for as long as that cache lasts, which is precisely when you are looking at it.
  • We probe the odoo selector. It is the selector Odoo's documentation tells customers to publish, and a generic checker has no reason to know that. On a domain behind an ERP go-live it is the one that decides whether the thing worked.

What we do not do

There is no dashboard. That is deliberate, and it is most of the point.

You can buy a DMARC platform for about $18 per domain per month. It is good software. It parses the XML, draws the graphs, and waits for you to log in.

The problem was never the parsing. It is that reading the reports, deciding which of a client's four sending sources is a forgotten mailing tool and which is the invoicing system, and judging when it is safe to move a live domain to p=reject — that is an hour a week per client that an ERP consultant is never going to spend. So the login goes unused and the domain sits at p=none forever, collecting evidence nobody reads.

We are the hour. Not the dashboard.

Things we will tell you to buy elsewhere, or skip

  • BIMI, MTA-STS and TLS-RPT management
  • ConnectWise, HaloPSA, Autotask, Splunk and Sentinel integrations
  • Single sign-on, audit logs, permission and group management
  • One-click DNS writes into your registrar — we hand you the record, you apply it, because an outsider with write access to your client's DNS is a risk neither of us needs
  • Multi-year retained history, on a service you started last month

If you need those, EasyDMARC and dmarcian both sell them properly and we will say so. If you already own one of them, better — you have paid for the data and are not using it. We will read yours.

How you can tell whether we are any good

Three times our own tool was wrong, and how we found out

Anyone can publish a list of checks. The thing worth knowing about a diagnostic is what it does when it is mistaken, so here are three occasions ours was — all caught before a word of it reached the domain's owner.

It called a correctly parked domain broken

A domain published MX 0 . — a null MX record, which under RFC 7505 is a deliberate statement that the domain accepts no mail. Our tool reported it as critical: no mail routing. It was the most correct configuration on the whole domain. Fixed, and it now says so.

It reported "no DKIM" on domains whose DKIM was fine

It probed selectors for TXT records only. Microsoft 365, SendGrid, Mailchimp and SES all have you publish a CNAME that points into their zone, so the key lives at the other end. Every domain using them was being reported as unsigned. That is a confident wrong answer about somebody else's mail, which is worse than saying nothing.

Then the fix for that introduced a new mistake

Following the CNAME, it found a selector with no key behind it and called the signatures broken. They were not. Providers publish selectors in pairs and populate whichever one they are currently signing with; an empty second selector is the normal resting state of a rotation. It is now reported as an observation, not a fault.

There is a fourth category, and it is the one that matters most: a lookup that fails is not a record that is absent. Timeouts, SERVFAILs and unreachable nameservers are reported as could not be determined and never as missing. A checker that collapses those two will eventually tell you a DMARC record is gone when it is merely unreachable — and the natural response, publishing a second copy, is how domains end up with exactly the duplicate-record problem at the top of this page.

Our reports carry a section headed What we could not determine. If it is empty we say so. It is usually not empty.

How it runs

Built to fit a handover, not to add a project

For a single fix the sequence is short: you email the domain, we reply with a payment link and three questions (which platforms send as this domain, who can edit DNS, and where DMARC reports should go), the records arrive within the tier's delivery time, and we verify once they are published. For implementation partners it runs like this:

  1. Before handover. We check the client's domain and send you a one-page result. If something is wrong you get the record to publish, written out, with a note on what breaks if you apply it the obvious way instead.
  2. Thirty days after go-live. The same check again. This is the one that catches the change somebody reverted, or the third-party tool that appeared after launch.
  3. Every month after that. Every domain on your list re-checked, DMARC reports read, and one document sent to you containing only what changed and what needs doing. If nothing changed, the document says that in one line.
  4. When you want a domain finished. We take it from p=none to p=reject over six to eight weeks — find every legitimate sender, authorise them, move the policy in stages, and sign it off.

Everything arrives as a written document. Reports go to you, in your name if you want them that way; whether your client ever hears our name is your decision, not ours.

Price

Published, because you should not have to book a call to find out

Euro, excluding VAT, invoiced from Croatia with an EU VAT ID. Payment by card through Stripe. No minimum term on monitoring and no setup fee.

Fix

WhatWhat you getPrice
First domain check One domain, fully checked, written up. So you can judge the work before paying for any of it. The check only — the records to publish come with a tier below. Freeonce per company
Basic fix One domain, one sending platform. SPF, DKIM, DMARC written and verified. 24 hours. €49per domain
Standard fix One domain, every sender aligned, DMARC at a real policy with reporting on, written report. 48 hours. €119per domain
Premium fix Standard for up to five domains, plus 30 days of report reading and one follow-up fix. White-label on request. €249up to 5 domains

Keep it fixed

WhatWhat you getPrice
Monthly monitoring The domain re-checked monthly, DMARC reports read, one findings-only document to you. If nothing changed, it says so in one line. Cancel any month. €29per domain / month
Agency monitoring The same, for up to ten client domains under your name, one document a month covering all of them. €9 per extra domain. €99per month
up to 10 domains
Enforcement project One domain from p=none to p=reject. Fixed price, 6–8 weeks, signed off. €1,200per domain

For ERP and web implementation partners

WhatWhat you getPrice
Go-live check Before handover, and again 30 days later. Two checks, two documents, per client domain. €150per domain
Estate audit Your whole client list checked once and ranked by severity, worst first, in one document. €40per domain
minimum €400
Something is on fire "Our invoices are going to spam." Diagnosis from headers, bounce logs and DNS, with a written cause, when it is more than DNS. €90per hour

Yes, monitoring costs more per domain than a DMARC platform licence. A licence gives you the data. This gives you the reading of it, which is the part that was never the software's job.

Who you would be dealing with

A small company, deliberately narrow

HELO is a service of VSN j.d.o.o., a software company in Osijek, Croatia. It is small. The person who answers your email is the person who runs the checks and writes the reports, and on a larger piece of work a collaborator joins — named, and told to you in advance.

We have no certifications in this, no logos to show you, and no testimonials, because we would have to invent them. What we have instead is a tool you can watch being wrong, a method you can reproduce with dig, and reports that mark their own limits. Judge it on the free domain.

Our own domain, since you can check it

Single SPF record. DKIM signing verified as aligned by two independent receivers — Google and Mimecast — in their own aggregate reports, not in a claim we made up. DMARC published with a reporting address that is read by a person.

This subdomain sends no mail at all, and says so properly:

# the site that sells email authentication, configured to prove it
helo.vsn.hr        MX    0 .          ← null MX, RFC 7505
helo.vsn.hr        TXT   "v=spf1 -all"
_dmarc.helo.vsn.hr TXT   "v=DMARC1; p=reject; rua=mailto:office@vsn.hr"

Contact

Send one domain. You will get the report back, not a sales sequence.

Email office@vsn.hr with a domain name in it. That is the whole process. You will get a written reply the same working day, and the report within two. If you already know you want it fixed, say which tier — Basic, Standard or Premium — and the reply carries the payment link.

We work in writing — email, or WhatsApp if you prefer. No discovery calls, no demos, no onboarding sequence. If a written answer is not enough for a decision, we have not written it well enough.

office@vsn.hr