Jabber: Sicheres Instant-Messaging im Eigenbau

16.04.2007 von Klaus Manhart
Mit dem XML-basierten Jabber erhalten Sie ein kostenloses und offenes unternehmensinternes Instant-Messaging-System. Wir zeigen Ihnen, wie Sie einen Jabber-Basis-Server unter Linux aufsetzen.

In vielen Firmen wird es bereits eingesetzt: Ein Instant-Messaging-System (IMS) zur Verkürzung der Wege und Zeiteinsparung. Mitarbeiter können im Gegensatz zu E-Mail in Echtzeit miteinander Informationen und Dateien austauschen. Abstimmungs- und Entscheidungsprozesse lassen sich in Live-Besprechungen deutlich beschleunigen. Besonders Firmen mit mehreren lokalen Standorten oder internationalen Niederlassungen und Partnern können damit ihre Kommunikation optimieren.

Immer dabei: Im Business-Bereich lässt sich Instant Messaging beispielsweise für virtuelle Meetings und Echtzeit-Konferenzen nutzen.

Eine preiswerte und leistungsfähige Lösung für ein firmeninternes IM-System ist ein Jabber-Server. Jabber besteht aus einer Sammlung XML-basierter Netzwerk-Protokolle und unterstützt gängige IM-Funktionen wie Nachrichtenübermittlung, Konferenzen mit mehreren Benutzern, Anzeigen des Online-Status und Datei-Übertragungen. Den Kern des Systems bildet das Extensible Messaging and Presence Protocol (XMPP).

Der Instant-Messaging-Standard

Vom Funktionsumfang unterscheidet sich Jabber kaum von proprietären Instant-Messaging-Systemen wie ICQ, AIM und Microsoft/MSN, die ganz ähnliche Dienste bieten. Anders als diese Dienste ist Jabber aber ein offener Standard. Die Protokolle sind frei, öffentlich dokumentiert und können von jedem in eigener Software benutzt werden.

Jabber im Unternehmen: Clients tauschen intern und extern Nachrichten über einen zentral installierten Jabber-Server aus.

Der Kern des Jabber-Protokolls wurde von der Internet Engieering Task Force (IETF) Anfang 2004 als Internet-Standard verabschiedet. Die weitere Entwicklung des Jabber-Protokolls baut auf diesem Fundament auf. Neben der IETF wird Jabber auch durch die Jabber Software Foundation (JSF) betreut, die als Schnittstelle zwischen Benutzern, Entwicklern, der IETF Arbeitsgruppe, Serverbetreibern und dem kommerziellen Markt wirkt.

Jabber-Features: Verschlüsselung inklusive

Ein Jabber-Server lässt sich unternehmens­intern im Intranet oder im Internet zum Austausch von Nachrichten mit anderen Servern einsetzen. Im Internet werden Mitteilungen wie E-Mails vom Benutzer zuerst an den eigenen Server, von diesen zum Server des Empfängers und dann zum Empfänger selbst geliefert.

Zur internen und externen Kommunikation mit anderen Netzen wie AIM oder Yahoo hat ein Jabber-Benutzer eine Kennung, mit der er im gesamten Netzwerk für andere User erreichbar ist: den Jabber Identifier, kurz: JID oder Jabber-ID. Dieser setzt sich aus dem Benutzernamen (node), einem @ und der Domain des Servers zusammen, auf dem der Benutzername registriert ist. Alternativ kann noch eine so genannte Ressource folgen, die durch / von der Domain getrennt ist. Sie dient dazu, entweder Angaben zum verwendeten Client oder dem momentanen Aufenthaltsort zu machen.

Ganz im Gegensatz zu den kommerziellen Systemen wird bei Jabber auch großer Wert auf Sicherheit gelegt. Die Datenverbindung zwischen Client und Server sowie zwischen Servern lässt sich per SSL/TLS sichern. Zusätzlich können Client-to-Client-Nachrichten mit Verschlüsselungs-Software wie OpenPPG/GnuPG geschützt werden. Damit ist auch für den Server-Betreiber das Mitlesen der Nachrichten unmöglich.

Die Jabber-Basis jabberd installieren

