g r o t t o 1 1

Peeve Farm
Breeding peeves for show, not just to keep as pets
  Blog \Blôg\, n. [Jrg, fr. Jrg. "Web-log".
     See {Blogger, BlogSpot, LiveJournal}.]
     A stream-of-consciousness Web journal, containing
     links, commentary, and pointless drivel.


On My Blog Menu:

InstaPundit
USS Clueless
James Lileks
Little Green Footballs
As the Apple Turns
Entropicana
Cold Fury
Capitalist Lion
Red Letter Day
Eric S. Raymond
Tal G in Jerusalem
Secular Islam
Aziz Poonawalla
Corsair the Rational Pirate
.clue

« ? Blogging Brians # »





Book Plug:

Buy it and I get
money. I think.
BSD Mall




 10/6/2003 -  10/8/2003
 9/29/2003 -  10/5/2003
 9/22/2003 -  9/28/2003
 9/15/2003 -  9/21/2003
  9/8/2003 -  9/14/2003
  9/1/2003 -   9/7/2003
 8/25/2003 -  8/31/2003
 8/18/2003 -  8/24/2003
 8/11/2003 -  8/17/2003
  8/4/2003 -  8/10/2003
 7/28/2003 -   8/3/2003
 7/21/2003 -  7/27/2003
 7/14/2003 -  7/20/2003
  7/7/2003 -  7/13/2003
 6/30/2003 -   7/6/2003
 6/23/2003 -  6/29/2003
 6/16/2003 -  6/22/2003
  6/9/2003 -  6/15/2003
  6/2/2003 -   6/8/2003
 5/26/2003 -   6/1/2003
 5/19/2003 -  5/25/2003
 5/12/2003 -  5/18/2003
  5/5/2003 -  5/11/2003
 4/28/2003 -   5/4/2003
 4/21/2003 -  4/27/2003
 4/14/2003 -  4/20/2003
  4/7/2003 -  4/13/2003
 3/31/2003 -   4/6/2003
 3/24/2003 -  3/30/2003
 3/17/2003 -  3/23/2003
 3/10/2003 -  3/16/2003
  3/3/2003 -   3/9/2003
 2/24/2003 -   3/2/2003
 2/17/2003 -  2/23/2003
 2/10/2003 -  2/16/2003
  2/3/2003 -   2/9/2003
 1/27/2003 -   2/2/2003
 1/20/2003 -  1/26/2003
 1/13/2003 -  1/19/2003
  1/6/2003 -  1/12/2003
12/30/2002 -   1/5/2003
12/23/2002 - 12/29/2002
12/16/2002 - 12/22/2002
 12/9/2002 - 12/15/2002
 12/2/2002 -  12/8/2002
11/25/2002 -  12/1/2002
11/18/2002 - 11/24/2002
11/11/2002 - 11/17/2002
 11/4/2002 - 11/10/2002
10/28/2002 -  11/3/2002
10/21/2002 - 10/27/2002
10/14/2002 - 10/20/2002
 10/7/2002 - 10/13/2002
 9/30/2002 -  10/6/2002
 9/23/2002 -  9/29/2002
 9/16/2002 -  9/22/2002
  9/9/2002 -  9/15/2002
  9/2/2002 -   9/8/2002
 8/26/2002 -   9/1/2002
 8/19/2002 -  8/25/2002
 8/12/2002 -  8/18/2002
  8/5/2002 -  8/11/2002
 7/29/2002 -   8/4/2002
 7/22/2002 -  7/28/2002
 7/15/2002 -  7/21/2002
  7/8/2002 -  7/14/2002
  7/1/2002 -   7/7/2002
 6/24/2002 -  6/30/2002
 6/17/2002 -  6/23/2002
 6/10/2002 -  6/16/2002
  6/3/2002 -   6/9/2002
 5/27/2002 -   6/2/2002
 5/20/2002 -  5/26/2002
 5/13/2002 -  5/19/2002
  5/6/2002 -  5/12/2002
 4/29/2002 -   5/5/2002
 4/22/2002 -  4/28/2002
 4/15/2002 -  4/21/2002
  4/8/2002 -  4/14/2002
  4/1/2002 -   4/7/2002
 3/25/2002 -  3/31/2002
 3/18/2002 -  3/24/2002
 3/11/2002 -  3/17/2002
  3/4/2002 -  3/10/2002
 2/25/2002 -   3/3/2002
 2/18/2002 -  2/24/2002
 2/11/2002 -  2/17/2002
  2/4/2002 -  2/10/2002
 1/28/2002 -   2/3/2002
 1/21/2002 -  1/27/2002
 1/14/2002 -  1/20/2002
  1/7/2002 -  1/13/2002
