Chat Server Implementation using Jabber and IM Clients Installation
What is jabber ?
1. Rapid and indistinct speech
2. To talk in a noisy, excited, or declamatory manner
3. A streaming XML technology mainly used for instant messaging
Jabber is best known as "the Linux of instant messaging" -- an open, secure, ad-free alternative to consumer IM services like AIM, ICQ, MSN, and Yahoo (see the IM quickstart). Under the hood, Jabber is a set of streaming XML protocols and technologies that enable any two entities on the Internet to exchange messages, presence, and other structured information in close to real time. Jabber technologies offer several key advantages:
Open -- the Jabber protocols are free, open, public, and easily understandable; in addition, multiple implementations exist for clients, servers, components, and code libraries.
Standard -- the Internet Engineering Task Force (IETF) has formalized the core XML streaming protocols as an approved instant messaging and presence technology under the name of XMPP, and the XMPP specifications have been published as RFC 3920 and RFC 3921.
Proven -- the first Jabber technologies were developed by Jeremie Miller in 1998 and are now quite stable; hundreds of developers are working on Jabber technologies, there are tens of thousands of Jabber servers running on the Internet today, and millions of people use Jabber for IM.
Decentralized -- the architecture of the Jabber network is similar to email; as a result, anyone can run their own Jabber server, enabling individuals and organizations to take control of their IM experience.
Secure -- any Jabber server may be isolated from the public Jabber network (e.g., on a company intranet), and robust security using SASL and TLS has been built into the core XMPP specifications.
Extensible -- using the power of XML namespaces, anyone can build custom functionality on top of the core protocols; to maintain interoperability, common extensions are managed by the Jabber Software Foundation.
Flexible -- Jabber applications beyond IM include network management, content syndication, collaboration tools, file sharing, gaming, and remote systems monitoring.
Diverse -- a wide range of companies and open-source projects use the Jabber protocols to build and deploy real-time applications and services; you will never get "locked in" when you use Jabber technologies.
This will download and install jabber, jabber-common and any other packages your system might need. The server will be started automatically at this point, so we need to stop it and update the configuration to work with your host. To stop the server run
# /etc/init.d/jabber stop
Now we can look at the configuration files inside the directory /etc/jabber. The main thing that we need to setup is the hostname directive. The server itself is primarily configured via the XML file /etc/jabber/jabber.xml, but as a convience the startup script of the Debian package will make use of the file jabber.cfg as well, and this is where we'll set the name up. In a small office where you have your own DNS system it is useful to setup a hostname to refer to the system, this allows you to move machines without having to change any clients. We've used chat.my.company before for this purpse. In this case We are just using the hostname of the current machine. So edit the file /etc/jabber/jabber.cfg to have your hostname
JABBER_HOSTNAME (which is then passed to jabberd in the -h switch)
Connecting to the server involves downloading and installing a chat client.Client is gabber for Linux, and Exodus for Windows. Other clients exist packaged for Debian including PSI. To install gabber, on a client machine, run
#apt-get install gabber
Then once it's installed you will be shown a connection dialog. This has space for a username, a password, and a server name. Enter the username and password you wish to use and the name of the server you already setup. (In my case thats undecided.my.flat). Once you click the connect button you will see the following error message
Gabber could not log you in.
Would you like Gabber to try to create a new
account on the selected Jabber server?
Click 'Yes' and your account will be created. You will then see the main contact window which should show that you have received a new message from the server saying 'Welcome'. If you now move to another machine you can repeat the process to add another user. Finally you can add the users to each others contact list, called a roster in Jabber-speak. Click on the Actions menu and select Add Contact. Then choose Add this JabberID. Type in the ID of the user you wish to add in, remembering to add the hostname. For example
All Jabber contacts have the form [email protected] - just like an email address, even though it isnt! Once the other person logs in and approves the addition you will be able to chat to them! The roster lists are all maintained upon the server side, in a directory beneath /var/lib/jabber named after the servers hostname. If you examine one of the ones you've created already you will see there is a section at the start for the username and password and some global options and then at the end there is a section at the end for the contacts. With a bit of scripting you can generate these files for all your users yourself and add each other to their groups.
Jabber Transports (MSN, Yahoo, ICQ etc)
Jabber Clients 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).