<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://kb.pocnet.net/index.php?action=history&amp;feed=atom&amp;title=Jabber-Server</id>
	<title>Jabber-Server - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://kb.pocnet.net/index.php?action=history&amp;feed=atom&amp;title=Jabber-Server"/>
	<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=Jabber-Server&amp;action=history"/>
	<updated>2026-05-04T03:36:58Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Knowledgebase</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=Jabber-Server&amp;diff=1103&amp;oldid=prev</id>
		<title>PoC: Überarbeitet</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=Jabber-Server&amp;diff=1103&amp;oldid=prev"/>
		<updated>2011-06-21T15:26:52Z</updated>

		<summary type="html">&lt;p&gt;Überarbeitet&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;In Ermangelung vernünftiger Dokumentation zum in Python geschriebenen &amp;#039;&amp;#039;&amp;#039;Jabber-Server&amp;#039;&amp;#039;&amp;#039;, sind hier mal ein paar grundlegende Tricks und Kniffe zur Inbetriebnahme und Betrieb selbst zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
Jabber ist ein Instant-Messaging-System auf Basis von XMPP (eXtensible Messagging and Presence Protocol). Die Daten &amp;#039;&amp;#039;on the wire&amp;#039;&amp;#039; verwenden ein XML-basiertes Übertragungsformat. Jabber-Clients verbinden sich zum Server über Port 5222 (c2s) oder 5223 (veraltet, SSL-only). Moderne Clients beherrschen STARTTLS über Port 5222. Clients beantragen auf einem Server einen Account und erhalten diesen automatisiert. Fortan besteht diese Jabber-Adresse in der Form &amp;#039;&amp;#039;nickname@hostname/zusatz&amp;#039;&amp;#039;.&lt;br /&gt;
* &amp;#039;&amp;#039;Nickname&amp;#039;&amp;#039; ist der gewünschte Nickname,&lt;br /&gt;
* &amp;#039;&amp;#039;Hostname&amp;#039;&amp;#039; ist entweder eine Domain oder ein Hostname, ggfs. mit passenden SRV-Records im DNS zur Dienstefindung,&lt;br /&gt;
* &amp;#039;&amp;#039;Zusatz&amp;#039;&amp;#039; ist ein benutzerdefinierbarer String, der eine Mehrfachanmeldung mit dem gleichen Nicknamen ermöglicht.&lt;br /&gt;
&lt;br /&gt;
Welche Messages welcher der gerade aktiven Clients erhält, wird über clientseitig konfigurierbare Prioritäten festgelegt.&lt;br /&gt;
&lt;br /&gt;
XMPP ermöglicht grundlegend eine serverübergreifende Kommunikation, nicht unähnlich zu SMTP (s2s), über Port 5269. Über passende DNS-SRV-Records ist es möglich, die Jabber- und Mailadresse gleich zu halten.&lt;br /&gt;
&lt;br /&gt;
Kommunikation zwischen Chatpartnern ist nur mit vorheriger Authorisierung möglich. Benutzer &amp;#039;&amp;#039;first@jabber1.de&amp;#039;&amp;#039; hat von seinem Freund dessen Jabberadresse &amp;#039;&amp;#039;second@jabber2.de&amp;#039;&amp;#039; erhalten. Nun sendet &amp;#039;&amp;#039;first@jabber1.de&amp;#039;&amp;#039; über seinen Client eine Authorisierungsanfrage an &amp;#039;&amp;#039;second@jabber2.de&amp;#039;&amp;#039;, indem er diese Adresse in sein &amp;#039;&amp;#039;Roster&amp;#039;&amp;#039;, eine servergespeicherte Kontakteliste aufnimmt. &amp;#039;&amp;#039;second@jabber2.de&amp;#039;&amp;#039; kann diese Anforderung nun bestätigen oder ablehnen. Wenn der Vorgang auch umgekehrt durchgeführt wurde, ist Kommunikation möglich &amp;lt;!-- Stimmt das? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Über diese servergespeicherte Liste (Roster) ist es möglich, Kontakte zu Organisieren oder auch zu blockieren, was einen gewissen Spamschutz darstellt.&lt;br /&gt;
&lt;br /&gt;
Eine Erweiterung des Protokolls stellt die Conferencing-Funktion dar, konzeptionell ähnlich zu den &amp;#039;&amp;#039;Channels&amp;#039;&amp;#039; im IRC.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Die Installation unter Debian-Lenny gestaltet sich recht einfach:&lt;br /&gt;
 apt-get install jabber&lt;br /&gt;
