Vor einigen Tagen habe ich mich dazu entschlossen einen Jabber-Server für mich aufzusetzen um von mehren Laptops aus meinen ICQ-Account gleichzeitig nutzen zu können. Dankbarerweise haben sich auch schon meine Kumpel teilweise dran gemacht, Jabber zu installieren, wodurch vielleicht eines Tages auch direkte Jabber-Kommunikation mit einigen Kumpels genutzt werden kann. Dieses Tutorial beschränkt sich auf die Installation des Jabberservers “jabberd2” unter Gentoo, der ICQ-Transport wird ein weiterer Eintrag sein.

Los gehts mit der Installation des Servers. Da leider das Paket in der Version 2.2.4 zum Zeitpunkt der Erstellung dieses Tutorials noch nicht als “stable” deklariert wurde, muss es erstmal “freigeschalten” werden. udns wird vom Server benötigt und ist nicht in der benötigen Version stable.

1
2
3
echo "net-im/jabberd2 ~x86" >> /etc/portage/package.keywords
echo "net-libs/udns ~x86" >> /etc/portage/package.keywords
echo "net-libs/libgsasl ~x86" >> /etc/portage/package.keywords

Jetzt muss man sich entscheiden, wo die Daten abgelegt werden. Ich habe mich für eine mysql-Datenbank entschieden, daher muss ich noch das entsprechende USE-Flag für das Paket festlegen (gleichzeitig habe ich die Authentifizierung per PAM entfernt, da ich diese nicht nutze):

1
echo "net-im/jabberd2 -pam mysql -pam" >> /etc/portage/package.use

Und die Installation:

1
emerge -av net-im/jabberd2

Nach der Installation muss die Datenbank und der entsprechende Nutzer erstellt werden. Dazu brauchen wir zunächst das Setup-Script, dieses wurde unter Gentoo komprimiert abgelegt. Dann loggen wir uns in den Administrationskonsole für MySQL für ein:

1
2
bzcat /usr/share/doc/jabberd2-2.2.4/tools/db-setup.mysql.bz2 > ./db-setup.mysql
mysql -u root -p

Jetzt befindet man sich in der MySQL-Ebene, bitte bei der Usererstellung YOURPASSWORD durch das gewünschte Passwort austauschen. Wenn auch ein anderer Nutzername verwendet werden soll, bitte selbstständig im Tutorial ändern:

1
2
3
4
\. db-setup.mysql
GRANT select,insert,delete,update ON jabberd2.* to jabberd2@localhost IDENTIFIED by 'YOURPASSWORD';
FLUSH PRIVILEGES;
EXIT;

Damit wurde eine Datenbank “jabberd2” und ein Nutzer “jabberd2” erzeugt. (Die Datenbank-Datei kann man nun auch wieder löschen: rm ./db-setup.mysql)

Weiter gehts mit der Konfiguration. Zuerst editieren wir /etc/jabber/s2s.xml: In Zeile 17 & 18 müssen jabberd und secret durch eine beliebige Kombination ausgetauscht werden, der einfachheit halber habe ich dies für dieses Tutorial auf den User “j4bb3rd2” und das Passwort “s3cr3t” abgeändert, diese sind jedoch sehr unsicher und auf gar keinen Fall zu empfehlen! Diese Daten dienen zur Authentifizierung des Server-To-Server-Moduls am internen Router.

1
2
     <user>j4bb3rd2</user>          <!-- default: jabberd -->
     <pass>s3cr3t</pass>           <!-- default: secret -->

Ab Zeile 63 habe ich den Logging-Mechanismus auf “file” umgestellt, da das Logging des Jabber-Servers nichts im Syslog zu suchen hat:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
  <!-- Log configuration - type is "syslog", "file" or "stdout" -->
  <log type='file'>
    <!-- If logging to syslog, this is the log ident -->
    <!-- <ident>jabberd/s2s</ident>-->

    <!-- If logging to syslog, this is the log facility
         (local0 - local7)                        [default: local3] -->
    <!-- <facility>local3</facility>-->

    <!-- if logging to file, this is the filename of the logfile -->
    <file>/var/log/jabber/s2s.log</file>
  </log>

Weiter gehts mit der /etc/jabber/sm.xml: In Zeile 6 muss der Servername eingetragen werden, was bei mir beispielsweise so aussieht:

1
   <id>wolf-u.li</id>

In Zeile 19 & 20 muss wie oben der Nutzername und das Passwort eingetragen werden.

1
2
     <user>j4bb3rd2</user>          <!-- default: jabberd -->
     <pass>s3cr3t</pass>           <!-- default: secret -->

Das Logging wurde ab Zeile 55 natürlich wieder umgestellt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
  <log type='file'>
    <!-- If logging to syslog, this is the log ident -->
    <!-- <ident>jabberd/sm</ident>-->

    <!-- If logging to syslog, this is the log facility
         (local0 - local7)                        [default: local3] -->
    <!-- <facility>local3</facility>-->

    <!-- If logging to file, this is the filename of the logfile -->
    <file>/var/log/jabber/sm.log</file>
  </log>

Nun muss noch der Datenbanktreiber eingerichtet werden. Zeile 75:

