FWIW, after the txt record was amended yesterday to include the spaces and remove the trailing dot I think it is now valid (other than that it has >10 includes, ie 12). The broken-up state of the strings is actually defined in RFC 1035, but there's no real need for them to be broken up given that they total <255 bytes combined.
Or for the supergeeks, the longer version in an AI summary! ->
The ability to split a long string in a DNS TXT record is defined in RFC 1035, Section 3.3.14, which specifies the format of the TXT resource record (RR) data.
The Relevant Text from RFC 1035:
RFC 1035 defines the RDATA (Resource Record Data) for a TXT record as:
TXT-DATA One or more <character-string>s.
Furthermore, the general definition of a <character-string> is described in RFC 1035, Section 3.3 (Standard RRs):
<character-string> is a single length octet followed by that number of characters. <character-string> is treated as binary information, and can be up to 256 characters in length (including the length octet).
This means the usable text within a single string is limited to 255 bytes (or characters), because one byte is used to store the length itself.
How this enables splitting:
The key is that the definition in Section 3.3.14 explicitly allows for "One or more" character strings within a single TXT record. When a DNS resolver or an application (like one performing an SPF or DKIM check) retrieves this record, it automatically concatenates all the individual strings together, without adding any spaces between them, to form one continuous value.
This mechanism allows you to bypass the 255-character per-string limit by dividing the total content into multiple chunks, each under 255 characters. The total length of all concatenated strings in a single TXT record can technically be much longer, up to the maximum size of the RDATA field (approximately 65,535 octets).
But in the end.. it was DNS :)
Pete