&lt;br /&gt;
Die Konfigurationsdateien liegen in &amp;#039;&amp;#039;/etc/jabber/&amp;#039;&amp;#039;. In &amp;#039;&amp;#039;jabber.cfg&amp;#039;&amp;#039; werden nur ein paar grundlegende Variablen deklariert, deren Konsistenz mit der eigentlichen Konfiguration in &amp;#039;&amp;#039;jabber.xml&amp;#039;&amp;#039; wichtig ist.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
In &amp;#039;&amp;#039;jabber.xml&amp;#039;&amp;#039; wird der Server konfiguriert. Die Datei ist sehr extensiv dokumentiert, daher werden hier nur stichpunktweise die interessanten Dinge erwähnt.&lt;br /&gt;
&lt;br /&gt;
Für die oben erwähnte Angleichung von Mail- und Jabberadresse müssen in der eigenen DNS-Zone SRV-Records hinterlegt werden, ähnlich wie die MX-Records für SMTP:&lt;br /&gt;
 _jabber._tcp                      IN      SRV     0       0       5269    jabberserver.domain.&lt;br /&gt;
 _xmpp-client._tcp                 IN      SRV     0       0       5222    jabberserver.domain.&lt;br /&gt;
 _xmpp-server._tcp                 IN      SRV     0       0       5269    jabberserver.domain.&lt;br /&gt;
