Nonhosted commercial solutions
Another instant-messaging provider business model is to allow a corporation to install the provider's software on the corporation's own servers, giving the organization complete control over security and availability. If your corporation's needs exactly match the provider's service capabilities, this might be a good solution for you. There are a few different types of companies in this space. Some have their own proprietary protocols and server and client software. Others use existing protocols to implement their own software solution. There are even a few providers with products based on the open Jabber protocol. However, as with any other software provided by a third party, there are some limitations to this type of solution:
- Usually, the specific requirements of one corporation and what every other corporation needs do not match. In practice, only the largest corporations can influence the provider enough to have custom features added based on their needs.
- Some proprietary protocol providers do not include clients for all operating systems in their package. Commonly they provide a native Windows-based GUI client but only a Java applet client for other operating systems.
- Software and/or subscription costs are high, usually higher than those of a hosted service.
- These products unfortunately also often suffer from the provider's sales staff selling a solution that does not exist. Corporations will often find this out after allocating considerable time and resources to testing the product.
Required Software and Tools
My preference is running a Jabber server. How does that work?
Jabber server software--
The first and most important decision to make is which Jabber server software to use. My examples assume that you are using the open source
jabberd2 is a complete rewrite of the original Jabber server software, and it is likely to be the most complete reference implementation of the Jabber protocols in the long run. At any rate, it already supports all the features listed in the requirements section. Other open source and proprietary Jabber server implementations are available. Some of these--especially
ejabberd--show promise, so at least evaluate the open source versions before deciding on your own server software to use.
In order to support all the desirable functions, you must compile
jabberd2 to include some optional components. The requirements outlined earlier dictate support for a database back end for roster information (in this example, MySQL), LDAP to authenticate via Active Directory, and finally SSL to ensure the secure transfer of all messages between clients. There are a lot more options you can add while compiling
jabberd2, and it really doesn't hurt to include a few extra components you think you might need in the future. However, a configure statement such as this should suffice:
./configure --prefix=/opt/jabberd2 --enable-ldap --enable-ssl \ --enable-mysql
This article is not as a step-by-step walk-through, so you may have to add more to the above configure line to have the software compile cleanly on your system, especially if your library and header files are in locations other than what the configure script considers standard.
Notice the choice of /opt/jabberd2 as the prefix for the installation. This single, central location makes it easier to configure and upgrade the software after the installation. For the rest of this article, I will assume that you have installed the software here. Please refer to the
jabberd2 documentation in order to complete the installation.
As with any server hardware, factors such as the server software and the number of simultaneous users influence the necessary specifications.
jabberd2 is not very imposing in this respect and will scale well without a problem up to a couple of thousand registered users. If you opt for other Jabber server implementations, especially a Java-based version, do your homework before deciding what kind of hardware to use. For the requirements of the hypothetical company, a Pentium III system with 800-plus MHz and 512MB of system memory will suffice. In reality, you can probably get away with an even less powerful server, but this configuration is a safe minimum based on my own experience. You are also welcome to use an existing server that provides other services, although for security reasons I recommend using a dedicated server.
Other server-side software
Based on the requirements, the IM server also needs a database back end.
jabberd2 supports many different database systems. I've chosen to use MySQL to store user details, roster information, and messages. This requires no advanced database features; a recent version of MySQL should work fine as long as you have the libraries and drivers for that version installed.
OpenLDAP and OpenSSL provide LDAP and SSL, respectively. Install those separately only if the
configure statement during the install does not go through. If
configure completes without an error, you probably have both of them installed on your system already, as is common with most Linux and *BSD variants.
Aside from the usual software packages listed above, there a few more necessary packages. Make sure that you have Perl installed along with the Perl modules Net::LDAP, Net::LDAP::Control, and DBI, with DBD::MySQL as the driver.
The final package to install is djb's
daemontools suite. If you aren't familiar with
daemontools don't worry. I will discuss it shortly.
Fortunately, a huge variety of Jabber client software is already available from multiple vendors. All of them will work with any Jabber server software (with varying levels of support) thanks to the open and standard nature of the Jabber protocol. There is at least one usable client for every desktop operating systems. The client software for the hypothetical company should at a minimum support for SSL connections. Windows users may look into Exodus, a fairly complete implementation with extensive administrative features built in, while Unix users can't go wrong with anything from among Gossip, Gaim, Gabber, Gajim, and Psi. (Some of these Unix clients are also available on Windows nowadays.)