SBS Alerts Not Being Delivered?

We've seen a few reports now where SBS 2003 Alert Emails are not being received.  In addition, you may be receiving NDR's from your ISP complaining about "bare line feeds" in the message.

If you think back to your Programming 101 days, there's always a chapter that covers the mystical inner workings of the CString.  You learn that, when you hit the Enter key at the end of a sentence in a DOS or Windows application, you are really inputting two characters - a carriage return (the typewriter carriage moving all the way back to the left) and a line feed (the paper scrolling forward). 

There are many text editors and OS's that use the linefeed character as the delimiter for a new line.  And, in the code that generates the email alerts in SBS, that is what we use.  However, for SMTP mail, a new line should technically be rejected, based on RFC 8222:

 

RFC 2822:
2.3. Body
The body of a message is simply lines of US-ASCII characters. The
only two limitations on the body are as follows:
- CR and LF MUST only occur together as CRLF; they MUST NOT appear
independently in the body.
- Lines of characters in the body MUST be limited to 998 characters,
and SHOULD be limited to 78 characters, excluding the CRLF.
Note: As was stated earlier, there are other standards documents,
specifically the MIME documents [RFC2045, RFC2046, RFC2048, RFC2049]
that extend this standard to allow for different sorts of message
bodies. Again, these mechanisms are beyond the scope of this
document.

You can see this quite clearly in a Network Monitor (NetMon) capture:

In practical terms, IE, Outlook, Word, and just about anything else people typically use to read or render mail renders the bare line feed as a CRLF.  You get the message, it displays, no one is any the wiser, we all go home happy.  The trouble comes in when a remote email server is configured to reject mail with bare line feeds. 

This is the workaround we've used and are suggesting our customers use when you need to send email alerts from SBS to an account using a mail server that rejects the bare line feeds:

To workaround this issue you will configure Outlook to redirect the email which results in the message being reprocessed and the bare line feeds removed. To do this:

  1. Create a local user account and mailbox to originally receive the alert email
  2. Configure the alerts email to go to a local account
    1. Open Server Manager
    2. Click Monitoring and Reporting
    3. Click Change Alert Notifications
    4. Click the Email Addresses tab
    5. Enter the local email address created in step 1
  3. From a client log into the account created in step 1 and open Outlook 2003
  4. On the Tools menu select Rules and Alerts
  5. Click New Rule
    1. Select "Start from a blank rule", highlight "Check messages when they arrive" and click Next.
    2. Click Next without selecting any conditions. (This forwards every mail sent to this mailbox)
    3. Click Yes to the "This rule will be applied to every message you receive" warning.
    4. Select the "redirect it to people or distribution list" action.
    5. In the step 2 box click the "people or distribution list" hyperlink and type your EXTERNAL email address in the "Toà" box and click ok.
    6. Click Finish.
  6. Configure Exchange to allow forwards.
    1. Open Exchange System Manager
    2. Expand Global Settings
    3. Expand Global Settings.
    4. Select Internet Message Formats.
    5. Right click on the Default * domain and open the properties.
    6. Select the Advanced tab.
    7. Make sure "Allow automatic forwards" is checked.

We would like to Thank Mr. Azzara for bringing this issue to our attention and helping test the workaround.

Thanks to Justin Crosby for the initial research on this issue.