Hlavní navigace

Jabber server - instalace a provoz

Michal Švamberg

V přeplněném světě komunikačních programů si vydobývá zajímavou pozici komunikační systém Jabber. Systém je určen pro komunikaci tzv. instant messagingu - tedy zasíláním krátkých zpráv. V tomto článku se podíváme na instalaci a provoz jabberského serveru.

Server Jabbera lze získat jako balíček některých distribucí nebo jako předkompilovaný archiv na download.jabber­.org. Vzhledem k tomu, že jsem s předkompilovanými binárkami měl nějaké problémy a kompilace ze zdrojových souborů byla oproti očekávání zcela bezproblémová i na starších systémech, budu se v první části článku zabývat kompilací serveru a jeho agentů. V další části se pak věnuji konfiguraci a popisu poskytovaných služeb.

Kompilace

Je potřeba někde stáhnout archivy se zdrojovými soubory serveru a jednotlivých agentů. Pro ty, kteří rádi testují úplně nejnovější verze, je k dispozici CVS strom, my ale dáme přednost jednodušímu přístupu – potřebné soubory stáhneme ze serveru Jabbera.

Dále si ukážeme kompilaci serveru a ukázkově jednoho agenta. Velmi názorný a krok za krokem postupující návod, jak zprovoznit samotný server i ostatní agenty, je uveden ve výborném dokumentu Jabber Server 1.4 HOWTO.

Kompilace serveru

Nyní si nejnázornější formou, jaká je možná, popíšeme proces kompilace serveru:

  1. vytvoříme adresář pro Jabber (například /usr/local/jab­ber/), který budeme dále nazývat /directory/jabber/
  2. stáhneme archiv se zdrojovými soubory Jabbera (v našem případě jabber-1.4.1.tar.gz) do našeho adresáře /directory/jabber/
  3. cd /directory/jabber/
  4. gzip -d jabber-1.4.1.tar.gz
  5. tar -xf jabber-1.4.1.tar, čímž se vytvoří adresář jabber-1.4.1
  6. cd jabber-1.4.1/
  7. ./configure
  8. make

Správná kompilace vyžaduje knihovny libpth, libdl a libresolv. Všechno jsou to relativně základní knihovny a neměl by být problém je případně doinstalovat pro vaši distribuci. Pokud chcete používat SSL, očekává se, že budete mít nainstalovány potřebné knihovny i s příslušnými hlavičkovými soubory.

Po kompilaci se vytvoří v adresáři jabberd očekávaný démon – jabberd. V dalších adresářích jsou pak knihovny (přípona .so), které budeme ještě potřebovat.

Kompilace ICQ agenta

Pro každého agenta (službu či transportní vrstvu) najdete v archivu soubor, ve kterém je uvedeno, jak jej zkompilovat a nastavit. Protože v našich zeměpisných šířkách se nejvíce prosadilo ICQ, je zde ukázkově uveden právě tento agent. Ostatní agenti se kompilují a konfigurují velmi podobně.

  1. stažený archiv obsahující ICQ agenta (jméno poslední verze je icq-transport-0.9.tar.gz) uložíme do adresáře /directory/jab­ber/jabber-1.4.1/
  2. gzip -d icq-transport-0.9.0.tar.gz
  3. tar -xf icq-transport-0.9.0.tar, tím se vytvoří adresář icq-transport-0.9
  4. make

Pro kompilaci jsou obvykle potřeba ty knihovny, které jsme použili při kompilaci serveru, což ale nemusí platit pro všechny agenty (zvláště pro ty starší). Tímto postupem nám vznikne dynamicky připojitelná knihovna icqtrans.so, kterou později použijeme.

Konfigurace

V adresáři /directory/jab­ber/jabber-1.4.1/ se nachází soubor jabber.xml. Soubor je dostatečně komentovaný a stačí v něm změnit jen velmi málo. Před vlastní konfigurací si dáme trochu z filosofie Jabbera.

