Il software è come il sesso, è meglio quando è libero. (Software is like sex, it's better when it's free).

— Linus Torvalds

Reply to comment

ArchLinux Small Business Server (31) - Instant Messaging (1)

http://www.stenoweb.it/files/blog/archlogo.png Un servizio di Instant Messaging per la nostra Small Business ? Già proprio così. L'idea mi è balenata quando, spostandomi di azienda in azienda, ho notato che la diffusione di Skype assume le dimensioni di una piovra: pazienza servisse per telefonare, ma nel 90% dei casi ho visto solo chat ! E usare la chat di Skype per lasciare messaggi a chi stà nella scrivania accanto mi sembra una boiata immensa: oltre allo spreco di banda (skype si connette a internet, magari siete nodo/centralino di un centinaio di utenti e non lo sapete), si pone anche il problema che senza connettività a internet il "servizio" si interrompe. E allora, signori e signore (mi sà che le signore sono poche ...), risolviamo il problema alla radice, un bel server IM privato realizzato per l'occasione grazie al signor Jabber, libero e spensierato.

La babele dei formati

Cercando la soluzione più adatta mi son scontrato con una marea di sigle/implementazioni per realizzare un servizio di Instant Messaging: AIM, ICQ, IRC, MSN, Gadu-Gadu, Yahoo!, Sametime, Skype, Jabber, ecc. e sicuramente ne ho dimenticato qualcuno. Per la peppa, cosa scegliere ?

Per scremare allora fissiamo i nostri obiettivi:

voglio un sistema di messaggistica senza dover scendere a compromessi, senza dover subire la pubblicità di chissà quale "multinazionale della messaggistica", senza dover dare informazioni a proposito della propria vita, senza dover essere maggiorenni, o americani inglesi francesi russi, senza dover dare un contatto mail sicuramente spammato, senza una marea di n00b che si divertono con i loro nick colorati a inviare le loro catene di ogni santo gli venga in mente, privato e integrato con il sistema di autorizzazione utenti aziendale basato su PAM e LDAP e che supporti i messaggi a utenti off-line

Con queste richieste ho già spazzato via praticamente tutti i pretendenti, con l'eccezzione di uno: JABBER.

Il software basato su Jabber/XMPP è libero e standarlizzato, chiunque può "tirar su" un server. E'diffuso su migliaia di macchine disseminate su internet e usato quotidianamente da milioni di persone. Esistono server pubblici e privati che interagiscono tra loro, e in teoria basta un unico utente su di un qualsiasi server e immediatamente posso comunicare con qualsiasi altro utente ovunque sia registrato. In più, caratteristica unica, attraverso i gateway posso anche comunicare con utenti di altre reti tipo ICQ e MSN.

Ma a noi tutto questo interessa relativamente, a noi interessa un server privato, con registrazioni chiuse che accetti connessioni dalla nostra rete private (ed eventualmente nostri utenti mobili) e sfrutti gli utenti/password esistenti per l'autenticazione. Ricordate il Santo Graal del sistemista ? Single-Signon a tutti i servizi aziendali, cosa che Jabber ci permette di fare.

Bando alle ciance ed iniziamo.

Installazione

Purtroppo non tutto è disponibile per Archlinux, dovremmo "sporcare" la nostra installazione con compilazioni manuali. Certo, potrei farne un PKGBUILD di quello che manca, ma per ora và bene così, se qualcuno si offre è il benvenuto.
Esistono diverse implementazioni per realizzare la parte "server" di Jabber io ho scelto la più sempliciotta che è anche la più "storica" essendo un progetto iniziato e rilasciato da Jeremie Miller (il creatore di jabber) nella prima versione nel lontano 2000. Ancora oggi (giunta alla verione 2) è più che adeguata e quindi non ho perso tempo.

sudo pacman -S jabberd

I moduli aggiuntivi dovrebbero essere installati come dipendenze, oppure li avete già installati seguendo questi articoli su Archlinux SBS. A noi serve:

  • OpenSSL
  • Libidn
  • MySQL

Potrei installare jabberd anche senza openSSL o libidn, tuttavia facciamo una installazione che comprende anche la crittografia dei messaggi, quindi installiamoli. MySQL verrà usato come Data Storage da Jabberd in alternativa a sqlite, PostgreSQL o BerkleyDB.

Potrei essere a posto così, ma siccome voglio implementare anche la conference tra più utenti (i channels di IRC) ho bisogno di un modulo aggiuntivo di cui non esiste il PKGBUILD. Allora preleviamo il sorgente, lo compiliamo e lo installiamo a manina.
Il componente in aggiunta è mu-conference che stà per Multi User Conference che verrà integrato al nostro server Jabber.
Mettiamoci in una directory vuota e preleviamo il sorgente:

wget http://download.gna.org/mu-conference/mu-conference_0.7.tar.gz

scompattiamolo
tar zxvf ./mu-conference_0.7.tar.gz

entriamo nella cartella mu-conference_0.7/src
ed editiamo il file Makefile per abilitare il supporto a MySQL. In questo modo muc scriverà nel database le rooms create per le chat/conferenze.
Per fare questo basta decommentare la seconda riga:
CFLAGS:=$(CFLAGS) -O2 -Wall -I../../lib -I../include `pkg-config --cflags glib-2.0` -D_JCOMP -D_REENTRANT -DLIBIDN -DHAVE_MYSQL

ora ritorniamo alla directory "padre" ma prima di compilare abbiamo bisogno ancora di qualcosa:
sudo pacman -S pkgconfig

Ora siamo pronti: da mu-conference_0.7 lanciamo :
make

La compilazione dura poco, al termine copiamo a manina i files al loro posto:
cp ./src/mu-conference /usr/bin
cp ./muc-default.xml /etc/jabberd/muc.xml

Bene, per ora ci fermiamo qui. Nel prossimo post procederemo con la configurazione.

Reply

The content of this field is kept private and will not be shown publicly.