Ejabberd: Unterschied zwischen den Versionen
bug gefixt |
Dirk (Diskussion | Beiträge) K Verschiebung community -> extra |
||
(34 dazwischenliegende Versionen von 11 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{ | {{veraltet}} | ||
{{SEITENTITEL:ejabberd}}{{righttoc}}XMPP ist eine von der IETF standardisierte Sammlung diverser XML-basierender Netzwerkprotokolle, die ein erweiterbares Messaging- und Anwesenheitsprotokoll darstellen. | |||
Anders als die meisten anderen Messaging-Dienste ist XMPP dezentral aufgebaut. Die nötige Server-Software sowie das Protokoll um einen XMPP-Server zu betreiben sind ebenfalls frei verfügbar. So steht jedem Anwender die Möglichkeit offen, selbst einen XMPP-Server aufzusetzen. | |||
XMPP eignet sich daher nicht nur, um großen, öffentlichen Nutzergruppen eine Möglichkeit der Kommunikation zu bieten, sondern auch, um im kleinen Rahmen schnell und einfach, und ohne große Hürden (XMPP-Clients sind für alle gängigen Architekturen und Systeme verfügbar) eine Kommunikationsmöglichkeit bereitzustellen. | |||
{{installation | |||
|repo=extra | |||
|paket=ejabberd}} | |||
Nach der Installation sollte der Service noch mittels {{ic|systemctl enable ejabberd}} für den automatischen Start markiert werden. Allerdings sollte man vor dem ersten Start noch einiges anpassen und konfigurieren, und das System ein mal in einem Live-Modus testen. | |||
Nach der Installation | |||
== Erster Start == | == Erster Start == | ||
Vor der Inbetriebnahme des | Vor der Inbetriebnahme des XMPP-Servers sollte dieser konfiguriert werden. Alle Einstellungen werden in der Datei {{ic|/etc/ejabberd/ejabberd.cfg}} vorgenommen. Änderungen an dieser Datei bedürfen eines Neustarts des Services. | ||
=== Aufbau der Datei === | === Aufbau der Datei === | ||
[[Bild:Ejabberd_vi_config.png|thumb|[[vi(m)|vi]] zeigt die Konfigurationsdatei an, Abschnitt | [[Bild:Ejabberd_vi_config.png|thumb|[[vi(m)|vi]] zeigt die Konfigurationsdatei an, Abschnitt {{ic|MODULES}}]] | ||
Die Datei hat eine für viele User vielleicht etwas ungewöhnliche Syntax. | Die Datei hat eine für viele User vielleicht etwas ungewöhnliche Syntax. | ||
Zeile 45: | Zeile 43: | ||
]}. | ]}. | ||
In der ejabberd-Konfigurationsdatei ist vor allem die letzte Form stark vertreten. In der Konfigurationsdatei werden Kommentare mit | In der ejabberd-Konfigurationsdatei ist vor allem die letzte Form stark vertreten. In der Konfigurationsdatei werden Kommentare mit {{ic|%%}} oder {{ic|%%%}} versehen, was hier aber ignoriert werden kann. | ||
Die Datei ist intern durch ausführliche Kommentierung in verschiedene Abschnitte unterteilt und gut dokumentiert. | Die Datei ist intern durch ausführliche Kommentierung in verschiedene Abschnitte unterteilt und gut dokumentiert. | ||
== Konfiguration == | == Konfiguration == | ||
Vor dem ersten Start von ejabberd müssen noch einige Dinge angepasst werden. Zum Beispiel wurde noch kein Administrations-User angelegt, und der Hostname wurde zudem auch noch nicht definiert. Es wird hier nur die Grundkonfiguration mit nur einem einzigen Server (in der | Vor dem ersten Start von ejabberd müssen noch einige Dinge angepasst werden. Zum Beispiel wurde noch kein Administrations-User angelegt, und der Hostname wurde zudem auch noch nicht definiert. Es wird hier nur die Grundkonfiguration mit nur einem einzigen Server (in der XMPP-Terminologie {{ic|Node}}) beschrieben. Dinge, auf die nicht eingegangen wird, können so belassen werden. | ||
=== Hostname === | === Hostname === | ||
ejabberd ist in der Lage, mehrere Hostnamen anzubieten. Allerdings muss der Rechner, auf dem ejabberd läuft, per DNS über den Hostnamen erreichbar sein, damit man diesen auch zum Anmelden nutzen kann. | ejabberd ist in der Lage, mehrere Hostnamen anzubieten. Allerdings muss der Rechner, auf dem ejabberd läuft, per DNS über den Hostnamen erreichbar sein, damit man diesen auch zum Anmelden nutzen kann. | ||
In kleineren Umgebungen, die | In kleineren Umgebungen, die XMPP ausschließlich im LAN anbieten, ist es ausreichend, den LAN-Hostnamen zu verwenden. Sobald der Server aber auch von außen erreichbar sein soll, ist es ratsam, einen vollständigen Domain-Namen zu verwenden. | ||
Die Hostnamen, mittels derer man sich am | Die Hostnamen, mittels derer man sich am XMPP-Server anmelden kann werden im Abschnitt {{ic|SERVED HOSTNAMES}} in der Konfigurationsdatei definiert. | ||
{hosts, [" | {hosts, ["xmpp", "xmpp.example.org"]}. | ||
In diesem Fall werden zwei Hostnamen, | In diesem Fall werden zwei Hostnamen, {{ic|xmpp}}, und {{ic|jabber.example.org}} definiert. Es können am Server mit beiden Hostnamen Accounts registriert werden. Mit {{ic|jabber}}-Accounts kann man sich allerdings nicht an {{ic|jabber.example.org}}-Accounts anmelden, und umgekehrt. | ||
Der Einfachkeit halber ist es also sinnvoller, ejabberd nur einen Hostnamen anbieten zu lassen, allerdings muss dieser auch als Liste deklariert übergeben werden. | Der Einfachkeit halber ist es also sinnvoller, ejabberd nur einen Hostnamen anbieten zu lassen, allerdings muss dieser auch als Liste deklariert übergeben werden. | ||
{hosts, [" | {hosts, ["xmpp.example.org"]}. | ||
So wird von ejabberd nur der FQDN angeboten. Verwirrungen durch verschiedene Hostnamen sind dadurch nicht mehr möglich. Zudem vereinfacht dies die Konfiguration. | So wird von ejabberd nur der FQDN angeboten. Verwirrungen durch verschiedene Hostnamen sind dadurch nicht mehr möglich. Zudem vereinfacht dies die Konfiguration. | ||
=== Nutzer-Registrierung === | === Nutzer-Registrierung === | ||
Über diese Option | Über diese Option {{ic|auth_method}} im Abschnitt {{ic|AUTHENTIFICATION}} wird definiert, ob das interne Datenbanksystem (Mnesia), oder ein anderes verwendet werden soll. Zur Wahl stehen hier ein externes Script, eine beliebige Datenbank (ODBC), MySQL, PostreSQL, PAM oder LDAP. | ||
PAM oder LDAP können direkt in diesem Abschnitt konfiguriert werden, ODBC benötigt die Konfiguration der Datenbank im darauffolgenden Abschnitt. Es können voreingestellt MySQL oder PostgreSQL verwendet werden. Allerdings unterstützt ejabberd jede ODBC-Kompatible Datenbank. | PAM oder LDAP können direkt in diesem Abschnitt konfiguriert werden, ODBC benötigt die Konfiguration der Datenbank im darauffolgenden Abschnitt. Es können voreingestellt MySQL oder PostgreSQL verwendet werden. Allerdings unterstützt ejabberd jede ODBC-Kompatible Datenbank. | ||
Zeile 76: | Zeile 74: | ||
{auth_method, internal}. | {auth_method, internal}. | ||
Wenn nichts elementar Wichtiges | Wenn nichts elementar Wichtiges dagegen spricht, sollte der ejabberd-internen Nutzerverwaltung der Vorzug gegeben werden. Hier können mehrere hundert User verwaltet werden, und die Datenbank arbeitet dennoch performant. | ||
==== Einschränkung der Registrierung ==== | ==== Einschränkung der Registrierung ==== | ||
Wenn man einen festen Benutzerkreis hat, möchte man eventuell nicht, dass sich jeder beliebige Nutzer am Server registrieren kann, auch wenn der Server im Internet verfügbar sein sollte. | Wenn man einen festen Benutzerkreis hat, möchte man eventuell nicht, dass sich jeder beliebige Nutzer am Server registrieren kann, auch wenn der Server im Internet verfügbar sein sollte. | ||
Im Abschnitt | Im Abschnitt {{ic|ACCESS RULES}} kann definiert werden, dass die externe Nutzer-Registrierung nicht möglich ist. So kann nur der Administrator einen Nutzer anlegen. | ||
{access, register, [{deny, all}]}. | {access, register, [{deny, all}]}. | ||
Zeile 88: | Zeile 86: | ||
=== Administrator === | === Administrator === | ||
Der erste Administrations-User ist der einzige User, der händisch in der Konfigurationsdatei angelegt wird. Dieser User besitzt alle Rechte, vergleichbar mit root. Es können allerdings beliebig viele „root“-User angelegt werden. Konfiguriert wird der Administrations-Account im Abschnitt | Der erste Administrations-User ist der einzige User, der händisch in der Konfigurationsdatei angelegt wird. Dieser User besitzt alle Rechte, vergleichbar mit root. Es können allerdings beliebig viele „root“-User angelegt werden. Konfiguriert wird der Administrations-Account im Abschnitt {{ic|ACCESS CONTROL LISTS}}. | ||
{acl, admin, {user, "root", " | {acl, admin, {user, "root", "xmpp.example.org"}}. | ||
Der so definierte User mit der User-ID | Der so definierte User mit der User-ID {{ic|root}} am Server {{ic|xmpp.example.org}} verfügt somit über alle Rechte. Allerdings wurde der User noch nicht angelegt und verfügt noch über kein Passwort. | ||
Darauf, wie ein User angelegt wird, wird später in diesem Artikel eingegangen. | Darauf, wie ein User angelegt wird, wird später in diesem Artikel eingegangen. | ||
=== Serversprache === | === Serversprache === | ||
Wenn man einen internationalen Server betreibt, ist englisch natürlich die erste Wahl, was die Statusmeldungen des Servers betrifft, wenn man hingegen einen rein von deutschsprachigen Nutzern verwendeten Server betreibt, kann man die Sprache natürlich auf deutsch stellen. Dies geschieht im Abschnitt | Wenn man einen internationalen Server betreibt, ist englisch natürlich die erste Wahl, was die Statusmeldungen des Servers betrifft, wenn man hingegen einen rein von deutschsprachigen Nutzern verwendeten Server betreibt, kann man die Sprache natürlich auf deutsch stellen. Dies geschieht im Abschnitt {{ic|DEFAULT LANGUAGE}} | ||
{language "de"}. | {language "de"}. | ||
Zeile 104: | Zeile 102: | ||
=== Module === | === Module === | ||
Über Module kann der | Über Module kann der XMPP-Server um Funktionen erweitert werden. Module werden im Abschnitt {{ic|MODULES}} geladen und konfiguriert. | ||
==== Mehrbenutzer-Chat==== | ==== Mehrbenutzer-Chat==== | ||
Das standardmäßig aktivierte Modul | Das standardmäßig aktivierte Modul {{ic|mod_muc}} erlaubt Mehrbenutzer-Chaträume auf dem Server. Standardmäßig ist der Hostname hierfür {{ic|conference.HOST}}, wobei {{ic|HOST}} der Hostname ist. Wem dies nicht zusagt, kann das anpassen. | ||
{mod_muc, [ | {mod_muc, [ | ||
Zeile 117: | Zeile 115: | ||
]}, | ]}, | ||
Hier wird der Mehrbenutzer-Chat-Host auf | Hier wird der Mehrbenutzer-Chat-Host auf {{ic|chat.@HOST@}} gesetzt, {{ic|@HOST@}} wird durch ejabberd selbständig durch {{ic|jabber.example.org}} ersetzt. Diese Angabe bedarf keiner weiteren Konfiguration, da ejabberd sich selbständig um die Auflösung der Second-(bzw. Third-)Level-Domain kümmert. | ||
==== Willkommens-Nachricht ==== | ==== Willkommens-Nachricht ==== | ||
Wenn man die User-Registrierung nicht deaktiviert hat, und sich ein neuer Benutzer am Server anmeldet, ist es möglich, diesem Nutzer per Server-Nachricht eine Meldung zukommen zu lassen, und jemanden darüber zu informieren, dass ein User-Account registriert wurde. Dies wird über das Modul | Wenn man die User-Registrierung nicht deaktiviert hat, und sich ein neuer Benutzer am Server anmeldet, ist es möglich, diesem Nutzer per Server-Nachricht eine Meldung zukommen zu lassen, und jemanden darüber zu informieren, dass ein User-Account registriert wurde. Dies wird über das Modul {{ic|mod_register}} konfiguriert. | ||
{mod_register, [ | {mod_register, [ | ||
{welcome_message, {"Hallo!", | {welcome_message, {"Hallo!", | ||
"Willkommen auf diesem | "Willkommen auf diesem XMPP-Server!", | ||
"Immer schön artig bleiben!"}} | "Immer schön artig bleiben!"}} | ||
{registration_watchers, ["regadmin@ | {registration_watchers, ["regadmin@xmpp.example.org", | ||
"admin2@ | "admin2@xmpp.example.org"]}, | ||
Über diese Konfiguration wird jedem neu registrierten User bei erster Anmeldung eine Nachricht geschickt. | Über diese Konfiguration wird jedem neu registrierten User bei erster Anmeldung eine Nachricht geschickt. | ||
Hallo! | Hallo! | ||
Willkommen auf diesem | Willkommen auf diesem XMPP-Server | ||
Immer schön artig bleiben! | Immer schön artig bleiben! | ||
Zusätzlich werden | Zusätzlich werden {{ic|regadmin@xmpp.example.org}} und {{ic|admin2@jabber.example.org}} per Nachricht darüber informiert, dass ein neuer User-Account registriert wurde. Diese User müssen dafür natürlich existieren | ||
==== Verteilte Kontaktliste ==== | ==== Verteilte Kontaktliste ==== | ||
Damit man sich in Netzwerken nicht selbst darum kümmern muss, ob und wie alle Nutzer die weiteren User-Accounts auf dem Server in ihre Kontaktliste eintragen, gibt es eine Funktion, die sich „Shared Roster“ oder „Autoroster“ nennt. („Roster“, engl.: Mitgliedsverzeichnis). Diese Funktion wird über das Modul | Damit man sich in Netzwerken nicht selbst darum kümmern muss, ob und wie alle Nutzer die weiteren User-Accounts auf dem Server in ihre Kontaktliste eintragen, gibt es eine Funktion, die sich „Shared Roster“ oder „Autoroster“ nennt. („Roster“, engl.: Mitgliedsverzeichnis). Diese Funktion wird über das Modul {{ic|mod_shared_roster}} verfügbar gemacht. | ||
Wenn dieses Modul aktiviert (sprich: nicht auskommentiert) ist, ist es möglich, zu definieren, dass die Kontaktliste allen angemeldeten Mitgliedern automatisch zur Verfügung gestellt wird. So haben Nutzer, die sich erstmalig anmelden, sofort alle weiteren registrierten User-Accounts in ihrer Kontaktliste, ohne, dass sie diese manuell hinzufügen müssen. | Wenn dieses Modul aktiviert (sprich: nicht auskommentiert) ist, ist es möglich, zu definieren, dass die Kontaktliste allen angemeldeten Mitgliedern automatisch zur Verfügung gestellt wird. So haben Nutzer, die sich erstmalig anmelden, sofort alle weiteren registrierten User-Accounts in ihrer Kontaktliste, ohne, dass sie diese manuell hinzufügen müssen. | ||
Zeile 149: | Zeile 147: | ||
ejabberdctl live | ejabberdctl live | ||
Hiermit wird ein Live-Start ausgeführt. Alle Meldungen des Servers werden direkt auf der Konsole ausgegeben. Es wird vorerst allerdings ein Warntext ausgegeben, an den man sich halten sollte. Wenn man sich komplett „verrant“ haben sollte, oder den Test beenden will, einfach zweimal Strg+C drücken. | Hiermit wird ein Live-Start ausgeführt. Alle Meldungen des Servers werden direkt auf der Konsole ausgegeben. Es wird vorerst allerdings ein Warntext ausgegeben, an den man sich halten sollte. Wenn man sich komplett „verrant“ haben sollte, oder den Test beenden will, einfach zweimal {{Taste|Strg}}+{{Taste|C}} drücken. | ||
Nach dem Druck einer beliebigen | Nach dem Druck einer beliebigen Taste laufen viele Statusmeldungen durch das Terminal. Wenn am Ende der Statusmeldungen … | ||
=PROGRESS REPORT==== 29-Apr-2009::12:04:39 === | =PROGRESS REPORT==== 29-Apr-2009::12:04:39 === | ||
Zeile 159: | Zeile 157: | ||
… steht (Datum variiert natürlich), wurde der Server erfolgreich gestartet. Dies kann zudem auch mittels [[nmap]] auf den Host überprüft werden. | … steht (Datum variiert natürlich), wurde der Server erfolgreich gestartet. Dies kann zudem auch mittels [[nmap]] auf den Host überprüft werden. | ||
{{hc|nmap xmpp.example.org|[…] | |||
PORT STATE SERVICE | |||
[…] | |||
5222/tcp open unknown | |||
5280/tcp open unknown}} | |||
Port 5222/tcp wird von XMPP für die Kommunikation verwendet. Port 5280/tcp wird vom Administrations-Webinterface verwendet. Sollten die beiden Ports nicht in der Portliste von nmap erscheinen, so muss die Firewall so konfiguriert werden, dass diese Ports weitergeleitet werden. | |||
Der Live-Test auf dem Server kann dann mittels zweimal {{Taste|Strg}}+{{Taste|C}} beendet werden. | |||
Der | Man kann den Server nun leider nicht mehr über systemd starten, da dieser Probelauf bereits wichtige Dateien als der User angelegt hat, der diesen Test ausgeführt hat. Der User, als der der ejabberd jedoch normalerweise läuft, hat dann leider keine Rechte mehr auf diese Dateien zuzugreifen. Nachdem dieser Test erfolgreich durchgeführt wurde, sollte man die Rechte in {{ic|/var/log/ejabberd}} und {{ic|/var/lib/ejabberd}} überprüfen; der User {{ic|ejabberd}} benötigt hier Lese- und Schreibrechte. | ||
Nun kann entweder mittels | Nun kann entweder mittels {{ic|ejabberdctl start}}, dem Ausführen von {{ic|systemctl start ejabberd}}, oder einem Neustart des Systems, wenn zuvor {{ic|systemctl enable ejabberd}} eingegeben wurde, der XMPP-Server gestartet werden. | ||
== User anlegen == | == User anlegen == | ||
Zuerst sollte nun über | Zuerst sollte nun über {{ic|ejabberdctl}} der Administrations-Nutzer angelegt werden. Dieser ist nötig, um auf das Web-Interface zugreifen zu können. | ||
Da die Passwörter mit dieser Methode in Plaintext in der Bash-History angezeigt werden, sollte man diese entweder vorher deaktivieren, hinterher löschen, oder das Passwort auf etwas unkritisches stellen und die Nutzer zum Ändern des Passwortes auffordern. | Da die Passwörter mit dieser Methode in Plaintext in der Bash-History angezeigt werden, sollte man diese entweder vorher deaktivieren, hinterher löschen, oder das Passwort auf etwas unkritisches stellen und die Nutzer zum Ändern des Passwortes auffordern. | ||
ejabberdctl register root | ejabberdctl register root xmpp.example.org adminpasswort | ||
Weitere User werden im selben Stil angelegt, man kann sich das Anlegen mehrerer User-Accounts allerdings vereinfachen. | Weitere User werden im selben Stil angelegt, man kann sich das Anlegen mehrerer User-Accounts allerdings vereinfachen. | ||
Zeile 183: | Zeile 182: | ||
for USER in frank dirk anton susanne michael andreas jana martina | for USER in frank dirk anton susanne michael andreas jana martina | ||
do | do | ||
ejabberdctl register $USER | ejabberdctl register $USER xmpp.example.org changeme | ||
done | done | ||
Mittels dieses Scripts werden mehrere User gleichzeitig angelegt. Allen Usern wird das Passwort | Mittels dieses Scripts werden mehrere User gleichzeitig angelegt. Allen Usern wird das Passwort {{ic|changeme}} zugewiesen. Geändert werden kann das Passwort wahlweise durch den Administrator im Webinterface, oder von den jeweiligen Benutzern selbst über die Funktionen des von ihnen verwendeten Clients. | ||
Sollte man die externe Registrierung nicht deaktiviert haben, ist es nicht nötig, weitere User über das Administrationstool anzulegen. Zudem kann in einem solchen Fall der administrative Account ebenfalls direkt über einen Client angelegt werden. | Sollte man die externe Registrierung nicht deaktiviert haben, ist es nicht nötig, weitere User über das Administrationstool anzulegen. Zudem kann in einem solchen Fall der administrative Account ebenfalls direkt über einen Client angelegt werden. | ||
Zeile 193: | Zeile 192: | ||
=== Weboberfläche === | === Weboberfläche === | ||
Die Weboberfläche ist unter der Adresse | Die Weboberfläche ist unter der Adresse {{ic|<nowiki>http://xmpp.example.org:5280/admin</nowiki>}} zu erreichen. Als Nutzername muss der ''Jabber Identifier'' (JID) des Administrations-Users verwendet werden, das Passwort ist jenes, das beim Anlegen des User-Accounts verwendet wurde. Also beispielsweise | ||
* Username: root@ | * Username: root@xmpp.example.org | ||
* Passwort: adminpasswort | * Passwort: adminpasswort | ||
Zeile 203: | Zeile 202: | ||
Man befindet sich durch die Auswahl des Hostnamens in einem Unter-Konfigurationsinterface. Hier können alle hostbezogenen Einstellungen vorgenommen werden. Mit einem Klick auf den Hostnamen über dem Menü gelangt man wieder zur Startseite der Host-Konfiguration, mit einem Klick auf den Header des Administrationsinterfaces gelangt man zurück zum Gesamt-Konfigurationsinterface. | Man befindet sich durch die Auswahl des Hostnamens in einem Unter-Konfigurationsinterface. Hier können alle hostbezogenen Einstellungen vorgenommen werden. Mit einem Klick auf den Hostnamen über dem Menü gelangt man wieder zur Startseite der Host-Konfiguration, mit einem Klick auf den Header des Administrationsinterfaces gelangt man zurück zum Gesamt-Konfigurationsinterface. | ||
Es wird nachfolgend immer vom Unter-Konfigurationsinterface ausgegangen. Änderungen, die über die Web-Oberfläche vorgenommen werden, bedürfen keines Neustarts des | Es wird nachfolgend immer vom Unter-Konfigurationsinterface ausgegangen. Änderungen, die über die Web-Oberfläche vorgenommen werden, bedürfen keines Neustarts des Services. | ||
==== Userverwaltung ==== | ==== Userverwaltung ==== | ||
Über den Punkt „Benutzer“ gelangt man in die User-Verwaltung. Hier werden alle registrierten User-Accounts inklusive letztem Anmeldedatum des Nutzers angezeigt, zudem können hier weitere Accounts angelegt werden. | Über den Punkt „Benutzer“ gelangt man in die User-Verwaltung. Hier werden alle registrierten User-Accounts inklusive letztem Anmeldedatum des Nutzers angezeigt, zudem können hier weitere Accounts angelegt werden. | ||
Durch einen Klick auf die | Durch einen Klick auf die JID eines Nutzers kann man weitere Einstellungen vornehmen und man bekommt zudem detaillierte Informationen über den Account. So kann man hier das Passwort ändern, sieht die Offline-Nachrichten-Informationen des Users, und kann sich zudem die Kontaktliste anzeigen lassen, und diese auch bearbeiten. | ||
Der Menüpunkt „Angemeldete Benutzer“ zeigt alle derzeit aktiven Benutzer auf dem Server. Ein Klick auf die JID führt zur selben User-Informations-Seite, wie unter „Benutzer“. | Der Menüpunkt „Angemeldete Benutzer“ zeigt alle derzeit aktiven Benutzer auf dem Server. Ein Klick auf die JID führt zur selben User-Informations-Seite, wie unter „Benutzer“. | ||
==== Automatische Kontaktliste ==== | ==== Automatische Kontaktliste ==== | ||
Die automatische Verteilung der Kontaktliste wird über den Menüpunkt „Gruppen der gemeinsamen Kontaktliste“ verwaltet. Zuerst sollte man eine Gruppe | Die automatische Verteilung der Kontaktliste wird über den Menüpunkt „Gruppen der gemeinsamen Kontaktliste“ verwaltet. Zuerst sollte man eine Gruppe {{ic|Alle}} anlegen. In diese Gruppe werden per Alias alle Benutzer eingefügt. | ||
Mit einem Klick auf | Mit einem Klick auf {{ic|Alle}} wird diese Gruppe geöffnet. Hier können nun weitere Einstellungen vorgenommen werden. „Name“ und „Beschreibung“ sind frei wählbar. In das Feld „Mitglieder“ muss nun der Alias {{ic|@all@}} für alle User eingefügt werden. Damit gehören alle User dieser Gruppe an. | ||
Nun hat man zwei Möglichkeiten. Im Abschnitt „Angezeigte Gruppen“ kann man nun entweder „Alle“ reinschreiben, oder man definiert hier weitere Gruppen, und lässt „Alle“ weg. | Nun hat man zwei Möglichkeiten. Im Abschnitt „Angezeigte Gruppen“ kann man nun entweder „Alle“ reinschreiben, oder man definiert hier weitere Gruppen, und lässt „Alle“ weg. | ||
Zeile 222: | Zeile 221: | ||
Der Aufteilung in Gruppen sind keine Grenzen gesetzt. So könnte man zum Beispiel in einem Unternehmen Gruppen je Abteilung anlegen. Für das Beispiel werden zwei Zusatz-Gruppen angelegt, um die Kontaktliste in Männer und Frauen zu trennen. | Der Aufteilung in Gruppen sind keine Grenzen gesetzt. So könnte man zum Beispiel in einem Unternehmen Gruppen je Abteilung anlegen. Für das Beispiel werden zwei Zusatz-Gruppen angelegt, um die Kontaktliste in Männer und Frauen zu trennen. | ||
Es wird zunächst eine Gruppe „Alle“ angelegt. In das „Mitglieder“-Feld wird der Alias | Es wird zunächst eine Gruppe „Alle“ angelegt. In das „Mitglieder“-Feld wird der Alias {{ic|@all@}} geschrieben. „Angezeigte Gruppen“ wird mit {{ic|Männer}} und {{ic|Frauen}} gefüllt. | ||
Es wird nun eine Gruppe | Es wird nun eine Gruppe {{ic|Männer}} angelegt. „Mitglieder“ enthält hier nun keinen Alias mehr, sondern eine Liste der Benutzer, die dieser Gruppe angehören sollen. | ||
andreas@ | andreas@xmpp.example.org | ||
anton@ | anton@xmpp.example.org | ||
dirk@ | dirk@xmpp.example.org | ||
frank@ | frank@xmpp.example.org | ||
michael@ | michael@xmpp.example.org | ||
Das Feld „Angezeigte Gruppen“ bleibt vorerst leer. | Das Feld „Angezeigte Gruppen“ bleibt vorerst leer. | ||
Zeile 236: | Zeile 235: | ||
Der selbe Vorgang wird nun auch für die Gruppe „Frauen“ ausgeführt, diesmal werden in das „Mitglieder“-Feld nur die Useraccounts der weiblichen Nutzer eingefügt. | Der selbe Vorgang wird nun auch für die Gruppe „Frauen“ ausgeführt, diesmal werden in das „Mitglieder“-Feld nur die Useraccounts der weiblichen Nutzer eingefügt. | ||
jana@ | jana@xmpp.example.org | ||
martina@ | martina@xmpp.example.org | ||
susanne@ | susanne@xmpp.example.org | ||
Nun bestehen drei Gruppen. In der Gruppe „Alle“ sind durch den Alias | Nun bestehen drei Gruppen. In der Gruppe „Alle“ sind durch den Alias {{ic|@all@}} alle User Mitglied. In der Gruppe „Frauen“ sind nur die User-Accounts der weiblichen Nutzer Mitglied, und in der Gruppe „Männer“ nur die User-Accounts der männlichen Nutzer. Dadurch, dass in der Gruppe „Alle“ als „Angezeigte Gruppen“, die Gruppen „Männer“ und „Frauen“ definiert wurden, werden allen Usern, die in der Gruppe „Alle“ sind, diese beiden Gruppen angezeigt. | ||
Änderungen an der Shared-Roster-Funktion werden automatisch an die Clients weitergeleitet und sind in den Clients nahezu in Echtzeit nachvollziehbar. | Änderungen an der Shared-Roster-Funktion werden automatisch an die Clients weitergeleitet und sind in den Clients nahezu in Echtzeit nachvollziehbar. | ||
Zeile 246: | Zeile 245: | ||
Nun sei es so, dass für männliche Nutzer und für weibliche Nutzer getrennt Assistenz-Systeme eingerichtet werden sollen, die könnten zum Beispiel User-Accounts für Bots sein. Da die Kontaktliste aber kompakt gehalten werden soll, sollen die jeweiligen Assistenz-Systeme nur der entsprechenden Gruppe sichtbar sein. | Nun sei es so, dass für männliche Nutzer und für weibliche Nutzer getrennt Assistenz-Systeme eingerichtet werden sollen, die könnten zum Beispiel User-Accounts für Bots sein. Da die Kontaktliste aber kompakt gehalten werden soll, sollen die jeweiligen Assistenz-Systeme nur der entsprechenden Gruppe sichtbar sein. | ||
[[Bild:Ejabberd_pidgin_maenner.png|thumb|Gruppen-Anzeige des Users | [[Bild:Ejabberd_pidgin_maenner.png|thumb|Gruppen-Anzeige des Users {{ic|dirk@xmpp.example.org}} in Pidgin]] | ||
Man legt nun für die Assistenz-Systeme jeweils eigene Gruppen an, und fügt die User diesen Gruppen hinzu. Sei die Assistenz-Gruppe für Männer | Man legt nun für die Assistenz-Systeme jeweils eigene Gruppen an, und fügt die User diesen Gruppen hinzu. Sei die Assistenz-Gruppe für Männer {{ic|MA}} und für Frauen {{ic|FA}}. Die User seien {{ic|ma1}} bis {{ic|ma3}}, bzw. {{ic|fa1}} bis {{ic|fa3}}. So werden zwei Gruppen erzeugt, und diesen die jeweiligen Mitglieder hinzugefügt. | ||
* MA | * MA | ||
** ma1@ | ** ma1@xmpp.example.org | ||
** ma2@ | ** ma2@xmpp.example.org | ||
** ma3@ | ** ma3@xmpp.example.org | ||
* FA | * FA | ||
** fa1@ | ** fa1@xmpp.example.org | ||
** fa2@ | ** fa2@xmpp.example.org | ||
** fa3@ | ** fa3@xmpp.example.org | ||
Nun wird die Gruppe „Männer“ geöffnet. In das noch leere Feld „Angezeigte Gruppen“ wird nun der Name der Männer-Assistenz-Gruppe | Nun wird die Gruppe „Männer“ geöffnet. In das noch leere Feld „Angezeigte Gruppen“ wird nun der Name der Männer-Assistenz-Gruppe {{ic|MA}} hineingeschrieben, und das Ganze bestätigt. In der Gruppe „Frauen“ wird analog dazu {{ic|FA}} in das Feld geschrieben. | ||
So sehen Mitglieder der Gruppe „Männer“ nur die Gruppe | So sehen Mitglieder der Gruppe „Männer“ nur die Gruppe {{ic|MA}}. Mitglieder der Gruppe „Frauen“ sehen hingegen nur die Gruppe {{ic|FA}}. Würde man die Gruppen {{ic|MA}} und {{ic|FA}} als angezeigte Gruppe in der „Alle“-Gruppe hinzufügen, würden alle User diese Gruppen sehen können. | ||
==== User-Zuordnung ==== | ==== User-Zuordnung ==== | ||
Soll im obigen Beispiel der User | Soll im obigen Beispiel der User {{ic|dirk@xmpp.example.org}}, obwohl er in der Männer-Gruppe ist, das Assistenz-System {{ic|FA2@xmpp.example.org}} direkt sehen können, so ist unter „Benutzer“ auf {{ic|dirk@xmpp.example.org}} zu klicken. Auf der User-Informationsseite ist dann unter „Kontaktliste“ die JID {{ic|fa2@xmpp.example.org}} hinzuzufügen. | ||
Zusätzlich sollte man diesen Vorgang für | Zusätzlich sollte man diesen Vorgang für {{ic|fa2@xmpp.example.org}} wiederholen, und dort {{ic|dirk@xmpp.example.org}} zur Kontaktliste hinzufügen. Allerdings sollte ein Assistenz-System wie ein Bot die Autorisierung selbständig durchführen, so dass dies im Normalfall nicht nötig ist. | ||
Der so hinzugefügte User erscheint im Client dann unter keiner Gruppe, bzw. in Pidgin unter der generischen Gruppe „Buddys“. | Der so hinzugefügte User erscheint im Client dann unter keiner Gruppe, bzw. in Pidgin unter der generischen Gruppe „Buddys“. | ||
Zeile 272: | Zeile 271: | ||
== Transports == | == Transports == | ||
[[Bild:Psi_services_directory.png|thumb|ICQ im Diensteverzeichnis, angezeigt in [[Psi]]s „Service Discovery“-Fenster]] | [[Bild:Psi_services_directory.png|thumb|ICQ im Diensteverzeichnis, angezeigt in [[Psi]]s „Service Discovery“-Fenster]] | ||
Mit ejabberd ist es möglich, auch andere Messaging-Dienste zu verwenden. Dies geschieht mit Hilfe von ''Transports''. Transports sind Zusatzprogramme, mittels derer ein | Mit ejabberd ist es möglich, auch andere Messaging-Dienste zu verwenden. Dies geschieht mit Hilfe von ''Transports''. Transports sind Zusatzprogramme, mittels derer ein XMPP-Server fähig ist, auch als Server für andere Messaging-Dienste benutzt werden zu können. Es gibt für alle gängigen Dienste Transports. Für dieses Beispiel wird der Transport für ICQ installiert und konfiguriert. | ||
=== Installation === | === Installation === | ||
Der Transport für ICQ heißt ''pyicqt'' und muss aus dem | Der Transport für ICQ heißt ''pyicqt'' und muss aus dem {{ic|extra}}-Repository installiert werden. | ||
pacman -S pyicqt | |||
pyicqt muss dann noch aktiviert und gestartet werden. | |||
pyicqt | systemctl enable pyicqt | ||
systemctl start pyicqt | |||
Ob der Transport schon läuft, oder nicht, wenn ejabberd gestartet wird, ist nicht von Bedeutung. | |||
=== Konfiguration pyicqt === | === Konfiguration pyicqt === | ||
Nach der Installation sollte aus Sicherheitsgründen ein Schlüsselwort gesetzt werden. Dies wird in der Datei | Nach der Installation sollte aus Sicherheitsgründen ein Schlüsselwort gesetzt werden. Dies wird in der Datei {{ic|/etc/ejabberd/pyicq.xml}} konfiguriert. In diesem Fall wird {{ic|key}} als Schlüsselwort verwendet. | ||
<secret>key</secret> | <secret>key</secret> | ||
Zusätzlich muss in dieser Datei noch der Host eingestellt werden, unter dem der | Zusätzlich muss in dieser Datei noch der Host eingestellt werden, unter dem der XMPP-Transport erreichbar sein soll. Dieser Host muss über das DNS auflösbar sein. | ||
<jid>icq. | <jid>icq.xmpp.example.org</jid> | ||
Es können noch weitere Einstellungen vorgenommen werden: So kann in der Zeile | Es können noch weitere Einstellungen vorgenommen werden: So kann in der Zeile {{ic|port}} zum Beispiel der Verbindungs-Port angegeben werden, über den der Transport erreichbar ist. Auch können unter {{ic|icqPort}} und {{ic|icqServer}} die Konfiguration der ICQ-Seitigen Einstellungen vorgenommen werden. Für alle Einstellungen wurden sinnvolle Standardwerte gesetzt. | ||
=== Konfiguration ejabberd === | === Konfiguration ejabberd === | ||
Der ICQ-Transport muss ejabberd noch in der Datei | Der ICQ-Transport muss ejabberd noch in der Datei {{ic|/etc/ejabberd/ejabberd.cfg}} hinzugefügt werden, so dass dieser den ICQ-Dienst anbieten kann. Im Abschnitt {{ic|LISTENING PORTS}} wird ein neuer Eintrag erstellt. | ||
{5347, ejabberd_service, [ | {5347, ejabberd_service, [ | ||
{access, all}, | {access, all}, | ||
{hosts, | {hosts, | ||
["icq. | ["icq.xmpp.example.org"], | ||
[{password, "key"}] | [{password, "key"}] | ||
} | } | ||
Zeile 307: | Zeile 311: | ||
ejabberdctl start | ejabberdctl start | ||
systemctl start pyicqt | |||
Wenn man will, kann man auch erst pyicqt starten, und danach ejabberd mittels {{ic|ejabberdctl live}} in den Live-Modus versetzen, um eventuell auftretende Fehler direkt sehen zu können. | |||
== Siehe auch == | == Siehe auch == | ||
* [[ | * [[iptables]] | ||
* [[ | * [[XMPP]] | ||
* [[Liste von | * [[Liste von XMPP-Software]] | ||
== Weblinks == | == Weblinks == | ||
* [http://www.ejabberd.im/ Community-Site des ejabberd] | * [http://www.ejabberd.im/ Community-Site des ejabberd] {{sprache|en}} | ||
* [http://www.process-one.net/en/ejabberd/ Kommerzieller Support vom Anbieter] | * [http://www.process-one.net/en/ejabberd/ Kommerzieller Support vom Anbieter] {{sprache|en}} | ||
* [http://xmpp.org/ Website der XMPP-Standards-Founddation] | * [http://xmpp.org/ Website der XMPP-Standards-Founddation] {{sprache|en}} | ||
* [http://web.jabber.ccc.de/ XMPP-Server des CCC] {{sprache|de}} | |||
* [http://web.jabber.ccc.de/ | |||
[[Kategorie: | [[Kategorie:Services]] | ||
[[Kategorie:Netzwerk]] | [[Kategorie:Netzwerk]] | ||
[[Kategorie: | [[Kategorie:XMPP]] | ||
[[Kategorie:Server]] | [[Kategorie:Server]] |
Aktuelle Version vom 24. Mai 2023, 18:37 Uhr
Dieser Artikel wurde als veraltet markiert, und sollte kontrolliert, und gegebenfalls korrigiert bzw. aktualisiert werden.
XMPP ist eine von der IETF standardisierte Sammlung diverser XML-basierender Netzwerkprotokolle, die ein erweiterbares Messaging- und Anwesenheitsprotokoll darstellen.
Anders als die meisten anderen Messaging-Dienste ist XMPP dezentral aufgebaut. Die nötige Server-Software sowie das Protokoll um einen XMPP-Server zu betreiben sind ebenfalls frei verfügbar. So steht jedem Anwender die Möglichkeit offen, selbst einen XMPP-Server aufzusetzen.
XMPP eignet sich daher nicht nur, um großen, öffentlichen Nutzergruppen eine Möglichkeit der Kommunikation zu bieten, sondern auch, um im kleinen Rahmen schnell und einfach, und ohne große Hürden (XMPP-Clients sind für alle gängigen Architekturen und Systeme verfügbar) eine Kommunikationsmöglichkeit bereitzustellen.
Installation
Das Programm ist als
ejabberd
in extra
verfügbar, und kann von dort
mittels Pacman
installiert werden.
Nach der Installation sollte der Service noch mittels systemctl enable ejabberd
für den automatischen Start markiert werden. Allerdings sollte man vor dem ersten Start noch einiges anpassen und konfigurieren, und das System ein mal in einem Live-Modus testen.
Erster Start
Vor der Inbetriebnahme des XMPP-Servers sollte dieser konfiguriert werden. Alle Einstellungen werden in der Datei /etc/ejabberd/ejabberd.cfg
vorgenommen. Änderungen an dieser Datei bedürfen eines Neustarts des Services.
Aufbau der Datei
Die Datei hat eine für viele User vielleicht etwas ungewöhnliche Syntax.
% Dies ist ein Kommentar {definition, "wert"}. {anderedefinition, ["gruppe", "von", "werten"]}. {weiteres, [{wert, "mit"}, {gruppe, "die"}, {weitere, "definitionen"}, {setzen, "kann"}]}.
Der besseren Lesbarkeit halber können diese Definitionen auch umgebrochen und zudem innerhalb der Definitionen auch mit weiteren Kommentaren versehen werden.
{weiteres, [ % Setzt „wert“ und „gruppe“ {wert, "mit"}, {gruppe, "die"}, % Hier werden weitere Werte gesetzt {weitere, "definitionen"}, {setzen, "kann"}, % Verschachtelungen gehen auch noch {untergruppe, [ {optiona, "werta"}, {optionb, "wertb"}, {optionc, "wertc"} ]} ]}.
In der ejabberd-Konfigurationsdatei ist vor allem die letzte Form stark vertreten. In der Konfigurationsdatei werden Kommentare mit %%
oder %%%
versehen, was hier aber ignoriert werden kann.
Die Datei ist intern durch ausführliche Kommentierung in verschiedene Abschnitte unterteilt und gut dokumentiert.
Konfiguration
Vor dem ersten Start von ejabberd müssen noch einige Dinge angepasst werden. Zum Beispiel wurde noch kein Administrations-User angelegt, und der Hostname wurde zudem auch noch nicht definiert. Es wird hier nur die Grundkonfiguration mit nur einem einzigen Server (in der XMPP-Terminologie Node
) beschrieben. Dinge, auf die nicht eingegangen wird, können so belassen werden.
Hostname
ejabberd ist in der Lage, mehrere Hostnamen anzubieten. Allerdings muss der Rechner, auf dem ejabberd läuft, per DNS über den Hostnamen erreichbar sein, damit man diesen auch zum Anmelden nutzen kann.
In kleineren Umgebungen, die XMPP ausschließlich im LAN anbieten, ist es ausreichend, den LAN-Hostnamen zu verwenden. Sobald der Server aber auch von außen erreichbar sein soll, ist es ratsam, einen vollständigen Domain-Namen zu verwenden.
Die Hostnamen, mittels derer man sich am XMPP-Server anmelden kann werden im Abschnitt SERVED HOSTNAMES
in der Konfigurationsdatei definiert.
{hosts, ["xmpp", "xmpp.example.org"]}.
In diesem Fall werden zwei Hostnamen, xmpp
, und jabber.example.org
definiert. Es können am Server mit beiden Hostnamen Accounts registriert werden. Mit jabber
-Accounts kann man sich allerdings nicht an jabber.example.org
-Accounts anmelden, und umgekehrt.
Der Einfachkeit halber ist es also sinnvoller, ejabberd nur einen Hostnamen anbieten zu lassen, allerdings muss dieser auch als Liste deklariert übergeben werden.
{hosts, ["xmpp.example.org"]}.
So wird von ejabberd nur der FQDN angeboten. Verwirrungen durch verschiedene Hostnamen sind dadurch nicht mehr möglich. Zudem vereinfacht dies die Konfiguration.
Nutzer-Registrierung
Über diese Option auth_method
im Abschnitt AUTHENTIFICATION
wird definiert, ob das interne Datenbanksystem (Mnesia), oder ein anderes verwendet werden soll. Zur Wahl stehen hier ein externes Script, eine beliebige Datenbank (ODBC), MySQL, PostreSQL, PAM oder LDAP.
PAM oder LDAP können direkt in diesem Abschnitt konfiguriert werden, ODBC benötigt die Konfiguration der Datenbank im darauffolgenden Abschnitt. Es können voreingestellt MySQL oder PostgreSQL verwendet werden. Allerdings unterstützt ejabberd jede ODBC-Kompatible Datenbank.
{auth_method, internal}.
Wenn nichts elementar Wichtiges dagegen spricht, sollte der ejabberd-internen Nutzerverwaltung der Vorzug gegeben werden. Hier können mehrere hundert User verwaltet werden, und die Datenbank arbeitet dennoch performant.
Einschränkung der Registrierung
Wenn man einen festen Benutzerkreis hat, möchte man eventuell nicht, dass sich jeder beliebige Nutzer am Server registrieren kann, auch wenn der Server im Internet verfügbar sein sollte.
Im Abschnitt ACCESS RULES
kann definiert werden, dass die externe Nutzer-Registrierung nicht möglich ist. So kann nur der Administrator einen Nutzer anlegen.
{access, register, [{deny, all}]}.
Im selben Abschnitt können auch weitere Regeln definiert werden. Für den normalen Betrieb sind alle Regeln bereits mit sinnvollen Voreinstellungen belegt, so dass es hier keiner weiteren Änderung bedarf.
Administrator
Der erste Administrations-User ist der einzige User, der händisch in der Konfigurationsdatei angelegt wird. Dieser User besitzt alle Rechte, vergleichbar mit root. Es können allerdings beliebig viele „root“-User angelegt werden. Konfiguriert wird der Administrations-Account im Abschnitt ACCESS CONTROL LISTS
.
{acl, admin, {user, "root", "xmpp.example.org"}}.
Der so definierte User mit der User-ID root
am Server xmpp.example.org
verfügt somit über alle Rechte. Allerdings wurde der User noch nicht angelegt und verfügt noch über kein Passwort.
Darauf, wie ein User angelegt wird, wird später in diesem Artikel eingegangen.
Serversprache
Wenn man einen internationalen Server betreibt, ist englisch natürlich die erste Wahl, was die Statusmeldungen des Servers betrifft, wenn man hingegen einen rein von deutschsprachigen Nutzern verwendeten Server betreibt, kann man die Sprache natürlich auf deutsch stellen. Dies geschieht im Abschnitt DEFAULT LANGUAGE
{language "de"}.
Wenn man einen Server mit mehreren Hostnamen betreibt, kann man die Sprache auch je Hostname definieren.
Module
Über Module kann der XMPP-Server um Funktionen erweitert werden. Module werden im Abschnitt MODULES
geladen und konfiguriert.
Mehrbenutzer-Chat
Das standardmäßig aktivierte Modul mod_muc
erlaubt Mehrbenutzer-Chaträume auf dem Server. Standardmäßig ist der Hostname hierfür conference.HOST
, wobei HOST
der Hostname ist. Wem dies nicht zusagt, kann das anpassen.
{mod_muc, [ {host, "chat.@HOST@"}, {access, muc}, {access_create, muc}, {access_persistent, muc}, {access_admin, muc_admin} ]},
Hier wird der Mehrbenutzer-Chat-Host auf chat.@HOST@
gesetzt, @HOST@
wird durch ejabberd selbständig durch jabber.example.org
ersetzt. Diese Angabe bedarf keiner weiteren Konfiguration, da ejabberd sich selbständig um die Auflösung der Second-(bzw. Third-)Level-Domain kümmert.
Willkommens-Nachricht
Wenn man die User-Registrierung nicht deaktiviert hat, und sich ein neuer Benutzer am Server anmeldet, ist es möglich, diesem Nutzer per Server-Nachricht eine Meldung zukommen zu lassen, und jemanden darüber zu informieren, dass ein User-Account registriert wurde. Dies wird über das Modul mod_register
konfiguriert.
{mod_register, [ {welcome_message, {"Hallo!", "Willkommen auf diesem XMPP-Server!", "Immer schön artig bleiben!"}} {registration_watchers, ["regadmin@xmpp.example.org", "admin2@xmpp.example.org"]},
Über diese Konfiguration wird jedem neu registrierten User bei erster Anmeldung eine Nachricht geschickt.
Hallo! Willkommen auf diesem XMPP-Server Immer schön artig bleiben!
Zusätzlich werden regadmin@xmpp.example.org
und admin2@jabber.example.org
per Nachricht darüber informiert, dass ein neuer User-Account registriert wurde. Diese User müssen dafür natürlich existieren
Verteilte Kontaktliste
Damit man sich in Netzwerken nicht selbst darum kümmern muss, ob und wie alle Nutzer die weiteren User-Accounts auf dem Server in ihre Kontaktliste eintragen, gibt es eine Funktion, die sich „Shared Roster“ oder „Autoroster“ nennt. („Roster“, engl.: Mitgliedsverzeichnis). Diese Funktion wird über das Modul mod_shared_roster
verfügbar gemacht.
Wenn dieses Modul aktiviert (sprich: nicht auskommentiert) ist, ist es möglich, zu definieren, dass die Kontaktliste allen angemeldeten Mitgliedern automatisch zur Verfügung gestellt wird. So haben Nutzer, die sich erstmalig anmelden, sofort alle weiteren registrierten User-Accounts in ihrer Kontaktliste, ohne, dass sie diese manuell hinzufügen müssen.
Die Konfiguration der verteilten Kontaktliste kann später über das Web-Interface einfach konfiguriert werden. Dort können dann auch Nutzergruppen und deren gegenseitige Sichtbarkeit definiert werden.
Test-Start
Nach der Konfiguration in der ejabberd-Konfigurationsdatei sollte man den Server nicht gleich als Daemon starten, sondern vorerst einen Live-Test vornehmen. Dass dabei noch kein User existiert ist nebensächlich, es geht lediglich um die Funktion des Servers.
ejabberdctl live
Hiermit wird ein Live-Start ausgeführt. Alle Meldungen des Servers werden direkt auf der Konsole ausgegeben. Es wird vorerst allerdings ein Warntext ausgegeben, an den man sich halten sollte. Wenn man sich komplett „verrant“ haben sollte, oder den Test beenden will, einfach zweimal Strg+C drücken.
Nach dem Druck einer beliebigen Taste laufen viele Statusmeldungen durch das Terminal. Wenn am Ende der Statusmeldungen …
=PROGRESS REPORT==== 29-Apr-2009::12:04:39 === application: ejabberd started_at: ejabberd@localhost
… steht (Datum variiert natürlich), wurde der Server erfolgreich gestartet. Dies kann zudem auch mittels nmap auf den Host überprüft werden.
nmap xmpp.example.org
[…] PORT STATE SERVICE […] 5222/tcp open unknown 5280/tcp open unknown
Port 5222/tcp wird von XMPP für die Kommunikation verwendet. Port 5280/tcp wird vom Administrations-Webinterface verwendet. Sollten die beiden Ports nicht in der Portliste von nmap erscheinen, so muss die Firewall so konfiguriert werden, dass diese Ports weitergeleitet werden.
Der Live-Test auf dem Server kann dann mittels zweimal Strg+C beendet werden.
Man kann den Server nun leider nicht mehr über systemd starten, da dieser Probelauf bereits wichtige Dateien als der User angelegt hat, der diesen Test ausgeführt hat. Der User, als der der ejabberd jedoch normalerweise läuft, hat dann leider keine Rechte mehr auf diese Dateien zuzugreifen. Nachdem dieser Test erfolgreich durchgeführt wurde, sollte man die Rechte in /var/log/ejabberd
und /var/lib/ejabberd
überprüfen; der User ejabberd
benötigt hier Lese- und Schreibrechte.
Nun kann entweder mittels ejabberdctl start
, dem Ausführen von systemctl start ejabberd
, oder einem Neustart des Systems, wenn zuvor systemctl enable ejabberd
eingegeben wurde, der XMPP-Server gestartet werden.
User anlegen
Zuerst sollte nun über ejabberdctl
der Administrations-Nutzer angelegt werden. Dieser ist nötig, um auf das Web-Interface zugreifen zu können.
Da die Passwörter mit dieser Methode in Plaintext in der Bash-History angezeigt werden, sollte man diese entweder vorher deaktivieren, hinterher löschen, oder das Passwort auf etwas unkritisches stellen und die Nutzer zum Ändern des Passwortes auffordern.
ejabberdctl register root xmpp.example.org adminpasswort
Weitere User werden im selben Stil angelegt, man kann sich das Anlegen mehrerer User-Accounts allerdings vereinfachen.
for USER in frank dirk anton susanne michael andreas jana martina do ejabberdctl register $USER xmpp.example.org changeme done
Mittels dieses Scripts werden mehrere User gleichzeitig angelegt. Allen Usern wird das Passwort changeme
zugewiesen. Geändert werden kann das Passwort wahlweise durch den Administrator im Webinterface, oder von den jeweiligen Benutzern selbst über die Funktionen des von ihnen verwendeten Clients.
Sollte man die externe Registrierung nicht deaktiviert haben, ist es nicht nötig, weitere User über das Administrationstool anzulegen. Zudem kann in einem solchen Fall der administrative Account ebenfalls direkt über einen Client angelegt werden.
Wenn man bei deaktivierter externer Anmeldung lieber grafisch arbeitet, kann man die User auch über die Weboberfläche anlegen, nachdem der administrative User angelegt wurde.
Weboberfläche
Die Weboberfläche ist unter der Adresse http://xmpp.example.org:5280/admin
zu erreichen. Als Nutzername muss der Jabber Identifier (JID) des Administrations-Users verwendet werden, das Passwort ist jenes, das beim Anlegen des User-Accounts verwendet wurde. Also beispielsweise
- Username: root@xmpp.example.org
- Passwort: adminpasswort
Die Verwaltung des Servers erfolgt an zwei Stellen. Zum Einen gibt es die generelle Verwaltung, diese umfasst alle direkt erreichbaren Menüpunkte. Zum Anderen gibt es die spezielle Server-Verwaltung. Diese Befindet sich unter „Virtuelle Hosts“. Dort wählt man Namen des Hosts aus, dessen Einstellungen man bearbeiten möchte.
Man befindet sich durch die Auswahl des Hostnamens in einem Unter-Konfigurationsinterface. Hier können alle hostbezogenen Einstellungen vorgenommen werden. Mit einem Klick auf den Hostnamen über dem Menü gelangt man wieder zur Startseite der Host-Konfiguration, mit einem Klick auf den Header des Administrationsinterfaces gelangt man zurück zum Gesamt-Konfigurationsinterface.
Es wird nachfolgend immer vom Unter-Konfigurationsinterface ausgegangen. Änderungen, die über die Web-Oberfläche vorgenommen werden, bedürfen keines Neustarts des Services.
Userverwaltung
Über den Punkt „Benutzer“ gelangt man in die User-Verwaltung. Hier werden alle registrierten User-Accounts inklusive letztem Anmeldedatum des Nutzers angezeigt, zudem können hier weitere Accounts angelegt werden.
Durch einen Klick auf die JID eines Nutzers kann man weitere Einstellungen vornehmen und man bekommt zudem detaillierte Informationen über den Account. So kann man hier das Passwort ändern, sieht die Offline-Nachrichten-Informationen des Users, und kann sich zudem die Kontaktliste anzeigen lassen, und diese auch bearbeiten.
Der Menüpunkt „Angemeldete Benutzer“ zeigt alle derzeit aktiven Benutzer auf dem Server. Ein Klick auf die JID führt zur selben User-Informations-Seite, wie unter „Benutzer“.
Automatische Kontaktliste
Die automatische Verteilung der Kontaktliste wird über den Menüpunkt „Gruppen der gemeinsamen Kontaktliste“ verwaltet. Zuerst sollte man eine Gruppe Alle
anlegen. In diese Gruppe werden per Alias alle Benutzer eingefügt.
Mit einem Klick auf Alle
wird diese Gruppe geöffnet. Hier können nun weitere Einstellungen vorgenommen werden. „Name“ und „Beschreibung“ sind frei wählbar. In das Feld „Mitglieder“ muss nun der Alias @all@
für alle User eingefügt werden. Damit gehören alle User dieser Gruppe an.
Nun hat man zwei Möglichkeiten. Im Abschnitt „Angezeigte Gruppen“ kann man nun entweder „Alle“ reinschreiben, oder man definiert hier weitere Gruppen, und lässt „Alle“ weg.
Autoroster-Beispiel
Der Aufteilung in Gruppen sind keine Grenzen gesetzt. So könnte man zum Beispiel in einem Unternehmen Gruppen je Abteilung anlegen. Für das Beispiel werden zwei Zusatz-Gruppen angelegt, um die Kontaktliste in Männer und Frauen zu trennen.
Es wird zunächst eine Gruppe „Alle“ angelegt. In das „Mitglieder“-Feld wird der Alias @all@
geschrieben. „Angezeigte Gruppen“ wird mit Männer
und Frauen
gefüllt.
Es wird nun eine Gruppe Männer
angelegt. „Mitglieder“ enthält hier nun keinen Alias mehr, sondern eine Liste der Benutzer, die dieser Gruppe angehören sollen.
andreas@xmpp.example.org anton@xmpp.example.org dirk@xmpp.example.org frank@xmpp.example.org michael@xmpp.example.org
Das Feld „Angezeigte Gruppen“ bleibt vorerst leer.
Der selbe Vorgang wird nun auch für die Gruppe „Frauen“ ausgeführt, diesmal werden in das „Mitglieder“-Feld nur die Useraccounts der weiblichen Nutzer eingefügt.
jana@xmpp.example.org martina@xmpp.example.org susanne@xmpp.example.org
Nun bestehen drei Gruppen. In der Gruppe „Alle“ sind durch den Alias @all@
alle User Mitglied. In der Gruppe „Frauen“ sind nur die User-Accounts der weiblichen Nutzer Mitglied, und in der Gruppe „Männer“ nur die User-Accounts der männlichen Nutzer. Dadurch, dass in der Gruppe „Alle“ als „Angezeigte Gruppen“, die Gruppen „Männer“ und „Frauen“ definiert wurden, werden allen Usern, die in der Gruppe „Alle“ sind, diese beiden Gruppen angezeigt.
Änderungen an der Shared-Roster-Funktion werden automatisch an die Clients weitergeleitet und sind in den Clients nahezu in Echtzeit nachvollziehbar.
Nun sei es so, dass für männliche Nutzer und für weibliche Nutzer getrennt Assistenz-Systeme eingerichtet werden sollen, die könnten zum Beispiel User-Accounts für Bots sein. Da die Kontaktliste aber kompakt gehalten werden soll, sollen die jeweiligen Assistenz-Systeme nur der entsprechenden Gruppe sichtbar sein.
Man legt nun für die Assistenz-Systeme jeweils eigene Gruppen an, und fügt die User diesen Gruppen hinzu. Sei die Assistenz-Gruppe für Männer MA
und für Frauen FA
. Die User seien ma1
bis ma3
, bzw. fa1
bis fa3
. So werden zwei Gruppen erzeugt, und diesen die jeweiligen Mitglieder hinzugefügt.
- MA
- ma1@xmpp.example.org
- ma2@xmpp.example.org
- ma3@xmpp.example.org
- FA
- fa1@xmpp.example.org
- fa2@xmpp.example.org
- fa3@xmpp.example.org
Nun wird die Gruppe „Männer“ geöffnet. In das noch leere Feld „Angezeigte Gruppen“ wird nun der Name der Männer-Assistenz-Gruppe MA
hineingeschrieben, und das Ganze bestätigt. In der Gruppe „Frauen“ wird analog dazu FA
in das Feld geschrieben.
So sehen Mitglieder der Gruppe „Männer“ nur die Gruppe MA
. Mitglieder der Gruppe „Frauen“ sehen hingegen nur die Gruppe FA
. Würde man die Gruppen MA
und FA
als angezeigte Gruppe in der „Alle“-Gruppe hinzufügen, würden alle User diese Gruppen sehen können.
User-Zuordnung
Soll im obigen Beispiel der User dirk@xmpp.example.org
, obwohl er in der Männer-Gruppe ist, das Assistenz-System FA2@xmpp.example.org
direkt sehen können, so ist unter „Benutzer“ auf dirk@xmpp.example.org
zu klicken. Auf der User-Informationsseite ist dann unter „Kontaktliste“ die JID fa2@xmpp.example.org
hinzuzufügen.
Zusätzlich sollte man diesen Vorgang für fa2@xmpp.example.org
wiederholen, und dort dirk@xmpp.example.org
zur Kontaktliste hinzufügen. Allerdings sollte ein Assistenz-System wie ein Bot die Autorisierung selbständig durchführen, so dass dies im Normalfall nicht nötig ist.
Der so hinzugefügte User erscheint im Client dann unter keiner Gruppe, bzw. in Pidgin unter der generischen Gruppe „Buddys“.
Transports
Mit ejabberd ist es möglich, auch andere Messaging-Dienste zu verwenden. Dies geschieht mit Hilfe von Transports. Transports sind Zusatzprogramme, mittels derer ein XMPP-Server fähig ist, auch als Server für andere Messaging-Dienste benutzt werden zu können. Es gibt für alle gängigen Dienste Transports. Für dieses Beispiel wird der Transport für ICQ installiert und konfiguriert.
Installation
Der Transport für ICQ heißt pyicqt und muss aus dem extra
-Repository installiert werden.
pacman -S pyicqt
pyicqt muss dann noch aktiviert und gestartet werden.
systemctl enable pyicqt systemctl start pyicqt
Ob der Transport schon läuft, oder nicht, wenn ejabberd gestartet wird, ist nicht von Bedeutung.
Konfiguration pyicqt
Nach der Installation sollte aus Sicherheitsgründen ein Schlüsselwort gesetzt werden. Dies wird in der Datei /etc/ejabberd/pyicq.xml
konfiguriert. In diesem Fall wird key
als Schlüsselwort verwendet.
<secret>key</secret>
Zusätzlich muss in dieser Datei noch der Host eingestellt werden, unter dem der XMPP-Transport erreichbar sein soll. Dieser Host muss über das DNS auflösbar sein.
<jid>icq.xmpp.example.org</jid>
Es können noch weitere Einstellungen vorgenommen werden: So kann in der Zeile port
zum Beispiel der Verbindungs-Port angegeben werden, über den der Transport erreichbar ist. Auch können unter icqPort
und icqServer
die Konfiguration der ICQ-Seitigen Einstellungen vorgenommen werden. Für alle Einstellungen wurden sinnvolle Standardwerte gesetzt.
Konfiguration ejabberd
Der ICQ-Transport muss ejabberd noch in der Datei /etc/ejabberd/ejabberd.cfg
hinzugefügt werden, so dass dieser den ICQ-Dienst anbieten kann. Im Abschnitt LISTENING PORTS
wird ein neuer Eintrag erstellt.
{5347, ejabberd_service, [ {access, all}, {hosts, ["icq.xmpp.example.org"], [{password, "key"}] } ]},
Starten
Danach muss ejabberd (neu) gestartet werden. Ebenfalls muss pyicqt gestartet werden.
ejabberdctl start systemctl start pyicqt
Wenn man will, kann man auch erst pyicqt starten, und danach ejabberd mittels ejabberdctl live
in den Live-Modus versetzen, um eventuell auftretende Fehler direkt sehen zu können.