A Flaw in Nearly Every Email

Once upon a time, I had to write an email parsing library. Part of the assignment involved researching the MIME protocol, and deciding what it took to parse certain parts of a simple email (the MIME rules are complex, so the parser was only supposed to work for simple cases). While looking through the MIME Wikipedia page, I saw something that caught my eye. In almost every email, there is a header with a line that reads:

MIME-Version: 1.0

It turns out that we’ve never moved from version 1.0, and never will.

Why?

The creator of the MIME protocol, Nathaniel Borenstein, attributes it to a flaw in the protocol’s specification. In an interview about the MIME protocol, Borenstein commented,

We did not adequately specify how to handle a future MIME version, so if you write something that knows 1.0, what should you do if you encounter 2.0 or 1.1? I sort of thought it was obvious but it turned out everyone implemented that in different ways. And the result is that it would be just about impossible for the Internet to ever define a 2.0 or a 1.1.

This view is backed up by the protocol’s specification, which explicitly says,

It is not possible to fully specify how a mail reader that conforms with MIME as defined in this document should treat a message that might arrive in the future with some value of MIME-Version other than ‘1.0’.

In GMail, you can open an email and select “Show Original”, and see the MIME-Version, thinking back to the decision made twenty years ago that solidified the version, forever.

Just a bit of interesting trivia that I stumbled upon.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s