Windows 2003 DNS Issue…

March 15, 2007

Apparently, I’ve discovered a small bug in DNS (Windows 2003 only) and I wanted to share it in case someone else runs into. Trust me there’s NOTHING else out there about it (I’ve looked extensively) but it IS an issue – don’t beat your head against a wall.

With spam being such a giant issue, there have been a number of efforts to combat it and several (DomainKeys, DKIM, SPF, SenderID) utilize DNS TXT records. As these systems grow they need to be maintained in an automated fashion (I’m both busy and lazy) so I figured it would be great to create a system for our new “Vouch By Reference” (VBR) server that maintains the DNS from a database. Sounds easy right?? It was. I wrote a Windows service that monitors a database table and sends updates using WMI and everything worked wonderfully. Until we pointed it at the Windows 2003 server.

Windows 2000 DNS
This is a shot from Windows 2000


Windows 2003 DNS
This is a shot from Windows 2003

Notice the small difference?? Yeah, that stupid little comma – it’s actually a carriage return that the API adds to the data and you can’t stop it. So I ran thru the stages of grief – I just figured it was a quirk of the GUI (denial), then I blamed WMI (anger), then I wondered if it really mattered THAT much (bargaining), then…well, you get the idea. Ultimately, it DOES matter because some clients see this as an empty string element in an array (see it here) so while I’m not certain it will break anything for sure, you should “Be liberal in what you accept, and conservative in what you send.“.

Also, I have to thank the Microsoft WMI team. After a 2 hour phone call just to get a ticket submitted, I was skeptical that I was going to get anywhere or have a decent experience but I sort of did and I certainly did. Wesley McSwain and Tim Macaulay, if you’re reading this – thanks. You guys were a big help and I appreciate it. While I’m not certain if we’ll get a patch or not, they made me feel like my issue was important and spend time with me working on it.