Jabber server (samotný démon bez agentů) umožňuje jen několik málo služeb. Pokud požadujete přímo přímo službu serveru, je její jméno shodné s doménovým jménem stroje, na kterém server běží. Pokud ovšem chceme něco navíc (např. přístup do sítě ICQ nebo třeba využít konferenci), musíme se odkázat na jméno služby, kterou požadujeme. Jméno služby je pak složeno z jejího názvu (icq, conference, …) a jména serveru. Například server se jménem jabbricek.cz poskytuje službu ICQ se jménem icq, celé jméno služby je pak icq.jabbricek.cz.

Možná to s tou názorností přeháním, ale ještě jedna drobnost. Uživatel ICQ (např. 114399410 – shodou okolností moje číslo :), se kterým chcete komunikovat, je pak identifikován jako 114399410@icq.jabbricek.cz. V této chvíli to vypadá, že bude nutné zásahnout do DNS a vytvořit tam extra záznamy pro každou službu, ale toto jméno se používá pouze jako identifikace a jenom v rámci navázaného spojení klient – server. Takové označení oznamuje serveru, aby zprávu nezpracovával, ale předal ji agentovi na daném serveru (díky tomu také můžete používat služby z úplně jiného jabberského serveru, než k jakému jste přihlášeni). Agent pak zařídí vlastní spojení s „cizím“ informačním systémem (zde ICQ) a zprostředkuje komunikaci. Výsledek pak předá serveru, který ji dál pošle vašemu klientovi.

Nastavení serveru

Celá konfigurace se provádí v souboru jabber.xml a to včetně agentů. Existuje ještě možnost provozovat jednotlivé služby odděleně (v tom případě jsou odděleny také konfigurační soubory), ale nám bude bohatě stačit „monolitická“ konfigurace.

Pokud použijeme při startu démona přepínač -h, nemusíme na konfigurační soubor ani sáhnout, ale to není zrovna nejsprávnější přístup, a tak nastavíme v sekci <service id=„sessions“> úplné doménové jméno našeho serveru (pro náš příklad to bude jabbricek.cz).

Je doporučováno přepsat ještě uvítací hlášení uvozené tagem <welcome> a nastavit část týkající se administrátora (začíná tagem <admin>). Také je dobré přepsat i ostatní texty, jako jsou informace o serveru – <vCard> nebo informace vypisující se při zakládání nového konta – <register notify=„yes“>.

V sekci <browse> jsou umístěny informace o jednotlivých službách (agentech). Informace uložené v této sekci se potom vypisují uživateli v jeho klientovi. Pro náš případ s ICQ bychom zde přidali:

<service type="icq" jid="icq.jabbricek.cz" name="ICQ Transport">
  <ns>jabber:iq:gateway</ns>
  <ns>jabber:iq:register</ns>
  <ns>jabber:iq:search</ns>
</service>

To byla informace pro klienta o poskytované službě, my však potřebujeme ještě přidat do konfiguračního souboru informaci pro server, jak má zacházet se zprávami, které přijdou s identifikací icq.jabbricek.cz, a komu je má předat. Tato informace by se pro náš případ s ICQ zapsala takto (všimněte si zvýrazněné části):

<service id="icq.jabbricek.cz">
  <icqtrans xmlns="jabber:config:icqtrans">
    <instructions>Please enter your ICQ number ...</instructions>
    <search>Search for ICQ users</search>
    ...
  </icqtrans>
  <load>
    <icqtrans>./icq-transport-0.9/icqtrans.so</icqtrans>
  </load>
<service>

A takto velmi podobně je to i pro ostatní klienty. V konfiguraci lze samozřejmě nastavit daleko více, ale to už bych překračoval rámec tohoto článku. Konfigurační soubor, který používám pro Jabber server na dione.zcu.cz, není sice komentovaný, ale věřím, že vám i tak při případné instalaci tohoto serveru pomůže.

Pokud konfigurační soubor bude obsahovat překlep nebo jinou chybu, démon se nespustí. Taková chyba se hledá velmi špatně, proto existuje stránka, na níž můžete otestovat správnost XML syntaxe vašeho konfiguračního souboru.

