<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><br><br><div dir="ltr">On Mar 20, 2019, at 19:37, Jonathan Reed <<a href="mailto:jreed777@gmail.com">jreed777@gmail.com</a>> wrote:<br><br></div><blockquote type="cite"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">TXT records are limited to strings of 255 characters or less, but can have multiple strings, They'll be concatenated in order by the DKIM validator - I'm guessing that's what you're thinking of.</blockquote><div>Yes, indeed.<br></div><div><br></div><div>My pub key is 400 chars long, and inserting the long string as a set into records.content fails as expected.</div><div><div><font face="monospace, monospace" size="1">mysql> UPDATE records set content = '"v=DKIM1; k=rsa; p=190_char_string" "200_more_chars"' where id = 1234;</font></div><div><font face="monospace, monospace" size="1">ERROR 1406 (22001): Data too long for column 'content' at row 1</font></div></div></div></div></div></div></blockquote><div><br></div><div>There is no workaround. You’ll need to fix your database schema (that’d be trivial on postgresql, but I don’t know enough about mysql’s limitations to know whether it’ll be painful there).</div><br><blockquote type="cite"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><font face="monospace, monospace" size="1"><br></font></div><div><font face="arial, helvetica, sans-serif">Alternatively, adding a second row with the same <a href="http://records.name" target="_blank">records.name</a> (same selector) makes sense.</font></div><div><div><font face="monospace, monospace" size="1">mysql> UPDATE records set content = '"200_more_chars"' where id = <b>1235</b>;</font></div></div></div></div></div></div></blockquote><div><br></div><div>That won’t work, ever. It needs to be a single TXT record.</div><div><br></div><div>Cheers,</div><div>  Steve</div><div><br></div><br><blockquote type="cite"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><div><br></div></div><div>However this fails also the checker, as it cannot determine that the second row is a continuation of the pub key with the row proceeding it. I'm still struggling with appending the pubkey to the previous record.</div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Mar 20, 2019 at 2:14 PM Steve Atkins <<a href="mailto:steve@blighty.com" target="_blank">steve@blighty.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><br>
<br>
> On Mar 20, 2019, at 5:49 PM, Jonathan Reed <<a href="mailto:jreed777@gmail.com" target="_blank">jreed777@gmail.com</a>> wrote:<br>
> <br>
> Hi,<br>
> <br>
> I'm running an old version of pdns where my backend record length for "<a href="http://records.name" rel="noreferrer" target="_blank">records.name</a>" is still varchar(255). I've read it's been extended to 64k. However I'm trying to insert a 400 character dkim value in it by adding multiple records for the dkim to simulate a continuation of the key string. Short of altering the table to allow for the longer lengths, have any of you had experience with the syntax for making long strings like this?<br>
> I've used the conventional escape char \ and tried enclosing the entire string in a paren () but no luck. Perhaps someone else out there has had to do this in the past?<br>
<br>
<a href="http://records.name" rel="noreferrer" target="_blank">records.name</a> holds the name of the record, e.g. "whatever._<a href="http://domainkey.example.com" rel="noreferrer" target="_blank">domainkey.example.com</a>", not the content, so 255 characters should be just about enough. records.content is where the content lives.<br>
<br>
TXT records are limited to strings of 255 characters or less, but can have multiple strings, They'll be concatenated in order by the DKIM validator - I'm guessing that's what you're thinking of.<br>
<br>
The syntax for that data in records.content is wrapping each string in the record in double quotes and separating those (two) strings with spaces - so something like '"v=DKIM1\; p=...base64 goop..." "...more base64 goop..."'<br>
<br>
I'm not sure whether / why the semicolon needs to be backslash escaped. An homage to bind file format, I guess.<br>
<br>
Cheers,<br>
  Steve</blockquote></div>
</div></blockquote></body></html>