Instant Messaging/Presence: Zephyr

Nowadays, instant messaging software is considered a must-have for the desktop of any Internet user. Long before ICQ and AIM were written, however, Zephyr was being used widely at MIT. Zephyr is a secure instant messaging system that is still in use today at MIT and many other universities, including Iowa State.

Architecture overview

In order to provide reliable authentication, Zephyr is frequently coupled with Kerberos. In general, this is optional; the decision to use Kerberos can be made on a per-domain basis. In the case of Iowa State, Kerberos support is required for full two-way messaging. RPMs are available which are compiled with the necessary support.

The Zephyr system consists of three basic components: zephyrd, the central zephyr server for a domain which coordinates messages between hosts on the network; zhm, the zephyr host manager, which coordinates all incoming and outgoing messages for a given host; and zwgc, the "WindowGram client" which receives and handles messages for a given user on the system. Since only one zephyr server is needed per domain, we will not concern ourselves with zephyrd. If you need help setting up a zephyr server, consult the Zephyr documentation.

Installing Zephyr

Any host on the network from which you hope to receive zephyr messages will need both zhm and zwgc installed and running. In addition, if you are going to be sending messages out you will need a program such as zwrite or xzwrite. All of these programs are included in the zephyr RPM found at ftp://aafugit.org/VINCENT/crypto/. There is also a zephyr library that may be useful if you wish to include zephyr support in other applications; the library and related header files can be found in the zephyr-devel package. You will not need the zephyr-server package unless you plan to set up a zephyr server. If installing from source, you can find the latest version of the zephyr distribution at ftp://athena-dist.mit.edu/pub/ATHENA/zephyr/snapshots/. To build the source against kth-krb4 on a Linux system, you will need a pair of patches which can be downloaded from ftp://aafugit.org/VINCENT/patches/.

As with arla (see 5.2 Starting arla), Zephyr requires that the host manager, zhm, be running at all times. If you did not install from RPM and do not have /etc/rc.d/init.d/zhm, you will need to add a line to your system startup scripts that runs /usr/sbin/zhm.

Normally, it should be sufficient to run zhm without any options: the host manager will use hesiod to automatically locate the zephyr server on the network. However, if hesiod is not available on your system or if the zephyr server for your domain cannot be found using hesiod, you can specify the hostname on the commandline. For ISU, the zephyr server is zephyr.iastate.edu, so you can start zhm by running /usr/sbin/zhm zephyr.iastate.edu.

Running Zephyr

To make use of zephyr as a user, you will want to run zwgc. On Project Vincent, zwgc is part of the default profile for the system. If you want zwgc to be started by default for all of your users when they log in, you may wish to add the command to the system /etc/profile as well.

A full description of zephyr services is beyond the scope of this document. If you are not familiar with Zephyr, please consult the system documentation. In particular, the zephyr(1) man page provides a good starting point for understanding the available features. In addition, the olc service on Project Vincent contains a more in-depth look at Zephyr intended for Project Vincent end-users and attempts to answer many common questions.