Linux Means Business: Linux for Internet Business Applications
When you call an 800 number to complain about a dead bug in your cereal or to ask why your new modem doesn't work on your old 486, chances are you're not talking directly to the manufacturer of the product. As companies throughout the '80s and '90s have continued to shed those business functions not considered core strengths, the vertical market of call-center outsourcing has grown rapidly. Ruppman Marketing Technologies in Peoria, Illinois is one of the pioneers in this industry, having answered telephone calls for client firms for 26 years. As the Internet's expansion into mainstream usage has become impossible to ignore, it look to expand its market to customer service over the Internet.
I was hired in April 1997 to oversee this new territory. Ruppman (“Rules for Writers”) as well as many of its competitors had made vague and hesitant steps toward answering e-mail inquiries from web sites and sending brochures requested through web forms, but our CEO entrusted me with leap-frogging such timid steps and positioning Ruppman for the inevitable time when people would more likely check a web site for answers than call an 800 number.
I came in with a hobbyist Linux background, and it was immediately clear to me that the development budget was limited and a broad range of technologies was available to deploy in a finite amount of time. Linux was the only solution with the flexibility and price to achieve our goals.
Ruppman had advanced infrastructure in its traditional areas of phone switches and routing, but had evolved its data infrastructure rather haphazardly. The company had a hodge-podge of Internet access methods, including:
Dial-up Compuserve and AOL
A UUCP e-mail exchange with a local ISP
A leased 256KB on a small Microsoft Exchange server from another ISP
Indeed, there was a growing number of Microsoft Exchange users in the absence of an official e-mail client standard.
First, we ordered and set up a Dell Poweredge 2200 (Pentium II, 200MHz, 64MB RAM) with Caldera OpenLinux to be our e-mail post-office (using Sendmail) and primary domain name server (using BIND). We finalized a deal to install a firewall from AT&T. Now, we had a unified Internet gateway, and could shut off all the other expensive or insecure conduits, thus removing the need for modems in the offices (see Figure 1). This also allowed us to take full advantage of our registered ruppman.com domain name, standardizing our e-mail addresses to the format firstname.lastname@example.org.
Using Sendmail also allowed us to implement a common client requirement. When Ruppman handles customer e-mail, clients want it to appear as if they are handling the e-mail themselves. For this reason, it is unsuitable for Widget Inc. to point its customers to email@example.com. They would rather use firstname.lastname@example.org. This is easy enough for incoming mail, but we have to mask outgoing mail from Ruppman representatives to Widget's customers. This was done by, among other things, adding the rule in Listing 1 to an mc configuration file for Sendmail, then compiling the mc file with m4 and installing it as /etc/sendmail.cf. (See the Mail HOWTO for information on customizing Sendmail rules.)
Clients also wanted such features as auto-replies to e-mail queries and selected audit copies of outgoing mail. Also, many clients' volume required more than one representative, using either subject-based routing or a shared mailbox. Microsoft Exchange could handle some of these functions, but we needed more flexibility and were concerned about standards compliance. The client mailboxes were all set up as IMAP mailboxes on a Linux server, which gives us the following advantages:
All incoming mail is delivered through a procmail recipe which allows us to send courtesy responses, keep detailed records and set up mail routing of any complexity.
Outgoing mail was sent as a blind copy (bcc) to a special account, audit, which runs a Python script to select a random subset of outgoing messages to forward to client contacts.
Since IMAP allows all messages to be stored on the server, it makes shared mailboxes easy to access and manage.
The e-mail representatives use Netscape Communicator as an IMAP client, but because of bugs in its IMAP client interface, we are evaluating alternatives.
Our new Internet architecture has the additional advantage that we have a way to allocate Internet access costs to departments according to usage. We implemented a Python script on the main Linux server to parse the firewall logs collected by syslogd and produce a report of bytes used per department.