Als reine Protokoll-Implementierung besitzt Jabber keine eigenen Server- oder Client-Applikationen. Verfügbar sind jedoch eine ganze Reihe unterschiedlicher Implementierungen für Jabber-Server und -Clients - darunter sowohl freie, unter der GPL lizensierte, als auch proprietäre.

Die Referenz-Implementierung des Jabber-Servers ist jabberd. Sie enthält interne Grundfunktionen für die Registrierung, Authentifizierung und Statusanzeige und kann um zusätzliche Komponenten wie Konferenzmodule oder Gateways zur Kommunikation mit anderen IM-Plattformen erweitert werden. In der folgenden Tabelle finden Sie einen Überblick über aktuelle Jabber-Server und -Clients. Zusätzlich gibt es für nahezu jeden Multi-Instant-Messenger, etwa Miranda oder Trillian, ein passendes Jabber-Plugin.

Auf einen Blick: Jabber-Software

Bezeichnung

Betriebssystem

URL Server-Software

Server-Software

ejabberd

Cross-Platform, GPL

http://ejabberd.jabber.ru/

Wildfire

Cross-Platform, GPL

http://www.jivesoftware.org/wildfire/

jabberd

Cross-Platform, GPLa

http://jabberd.jabberstudio.org/

jabberd2

Cross-Platform, GPL

http://jabberd2.xiaoka.com/

OpenIM

Cross-Platform, BSD

http://www.open-im.net/en/

Client-Software

Gabber

Linux/Mac OS X

http://gabber.jabberstudio.org/

Gajim

BSD/ Linux/ Windows

http://www.gajim.org/

Google Talk

Windows

http://www.google.com/talk/intl/de/

JBother

Java-Client

http://www.jbother.org/

Psi

Linux/ Mac OS X/ Solaris/ Windows

http://www.psi-im.org/

Tapioca

Linux

http://tapioca-voip.sourceforge.net/wiki/index.php/Tapioca

Tkabber

Cross-Platform

http://tkabber.jabber.ru/

Für unseren Testserver benutzen wir den erprobten Jabberd in der Version 1.4.4. Zwar gibt es bereits einen kompletten Rewrite des in C geschriebenen Servers namens Jabberd2. Die Konfiguration der alten Version für ein kleines, internes IM-System ist aber weit weniger komplex und auch von unerfahrenen Admins gut zu meistern.

Server in wenigen Schritten einrichten

Das Aufsetzen des Jabber-Servers geschieht in wenigen einfachen Schritten: Paket laden, im Zielverzeichnis auspacken und installieren. Download-Quellen für verschiedene Linux-Distributionen finden Sie auf http://jabberd.jabberstudio.org/1.4/. Die einzige Datei, die Sie für die Installation eines Basissystems brauchen, ist jabberd-1.4.x.tar.gz. Sie enthält den jabberd-Kern-Server. Weitere Komponenten wie das Konferenzmodul oder die Transportschnittstelle installieren wir später.

Öffnen Sie ein Konsolenfenster und erzeugen Sie ein Directory, in das der Jabber-Server installiert werden soll, etwa /usr/local/jabber. Beachten Sie, dass dazu Root-Rechte erforderlich sind. Mit folgenden Befehlen installieren Sie jabberd:

mv /tmp/jabberd-1.4.4.tar.gz /usr/local/jabber/
cd /usr/local/jabber/
gzip -d jabberd-1.4.4.tar.gz
tar -xvf jabberd-1.4.4.tar
cd jabberd-1.4.4/
./configure
make

Wenn Clients per SSL auf den Server zugreifen sollen, müssen Sie statt ./configure den Befehl ./configure --enable-ssl angeben. Damit ist die Installation beendet.

Probelauf: Den installierten Jabber-Server testen

Nach der Installation befindet sich der kompilierte jabberd im gleichnamigen Unterverzeichnis. Ohne weitere Konfiguration können Sie den Jabber-Server bereits testweise hochfahren:

./jabberd/jabberd

Der Befehl startet den Server mit dem Default-Hostnamen des lokalen Hosts. Als Ausgabe erscheint etwa Folgendes:

20020923T02:50:26: [notice] (-internal): initializing server

