8Bit interactions

Beware: geeky esoterica.

It’s kind of funny.

Microsoft has changed the way their Exchange servers interact to use the Internet Standard SMTP. In Exchange 5.5, they did some sort of funky X.400 transport for mail. I’m sure they did it because it probably conformed better to the OSI model than SMTP, but, in the move to Exchange 2000, they decided to scrap this backend and go with one that was smtp-based. Standards! Yummy!

However, it seems that Exchange 2000 had problems with 8BITMIME messages and it looks like this problem comes from the (relatively) immature SMTP implementation that Exchange 2000 uses.

For example, one of the subsidiaries of the company I work for is moving their systems to Exchange 2000. I manage the gateway between the company and the internet and it uses sendmail. There are some Exchange 5.5 servers that mail needs to reach that are just beyond the Exchange 2000 servers. So, the mail routing looks like this:

Internet → sendmail → Exchange 2000 → Exchange 5.5

Now, some European users on the Internet like to set their mail servers to use 8BIT. Fine. Sendmail and Exchange 2000 both advertise their support for it in an ESMTP transfer. Exchange 5.5 doesn’t support it and doesn’t claim to. According to DJB‘s document on 8BITMIME, Exchange 2000 should convert any 8BIT message to 7BIT for Exchange 5.5. I’m told that it does this for mail that originates in the Exchange 2000 realm, but, here is what I’ve observed:

Sendmail gets 8BIT mail from a host on the Internet. It has a route that says the mail goes to the Exchange 2000 server. During the transfer, it sees the Exchange 2000 server supports 8BIT and hands the mail off to the server unchanged.

The Exchange 2000 server should now see that the Exchange 5.5 server doesn’t support 8BIT, convert the mail to Quoted-Printable (or some such) and pass the mail along. It doesn’t. Instead, it sends the mail in 8BIT format to the Exchange 5.5 server, the Exchange 5.5 server becomes confused and ends up bouncing the mail all the way back to the sender.

The fix? I’ve added a new mailer to sendmail called smtp7. When we know that the mail is going to end up on an Exchange 5.5 box (especially if the route to that box contains an Exchange 2000 server), then we force the mail to 7BIT before we send it anywhere. Creating the mailer is as simple as copy and paste: copy the smtp8 mailer and change the name to smtp7, change the 8 in the flags (F=...) to 7.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.