1
    <driver>mysql</driver>

Dann muss man noch die Daten ab Zeile 101 mit den Daten von oben modifizieren:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
    <!-- MySQL driver configuration -->
    <mysql>
      <!-- Database server host and port -->
      <host>localhost</host>
      <port>3306</port>

      <!-- Database name -->
      <dbname>jabberd2</dbname>

      <!-- Database username and password -->
      <user>jabberd2</user>
      <pass>YOURPASSWORD</pass>

      <!-- Transacation support. If this is commented out, transactions
           will be disabled. This might make database accesses faster,
           but data may be lost if jabberd crashes.

           This will need to be disabled if you are using a MySQL
           earlier than v3.23.xx, as transaction support did not appear
           until this version. -->
      <transactions/>
    </mysql>

Weiter gehts mit der /etc/jabber/router.xml:

Ab Zeile 10 wie immer den Logstatus umstellen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
  <!-- Log configuration - type is "syslog", "file" or "stdout" -->
  <log type='file'>
    <!-- If logging to syslog, this is the log ident -->
    <!-- <ident>jabberd/router</ident>-->

    <!-- If logging to syslog, this is the log facility
         (local0 - local7)                        [default: local3] -->
    <!-- <facility>local3</facility>-->

    <!-- If logging to file, this is the filename of the logfile -->
    <file>/var/log/jabber/router.log</file>
  </log>

In Zeile 43 tauschen wir das secret durch das von oben (“s3cr3t”) aus:

1
    <secret>s3cr3t</secret>

In Zeile 169 muss dann der Nutzer durch den von oben (“j4bb3rd2”) noch ausgetauscht werden:

1
      <user>j4bb3rd2</user>

Weiter gehts mit der /etc/jabber/router-user.xml: Umstellung auf den Nutzer “j4bb3rd2” mit dem Passwort “s3cr3t” von oben:

1
2
3
4
5
6
<users>
  <user>
    <name>j4bb3rd</name>
    <secret>pOy4taCqd5fD</secret>
  </user>
</users>

Weiter gehts mit der /etc/jabber/c2s.xml: Zeile 17 & 18 muss wieder die Nutzer/Passwortkombination ausgetauscht werden:

1
2
     <user>j4bb3rd2</user>          <!-- default: jabberd -->
     <pass>s3cr3t</pass>           <!-- default: secret -->

Wie immer wird auch das Logging ab Zeile 53 umgestellt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
  <log type='file'>
    <!-- If logging to syslog, this is the log ident -->
    <!--<ident>jabberd/c2s</ident>-->

    <!-- If logging to syslog, this is the log facility
         (local0 - local7)                        [default: local3] -->
    <!--<facility>local3</facility>-->

    <!-- If logging to file, this is the filename of the logfile -->
    <file>/var/log/jabber/c2s.log</file>
  </log>

In Zeile 123 muss der entsprechende Servername (der gleiche, wie oben schon mal in der sm.xml eingegeben wurde) eingetragen werden, was bei mir so aussieht:

1
 <id register-enable='true'>wolf-u.li</id>

Ab Zeile 372 müssen natürlich wieder die MySQL-Daten rein. Gleichzeitig kann man dort auf verschlüsselte Passwörter umstellen, was meines Erachtens nicht ungeschickt ist, wenn man kein SASL nutzt (Im Beispiel nicht umgestellt, da ich SASL nutze):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    <mysql>
      <!-- Database server host and port -->
      <host>localhost</host>
      <port>3306</port>

      <!-- Database name -->
      <dbname>jabberd2</dbname>

      <!-- Database username and password -->
      <user>jabberd2</user>
      <pass>YOURPASSWORD</pass>

      <!-- Passwords in DB may be stored in plain or hashed format -->
      <!-- NOTE: If you are using hashed passwords, the only auth
                 method that will work is PLAIN.
                 Make sure that you disabled others in 'mechanisms'
                 sections of the config file. -->
      <password_type>
        <!-- only one may be enabled here -->
        <plaintext/>
        <!-- use crypt(3)ed passwords
        <crypt/>
        -->
      </password_type>
    </mysql>

Mit diesen Konfigurationen ist der Server startklar. Mittels:

1
/etc/init.d/jabberd start

kann man den Server starten. Wenn der Vorgang fehlschlägt, muss man die Logfiles unter /var/log/jabber/ konsultieren.

Jetzt kann man sich am Server mal registrieren. Als Client kann man dazu beliebige verwenden, ich hatte mir Gajim  angelacht, den es sowohl für Windows als auch für Linux gibt. Nachdem ich mich an meinem Server registriert hatte, habe ich die Registrierung abgestellt (I am the one and only :P), dafür aber das Ändern des Passwortes freigeschalten. Dazu habe ich die Datei /etc/jabber/c2s.xml editiert und in Zeile 123 folgendes eingetragen:

1
<id password-change='true' pemfile='/etc/jabber/server.pem'>wolf-u.li</id>

Um den Jabber-Server immer beim Systemstart mitzustarten:

1
rc-update add jabberd default

Dann habe ich mich dem ICQ-Transport  gewidmet, der sehr schnell am laufen war ;)