Sollten Sie die Fehlermeldung unable to listen on (port) errors erhalten, stellen Sie sicher, dass kein anderer Daemon auf diesem Port läuft. netstat -ltp listet alle Network-Daemons auf.

Ein erster Funktionstest für den laufenden Server ist mit einer einfachen Telnet-Session möglich. Öffnen Sie hierfür ein Konsolenfenster und geben Sie das folgende Kommando ein:

telnet localhost 5222

Direkt im Anschluss starten Sie durch Eingabe der folgenden XML-Zeile einen neuen Jabber-Stream:

<stream:stream to='localhost' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>

Der Server sollte darauf mit dieser XML-Daten antworten:

<?xml version='1.0'?><stream:stream xmlns:stream='http://etherx.jabber.org/streams' id='3E9150C4' xmlns='jabber:client' from='localhost'>

Um den Stream zu beenden, geben Sie folgenden Befehl in die Telnet-Session ein:

</stream:stream>

Den laufenden Server stoppen Sie, indem Sie den Prozess killen oder Strg-C im jabberd-Terminal eingeben. Der Rechner antwortet dann mit

20020923T02:50:26: [notice] (-internal): shutting down server

Konfiguration und erster Start

Die Konfiguration des Jabber-Servers besteht aus kleineren Anpassungen der Konfigurationsdatei jabber.xml. Die Datei enthält eine detaillierte Beschreibung aller Schalter und Optionen. Lediglich drei Einträge sollten korrigiert werden. Dazu öffnen Sie jabber.xml mit einem Editor.

Zuerst ändern Sie den Hostnamen, damit der eigene Jabber-Server mit anderen Servern Daten austauschen kann. Tragen Sie hierfür in die Zeile

<host> <jabberd:cmdline flag= "h">
localhost </jabberd:cmdline></host>

für localhost den Namen Ihres Host-Rechners ein. Diese Änderung ist nur nötig, wenn der Server nicht ausschließlich im Intranet genutzt wird, sondern mit anderen Jabber-Servern kommunizieren soll. In diesem Fall ist der Domain-Name einzutragen.

Folgende Änderung sorgt dafür, dass der Server automatisch das Nutzerverzeichnis aktualisiert, wenn eine vCard editiert wird:

<Update><jabberd:cmdline flag="h">
localhost</jabberd:cmdline></update>

Eine vCard enthält persönlichen Informationen eines Benutzers. Sie sollte im Jabber-User-Directory JUD gespeichert werden, damit sie andere User leicht finden. Ein JUD ist somit notwendig, wenn vCards genutzt werden. Ersetzen Sie hier wieder localhost durch den Host-Namen Ihres Rechners. Brauchen Sie das Feature nicht, kommentieren Sie die Zeile mit <!-- Text --> aus.

Im dritten Schritt können Sie optional den Willkommenstext in der Zeile <welcome/> ändern und die Admin-Einträge in der Zeile <admin/>.

Nun sollten Sie noch ein Verzeichnis erstellen, in das User schreiben dürfen. Dieses wird gebraucht, um die User-Roster, die Liste mit den eingetragenen Adressen, abzuspeichern. Da Jabber die Roster im Jabber-Unterverzeichnis jabber-1.4/spool/roster-verzeichnis/ ablegt, müssen Sie ein Directory mit der Bezeichnung des Host-Namens erzeugen und mit Schreibrechten versehen. Lautet der Host-Name beispielsweise jabber.idg.de, so erstellen Sie das Verzeichnis jabber-1.4/spool/jabber.idg.de/. In dieses dürfen die Jabber-User dann schreiben. Damit ist die Basiskonfiguration abgeschlossen. Starten Sie den Server mit dem Befehl

./jabberd/jabberd -h hostname

Jabber individuell erweitern

Jabber genügt in der Basiskonfiguration den Anforderungen kleiner Unternehmen. Doch Jabber wäre nicht Jabber, wenn es nicht flexibel um zusätzliche Dienste ausbaufähig wäre. Solche Erweiterungen sind etwa das Konferenzmodul, das Jabber User Verzeichnis JUD oder die Transport-Interfaces zu anderen IM-Systemen.