&lt;br /&gt;
Der BIND aktzeptiert die Unterstriche, sofern sie in SRV-Records vorkommen.&lt;br /&gt;
&lt;br /&gt;
=== Erweiterungen ===&lt;br /&gt;
Erweiterungen werden an zwei Stellen registriert:&lt;br /&gt;
* Innerhalb der &amp;lt;nowiki&amp;gt;&amp;lt;browse&amp;gt;&amp;lt;/nowiki&amp;gt;-Sektion, das ermöglicht Clients, diese Dienste zu sehen und dem Benutzer passend zu präsentieren,&lt;br /&gt;
* In der Hauptsektion als &amp;lt;nowiki&amp;gt;&amp;lt;service&amp;gt;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Services laufen meist als externe Programme. Der Jabberd stellt dazu einen TCP-Port auf &amp;#039;&amp;#039;localhost&amp;#039;&amp;#039; bereit, der mit einem Passwort abgesichert ist. Der externe Dienst wiederum verbindet sich anhand der in seiner Konfiguration hinterlegten Angaben auf diesen Port und ermöglicht so eine Kommunikation. &lt;br /&gt;
&lt;br /&gt;
==== Jabber Conferencing ====&lt;br /&gt;
 apt-get install jabber-muc&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;/etc/default/jabber-muc&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;ENABLED=&amp;#039;0&amp;#039;&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;ENABLED=&amp;#039;1&amp;#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;/etc/jabber/jabber.xml&amp;#039;&amp;#039; (Servicebrowsing und Listener):&lt;br /&gt;
 &amp;lt;browse&amp;gt;&lt;br /&gt;
   &amp;lt;item category=&amp;quot;conference&amp;quot; type=&amp;quot;public&amp;quot; jid=&amp;quot;conference.&amp;#039;&amp;#039;jabberhostname&amp;#039;&amp;#039;&amp;quot; name=&amp;quot;Public Conferencing&amp;quot; version=&amp;quot;0.5.2&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;ns&amp;gt;jabber:iq:register&amp;lt;/ns&amp;gt;&lt;br /&gt;
     &amp;lt;ns&amp;gt;gc-1.0&amp;lt;/ns&amp;gt;&lt;br /&gt;
     &amp;lt;ns&amp;gt;&amp;lt;nowiki&amp;gt;http://jabber.org/protocol/muc&amp;lt;/nowiki&amp;gt;&amp;lt;/ns&amp;gt;&lt;br /&gt;
   &amp;lt;/item&amp;gt;&lt;br /&gt;
 &amp;lt;/browse&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;service id=&amp;quot;muclinker&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;host&amp;gt;conference.&amp;#039;&amp;#039;jabberhostname&amp;#039;&amp;#039;&amp;lt;/host&amp;gt;&lt;br /&gt;
   &amp;lt;accept&amp;gt;&lt;br /&gt;
     &amp;lt;ip&amp;gt;127.0.0.1&amp;lt;/ip&amp;gt;&lt;br /&gt;
     &amp;lt;port&amp;gt;31318&amp;lt;/port&amp;gt;&lt;br /&gt;
     &amp;lt;secret&amp;gt;ganzgeheim&amp;lt;/secret&amp;gt;&lt;br /&gt;
   &amp;lt;/accept&amp;gt;&lt;br /&gt;
 &amp;lt;/service&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;/etc/jabber/jabber-muc.xml&amp;#039;&amp;#039;:&lt;br /&gt;
 &amp;lt;jabber&amp;gt;&lt;br /&gt;
   &amp;lt;service id=&amp;quot;muclinker&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;uplink/&amp;gt;&lt;br /&gt;
     &amp;lt;connect&amp;gt;&lt;br /&gt;
       &amp;lt;ip&amp;gt;127.0.0.1&amp;lt;/ip&amp;gt;&lt;br /&gt;
       &amp;lt;port&amp;gt;31318&amp;lt;/port&amp;gt;&lt;br /&gt;
       &amp;lt;secret&amp;gt;ganzgeheim&amp;lt;/secret&amp;gt;&lt;br /&gt;
     &amp;lt;/connect&amp;gt;&lt;br /&gt;
   &amp;lt;/service&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;service id=&amp;quot;conference.&amp;#039;&amp;#039;jabberhostname&amp;#039;&amp;#039;&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;load&amp;gt;&lt;br /&gt;
       &amp;lt;conference&amp;gt;/usr/lib/jabber/mu-conference/mu-conference.so&amp;lt;/conference&amp;gt;&lt;br /&gt;
     &amp;lt;/load&amp;gt;&lt;br /&gt;
       &amp;lt;conference xmlns=&amp;quot;jabber:config:conference&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;public/&amp;gt;&lt;br /&gt;
       &amp;lt;vCard&amp;gt;&lt;br /&gt;
         &amp;lt;FN&amp;gt;Public Chatrooms&amp;lt;/FN&amp;gt;&lt;br /&gt;
         &amp;lt;DESC&amp;gt;This service is for public chatrooms.&amp;lt;/DESC&amp;gt;&lt;br /&gt;
       &amp;lt;/vCard&amp;gt;&lt;br /&gt;
       &amp;lt;history&amp;gt;20&amp;lt;/history&amp;gt;&lt;br /&gt;
       &amp;lt;logdir&amp;gt;./logs/muc/&amp;lt;/logdir&amp;gt;&lt;br /&gt;
       &amp;lt;sadmin&amp;gt;&lt;br /&gt;
         &amp;lt;user&amp;gt;poc@leela.pocnet.net&amp;lt;/user&amp;gt;&lt;br /&gt;
       &amp;lt;/sadmin&amp;gt;&lt;br /&gt;
       &amp;lt;notice&amp;gt;&lt;br /&gt;
         &amp;lt;join&amp;gt;has become available&amp;lt;/join&amp;gt;&lt;br /&gt;
         &amp;lt;leave&amp;gt;has left&amp;lt;/leave&amp;gt;&lt;br /&gt;
         &amp;lt;rename&amp;gt;is now known as&amp;lt;/rename&amp;gt;&lt;br /&gt;
       &amp;lt;/notice&amp;gt;&lt;br /&gt;
     &amp;lt;/conference&amp;gt;&lt;br /&gt;
   &amp;lt;/service&amp;gt;&lt;br /&gt;
   &amp;lt;pidfile&amp;gt;/var/run/jabber/jabber-muc.pid&amp;lt;/pidfile&amp;gt;&lt;br /&gt;
 &amp;lt;/jabber&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach einem Neustart des Jabber-Servers steht der Dienst zu Verfügung.&lt;br /&gt;
&lt;br /&gt;
Falls dieser Dienst offiziell zugänglich sein soll, muss im DNS ein entsprechender Eintrag vorhanden sein:&lt;br /&gt;
 conference._jabber._tcp            IN      SRV     0       0       5269    jabberserver.domain.&lt;br /&gt;
 conference._xmpp-client._tcp       IN      SRV     0       0       5222    jabberserver.domain.&lt;br /&gt;
 conference._xmpp-server._tcp       IN      SRV     0       0       5222    jabberserver.domain.&lt;br /&gt;