12/31/2001 -   1/6/2002
12/24/2001 - 12/30/2001
12/17/2001 - 12/23/2001
Monday, November 4, 2002
18:30 - DMCA Breach in Progress

(top) link
Let's take a look under the hood of a certain recent e-mail message, shall we?

The following is an e-mail sent from within an enterprise, by a user running Outbreak-- 'scuse me, Outlook, to an Exchange server, destined for another employee accessing that Exchange server via IMAP. This is how the message-- a multi-part message with a Base64 attachment, which I will abbreviate with an ellipsis-- appears in the recipient's e-mail program. Only the names and addresses have been changed to protect the innocent.

From someone@somecompany.com Mon Nov 4 17:33:56 2002
Received: by exchange.somecompany.com
id <01C2846B.5133FFA0@exchange.somecompany.com>; Mon, 4 Nov 2002 17:33:17 -0800
Return-Receipt-To: "John Doe" <someone@somecompany.com>
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----_=_NextPart_001_01C2846B.5133FFA0"
Disposition-Notification-To: "John Doe" <someone@somecompany.com>
X-MimeOLE: Produced By Microsoft Exchange V6.0.6249.0
content-class: urn:content-classes:message
Subject:
Date: Mon, 4 Nov 2002 17:33:17 -0800
Message-ID: <6107F196AD71B94CB77452F9405ADAAA0FB262@exchange.somecompany.com>
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
Thread-Index: AcKEa1AiOXXxBet6QYeLMP3WUZ0HnQ==
From: "John Doe" <someone@somecompany.com>
To: "Joe Recipient" <recipient@somecompany.com>

This is a multi-part message in MIME format.

------_=_NextPart_001_01C2846B.5133FFA0
Content-Type: multipart/alternative;
boundary="----_=_NextPart_002_01C2846B.5133FFA0"


------_=_NextPart_002_01C2846B.5133FFA0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<<08250206.txt>>=20

"The only place where success comes before work is in a dictionary." - =
Vidal.


------_=_NextPart_002_01C2846B.5133FFA0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Diso-8859-1">
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
6.0.6249.1">
<TITLE></TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P><FONT FACE=3D"Arial" SIZE=3D2 COLOR=3D"#000000"> =
<<08250206.txt>> </FONT>
</P>

<P><I><FONT SIZE=3D2 FACE=3D"Times New Roman">"The only place where =
success comes before work is in a dictionary." - Vidal.</FONT></I>
</P>

</BODY>
</HTML>
------_=_NextPart_002_01C2846B.5133FFA0--

------_=_NextPart_001_01C2846B.5133FFA0
Content-Type: text/plain;
name="08250206.txt"
Content-Transfer-Encoding: base64
Content-Description: 08250206.txt
Content-Disposition: attachment;
filename="08250206.txt"

UGFja2V0U2hhcGVyIHY2LjAuMGQxNDZYcnZhcmllciAyMDAyLTA4LTI1IDEyOjQ2IGRiZywNCmRp
ZWQgb24gU3VuIEF1ZyAyNSAwMjowNjozMyAyMDAyIFBEVCAoTG9zQW5nZWxlcykNCiAgICAgICAo
U3VuIEF1ZyAyNSAwOTowNjozMyAyMDAyIEdNVCkNCm1vZGVsIDQ1MDAgKHJldiBBKSwgcy9uIDA0
NS0xMDAwMDQzOCwgc2hhcGluZzpPTiANCkNQVSBCcmFuZDogR2VudWluZUludGVsICBTcGVlZDog
NDk5IE1IeiAobWVhc3VyZWQpDQpNZW1vcnk6IDI1NiBNQg0KDQpGaXJtd2FyZTogIHYyLjBnMiwg
Q29weXJpZ2h0KGMpIDIwMDAgUGFja2V0ZWVyLCBJbmMuDQoNClJ1bm5pbmcgVGFzazogSHZFZA0K
DQowMDEgWzAwMDAwMDEuMDAwMF0gVzogQ2hhbmdlIHRpbWVyLSAxMCBwZXIgbXNlYywgdGljayBp
bmNyID0gMQ0KMDAyIFswMDAwMDAxLjAwMDBdIGluIGZpcnN0VGFza1N0YXJ0Q2FsbG91dA0KMDAz
IFswMDAwMDAyLjQ4NDNdIFc6IGNmZ0ZpbGVzRGlmZjogY29tcGFyaW5nIDMyIGJ5dGVzICg5LjI1
Ni9DRkcvQkFTSUMuQ0ZHLDkuNTEyL0NGRy9CQVNJQy5DRkcpDQowMDQgWzAwMDAwMDIuNDg2OV0g