Das Jabber User Directory (JUD) ist quasi das Telefonbuch der Jabber-Welt. Ein JUD ermöglicht es, nach der Jabber-Adresse eines Users zu suchen. Die zentrale Instanz des Verzeichnisses wird auf Jabber.org betrieben, doch es gibt eine Vielzahl kleinerer JUDs einzelner Server. JUDs sind natürlich auch für Unternehmen interessant, die ihre Benutzer zentral verwalten möchten. Das für die Installation notwendige Paket „jud-0.5.tar.gz“ finden Sie wieder auf jabber.org. Entpacken Sie das Paket in das Jabber-Verzeichnis mit einem anschließenden make:

gzip -d jud-0.5.tar.gz
tar -xvf jud-0.5.tar
cd jud-0.5/
make

Fügen Sie dann wieder ein neues Service-Element hinzu. localhost ist wieder entsprechend zu ersetzen:

<service id="jud">
<host>jud.localhost</host>
<load><jud>./jud/jud.so</jud></load>
<jud xmlns="jabber:config:jud">
<vCard>
<FN>Lokales Benutzer-Verzeichnis</FN>
<DESC>Dieser Dienst stellt ein
Nutzer-Verzeichnis bereit.</DESC>
<URL>http://localhost</URL>
</vCard>
</jud>
</service>

Vergessen Sie auch nicht, im Abschnitt <browse/> folgende Zeilen hinzuzufügen. Anschließend starten Sie den Server neu, um den Dienst zu aktivieren:

<service type= "jud" jid="jud.local
host" name="Localhost User Directory">
<ns>jabber:iq:search</ns>
<ns>jabber:iq:register</ns>
</service>

Jabber-Client: Beispiel PSI

Bei den Jabber-Clients ist die Anzahl verfügbarer Programme noch größer als bei den Servern. Zu den reinen Jabber-Programmen zählen PSI, Gabber und Tkabber.

Unter Linux-Usern recht beliebt ist der Client PSI, von dem es auch einen Windows-Port gibt. Das kleine Tool basiert auf der QT-Bibliothek, ist ein GPL-Projekt und in fortgeschrittenem Entwicklungsstadium. An Stabilität und Performance ist nichts zu beanstanden. Lediglich die fehlende Implementierung für Datei-Transfer ließ in der Vergangenheit Kritik zu. In der neuen Version 0.10 hat der Autor Funktionen für Datei-Übertragungen nachgeliefert. PSI ist als tar-Archiv, RPM, EXE. Mac-OS-Image und Binär-Version downloadbar. Da es sich bei PSI wie bei den anderen Clients um ein einfaches Programm handelt, dürften Installation, Konfiguration und Handhabung keine Probleme bereiten.

Verbreitet: Unter Linux-Usern recht beliebt ist der PSI-Client mit SSL- und OpenPGP-Unterstützung.

PSI nimmt nach der Installation sofort eine Verbindung zum Jabber-Server auf, sobald man in eine andere Präsenz als Offline wechselt. Das Wechseln der Präsenz wird entweder über den Präsenz-Button in der Toolbar oder über Status im Kontextmenü zum eigenen Konto durchgeführt. Eine automatische Verbindung erfolgt beim Start von PSI, wenn die entsprechende Option in der Einstellung zum Nutzerkonto aktiviert wurde. (mja)

Anhang: Allgemeine Jabber-Links auf einen Blick

Inhalt

URL

Jabber Software Foundation (JSF)

http://www.jabber.org

Jabber-Downloads

http://www.jabberstudio.org

Überblick Jabber-Server

http://www.jabber.org/software/servers.shtml

Ausführlicher Vergleich Jabber-Server

http://www.jabber.org/admin/jsc/

Überblick Jabber-Clients

http://www.jabber.org/user/clientlist.php

Informatives Jabber-Wiki

http://jabber.schwimmt.net/index.php/Hauptseite

Jabber-Glossar

http://web.amessage.info/Service/glossar

Liste öffentlicher Jabber-Server

http://www.xmpp.net/

Öffentlicher deutscher Jabber-Server

http://www.jabber.ccc.de

Öffentlicher deutscher Jabber-Server

http://web.amessage.info/