Installatie en bediening van ejabberd: Kerstmiseditie · 2019-02-25 · Installatie en bediening...

29
Installatie en bediening van ejabberd: Kerstmiseditie Alexey Shchepin mailto:[email protected] xmpp:[email protected] vertaling: Sander Devrieze mailto:[email protected] xmpp:[email protected] 23 december, 2004 1

Transcript of Installatie en bediening van ejabberd: Kerstmiseditie · 2019-02-25 · Installatie en bediening...

  • Installatie en bediening van ejabberd: Kerstmiseditie

    Alexey Shchepinmailto:[email protected]

    xmpp:[email protected]

    vertaling: Sander Devriezemailto:[email protected]

    xmpp:[email protected]

    23 december, 2004

    1

    mailto:[email protected]:[email protected]:[email protected]:[email protected]

  • Inhoudsopgave

    1 Inleiding 3

    2 Installatie vanaf de broncode 4

    2.1 Installatievereisten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    2.1.1 Unix-achtigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    2.1.2 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    2.2 Downloaden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2.3 Compilatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2.3.1 Unix-achtigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2.3.2 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2.4 Opstarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    3 Configuratie 7

    3.1 Initiële configuratie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    3.1.1 Hostnaam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    3.1.2 Standaardtaal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    3.1.3 Toegangsregels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    3.1.4 Configuratie van shapers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    3.1.5 Listened sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    3.1.6 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    3.2 Configuratie en toezicht houden op een draaiende ejabberd server . . . . . . . . . 15

    3.2.1 Webgebaseerde beheerdersinterface . . . . . . . . . . . . . . . . . . . . . . 15

    3.2.2 Via de commandoregel met ejabberdctl . . . . . . . . . . . . . . . . . . 16

    4 Clustering 17

    4.1 Werking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    4.1.1 Router . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    4.1.2 Local router . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    4.1.3 Session manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    1

  • 4.1.4 S2S manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    4.2 Een cluster opzetten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    A Ingebouwde modules 19

    A.1 Algemene opties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    A.1.1 iqdisc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    A.1.2 host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    A.2 mod announce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    A.3 mod configure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    A.4 mod disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    A.5 mod echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    A.6 mod irc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    A.7 mod last . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    A.8 mod muc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    A.9 mod offline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    A.10 mod privacy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    A.11 mod private . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    A.12 mod pubsub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    A.13 mod register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    A.14 mod roster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    A.15 mod service log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    A.16 mod stats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    A.17 mod time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    A.18 mod vcard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    A.19 mod version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    B I18n/L10n 27

    2

  • 1 Inleiding

    ejabberd is een vrije (GPL) gedistributeerde fault-tolerance Jabberserver en is hoofdzakelijkgeschreven in Erlang.

    De meest in het oog springende mogelijkheden van ejabberd zijn:

    • Multiplatform: ejabberd draait onder zowat alle populaire platformen: van unix afgeleidesystemen (getest onder Linux, FreeBSD en NetBSD) en Windows NT/2000/XP.

    • Gedistributeerd: ejabberd kan op een reeks computers gedraaid worden die samen Jabberop één domein aanbieden. Goedkope computers kunnen gebruikt worden om de capaciteitvan de cluster uit te breiden.

    • Fault-tolerance: met ejabberd kan een cluster opgezet worden zodat alle gegevens die nodigzijn voor een goed werkende Jabberserver steeds beschikbaar zijn op meerdere nodes. Ditbetekent dat indien één node defect raakt, dat de anderen dan zonder onderbrekingenverder blijven draaien. Daarnaast is het ook mogelijk om nodes “on the fly” te vervangen.

    • Modulair: elke module kan geladen en gestopt worden zonder ejabberd te moeten her-starten. Er zijn modules beschikbaar voor:

    – Multi-User Chat1.

    – Een IRC-transport.

    – Publish-Subscribe2.

    – Een Jabbergebruikersdatabase gebaseerd op de vCards van gebruikers.

    – Een webgebaseerde beheerdersinterface.

    – HTTP Polling3

    – Service Discovery4.

    – Statistieken via JEP-00395 (Statistics Gathering).

    – En nog veel meer.

    • Lokalisatie:

    – Ondersteuning voor xml:lang.

    – Ondersteuning voor IDNA6.

    – ejabberd is vertaald in zeven talen.

    • Gemakkelijke installatie: omdat ejabberd gebouwd is bovenop Erlang/OTP hoeft u geenexterne database, geen externe webserver,. . . te installeren omdat alles reeds voor handenis en direct werkt.

    • Ondersteuning voor STARTTLS, SASL en SSL.1http://www.jabber.org/jeps/jep-0045.html2http://www.jabber.org/jeps/jep-0060.html3http://www.jabber.org/jeps/jep-0025.html4http://www.jabber.org/jeps/jep-0030.html5http://www.jabber.org/jeps/jep-0039.html6http://www.ietf.org/rfc/rfc3490.txt

    3

    http://www.jabber.org/jeps/jep-0045.htmlhttp://www.jabber.org/jeps/jep-0060.htmlhttp://www.jabber.org/jeps/jep-0025.htmlhttp://www.jabber.org/jeps/jep-0030.htmlhttp://www.jabber.org/jeps/jep-0039.htmlhttp://www.ietf.org/rfc/rfc3490.txt

  • • Ondersteuning voor authenticatie via LDAP.

    • Mogelijkheid tot gebruik van externe componenten zoals Jabber ICQ Transport7, JabberYahoo! Transport8, PyMSNt9, pyAIM-t10, pyICQ-t11,. . .

    • Migratie van Jabberd14 is mogelijk.

    • Bijna volledig XMPP-complaint.

    • IPv6 mogelijk bij zowel C2S- als S2S-verbindingen.

    De minpunten van ejabberd zijn:

    • Geen ondersteuning voor virtuele domeinnamen.

    • Geen ondersteuning voor authenticatie en STARTTLS in S2S-verbindingen.

    2 Installatie vanaf de broncode

    2.1 Installatievereisten

    2.1.1 Unix-achtigen

    Om ejabberd te compileren hebt u volgende pakketten nodig:

    • GNU Make;

    • GCC;

    • libexpat 1.95 of recenter;

    • Erlang/OTP R8B of recenter;

    • OpenSSL 0.9.6 of recenter (optioneel).

    2.1.2 Windows

    Om ejabberd te compileren onder MS Windows hebt u volgende pakketten nodig:

    • MS Visual C++ 6.0 Compiler

    • Erlang/OTP R10B-1a12

    7http://jit.jabberstudio.org/8http://yahoo-transport-2.jabberstudio.org/9http://msn-transport.jabberstudio.org/

    10http://pyaim-t.jabberstudio.org/11http://pyicq-t.jabberstudio.org/12http://erlang.org/download/otpwin32R10B − 1a.exe

    4

    http://jit.jabberstudio.org/http://yahoo-transport-2.jabberstudio.org/http://msn-transport.jabberstudio.org/http://pyaim-t.jabberstudio.org/http://pyicq-t.jabberstudio.org/http://erlang.org/download/otp_win32_R10B-1a.exe

  • • Expat 1.95.713

    • Iconv 1.9.114 (optioneel)

    • Shining Light OpenSSL15 (nodig voor TLS en STARTTLS)

    2.2 Downloaden

    Een stabiele versie van ejabberd kan gedownload worden vanafhttp://www.jabberstudio.org/projects/ejabberd/releases/.

    De recentste alpha-versie kunt u steeds via CVS bekomen met volgende commando’s:

    export CVSROOT=:pserver:[email protected]:/home/cvscvs login

    cvs -z3 co ejabberd

    2.3 Compilatie

    2.3.1 Unix-achtigen

    ./configuremakesumake install

    Door bovenstaande commando’s uit te voeren zal ejabberd gëınstalleerd worden in de map/var/lib/ejabberd, ejabberd.cfg in de map /etc/ejabberd en zal de map /var/log/ejabberdaangemaakt worden voor de logbestanden.

    2.3.2 Windows

    • Installeer Erlang emulator (bijvoorbeeld in C:\Program Files\erl5.3).

    • Installeer de Expat-bibliotheek in de map C:\Program Files\Expat-1.95.7.Kopieer C:\Program Files\Expat-1.95.7\Libs\libexpat.dll naar de systeemmap vanWindows (C:\WINNT of C:\WINNT\System32).

    13http://prdownloads.sourceforge.net/expat/expat win32bin 1 95 7.exe?download14http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.1.tar.gz15http://www.slproweb.com/products/Win32OpenSSL.html

    5

    http://www.jabberstudio.org/projects/ejabberd/releases/http://prdownloads.sourceforge.net/expat/expat_win32bin_1_95_7.exe?downloadhttp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.1.tar.gzhttp://www.slproweb.com/products/Win32OpenSSL.html

  • • Compileer en installeer vervolgens de Iconv-bibliotheek in de map C:\Program Files\iconv-1.9.1.Kopieer ook C:\Program Files\iconv-1.9.1\bin\iconv.dll naar de systeemmap.

    Opmerking: in plaats van de bestanden libexpat.dll en iconv.dll te kopiëren naar de sys-teemmap kunt u ook de mappen C:\Program Files\Expat-1.95.7\Libs en C:\Program Files\iconv-1.9.1\bintoevoegen aan de omgevingsvariabele PATH.

    • Ga naar ejabberd\src en voer hiernavolgende opdrachten uit:

    configure.batnmake -f Makefile.win32

    • Bewerk ejabberd\src\ejabberd.cfg en voer volgend commando uit:

    werl -s ejabberd -name ejabberd

    2.4 Opstarten

    Gebruik één van volgende commando’s om ejabberd te starten:

    erl -pa /var/lib/ejabberd/ebin -name ejabberd -s ejabberd

    of

    erl -pa /var/lib/ejabberd/ebin -sname ejabberd -s ejabberd

    In het tweede geval zal de Erlang-node gëıdentificeerd worden met alleen het eerste gedeelte vande hostnaam waardoor andere nodes buiten het domein er niet mee kunnen communiceren.

    Merk op dat wanneer u één van bovenstaande commando’s gebruikt, dat ejabberd dan in dehuidige map zal zoeken naar het configuratiebestand en deze map ook zal gebruiken voor deopslag van de database en de logbestanden.

    U kunt dit standaardgedrag omzeilen door de paden manueel op te geven:

    erl -pa /var/lib/ejabberd/ebin \-sname ejabberd \-s ejabberd \-ejabberd config \"/etc/ejabberd/ejabberd.cfg\" \

    log_path \"/var/log/ejabberd/ejabberd.log\" \-sasl sasl_error_logger \{file,\"/var/log/ejabberd/sasl.log\"\} \-mnesia dir \"/var/lib/ejabberd/spool\"

    Nog andere handige opties kunt u terugvinden in de Erlang/OTP R10B documentatie16..

    Om meer dan 1024 verbindingen te kunnen opzetten, moet u de omgevingsvariabele ERL_MAX_PORTSinstellen:

    16http://www.erlang.se/doc/doc-5.4.3/doc/

    6

    http://www.erlang.se/doc/doc-5.4.3/doc/

  • export ERL_MAX_PORTS=32000

    Hou er rekening mee dat ejabberd hierdoor meer geheugen zal gebruiken (ongeveer 6MB meer).

    Om het geheugengebruik te verminderen, kunt u de omgevingsvariabele ERL_FULLSWEEP_AFTERinstellen:

    export ERL_FULLSWEEP_AFTER=0

    Merk op dat het hierdoor mogelijk kan zijn dat ejabberd vertraagt.

    3 Configuratie

    3.1 Initiële configuratie

    De inhoud van het configuratiebestand wordt bij de eerste start van ejabberd naar een databaseovergezet. Nadien wordt de configuratie door ejabberd ingeladen vanaf die database en alleopties in het configuratiebestand worden toegevoegd aan de ingangen in de database. Het con-figuratiebestand is opgebouwd uit een reeks Erlang-uitdrukkingen. Elke regel die begint met het‘%’-teken wordt genegeerd. Elke uitdrukking is een tuple, waar het eerste element de naam isvan de optie en de andere de waarden zijn van de optie. Als het configuratiebestand bijvoorbeeldgeen “host”-definitie bevat, dan zal de oude waarde uit de database worden gebruikt.

    Om de oude waarden uit de database teniet te doen, kunnen volgende regels toegevoegd wordenaan de configuratie:

    override_global.override_local.override_acls.

    Deze regels zullen respectievelijk de oude globale opties, de oude lokale opties of de oude ACL’sverwijderen voordat er nieuwen worden toegevoegd.

    3.1.1 Hostnaam

    Met de optie hostname kunt u de domeinnaam die ejabberd zal moeten aanbieden, opgeven.Om bijvoorbeeld jabber.org te gebruiken moet u onderstaande regel opnemen in het configu-ratiebestand:

    {host, "jabber.org"}.

    7

  • 3.1.2 Standaardtaal

    De standaardtaal van berichten die ejabberd verzendt naar gebruikers kan gewijzigd wordenmet behulp van de optie language. De taal die standaard gebruikt wordt als de Jabber-client niet overweg kan met het xml:lang-attribuut en er daardoor geen opgeeft, is het Engels(taalcode: ‘‘en’’). Het veranderen van de standaardtaal werkt enkel indien er een vertaling(.msg) aanwezig is in de map msgs van ejabberd. Als u bijvoorbeeld het Nederlandsals standaardtaal wilt instellen, neem dan volgende regel op in het configuratiebestand:

    {language, "nl"}.

    3.1.3 Toegangsregels

    Toegangscontrole doet ejabberd met Access Control Lists (ACL). Deze hebben volgende syn-taxis:

    {acl, , {, ...}}.

    kan volgende waarden aannemen:

    all Komt overeen met alle JID’s. Voorbeeld:

    {acl, all, all}.

    {user, } Komt overeen met de lokale gebruiker . Voor-beeld:

    {acl, admin, {user, "aleksey"}}.

    {user, , } Komt overeen met de gebruiker met als JID @en al zijn bronnen. Voorbeeld:

    {acl, admin, {user, "aleksey", "jabber.ru"}}.

    {server, } Komt overeen met elke JID van server . Voorbeeld:

    {acl, jabberorg, {server, "jabber.org"}}.

    {user regexp, } Komt overeen met alle lokale gebruikers waarvan denaam voldoet aan de reguliere expressie . Voorbeeld:

    {acl, tests, {user, "^test[0-9]*$"}}.

    {user regexp, , } Komt overeen met alle gebruikers waar-van de naam voldoet aan de reguliere expressie en die gereg-istreerd zijn op server . Voorbeeld:

    8

  • {acl, tests, {user, "^test", "localhost"}}.

    {server regexp, } Komt overeen met elle JID’s op de servers waarvande naam voldoet aan de reguliere expressie . Voorbeeld:

    {acl, icq, {server, "^icq\\."}}.

    {node regexp, , }Komt overeen met alle gebruikers waarvan de naam voldoet aan de reguliere expressie en die geregistreerd zijn op een servers waarvande naam voldoet aan de reguliere expressie . Voor-beeld:

    {acl, aleksey, {node_regexp, "^aleksey$", "^jabber.(ru|org)$"}}.

    {user glob, }

    {user glob, , }

    {server glob, }

    {node glob, , } Dit doet hetzelfde als hierbovenmaar dan met “shell glob patronen” in plaats van een reguliere expressie. Deze patronenkunnen volgende speciale tekens bevatten:

    * Voldoet aan elke tekenreeks inclusief de lege tekenreeks (null string).? Voldoet aan elk enkelvoudig teken.[...] Voldoet aan één van de tekens tussen de haakjes. Reeksen tekens kunnen worden

    opgegeven door twee tekens te scheiden met een liggend streepje (‘-’). Als het eersteteken na het eerste vierkante haakje (‘[’) een uitroepteken (‘!’) is, dan voldoet elkteken dat er niet tussen staat.

    De volgende ACL’s zijn van te voren gedefiniëerd:

    all Voldoet aan alle JID’s.

    none Voldoet aan geen enkele JID.

    Een ingang die de toegang tot een dienst regelt ziet er ongeveer zo uit:

    {access, , [{allow, },{deny, },...]}.

    Tijdens de toegangscontrole van een JID tot de dienst , zal ejabberd achtereenvolgenscontroleren of die JID voldoet aan (één van) de ACL(’s) waarnaar verwezen wordt achter heteerste element van elke tuple van de lijst. Als dit het geval is, dan geeft dat het eerste elementvan de overeengekomen tuple als resultaat, in alle andere gevallen geeft dat “deny” (weigeren).

    Voorbeeld:

    9

  • {access, configure, [{allow, admin}]}.{access, iets, [{deny, badmans},

    {allow, all}]}.

    Volgende toegangsregels zijn van te voren gedefiniëerd:

    all Geeft altijd “allow” (toelaten) als resultaat.

    none Geeft altijd “deny” (weigeren) als resultaat.

    3.1.4 Configuratie van shapers

    Met shapers is het mogelijk om verbindingsverkeer te beperken. Shapers hebben in het configu-ratiebestand deze syntaxis:

    {shaper, , }.

    Momenteel is er slechts één soort shaper gëımplementeerd: maxrate. En die heeft volgendesyntaxis:

    {maxrate, }

    Waar staat voor de maximale inkomende snelheid in bytes/seconde. Om bijvoor-beeld een shaper te definiëren met de naam “normaal” en als maximumsnelheid 1000 bytes/seconde,kunt u onderstaande regel toevoegen aan het configuratiebestand:

    {shaper, normaal, {maxrate, 1000}}.

    3.1.5 Listened sockets

    De optie listen bevat een lijst met alle listened sockets en de diensten die erop worden aange-boden. Elk element van de lijst is een tuple die drie elementen bevat:

    • Poortnummer;

    • Module die instaat voor deze poort;

    • Opties voor die module.

    Momenteel zijn volgende modules aanwezig:

    ejabberd c2s Deze module beheert de C2S-verbindingen.

    Hierbij zijn volgende opties mogelijk:

    10

  • {access, } Met deze optie kunt u de toegang tot de opgegeven C2S-poort beperken. De standaardwaarde luidt “all” (iedereen).

    {shaper, } Deze optie is gelijkaardig aan voorgaande maar gebruiktshapers in plaats van “allow” en “deny”. De standaardwaarde luidt: “none” (niets).

    {ip, IPNummer} Met deze optie kunt u de te gebruiken netwerkinterface instellen. Bij-voorbeeld {ip, {192, 168, 1, 1}}.

    inet6 Zet ondersteuning voor IPv6 aan.

    starttls Met deze optie maakt u STARTTLS beschikbaar voor verbindingen naar dezepoort. Als u deze optie gebruikt, moet u ook de “certfile”-optie instellen.

    tls Met deze optie wordt het verkeer op deze poort met SSL versleuteld vlak na hetverbinden. Als u deze optie gebruikt moet u ook de “certfile”-optie instellen.

    ssl Met deze optie wordt het verkeer op deze poort met SSL versleuteld. Als u deze optiegebruikt moet u ook de “certfile”-optie instellen. Het is aan te raden om in plaatshiervan de tls-optie te gebruiken.

    {certfile, Pad} Pad naar het SSL-certificaat.

    ejabberd s2s in Deze module beheert de inkomende S2S-verbindingen.

    ejabberd service Deze module beheert de verbindingen met Jabberdiensten (bv. diegenen diede jabber:component:accept-namespace gebruiken).

    Volgende bijkomende opties kunnen ingesteld worden (naast de opties access, shaper, ipen inet6 die ook hier bruikbaar zijn):

    {host, Hostnaam, [HostOpties]} Met deze optie kunt u de hostnaam van de externedienst opgeven en bijkomende opties daarvoor zoals {password, Geheim}.

    {hosts, [Hostnamen], [HostOpties]} Idem als hierboven maar zo kunt u meerderehostnamen opgeven.

    ejabberd http Deze module beheert de inkomende HTTP-verbindingen.

    Volgende opties kunnen ingesteld worden:

    http poll Deze optie zet ondersteuning voor HTTP Polling17 aan die daarna beschikbaaris op http://server:poort/http-poll/.

    web admin Deze optie zet de webgebaseerde beheerdersinterface aan die daarna beschik-baar is op http://server:poort/admin/, om van deze interface gebruik te kunnenmaken, moet u gebruikersnaam en wachtwoord opgeven van een geregistreerde ge-bruiker met beheerdersprivileges (deze privileges kunnen toegekend worden met detoegangsregel “configure”.

    Onderstaande voorbeeldconfiguratie biedt volgende diensten aan:

    • C2S-verbindingen op poorten 5222 en 5223 (SSL) en daarnaast wordt gebruiker “gargamel”geblokkeerd.

    • S2S-verbindingen op poort 5269.17http://www.jabber.org/jeps/jep-0025.html

    11

    http://www.jabber.org/jeps/jep-0025.html

  • • Webgebaseerde beheerdersinterface op poort 5280 en ondersteuning voor HTTP Polling.

    • Alle gebruikers exclusief de beheerders hebben een limiet van 1000Bytes/seconde op hetnetwerkverkeer.

    • pyAIM-t (aim.voorbeeld.org) op poort 5233 met als wachtwoord “aimgeheim”.

    • pyICQ-t (icq.voorbeeld.org en sms.voorbeeld.org) op poort 5234 met als wachtwoord“jitgeheim”.

    • pyMSNt (msn.voorbeeld.org) op poort 5235 met als wachtwoord “msngeheim”.

    • Jabber Yahoo! Transport (yahoo.voorbeeld.org) op poort 5236 met als wachtwoord“yahoogeheim”.

    • jabber-gg-transport (gg.voorbeeld.org) voor Gadu-Gadu op poort 5237 met als wacht-woord “gggeheim”.

    • ILE18 (ile.voorbeeld.org) op poort 5238 met als wachtwoord “ilegeheim”.

    {acl, blocked, {user, "gargamel"}}.{access, c2s, [{deny, blocked},

    {allow, all}]}.{shaper, normaal, {maxrate, 1000}}.{access, c2s_shaper, [{none, admin},

    {normal, all}]}.{listen,[{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper}]},{5223, ejabberd_c2s, [{access, c2s},

    ssl, {certfile, "/pad/naar/ssl.pem"}]},{5269, ejabberd_s2s_in, []},{5280, ejabberd_http, [http_poll, web_admin]},{5233, ejabberd_service, [{host, "aim.voorbeeld.org",

    [{password, "aimgeheim"}]}]},{5234, ejabberd_service, [{hosts, ["icq.voorbeeld.org", "sms.voorbeeld.org"],

    [{password, "jitgeheim"}]}]},{5235, ejabberd_service, [{host, "msn.voorbeeld.org",

    [{password, "msngeheim"}]}]},{5236, ejabberd_service, [{host, "yahoo.voorbeeld.org",

    [{password, "yahoogeheim"}]}]},{5237, ejabberd_service, [{host, "gg.voorbeeld.org",

    [{password, "gggeheim"}]}]},{5238, ejabberd_service, [{host, "ile.voorbeeld.org",

    [{password, "ilegeheim"}]}]}]}.

    Opmerking: voor transports die gebruik maken van Jabberd14 of WPJabberd moet u ervoorzorgen dat zij zelf logs bijhouden en XDB-aanvragen zelf behandelen:

    18http://ile.jabberstudio.org/

    12

    http://ile.jabberstudio.org/

  • %d: [%t] (%h): %s/var/log/jabber/service.log

    /usr/lib/jabber/xdb_file.so

    /var/spool/jabber

    3.1.6 Modules

    De optie modules bevat een lijst met alle modules die geladen moeten worden bij het opstartenvan ejabberd. Elk element van de lijst is een tuple waarin het eerste element de modulenaamis en het tweede een lijst met configuratieopties bevat voor die module. Zie bijlage A voorgedetailleerde informatie over elke module.

    Voorbeeld:

    {modules,[{mod_register, []},{mod_roster, []},{mod_privacy, []},{mod_configure, []},{mod_disco, []},{mod_stats, []},{mod_vcard, []},{mod_offline, []},{mod_echo, [{host, "echo.localhost"}]},{mod_private, []},

    13

  • {mod_irc, []},{mod_muc, []},{mod_pubsub, []},{mod_time, [{iqdisc, no_queue}]},{mod_last, []},{mod_version, []}

    ]}.

    14

  • 3.2 Configuratie en toezicht houden op een draaiende ejabberd server

    3.2.1 Webgebaseerde beheerdersinterface

    Om ejabberd te herconfigureren tijdens het draaien moet u de ejabberd http-listener aanzettenen de optie “web admin” opgeven (zie sectie 3.1.5). Daarna kunt u uw browser naar http://server:poort/admin/sturen en aanmelden met gebruikersnaam en wachtwoord van een geregistreerde gebruiker met be-heerdersprivileges. Met volgende voorbeeldconfiguratie moet u uw browser naar http://voorbeeld.org:5280/admin/sturen:

    ...{host, "voorbeeld.org"}....{listen,[...{5280, ejabberd_http, [web_admin]},...

    ]}.

    Na authenticatie zou u net zoals in figuur 1 de beheerdersinterface moeten zien. Via deze inter-

    Figuur 1: Hoofdpagina van de webgebaseerde beheerdersinterface

    face kunt u de toegangsbeperkingen bewerken, gebruikers beheren, reservekopieën aanmaken, dedatabase beheren, listened sockets aan- of uitzetten en statistieken bekijken.

    15

  • 3.2.2 Via de commandoregel met ejabberdctl

    Het is ook mogelijk om enkele beheerderstaken uit te voeren met de commandoregel-toepassingejabberdctl. U kunt de mogelijke argumenten zien door de toepassing uit te voeren zonderargumenten op te geven:

    % ejabberdctlUsage: ejabberdctl node command

    Available commands:stop stop ejabberdrestart restart ejabberdreopen-log reopen log fileregister user password register a userunregister user unregister a userbackup file store a database backup in filerestore file restore a database backup from fileinstall-fallback file install a database fallback from filedump file dump a database in a text fileload file restore a database from a text fileregistered-users list all registered users

    Example:ejabberdctl ejabberd@host restart

    Vertaling:

    % ejabberdctlGebruik: ejabberdctl node commando

    Beschikbare commando’s:stop ejabberd stoppenrestart ejabberd herstartenreopen-log logbestand heropenenregister user password gebruiker registrerenunregister user registratie van een gebruiker ongedaan makenbackup file reservekopie van de database in een bestand bewarenrestore file reservekopie van de database vanaf een bestand herstelleninstall-fallback file reservekopie van de database vanaf een bestand installerendump file database in een tekstbestand dumpenload file database herstellen vanaf een tekstbestandregistered-users alle geregistreerde gebruikers tonen

    Voorbeeld:ejabberdctl ejabberd@host restart

    16

  • 4 Clustering

    4.1 Werking

    Een Jabber-domein kan worden aangeboden op één of meerdere ejabberd nodes. Deze nodeskunnen gedraaid worden op verschillende computers die met elkaar in verbinding staan via eennetwerk. Ze moeten allemaal de mogelijkheid hebben om te verbinden met poort 4369 van alleandere nodes en ze moeten dezelfde “magic cookie” hebben (zie documentatie van Erlang/OTP,samengevat: het bestand ~ejabberd/.erlang.cookie moet hetzelfde zijn op alle nodes). Ditis nodig omdat alle nodes informatie uitwisselen over verbonden gebruikers, S2S-verbindingen,geregistreerde diensten,. . .

    Elke ejabberd node heeft volgende modules:

    • router;

    • local router.

    • session manager;

    • S2S manager.

    4.1.1 Router

    Op elke node is deze module de hoofdrouter van Jabber-pakketten. De module leidt ze naarde juiste locatie op basis van hun doeldomeinen en gebruikt daarvoor een globale routing-tabel.Het doeldomein wordt opgezocht in de routing-tabel en vervolgens wordt het pakket naar hetaangewezen proces geleid. Als er niets wordt gevonden dan wordt het pakket doorgezonden naarde S2S manager.

    4.1.2 Local router

    Deze module verzorgt de aflevering van pakketten waarvan het doeldomein overeenkomt met hetdomein van de server. Als het gedeelte voor de @ van de doel-JID niet leeg is, dan verzendtdeze module het pakket door naar de session manager. Indien dit niet het geval is dan wordthet verwerkt op basis van de inhoud.

    4.1.3 Session manager

    Deze module leidt pakketten naar lokale gebruikers en zoekt uit via een statustabel naar welkegebruikersbron een pakket moet worden verzonden. Daarna wordt het pakket ofwel naar hetgeschikte C2S-proces doorgezonden, ofwel wordt het opgeslagen in het offline geheugen, ofwelwordt het teruggezonden.

    17

  • 4.1.4 S2S manager

    Deze module leidt pakketten naar andere Jabberservers en controleert daarvoor eerst het of eral een geopende S2S-verbinding van het domein van de pakketbron naar het domein van hetpakketdoel bestaat. Indien er een bruikbare open verbinding is dan leidt de S2S manager hetpakket via die verbinding naar het proces en anders wordt er een nieuwe verbinding geopend.

    4.2 Een cluster opzetten

    Installeer ejabberd eerst op de eerste computer (eerste node) op dezelfde wijze als in hoofd-stuk 2. Om deze opstelling daarna uit te breiden naar een ejabberd-cluster moet je volgendestappen doorlopen:

    1. Kopiëer het bestand ~ejabberd/.erlang.cookie vanaf eerste node naar de tweede com-puter (tweede node).

    (alternatieve werkwijze) U kunt ook de optie “-cookie content_of_.erlang.cookie”toevoegen aan alle “erl”-commando’s hieronder.

    2. Ga op de tweede node van de cluster naar de map waar de bestanden van ejabberd zullenworden opgeslagen en verander daar naar de systeemgebruiker voor ejabberd en voer erhet volgende commando uit:

    erl -sname ejabberd \-mnesia extra_db_nodes "[’ejabberd@eerste_node’]" \-s mnesia

    Dit zorgt ervoor dat Mnesia dezelfde database zal gebruiken als ejabberd@eerste node.Dit kunt u nazien met het commando “mnesia:info().”. U zou dan een heleboel tabellenop afstand en een regel zoals hieronder moeten zien:

    running db nodes = [ejabberd@eerste_node, ejabberd@tweede_node]

    3. Voer nu volgende commando uit in dezelfde Erlang-sessie:

    mnesia:change_table_copy_type(schema, node(), disc_copies).

    Hiermee zal een lokale opslagruimte aangemaakt worden voor de database.

    (alternatieve werkwijze) Verander de opslagmethode van de tabel ‘schema’ naar “RAM- enschijfkopie” op tweede node via de webgebaseerde beheerdersinterface.

    4. Nu kunt u kopieën van verschillende tabellen toevoegen aan deze node met het commando“mnesia:add_table_copy” of het “mnesia:change_table_copy_type”-commando van hi-erboven (vervang “schema” met een andere tabelnaam en “disc_copies” met “ram_copies”of “disc_only_copies”).

    Welke tabellen gekopieerd moeten worden is erg afhankelijk van uw noden. Uit de uitvoervan het commando “mnesia:info().” kunt u, door te kijken op eerste node naar de

    18

  • grootte van de tabellen en de standaardopslagmethode voor elke tabel, opmaken welkengekopieerd dienen te worden.

    Als u een tabel kopieert naar een node dan zullen opzoekingen erin sneller verlopen op dienode maar dan zal het schrijven ernaar trager gebeuren. En het spreekt voor zichzelf datals er een node uit de lucht gaat, dat dan andere nodes gebruikt kunnen worden als erkopieën zijn van de tabellen.

    Raadpleeg sectie “5.3 Table Fragmentation”19 van de Mnesia User’s Guide als u er meerover wenst te weten.

    (alternatieve werkwijze) Gelijkaardig als in vorige stap maar dan voor andere tabellen.

    5. Typ “init:stop().” of “q().” en druk op Enter om de Erlang-shell te beëindigen. Ditkan mogelijk enige tijd in beslag nemen indien Mnesia nog niet klaar is met de overdrachten verwerking van alle vereiste gegevens van eerste node.

    6. Start nu ejabberd op tweede node met bijna dezelfde configuratie als op eerste node(waarschijnlijk moet u de opties “acl” en “access” niet verdubbelen — ze zullen automa-tisch overgenomen worden van eerste node; daarnaast hoeven de modules mod_muc enmod_irc slechts op één computer in de cluster aangezet worden).

    U kunt bovenstaande stappen herhalen om nog meer nodes toe te voegen aan uw cluster.

    A Ingebouwde modules

    A.1 Algemene opties

    Omdat enkele opties gebruikt kunnen worden bij vele modules wijden we er deze aparte sectieaan.

    A.1.1 iqdisc

    Vele modules gebruiken verwerkers voor de behandeling van IQ-aanvragen van namespaces naarde server (bv. voorbeeld.org) of naar een gebruiker (bv. [email protected]). De optieiqdisc definieert een verwerkingsdiscipline voor dergelijke aanvragen. Disciplines waartussen ukunt kiezen, zijn:

    no queue Met deze verwerkingsdiscipline worden alle aanvragen van een namespace onmiddellijkverwerkt. Dit houdt ook in dat er geen andere pakketten verwerkt kunnen worden voor devorige pakketten zijn afgewerkt. Vandaar dat deze discipline niet aan te raden is wanneerde kans bestaat dat de verwerking van een aanvraag een relatief lange tijd in beslag kannemen.

    one queue Met deze discipline wordt een afzonderlijke wachtrij voor de verwerking van IQ-aanvragen van een namespace aangemaakt en de eigenlijke verwerking ervan wordt paralleluitgevoerd met die van andere pakketten. Deze discipline is ten zeerste aangeraden.

    19http://www.erlang.se/doc/doc-5.4/lib/mnesia-4.2/doc/html/Mnesiachap5.html5.3

    19

    http://www.erlang.se/doc/doc-5.4/lib/mnesia-4.2/doc/html/Mnesia_chap5.html##5.3

  • parallel Met deze laatste discipline wordt een afzonderlijk Erlang-proces voortgebracht vooralle pakketten, zodat ze allemaal parallel verwerkt worden. Hoewel het voortbrengen vaneen Erlang-proces relatief weinig bronnen vereist, kan dit de normale werking van de serververstoren omdat de Erlang-emulator het maximum aantal processen limiteert (standaardmaximum 32000).

    Voorbeeld:

    {modules,[...{mod_time, [{iqdisc, no_queue}]},...

    ]}.

    A.1.2 host

    Met deze optie kunt u de hostnaam specificeren van een module die zich voordoet als een dienst.

    Voorbeeld:

    {modules,[...{mod_echo, [{host, "echo.voorbeeld.org"}]},...

    ]}.

    A.2 mod announce

    Deze module maakt het mogelijk om broadcast announce-berichten en het bericht van de dag(MOTD) te verzenden. Als de module geladen is, dan worden berichten die verzonden wor-den naar de volgende JID’s verwerkt (in de veronderstelling dat de domeinnaam van de servervoorbeeld.org is):

    voorbeeld.org/announce/all Een bericht dat hiernaar verzonden wordt, wordt verspreidt naaralle geregistreerde gebruikers op de server. Als een gebruiker online is en verbonden opmeerdere bronnen, dan zal alleen de bron met de hoogste prioriteit het bericht ontvangen.Als een geregistreerde gebruiker niet verbonden is, dan wordt het bericht offline opgeslagen(als de module die instaat voor het bewaren van offline berichten geladen is).

    voorbeeld.org/announce/online Een bericht naar deze locatie, wordt verzonden naar alle opde server aangemelde gebruikers. Als een gebruiker online is en verbonden is op meerderebronnen, dan zullen die allemaal het bericht ontvangen.

    20

  • voorbeeld.org/announce/motd Een bericht hiernaartoe, wordt ingesteld als MOTD en zal ver-zonden worden naar gebruikers op het ogenblik dat ze aanmelden. Daarnaast wordt hetbericht ook opgestuurd naar alle verbonden gebruikers (zoals bij announce/online).

    voorbeeld.org/announce/motd/update Als een bericht naar deze JID wordt verzonden, danwordt het ingesteld als MOTD en zal het verzonden worden naar gebruikers op het ogenblikdat ze aanmelden. Het bericht wordt niet verzonden naar gebruikers die al online zijn.

    voorbeeld.org/announce/motd/delete Elk bericht verzonden naar deze JID verwijdert hetbestaande bericht van de dag.

    Opties:

    access Specificeert wie announce-berichten mag verzenden en het bericht van de dag (MOTD)mag instellen. De standaardwaarde is none (niemand).

    Voorbeeld:

    % Alleen beheerders mogen announce-berichten versturen:{access, announce, [{allow, admin}]}.

    {modules,[...{mod_announce, [{access, announce}]},...

    ]}.

    A.3 mod configure

    Opties:

    iqdisc ejabberd:config-discipline voor de verwerking van IQ-aanvragen (zie A.1.1).

    A.4 mod disco

    Deze module voegt ondersteuning voor JEP-003020 (Service Discovery) toe.

    Opties:

    iqdisc http://jabber.org/protocol/disco#items en http://jabber.org/protocol/disco#info-discipline voor de verwerking van IQ-aanvragen (zie A.1.1).

    extra domains Met deze optie kunt u een lijst met domeinen opgeven die aan de antwoordenvan de serveritems moeten worden toegevoegd.

    20http://www.jabber.org/jeps/jep-0030.html

    21

    http://www.jabber.org/jeps/jep-0030.html

  • Voorbeeld:

    {modules,[...{mod_disco, [{extra_domains, ["jit.voorbeeld.org",

    "etc.voorbeeld.org"]}]},...

    ]}.

    A.5 mod echo

    Deze module doet zich voor als een dienst en echoët elk bericht terug naar de zender. Dit kanhandig zijn voor het opsporen van fouten.

    Opties:

    host Hiermee definieert u de hostnaam van de dienst (zie A.1.2). Indien niets wordt opgegevendan zal het voorvoegsel “echo.” worden toegevoegd aan de basishostnaam.

    A.6 mod irc

    Deze module is een IRC-transport.

    Opties:

    host Hiermee definieert u de hostnaam van de dienst (zie A.1.2). Indien niets wordt opgegevendan zal het voorvoegsel “irc.” worden toegevoegd aan de basishostnaam.

    access Specificeert wie van het IRC-transport gebruik mag maken. De standaardwaarde is all(iedereen).

    Voorbeeld:

    {modules,[...{mod_irc, [{access, all}]},...

    ]}.

    22

  • A.7 mod last

    Deze module voegt ondersteuning voor JEP-001221 (Last Activity) toe.

    Opties:

    iqdisc jabber:iq:last-discipline voor de verwerking van IQ-aanvragen (zie A.1.1).

    A.8 mod muc

    Deze module implementeert JEP-004522 (Multi-User Chat).

    Opties:

    host Hiermee definieert u de hostnaam van de dienst (zie A.1.2). Indien niets wordt opgegevendan zal het voorvoegsel “conference.” worden toegevoegd aan de basishostnaam.

    access Specificeert wie de MUC-dienst mag gebruiken. De standaardwaarde is all (iedereen).

    access create Specificeert wie nieuwe chatruimtes mag aanmaken op de MUC-dienst. De stan-daardwaarde is all (iederen).

    access admin Specificeert wie de MUC-dienst mag beheren (de standaardwaarde is none (nie-mand), wat betekent dat enkel de aanmaker zijn eigen chatruimte kan beheren).

    Voorbeeld:

    % Definieer een ACL voor de beheerder.{acl, admin, {user, "admin"}}

    % Definieer een toegangsregel voor de MUC-beheerder.{access, muc_admin, [{allow, admin}]}

    {modules,[...{mod_muc, [{access, all},

    {access_create, all},{access_admin, muc_admin}]},

    ...]}.

    A.9 mod offline

    Deze module implementeert de mogelijkheid om offline berichten te bewaren.21http://www.jabber.org/jeps/jep-0012.html22http://www.jabber.org/jeps/jep-0045.html

    23

    http://www.jabber.org/jeps/jep-0012.htmlhttp://www.jabber.org/jeps/jep-0045.html

  • A.10 mod privacy

    Deze module implementeert “Privacy Rules” uit XMPP IM23.

    Opties:

    iqdisc jabber:iq:privacy-discipline voor de verwerking van IQ-aanvragen (zie A.1.1).

    A.11 mod private

    Deze module voegt ondersteuning voor JEP-004924 (Private XML Storage) toe.

    Opties:

    iqdisc jabber:iq:private-discipline voor de verwerking van IQ-aanvragen (zie A.1.1).

    A.12 mod pubsub

    Deze module implementeert JEP-006025 (Publish-Subscribe).

    Opties:

    host Hiermee definieert u de hostnaam van de dienst (zie A.1.2). Indien niets wordt opgegevendan zal het voorvoegsel “pubsub.” worden toegevoegd aan de basishostnaam.

    served hosts Specificeert welke hosts aangeboden worden door de dienst. Indien niets wordtopgegeven dan zal enkel de basishostnaam aangeboden worden.

    Voorbeeld:

    {modules,[...{mod_pubsub, [{served_hosts, ["voorbeeld.org",

    "voorbeeld.org"]}]}...

    ]}.

    23http://www.ietf.org/rfc/rfc3921.txt24http://www.jabber.org/jeps/jep-0049.html25http://www.jabber.org/jeps/jep-0060.html

    24

    http://www.ietf.org/rfc/rfc3921.txthttp://www.jabber.org/jeps/jep-0049.htmlhttp://www.jabber.org/jeps/jep-0060.html

  • A.13 mod register

    Deze module voegt ondersteuning voor JEP-007726 (In-Band Registration) toe.

    Opties:

    access Specificeert een toegangsregel om registraties te beperken. Als deze regel “deny” (weigeren)oplevert bij een gewenste gebruikersnaam, dan kan die niet geregistreerd worden. De stan-daardwaarde is all (iedereen), wat inhoudt dat er geen beperkingen zijn.

    iqdisc jabber:iq:register-discipline voor de verwerking van IQ-aanvragen (zie A.1.1).

    Voorbeeld:

    % Weiger registraties met een te korte naam.{acl, korte_naam, {user_glob, "?"}}.{acl, korte_naam, {user_glob, "??"}}.% Een variant daarop:{acl, korte_naam, {user_regexp, "^..?$"}}.

    {access, register, [{deny, korte_naam},{allow, all}]}.

    {modules,[...{mod_register, [{access, register}]},...

    ]}.

    A.14 mod roster

    Deze module zorgt voor het beheer van rosters.

    Opties:

    iqdisc jabber:iq:roster-discipline voor de verwerking van IQ-aanvragen (zie A.1.1).

    A.15 mod service log

    Deze module voegt ondersteuning voor archivatie van gebruikerspakketten toe via een externcomponent zoals Bandersnatch27. Deze pakketten worden ingekapseld in het route/−elementendanverzondennaarhet/deopgegevencomponent(en).

    Opties:26http://www.jabber.org/jeps/jep-0077.html27http://jabberstudio.org/projects/bandersnatch/project/view.php

    25

    http://www.jabber.org/jeps/jep-0077.htmlhttp://jabberstudio.org/projects/bandersnatch/project/view.php

  • loggers Hiermee kunt u een lijst van één of meerdere componenten specificeren waarnaar degebruikerspakketten moeten worden verzonden.

    Voorbeeld:

    {modules,[...{mod_service_log, [{loggers, ["bandersnatch.voorbeeld.org"]}]},...

    ]}.

    A.16 mod stats

    Deze module voegt ondersteuning voor JEP-003928 (Statistics Gathering) toe.

    Opties:

    iqdisc http://jabber.org/protocol/stats-discipline voor de verwerking van IQ-aanvragen(zie A.1.1).

    A.17 mod time

    Deze module verzendt de GMT-tijd na jabber:iq:time-aanvragen.

    Opties:

    iqdisc jabber:iq:time-discipline voor de verwerking van IQ-aanvragen (zie A.1.1).

    A.18 mod vcard

    Deze module implementeert een eenvoudige Jabbergebruikersdatabase gebaseerd op de vCardsvan gebruikers en verzendt ook de vCard van de server na een “vcard-temp”-aanvraag.

    Opties:

    host Hiermee definieert u de hostnaam van de dienst (zie A.1.2). Indien niets wordt opgegevendan zal het voorvoegsel “vjud.” worden toegevoegd aan de basishostnaam.

    iqdisc vcard-temp-discipline voor de verwerking van IQ-aanvragen (zie A.1.1).

    search Hiermee kunt u de zoekfunctionaliteit van de dienst aan- (true, de standaardwaarde) ofuitschakelen (false). Als search is ingesteld op false, dan wordt de optie host genegeerden zullen de diensten niet verschijnen tussen de Jabber Discovery items.

    28http://www.jabber.org/jeps/jep-0039.html

    26

    http://www.jabber.org/jeps/jep-0039.html

  • matches Deze optie limiteert het aantal zoekresultaten. Als de waarde is ingesteld op infinity(oneindig) dan zullen alle zoekresultaten weergegeven worden. De standaardwaarde is 30.

    Voorbeeld:

    {modules,[...{mod_vcard, [{search, false}, {matches, 20}]}...

    ]}.

    A.19 mod version

    Deze module verzendt de versie van ejabberd na jabber:iq:version-aanvragen.

    Opties:

    iqdisc jabber:iq:version-discipline voor de verwerking van IQ-aanvragen (zie A.1.1).

    B I18n/L10n

    Alle ingebouwde modules ondersteunen het xml:lang-attribuut in IQ-aanvragen. In figuur 2 isbijvoorbeeld het antwoord op volgende aanvraag te zien:

    De webgebaseerde beheerdersinterface ondersteunt ook de Accept-Language HTTP-header (ziefiguur 3 en vergelijk dit met figuur 1)

    27

  • Figuur 2: Discovery-resultaten bij xml:lang=’nl’

    Figuur 3: Startpagina van de webgebaseerde beheerdersinterface met als HTTP-header“Accept-Language: nl’’

    28

    InleidingInstallatie vanaf de broncodeInstallatievereistenUnix-achtigenWindows

    DownloadenCompilatieUnix-achtigenWindows

    Opstarten

    ConfiguratieInitiële configuratieHostnaamStandaardtaalToegangsregelsConfiguratie van shapersListened socketsModules

    Configuratie en toezicht houden op een draaiende ejabberd serverWebgebaseerde beheerdersinterfaceVia de commandoregel met ejabberdctl

    ClusteringWerkingRouterLocal routerSession managerS2S manager

    Een cluster opzetten

    Ingebouwde modulesAlgemene optiesiqdischost

    mod_announcemod_configuremod_discomod_echomod_ircmod_lastmod_mucmod_offlinemod_privacymod_privatemod_pubsubmod_registermod_rostermod_service_logmod_statsmod_timemod_vcardmod_version

    I18n/L10n