This site is now 100% read-only, and retired.

Jabber Transports (MSN, Yahoo, ICQ etc)

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:

  1. Install lots of clients
  2. Install a multiprotocol client
  3. Get jabber to understand the other protocols

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 jabber
will 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:

  • make sure that the is the same as set in the main config
  • make sure that the is the same as set in the main config
  • make sure that the is the same as set in the main config

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

 

 


Re: Jabber Transports (MSN, Yahoo, ICQ etc)
Posted by linulin (84.204.xx.xx) on Fri 28 Apr 2006 at 20:41
"However - if you want to stay within the jabber world then option 3 is the one to go for."

As a user I wanted to stay with the jabber for more than a year. But after struggling with various problems (a transport is down, messages disappear sometimes, not all original protocol features are avalable, etc.) related to MSN and ICQ transports on two diffrent public jabber servers, I moved from Psi to multiprotocol clients (Miranda on Windows, and Centericq on Linux).

From the user point of view I would not recommend to use other protocols via Jabber if the majority of your contacts work with other IM systems.

--
...Bye..Dmitry.

[ Parent ]

no problems here
Posted by undefined (192.91.xx.xx) on Fri 28 Apr 2006 at 21:30
well, almost no problems. ;-)

in running my own jabber 1.x server using the transports in stable (aim, icq, msn, yahoo, conference, jud), one from testing (irc), and one installed myself (jmc). i'm logged into it (and the transports) on average 8 hours a day (though i only occasionally use the transports).

the only problems i've had are:
- trying to understand the jabber server configuration/topology
- my yahoo session (not transport) will die after ~8 continuous hours
- my icq session (again, not transport) dies randomly once a month
- sometimes msn users will appear online, but when i message them jabber will claim that they immediately logged off and i'll receive an "unable to deliver message" reply from the server
- file transfer unsupported in my transports

when a session dies, you only have to log back into that transport.

file transfers would be nice, but as every im protocol (i've ever seen) defines them as out-of-band, i've never been able to do it whatever client i use (due to restrictive firewall policies, port forwarding hassle, etc). but then again, i haven't tried recently (having only used jabber), so maybe every im protocol (but jabber) now incorporates STUN for file transfers.

of course if you are using a public server, then the scalability of the server & transports becomes important. my server only handles two users, so scalability is not an issue.

not saying that running a personal jabber server is for everybody, but this is debian-ADMINISTRATION.org.

[ Parent ]

Re: no problems here
Posted by chris (213.187.xx.xx) on Wed 17 May 2006 at 10:02
[ View Weblogs ]
Finally got around to installing the testing jabber-irc on my stable box. Works a treat for basic chatting in IRC.

[ Parent ]

no, no, no CNAMES
Posted by undefined (192.91.xx.xx) on Fri 28 Apr 2006 at 21:07
don't make this more difficult than it really is. we don't want to scare people off. ;-)

the transports only need resolvable CNAMES if you want your transports to be public (ie people can use your transports when connected to an unrelated jabber server). if the transport name is unresolvable, then the only jabber server that'll have knowledge of how to communicate to it is your jabber server (as the jabber server has knowledge of it once the transport starts and initiates a connection to it).

the server's name doesn't even need to be resolvable, as you can use clients (ie psi) which allow you to specify your user name as "bob@foo" but connect to dns name "bar.org".

if you want to be federated (receive messages from jabber.org and google talk), then you'll want a resolvable jabber server name and tcp port 5269 open. you can rename your server later, but it's a manual (though probably scriptable) pain altering user data. (i only have two users on my jabber server, so once i tested the necessary changes on one user, it was easier to manually apply them to the other user than writing a script).

