Microsoft has made Exchange Server a robust messaging engine. However, Exchange Server's groupware capabilities don't always meet users' needs for collaboration. Although you can use public folders as a repository for documents and other information, public folders are static, forcing users to consult the folders frequently to keep up-to-date with their contents. Sometimes users need a more dynamic method of information gathering and dissemination—a method with the functionality of an Internet list server. You can use commercial products to add this functionality to Exchange Server, but in some ways, the standard Exchange Server product can get the job done without extra cost. This article discusses how you can use a combination of a public folder, a distribution list (DL), and the Network News Transfer Protocol (NNTP) to share information.
Internet List Servers
The Internet is a vast ocean of information waiting for you to explore. Much of the information is in lists, which are typically dedicated to a specific subject, such as the Exchange Server list at [email protected] (the archives for this list are at http://www.msexchange.org).
Users subscribe to lists by sending a subscription request to the list server. A request is usually a simple text message with the word SUBSCRIBE, followed by the user's email address in the message subject or body. The presence of SUBSCRIBE alerts the list server that the user wants to be added to the list. When the list server processes the message containing the SUBSCRIBE request, the list server automatically adds the user's email address to the list, and the user receives copies of any message posted to the list from that point on. Other commands include UNSUBSCRIBE, which removes someone from a list, and DIGEST, which requests the server to send one message containing the traffic posted to a list each day.
Each list has an email address. Users make submissions to the list by sending messages to the list's email address. When the message arrives at the list server, the list server automatically copies it to the list membership. A small delay usually occurs between submission and distribution. The length of the delay ranges from a few minutes to a couple of hours, depending on the list's size, the power of the server that hosts the list, and the amount of traffic on the list.
Convincing Exchange Server to Be a List Server
Although Exchange Server supports all the major Internet messaging protocols from SMTP to Internet Message Access Protocol 4 (IMAP4), it has no out-of-the-box list server functionality. Microsoft says collaboration is a major focus area for future versions, but you don't have to wait for an upgrade if you apply a little lateral thinking today.
A list server has two parts: the list and administration of subscription requests. Enhanced features, such as list digests, statistics, archives, and integration with directory services via Lightweight Directory Access Protocol (LDAP), are nice but not necessary. Here's how you can map standard Exchange Server features to provide the necessary functionality.
First, you need to set up a list. A DL is the logical place to hold the set of email addresses. An Exchange DL is a set of pointers to mailbox or custom recipient entries in the directory. Most organizations make extensive use of DLs, so you're probably familiar with how to set up and maintain lists. Every DL has a set of email addresses, so users can send messages to the list, even if they don't belong to the same Exchange organization.
This point is important, because you frequently need to collaborate with people who don't use Exchange Server or with people in other Exchange organizations within the company. For example, since the Compaq-Digital Equipment merger, Compaq employees use three Exchange organizations. Until the company becomes a unified organization, people need to share ideas or ask each other questions. Screen 1 shows the set of email addresses for a DL. Companies that use multiple messaging systems probably have an SMTP backbone, so the SMTP address for this list lets any SMTP-compliant client submit messages to the list.
Using a DL as a list server has a downside. Every message sent to the list ends up in multiple mailboxes, and the sheer number of messages that an active list produces is difficult for some users to cope with, especially if those users have intermittent access to the server. In addition, if the company imposes strict mailbox quotas, the volume of list messages might cause some users to exceed their quota.
Each time someone sends a message to the list, the server expands the list into the set of individual recipients. Then, the Message Transfer Agent (MTA) examines the recipients to determine which connectors the recipients require (e.g., native Exchange connectors, such as the Site or X.400 connector, or the Internet Mail Service—IMS—for delivery over the Internet). Finally, the MTA generates a copy of the message and sends it to each connector that's involved in the distribution. Exchange Server 5.5 is much faster at these tasks than previous versions of Exchange Server. For example, the dual 200MHz Pentium system I use expands a list containing 1000 entries in less than 3 seconds.
Handling List Administration
Setting up a DL is easy, as long as you remember that only mailboxes in the same site can manage them. In other words, if your Exchange organization has two sites (e.g., London and New York) and someone in the New York site creates the list, only mailboxes in the New York site can administer the list. Adding recipients to the list is also reasonably straightforward; you can do it from any Messaging API (MAPI) client. You must add custom recipients (people that use other messaging systems or who are in other Exchange organizations) to the Exchange directory before you can add them to a list. Dealing weekly with 10 to 20 administrative requests to add or leave a list isn't an excessive workload, and you can process these requests manually.
If you have busier lists or have to manage several lists, you can use the Exchange Server Event Service to automate the task. For example, you can add a public folder to the DL, so that the public folder receives a copy of every message. Then, write some Visual Basic Script (VBScript) code and associate it with the Create event for the folder, so the code fires each time a new message arrives.
The code checks for any incoming command messages requesting subscription updates and takes action on them. For example, if an incoming message contains a request to join the list, you can use Active Directory Service Interfaces (ADSI—which Exchange 5.5 or later supports) code to locate the requestor in the directory and then add the person to the list. Alternatively, a lower-tech approach is to write out a Comma Separated Values (CSV) file that contains the commands to make the appropriate change to the DL. Later, you can run the Exchange Administrator program in import mode (admin /i) to execute the commands in the file.
If you don't want to write code or process requests manually, you can build a real list server. The Exlist utility in the Microsoft BackOffice Resource Kit (BORK) is an excellent tool that uses the Exchange Event Service, Collaboration Data Objects (CDO), and ADSI to build a list server. The sidebar "Exchange List Server Add-ons" mentions some other products.
If list members participate to a reasonable degree and exercise discipline, lists can quickly accumulate a lot of valuable information. Archives are especially useful to people who join the list after it has been operating for a while, because those users can visit the archives to read up on previous topics or to fetch copies of posted documents and other contributions.
The most effective way to create an archive is to add a public folder to the DL, so that the folder automatically receives a copy of every message. Screen 2 shows the email addresses of a public folder that archives a DL's messages.
Unless you want to edit submissions, you don't have to do anything special to create or manage a public folder that acts as a list archive. However, you need to review the contents of the folder occasionally to remove irrelevant entries. I usually do this once or twice a week. In addition, you can set the public folder to expire messages and remove them from the store. If postings include documents, presentations, or other material of long-term value, you can retain them for a longer period than you keep discussions about specific and detailed issues.
Accessing the Archives
Because the list's archive is in a public folder, MAPI clients such as Outlook 98 can now access its content. The standard Conversation view provides an excellent way to navigate through the different discussion threads in the list, as Screen 3, page 11, shows. Remember that you can synchronize slave replicas of public folders down to an offline folders (.ost) file. People who work remotely or travel can take copies of the list archive and don't need to connect online to have access to all the information in the archive.
Allowing NNTP Access
A public folder is an excellent repository, but only if you can access it. Unless you have a mailbox in the Exchange organization that owns the public folder, you won't see the folder in the public folder hierarchy, and people who don't use a MAPI client might not even be aware that the folder exists. NNTP is an answer to this problem. Versions 5.0 and 5.5 of Exchange Server support NNTP, which lets any standard newsreader access newsgroups that Exchange Server maintains. In this instance, Exchange Server acts as the NNTP server and treats the public folder as a newsgroup. Outlook Express, which comes with Microsoft Internet Explorer (IE) 4.0, is an excellent (and free) newsreader. Screen 4, page 11, shows Outlook Express accessing the same public folder that Screen 3 shows.
Some people enjoy the cut and thrust of the debates in the list, and others want only intermittent access to a list. NNTP is a great solution to the problem of message volume and is easy to set up and administer. You don't have to do anything special for the public folder, but make sure to configure the NNTP protocol for anonymous access on the Exchange site or server that hosts the folder, as Screen 5 shows.
After you enable NNTP access, just let users know the name of the server where the public folder resides. Users can use their newsreader to browse the server for all available newsgroups. Screen 6 shows a set of newsgroups retrieved from an Exchange server. The asterisk next to the top newsgroup denotes that I don't have permission to access the content. The bookmark next to the last newsgroup signals that I am already subscribed to it.
You probably don't want anonymous users trawling through the contents of all your public folders, looking for something interesting, so make sure to set appropriate permissions on any sensitive folder. Setting the permission on the Anonymous folder's properties sheet to None will block any attempt to access content via NNTP, HTTP, or IMAP4. Any attempt to access the folder will result in a message such as the one Screen 7 shows.
Information is the lifeblood of most companies. You can adapt Exchange Server's standard features to provide a primitive list server, or you can choose from a reasonable selection of commercial add-ons for a more sophisticated product.