&lt;br /&gt;
===== Verwendung =====&lt;br /&gt;
Mit der &amp;#039;&amp;#039;Gehe zu Chat&amp;#039;&amp;#039;-Funktion des jeweiligen Messengers kann ein Raum neu eingerichtet oder auch betreten werden (sofern die bei der initialen Einrichtung gesetzten Zugriffsrechte das zulassen).&lt;br /&gt;
&lt;br /&gt;
==== Jabber ↔ IRC-Bridge ====&lt;br /&gt;
* Software [http://jjigw.jajcus.net/ jjigw] (braucht Python),&lt;br /&gt;
* Auspacken in &amp;#039;&amp;#039;/usr/local/&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;/etc/jabber/jabber.xml&amp;#039;&amp;#039; (Servicebrowsing und Listener):&lt;br /&gt;
 &amp;lt;service type=&amp;quot;irc&amp;quot; jid=&amp;quot;irc.&amp;#039;&amp;#039;jabberhostname&amp;#039;&amp;#039;&amp;quot; name=&amp;quot;IRC Gateway&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;ns&amp;gt;jabber:iq:gateway&amp;lt;/ns&amp;gt;&lt;br /&gt;
 &amp;lt;/service&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;service id=&amp;quot;irc.&amp;#039;&amp;#039;jabberhostname&amp;#039;&amp;#039;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;irc.&amp;#039;&amp;#039;jabberhostname&amp;#039;&amp;#039;&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;accept&amp;gt;&lt;br /&gt;
      &amp;lt;ip&amp;gt;127.0.0.1&amp;lt;/ip&amp;gt;&lt;br /&gt;
      &amp;lt;port&amp;gt;9426&amp;lt;/port&amp;gt;&lt;br /&gt;
      &amp;lt;secret&amp;gt;verygeheim&amp;lt;/secret&amp;gt;&lt;br /&gt;
      &amp;lt;timeout&amp;gt;30&amp;lt;/timeout&amp;gt;&lt;br /&gt;
    &amp;lt;/accept&amp;gt;&lt;br /&gt;
  &amp;lt;/service&amp;gt;&lt;br /&gt;
: Dies öffnet einen TCP-Listener für den externen &amp;#039;&amp;#039;jjigw&amp;#039;&amp;#039;-Prozess.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cp /usr/local/jjigw/jjigw.xml.example /etc/jabber/jjigw.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;/etc/jabber/jjigw.xml&amp;#039;&amp;#039;:&lt;br /&gt;
 &amp;lt;connect&amp;gt;&lt;br /&gt;
   &amp;lt;host&amp;gt;127.0.0.1&amp;lt;/host&amp;gt;&lt;br /&gt;
   &amp;lt;port&amp;gt;9426&amp;lt;/port&amp;gt;&lt;br /&gt;
   &amp;lt;secret&amp;gt;verygeheim&amp;lt;/secret&amp;gt;&lt;br /&gt;
 &amp;lt;/connect&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;network jid=&amp;quot;irc.&amp;#039;&amp;#039;jabberhostname&amp;#039;&amp;#039;&amp;quot; encoding=&amp;quot;iso-8859-15&amp;quot; nicks_8bit=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;server&amp;gt;localhost&amp;lt;/server&amp;gt;&lt;br /&gt;
 &amp;lt;/network&amp;gt;&lt;br /&gt;
: Dies instruiert &amp;#039;&amp;#039;jjigw&amp;#039;&amp;#039;, sich auf den IRC-Server auf &amp;#039;&amp;#039;localhost&amp;#039;&amp;#039;, Port 6667 zu verbinden (Portangabe ist hartkodiert) und als Zeichenübersetzungstabelle so-8859-15 zu verwenden. Ebenso sind 8-Bit-Nicknamen erlaubt.&amp;lt;br&amp;gt;&lt;br /&gt;
: Die jid muss mit Hostnamen und jid in &amp;#039;&amp;#039;jabber.xml&amp;#039;&amp;#039; konsistent sein.&lt;br /&gt;
&lt;br /&gt;
* Startscript in &amp;#039;&amp;#039;/etc/jabber/jabber.d/jjigw&amp;#039;&amp;#039; anlegen, Vorlage z.&amp;amp;nbsp;B. von &amp;#039;&amp;#039;jabber-muc&amp;#039;&amp;#039; abwandeln (unbedingt &amp;#039;&amp;#039;chdir&amp;#039;&amp;#039; aufnehmen!), notwendige Änderungen:&lt;br /&gt;
 DAEMON=/usr/local/jjigw/jjigw.py&lt;br /&gt;
 NAME=jjigw&lt;br /&gt;
 DESC=jjigw&lt;br /&gt;
 CMDLINE=&lt;br /&gt;
 ENABLED=&amp;#039;1&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 start-stop-daemon -b -c jabber:adm --start --quiet --pidfile $PID \&lt;br /&gt;
        --chdir `dirname $DAEMON` --exec $DAEMON -- $CMDLINE&lt;br /&gt;
&lt;br /&gt;
* Konfigurationsdatei verlinken (muss im selben Verzeichnis wie &amp;#039;&amp;#039;jjigw&amp;#039;&amp;#039; liegen):&lt;br /&gt;
 ln -s /etc/jabber/jjigw.xml /usr/local/jjigw/&lt;br /&gt;
&lt;br /&gt;
Falls der Service von aussen nutzbar sein soll, gilt das gleiche wie weiter oben für das Conferencing-Modul gesagte.&lt;br /&gt;
&lt;br /&gt;
===== Verwendung =====&lt;br /&gt;
Grundlegend taucht alle Kommunikation über IRC als Subhost &amp;#039;&amp;#039;irc.jabberhostname&amp;#039;&amp;#039; über dem eigentlichen Jabberhost auf, wie aus der Konfiguration weiter oben ersichtlich.&lt;br /&gt;
&lt;br /&gt;
Ein Jabber-Benutzer wird &amp;#039;&amp;#039;&amp;#039;nur dann&amp;#039;&amp;#039;&amp;#039; ins IRC-Netz herüber exportiert, sofern er mindestens einen IRC-Channel betreten hat; dann taucht er als normaler IRC-Benutzer auf. Er muss aber IRC-serverweit den gleichen Nicknamen verwenden.&amp;lt;ref&amp;gt;Das ist eine Limitierung des IRC-Protokolles.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Aus Messenger-Sicht:&lt;br /&gt;
** Ansprechen von IRC-Usern über &amp;#039;&amp;#039;user@irc.jabberhostname&amp;#039;&amp;#039; nach Aufnahme ins Roster,&lt;br /&gt;
*** Authorisierung zum Chatten wird nicht benötigt.&amp;lt;ref&amp;gt;Auch das ist eine Limitierung des IRC-Protokolles.&amp;lt;/ref&amp;gt;&lt;br /&gt;
** Chatten in Channels über die Conferencing-Funktion des Messengers (Beispiel: Betreten des IRC-Channels &amp;#039;&amp;#039;#test&amp;#039;&amp;#039; mit dem Nicknamen &amp;#039;&amp;#039;jbtest&amp;#039;&amp;#039;):&lt;br /&gt;
*** Raumname: &amp;#039;&amp;#039;#test&amp;#039;&amp;#039;&lt;br /&gt;
*** Server: &amp;#039;&amp;#039;irc.jabberhostname&amp;#039;&amp;#039;&lt;br /&gt;
*** Handle: &amp;#039;&amp;#039;jbtest&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Aus IRC-Sicht:&lt;br /&gt;
** &amp;lt;code&amp;gt;/msg&amp;lt;/code&amp;gt; an den verwendeten Nicknamen werden auf Chats auf Jabberseite umgesetzt,&lt;br /&gt;
*** Chatten ist ohne Authorisierung möglich (aka, der IRC-Benutzer muss nicht erst zum Roster hinzugefügt werden).&lt;br /&gt;
** Jabber-User tauchen als normale IRC-Benutzer in Channels auf und können an den Chats teilnehmen.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* Wikipedia: Artikel zu [http://de.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol XMPP]&lt;br /&gt;
* Wikipedia: Artikel zu [http://de.wikipedia.org/wiki/XMPP-Transport XMPP-Transport]&lt;br /&gt;
* Wikipedia: Artikel zu [http://de.wikipedia.org/wiki/Multi-User_Chat Multi-User Chat]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Internet]]&lt;br /&gt;
[[Kategorie:Netzwerk]]&lt;br /&gt;
[[Kategorie:Protokoll]]&lt;br /&gt;
[[Kategorie:Software]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
</feed>