Posted by chris on Fri 28 Apr 2006 at 09:17
We've previously seen how to install the Jabber cross-platform, and open, chat server. Sadly - some people insist on using the closed source IM clients. What should we do?
There are three normal options:
Option one will work - but I find having lots of clients open is confusing. Option 2 is one solution (gaim, bitlbee, trillian on windows etc) which works quite well. However - if you want to stay within the jabber world then option 3 is the one to go for.
Given that the jabber server is installed (see this article if not) then you want to install the transports.
Installation
aptitude search jabberwill show you what is available. I'm going to go through jabber-msn (MSN), jabber-jit (ICQ) and jabber-yahoo (Yahoo).
Let's install them:
aptitude install jabber-jit jabber-msn jabber-yahoo
Now - we need to configure and enable them.
Hostnames
For the transports to work - you need to set hostnames - and - if you are running the server non-locally then you need to have resolvable hostnames.
I chose the following scheme:
jabber.mydomain.tld msn.jabber.mydomain.tld conf.msn.jabber.mydomain.tld icq.jabber.mydomain.tld yahoo.jabber.mydomain.tld
All of these are CNAMES to the same machine. I am not sure if they require to have different hostnames - but the examples seem to suggest this.
Configuration
You need to configure so that the jabber server knows about the transports and also so that the transports will announce themselves to the jabber client.
In the debian package config /etc/jabber/jabber.xml find the section.
Here we add the browse config (these are taken from the /usr/share/doc/jabber-*/README.Debian files - the only change was the hostname in each case).
<service type="yahoo" jid="yahoo.jabber.mydomain.tld" name="Yahoo! Transport">
<ns>jabber:iq:gateway</ns>
<ns>jabber:iq:register</ns>
</service>
<service type="msn" jid="msn.jabber.mydomain.tld" name="MSN Link">
<ns>jabber:iq:gateway</ns>
<ns>jabber:iq:register</ns>
</service>
<service type="icq" jid="icq.jabber.mydomain.tld" name="ICQ Link">
<ns>jabber:iq:gateway</ns>
<ns>jabber:iq:register</ns>
<ns>jabber:iq:search</ns>
</service>
Next we need to add the actual services - add the following new service sections (again taken from /usr/share/doc)
<service id="msn">
<host>msn.jabber.mydomain.tld</host>
<host>conf.msn.jabber.mydomain.tld</host>
<accept>
<ip>your_ip</ip>
<port>5557</port>
<secret>asecret</secret>
<timeout>30</timeout>
</accept>
</service>
<service id="yahoo.jabber.mydomain.tld">
<accept>
<ip>your_ip</ip>
<port>9001</port>
<secret>asecret</secret>
</accept>
</service>
<service id="icq">
<host>icq.jabber.mydomain.tld</host>
<host>sms.icq.jabber.mydomain.tld</host>
<accept>
<ip>your_ip</ip>
<port>5555</port>
<secret>asecret</secret>
<timeout>30</timeout>
</accept>
</service>
Finally we need to edit the transport config files (/etc/jabber/jabber-*.xml). Here you need to make sure that the following is done:
Enabling
In /etc/default/ you will find jabber-* files. The value ENABLED must be changed from 0 to 1
Using
Given that you have a jabber account on the jabber server we can now add buddies via the transports.
You need to use your jabber client to run services discovery on the server. That should show the transports that are available (amongst any other allowed services).
Choose a transport and then register. You can then fill out your account details for that chat system.
It should then find any buddies (most of these IMs have server stored buddy lists) - but - when manually adding buddies the syntax is:
ICQ user has an ID of UIN: UIN@icq.jabber.mydomain.tld MSN: user has an ID of user@host.tld: user%host.tld@msn.jabber.mydomain.tld Yahoo: user has an ID of YahooID: YahooID@yahoo.jabber.mydomain.tld
This article can be found online at the Debian Administration website at the following bookmarkable URL:
This article is copyright 2006 chris - please ask for permission to republish or translate.