[...]

MDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAgLi4uLi4uLi4uLi4uLi4uLi4uLi4N
CjB4MDNiNjA0YjQ6IDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAw
ICAuLi4uLi4uLi4uLi4uLi4uLi4uLg0KMHgwM2I2MDRjODogMDAwMDAwMDAgMDAwMDAwMDAgMDAw
MDAwMDAgMDAwMDAwMDAgMDAwMDAw


Notice anything.... strange about this message?

If you're at all familiar with the raw-source structure of MIME messages, you will. I'll give you a hint: a proper MIME-encoded message would be a little bit longer.

There is no MIME separator at the end of the encoded attachment. It just breaks off. There should be a ------_=_NextPart_001_01C2846B.5133FFA0-- after the end of the encoded section, symmetrical with the one at the beginning of that block. But there isn't.

This means the attachment does not show up in any e-mail client that properly parses MIME. (Of course, it shows up just fine in Outlook, which doesn't give a rat's turd about requiring things like </TABLE> tags or closing MIME separators.)

This problem occurs whenever a user sends a message via Outlook to an Exchange server, and the recipient retrieves the message via IMAP. It doesn't happen if the recipient uses POP3, nor if the recipient is on a remote server to which the message must be relayed via SMTP.

Because, you see, Outlook communicates with Exchange in an internal DCOM-based proprietary Microsoft format. I'm sure it's very nice, and provides all sorts of nice features and hooks for Exchange to handle the message with, and it makes things nice and smooth when Outlook clients retrieve the message via IMAP.

But if Exchange has to relay the message on via POP3 or SMTP, it must translate it from its internal format to the standard mail format. The bitch of it is that it uses an entirely different rendering engine to serve the message to an IMAP client than to convey it via POP3 or SMTP. The internal structure of the message is totally different depending on what protocol you're using to access it.

And the IMAP translator is broken. People using IMAP, and clients other than Outlook, are out of luck when it comes to attachments, because whoever wrote this brain-dead translator apparently didn't allocate a big enough buffer for the message or something, or simply didn't bother to emit the closing separator because hey, Outlook doesn't require it-- and it just cuts the hell off.

You know, I have had it up to here with this crap. The software Microsoft produces is utter garbage, and it actively deters customers from doing work. This isn't a tool, it's an impediment-- and whoever is responsible for writing it, if there were such a thing as certification for software engineers, should be stripped of his or her credentials.

Those who promote Microsoft as some kind of paragon of software design and recommend it as a provider of mission-critical enterprise-class software-- this kind of incompetence is what these people are endorsing. This is the mediocrity to which we're condemning ourselves by not demanding that software be held to a higher standard than the bare-assed minimum that can be sold to the unsuspecting, overworked IT manager and the petty corporate bean-counter.

Some companies have already had to pay for this kind of negligence. Motorola, for the better part of the year 2000, had no e-mail at all because their Exchange server went completely belly-up-- and the Microsoft experts who they'd hired to come out and work on it full-time were unable to fix it for months on end. No internal e-mail communications. None. All because someone decided that Microsoft is the Way, and that anybody who doesn't go with the flow is just building sand castles while the tide comes in.

These kinds of stories are going to get more frequent, too-- not less. Sooner or later the failure will be quite catastrophic, and we'll weep for deliverance.

But by that time it will be far, far too late.

Thank you very much, Your Honor.

Back to Top


© Brian Tiemann