I was looking over my Exchange server at home today, getting ready to upgrade it to SP2, and opened Outlook to see if there were any messages I needed to take care of first. The following folder caught my eye:
If you’re now laughing to yourself, able to appreciate why I was puzzled to see a 404 error for SMTP, then you’ve been doing this for way too long too.
For those of you who aren’t laughing and don’t understand why it was funny, permit me to explain. The punchline revolves around Internet history. In order for networked computers to talk to each other successfully, they have to agree on a number of factors: how to send the data, in what order to transmit, what data is expected or required at any given moment, and more. Collectively, these agreements are known as protocols. Just as a diplomatic protocol tells people how to address a leader or how to seat people at a table in deference to their rank, computer protocols define network interactions in very strict terms.
The Internet is built on a whole extended family of protocols. Collectively, these protocols are known as the Transmission Control Protocol/Internet Protocol family (TCP/IP for short), and if you really want to know a bit more about it, I’ve got a couple of introductory lessons about it on my writing samples page. The important thing, though, is that many of the protocols share a common design philosophy, even though they were developed by many different people over the space of decades. It’s often easier to adapt an old protocol as a starting point than to design something entirely new from scratch — and it can also be easier for your programmers to write the code if it looks like something they’re already familiar with.
The two protocols that concern us now are the Simple Mail Transfer Protocol (SMTP) and the HyperText Transfer Protocol (HTTP). SMTP is the backbone of Internet email, while HTTP is the basis for how web servers and web sites talk to each other. Both protocols use a similar format: one computer issues an action or verb (with associated data) and the other side responds with a status message. The important part of the status message is the three-digit number; there’s also a text explanation that is meant to be useful to humans. Based on where the two computers are in their dialogue, this status number changes to tell the client what actions are appropriate next.
In HTTP, 404 is the “File not found” error; the client has requested a resource that the server cannot find. SMTP uses three-digit numeric codes as well, but 404 isn’t a valid one.
So now you know enough to enjoy the punchline:
When I looked at my mail folder and saw the “404”, my first thought was, “Wait a minute! That’s not a mail error!”
[Editor: if you’re still here, thanks for the token laugh. I sure beat that one into the ground, didn’t I?]