here's my recommendation:
1. give your server a resolvable name (using dyndns.org or a static host name). even if you currently don't want to message google talk users from the comfort of your personal jabber server now, it'll make it easier in the future.
2. give your transports unresolvable names (jud.localhost, aim.localhost, conference.localhost, etc; "localhost" seems to be popular in the examples i've seen) so that you can control who uses/abuses them (ie only the users of your jabber server).

also look into jabber-irc in testing and unstable. i backported it to sarge, so it's doable if that's what you run. with that, jabber covers all your instant messaging needs.

[ Parent ]

Re: Jabber Transports (MSN, Yahoo, ICQ etc)
Posted by frhart (83.68.xx.xx) on Sat 29 Apr 2006 at 21:48
I used the jabber 1.* server for more than a year with MSN, ICQ, IRC and Yahoo transports + public chatrooms and only had trouble with Yahoo. I disagree that when most of your friends don't use jabber the better option is to use a multi-protocol client. When I started using jabber none of my friends/relatives used it and now 80% have a jabber or a Google Talk account. So keep telling your friends that there are alternatives and open IM standards. To make them understand I compare it usually with all the different mail standards and that everyone now finds it normal that you can reach everyone nomather what ISP they have. If it was up to MS and AOL we would have seperate mail, www and IM networks.

Since a couple of months I migrated to jabberd v2.0. There are some glitches in the PyMSN transport but all in all I'm satisfied. The nice thing about jabberd 2.0 is that you can register new transports and other services on the fly. You don't even have to restart the server. I also gave ejabberd a try and they made a nice admin www interface. I did find the config file a bit 'messy' and I didn't want to install all those Erlang libs just for a IM server.

[ Parent ]

Re: Jabber Transports (MSN, Yahoo, ICQ etc)
Posted by Anonymous (202.38.xx.xx) on Sun 30 Apr 2006 at 08:12
Hi guys!

If you want to encrypt your msn traffic or all msn chat from your network (on gw) try this :
@secway

google 1-2.hit

It's really cool stuff.

[ Parent ]

Re: Jabber Transports (MSN, Yahoo, ICQ etc)
Posted by undefined (68.89.xx.xx) on Wed 17 May 2006 at 13:08
this was one of the most cryptic comments ever. did you write it using secway's simppro/lite?

i searched google for "secway jabber msn google" and the first and second (which is what i presume you meant by "google 1-2.hit" written in some form of unintelligible shorthand) lead to secway's im encryption products.

the site isn't very forthcoming on security details, but after floundering around on it i finally found http://www.secway.fr/us/manuals/simplite_jabber/manual.php?page=c ryptov.html

appears secway is a CLOSED SOURCE, WINDOWS ONLY (though they do have a unix server version), PROXY (you run it in addition to your usual im client), and has the usual limitation that for it to "work" your contacts must also be using secway.

since this is debian administration (home of linux, free software, etc) and we're on the subject of xmpp/jabber may i suggest you investigate psi as an alternative. psi is free software, an official debian package, multiplatform (windows, unix, mac os x), supports encrypting/authenticating using gnupg, and is the best jabber client imho. if you are really concerned about internet communication security, then you've already set up pgp/gpg for your email, right? so you can just use the same keys to communicate with the same friends using psi. if you want a multiprotocol client with encryption, use gaim with the gaim-e plugin. unfortunately, the interoperability of im client encryption is nonexistant from my research. hopefully jabber.org will specify something in a jep so at least all xmpp clients can interoperate (but i just don't think the demand is there).

an alternative that my friends and i use is to set up a xmpp/jabber server allowing ssl connections, and only talking by way of that server, so that all communications to/from that server are encrypted using standard ssl. most im clients support multiple accounts/servers, so logging into a separate server for secured jabber conversations isn't a big deal. actually, if everybody had their own jabber server, and everybody configured ssl s2s (server-to-server) connections, then a single central server would not be necessary, but my friends are too lazy to configure s2s (little alone encrypted s2s).

actually, i find it hilarious that secway plays up on the fact that im messages are unencrypted, when the majority (99.9%?) of email is unencrypted. i have only ever known two friends that are sufficiently motivated enough to set-up pgp/gpg for email and i as and with technically-minded software engineers. pgp is a widespread standard with multiple semi-easy to implement solutions, but no one really cares.

sorry to rain on your secway simp suggestion, but i believe it's out of touch with the debian administration community.

[ Parent ]

Re: Jabber Transports (MSN, Yahoo, ICQ etc)
Posted by undefined (68.89.xx.xx) on Wed 17 May 2006 at 13:13
grrr...

"i have only ever known two friends that are sufficiently motivated enough to set-up pgp/gpg for email and i WORK as and with technically-minded software engineers."

(talk about unintelligible posts! ;-)

[ Parent ]

Re: Jabber Transports (MSN, Yahoo, ICQ etc)
Posted by Anonymous (81.165.xx.xx) on Sun 30 Apr 2006 at 22:32
"I did find the config file a bit 'messy' and"

Check the guide. The PDF version also has an index that makes it a piece of cake to find all information about each option.

"I didn't want to install all those Erlang libs just for a IM server."
This is a dependency problem in the Debian package of ejabberd. I think it is fixed in unstable (not sure though). ejabberd only depends on erlang-core and do not need all kind of existing Erlang bindings.

[ Parent ]

Re: Jabber Transports (MSN, Yahoo, ICQ etc)
Posted by frhart (212.159.xx.xx) on Mon 1 May 2006 at 10:15
Sorry, I wasn't clear with my 'messy' comment. What I meant was that I find the format a bit unclear and the comments didn't help much with the configuration. But I agree that there is nothing wrong with the online documentation.

[ Parent ]

Problems?
Posted by chris (213.187.xx.xx) on Wed 17 May 2006 at 10:07
[ View Weblogs ]
I can see from the comments that various people have had problems with the transports.

I have to say that it's been very stable for me on sarge. I did try this stuff ages back on woody - and it was awful - but now it seems just fine.

The only thing that I'd like to sort out is that if I am logged in from two jabber locations (chris@jabber.mydomain.tld/Work and chris@jabber.mydomain.tld/Home) then the transports seem to cope badly with presence. All online users are listed if you add both clients lists together - but - each client gets only some (exclusive).

Having said that - it's not so often I leave the client running - so - not too big an issue.

[ Parent ]

Re: Jabber Transports (MSN, Yahoo, ICQ etc)
Posted by Anonymous (62.84.xx.xx) on Mon 16 Oct 2006 at 10:28
Ive installed ejabberd and tried installing my own transports. I got the impression that it is more feature-complete than jabberd, but my transports just did not want to cooperate. I think Ill try jabberd aswell...

[ Parent ]

confused
Posted by Anonymous (80.172.xx.xx) on Fri 2 Mar 2007 at 19:04
"make sure that the is the same as set in the main config"

what is the "the" that must be the same?

[ Parent ]

Re: confused
Posted by Anonymous (63.147.xx.xx) on Tue 10 Apr 2007 at 22:15
yeah, what the other anonymous said. It seems like those are important parameters.

what are the three "the"'s that must be the same?

[ Parent ]

Re: confused
Posted by chris (213.187.xx.xx) on Wed 11 Apr 2007 at 06:24
[ View Weblogs ]
Hmm. Interesting. I think I may have had some tags in there that have been eaten.

It was something on the lines of that you needed to set:

* the service id="" tag needs the correct hostname (may also need to change other hostnames from localhost to whatever you chose above)
* in the service id="*linker" block - set the ip, port and secret should match what was set in the main config

[ Parent ]

Re: confused
Posted by Anonymous (85.179.xx.xx) on Mon 4 Jun 2007 at 21:02
"the" Domain Name

[ Parent ]