and use -all like @Steini says. This has recently been set as the default in virtualmin (been banging on about this for years ), any of the other options are pointless.
if you are using SPF you want to control who can send using it you need -all
"v=spf1 a mx a:domain.me.uk ip4:xxx.42.228.244 ip6:nnnn:3c03::f03c:93ff:fe19:a2ab ?all"
I think this is a still fault with virtualmin, but if the record is on the domain.me.uk DNS you don’t actually need a:domain.me.uk, you technically could also get rid of the ip4: definition, but it does not harm adding these extras just prevents uneeded lookups.
Also, if any part of your spf record does not resolve i.e. dead domain then the record will fail.
Registrar by Porkbun (as previous registrar abandoned owner and total failed to support)
NS records point to Linode (all ns1 to ns5)
Linode give full access to DNS records (and their support also open port 25 on request)
I have several other domains through them some with working email.
it seems just this one that is causing problems SPF → DKIM → DMARC (with Gmail and now wth Hotmail) but it seems that external mail from other sources and from backups (Virtualmin to domain owner) is being delivered.
not always, it could just be badly formed. remember they are usually TXT records and not a specific SPF record type anymore, so unless it is formed correctly it will not appear as a SPF record.