Tuesday, February 15, 2005

The making of SmtpDiag

While its been almost two years since I worked on SmtpDiag, its always gratifying to see that the work you've done is actually helping customers. For those that are interested, here's a little more background on the tool.

Last summer one of my teammates, Matt Kuzior, took over my work in progress and finished the last of the work to get SmtpDiag ready for web release. If it wasn't for Matt, the tool may never had made it into the public domain, as it had been prioritized so low on my list that I probably would never had gotten to it. So if you ever run across Matt, make sure you thank him.

SmtpDiag shipped as part of the Exchange 2003 Web Release 1.1 last fall. The tool itself is fairly simple. In essence it automates the steps set out in several KB articles used to diagnose outbound SMTP/DNS issues for both Exchange and IIS SMTP.

One of the reasons I created the tool, is that while the KB's were useful for those that had a lot of experience with DNS and SMTP, they tended to cause more questions for those that weren't familiar with these protocols. In addition the KB articles didn't go into details as to other issues with DNS that could cause random failures.

For Inbound issues, it was easy to point customers to www.checkdns.net or www.dnsreport.net. Both sites provide detailed information on a domains DNS records as well as providing warnings and failures. Though as stated earlier, for outbound issues, customers only had KB articles that pointed to tools such as telnet and nslookup that were less then customer friendly.

The tool started as a side project (as most tools do) for myself to brush up on my C++ as well as get more familiar with the Windows DNS api. The original purpose was to create a library that I could reuse in several different internal tools used to automate testing of our products. As time went on though, I realized that with a little bit of work I could leverage my work to create a simple command line tool that automated KB203204. Once that was done, I started adding similar checks found on CheckDNS and DnsReport. The final step was to add support to check SMTP to replace Q153119.

Unfortunately that was not the end of the process for me. Since this was the first tool I had written for public release, I had no idea that there were localization requirements. In October of 2003 the tool was checked into our source depot where it sat for 6 months untouched. During those 6 months the priority of changing strings into resources, supporting Unicode, and all else that goes along with localization fell far below work on Titanium, Service packs, new automation, etc.

In July of 04, Matt was looking for a side project to work on to brush up on his C++, so I offered up SmtpDiag and gave him the 2 month timeline for WR1.1. Matt then spent the next two months localizing, fixing bugs, and then finally delivering the finished product in the WebRelease.