Spuštění serveru

V rychlosti jen něco málo o spuštění serveru. I když jsme do konfiguračního souboru vložili doménové jméno serveru, doporučuje se jej také uvést za parametrem -h. Druhý šikovný parametr je -D, který vyvolá debug režim. Pro náš fiktivní stroj bychom mohli spustit server následovně:

cd /directory/jabber/jabber-1.4.1/
./jabberd/jabberd -h jabbricek.cz

Provozní informace se ukládají implicitně do adresáře ./spool/ podle jednotlivých služeb (agentů). Standardně jsou k dispozici i dva logy s příponou .log, které obsahují informace o běhu serveru.

Poznámky na závěr

Během více než měsíčního provozu mi démon spadl zatím pouze jednou. Pro server s více současně aktivními uživateli (řádově stovky) je nutné počítat s vyšší paměťovou náročností serveru. Z hlediska diskové kapacity stačí pro kompilaci serveru i s agenty něco málo přes 10MB a záznamy z adresáře spool nejsou nikterak velké (server na dione.zcu.cz provozuji na quotě o velikosti 20MB).

Dalšími vymoženostmi serveru je možnost použití podpory SSL. Za významné považuji také umožnění takové konfigurace, že každý agent má svého démona (když spadne některý agent, funguje zbytek systému dál). Pro informace o těchto a dalších možnostech vás odkáži na stránky www.jabber.org.

Nyní vám mohu jen popřát, abyste si zkusili tuto pěknou a slibně se rozvíjející „hračku“ – další probdělá noc, během které se dá v klidu zprovoznit, za to přece stojí!

Našli jste v článku chybu?

9. 12. 2006 14:00

pavian (neregistrovaný)
chroot_safe - linkuje knihovny dynamicky a nemusi byt nekde nakopirovany...

13. 6. 2001 19:19

Michal Ambroz (neregistrovaný)

Ahoj,
Nezkouseli jste nekdo jabber spoustet zaroven v chroot a setuid rezimu. Asi bych se cejtil bezpecneji, kdyby mi jabberd bezel nejak pekne zamcenej, vzhledem k tomu ze neni jeste masove rozsireny jako ftp nebo mail servery.

Samotnymu se mi to ale jeste nepovedlo, prestoze jabber nema mnoho knihoven na kterych by byl zavisly (neni to chyba jabbera, ale moje, ze mi to nejede). Bezi mi alespon pod uzivatelem jabber, ktery jediny ma take pristup do spool adresare - jabber bezi na vysok…


120na80.cz: Rovnátka, která nejsou vidět

Rovnátka, která nejsou vidět

DigiZone.cz: R2B2 a Hybrid uzavřely partnerství

R2B2 a Hybrid uzavřely partnerství

Root.cz: Nová třída SD karet A1 s vysokým výkonem

Nová třída SD karet A1 s vysokým výkonem

Vitalia.cz: 7 originálních adventních kalendářů pro mlsné

7 originálních adventních kalendářů pro mlsné

DigiZone.cz: SES zajistí HD pro M7 Group

SES zajistí HD pro M7 Group

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

Vitalia.cz: Pamlsková vyhláška bude platit jen na základkách

Pamlsková vyhláška bude platit jen na základkách

Podnikatel.cz: E-Ježíšek si zařádí: nákupy od 2 do 5 tisíc

E-Ježíšek si zařádí: nákupy od 2 do 5 tisíc

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Podnikatel.cz: Chaos u EET pokračuje. Jsou tu další návrhy

Chaos u EET pokračuje. Jsou tu další návrhy

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

Měšec.cz: Exekuční poradna: ptejte se online

Exekuční poradna: ptejte se online

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

120na80.cz: Boreliózu nelze žádným testem prokázat

Boreliózu nelze žádným testem prokázat

Vitalia.cz: Test na HIV je zdarma i za pět set

Test na HIV je zdarma i za pět set