This project is being discontinued. Use at your own risk! 😉

Datasink is an implementation of JEP-0136 (Message Archiving) written in perl (what else?).

JEP-0136 defines a storage protocol and common disk format for archiving of messages.

Datasink uses MySQL as storage backend. It’s been written mainly for having a chat history with JWChat as it can’t save to a local disk itself due to security restrictions (I guess it makes sense for a web client to store anything at the server side anyway) but can be used with any other client too (well, actually I don’t think there is any supporting this).

Important Note: This implementation is not in sync with the JEP at the moment. I’m trying to fix this for both, datasink and jwchat ASAP.


10 Responses to Datasink


  1. Comment by Steve | 2005/10/20 at 22:24:30

    In order to make datasink work with XMPP compliant servers that do SASL Authentication like ejabberd or jive messenger you’ll have to patch XML::Stream. To do so please edit XML/ and comment out line 3097 that says

    $stream .= “version=’1.0′ “;

    and change it to

    # $stream .= “version=’1.0′ “;

  2. Comment by YeYo | 2005/10/31 at 11:27:39

    where can i get sample config.xml file? That one from this site is not present 🙁

  3. Comment by Steve | 2005/10/31 at 12:49:44

    Sure it is, check your browser settings. But just in case, here’s its content:

    <connectattempts>-1</connectattempts><!-- '-1' loops forever -->
    <connectsleep>5</connectsleep><!-- seconds to sleep before new connection attempt -->

  4. Comment by rudra | 2006/01/19 at 12:05:33

    Dear sir,

    I’m running wild fire chatt server with JWChatt.I want to integrate DataSink with it.Kindly help me in order to do that.On the web site there is no document I found regarding how install and configure datasink.


  5. Comment by Steve | 2006/01/23 at 09:40:51

    Installation instructions can be found at the head of For information how to connect external components to your jabber server please refer to the documentation that came with your jabber server!

  6. Comment by Chris Carlin | 2006/01/24 at 10:21:00

    Do you have any advise on how hard this would be to use with postgresql?

    And also, have you considered using an xml database? It seems like this is a task that would be exceptionally well served by something like the xml version of BerkeleyDB (see I have no relation to them, just a toy I like to play with occasionally).

  7. Comment by Phani | 2007/03/08 at 17:02:20

    I am also trying to integrate Wildfire Jwchat and datasink i saw the installation intructions at but can u please provide some information on how to install the following perl modules
    install required perl modules
    # – Net::Jabber
    # – DBI
    # – Data::Dumper
    # – Digest::MD5
    # – Getopt::Long

  8. Comment by Steve | 2007/03/09 at 09:40:04

    Phani, either check if those modules are available pre-packaged for your operation system or use CPAN to install them.

    Please note that there is an alternative Implementation of this XEP called MabberMessageLogger which implements a more recent version of XEP-0136. If you’re using JWChat from CVS use this one to get message archiving working.

  9. Comment by Mike | 2008/01/10 at 22:24:58

    Does datasink log MUC messages?

  10. Comment by Steve | 2008/01/11 at 12:07:39

    Mike, datasink doesn’t log messages automatically. It logs whatever you forward to be logged. Thus to answer your question: Yes, it can be used to log MUC messages.