Info: Spicebird Beta 0.7 Final Released

Reporting from Spicebird blog,

Spicebird is a collaboration client that provides integrated access to email, contacts, calendaring and instant messaging in a single application. It provides easy access to various web services while retaining all the advantages of a desktop application. The application is based on projects like Thunderbird, Lightning and Telepathy and adds more functionality and integration among its components.

This release of Spicebird adds the following functionality:

  • Chat with friends on services like Yahoo, Google Talk, AIM, ICQ and Jabber
  • Add iGoogle Gadgets to Spicebird
  • Disable the applications that are unused
  • Access Google calendar
  • Experimental support for managing blogs
  • Available in more than 10 languages
  • Basic set of add-ons
  • Import data from Thunderbird, Outlook and Outlook Express

For a detailed description of this release, see the release notes.

Get Spicebird!

See how to install Spicebird on Linux. I’ll review the latest release very soon :)


IntelligentMirror: RPM and DEB Caching Improved (0.5)

After spending a lot of time with youtube cache, now I am trying to devote some time to update intelligentmirror with required features and enhancements that youtube cache already enjoys. In the same direction here is version 0.5 of intelligentmirror.


  • Added max_parallel_downloads options to controll the maximum threading fetching from upstream to cache the packages.
  • Fine grained control on logging via max_logfile_size and max_logfile_backups option.
  • Added setup script to help you install intelligentmirror. No need to execute commands one by one for installation. Just run
 [root@localhost]# python install [ENTER]
  • Added update script (update-im). So in case you decide to change the locations for caching rpm/deb packages, just run
 [root@localhost]# update-im [ENTER]


 [root@localhost]# /usr/sbin/update-im [ENTER]
  • Download scheduler similar to youtube cache is added to facilitate the download queing in case of large number of requests.
  • More informative logging.
  • cache.log is not flooding anymore with XMLRPC logs and python tracebacks.
  • Added extensive exception handling thoughout the program.


  1. RPMs for Fedora/Red Hat/Cent OS
  2. Source RPMs for Fedora/Red Hat/Cent OS
  3. Source Tar balls

Installation and Configuration

INSTALL and README files should help you throughout the installation and configuration process.

In case you have questions, ask them here in comments. Suggestions for improvement are welcome :)


How To: Configure Caching Nameserver (named)


To configure a caching nameserver on a local machine which will cascade to another previously configured and functional nameserver (may or may not be caching. It’ll generally be your ISP nameserver or the one provided by your organization).


  • Reduces the delay in domain name resolution drastically as the requests for frequently accessed websites are served from cache.


  • named gets a request for domain resolution.
  • It checks whether the request can be satisfied from cache. If the answer is in cache and not stale, the request is satisfied from cache itself saving a lot of time :)
  • If request can’t be satisfied from cache, named queries the first parent. If it replies with the answer, then named will cache the response and subsequent requests for the same domain name will be satisfied from the cache.
  • In case first parent fails to reply, named will query the second parent and so on.

(The working is my understanding of caching-nameserver using wireshark as traffic analysis tool and caching-nameserver may not behave exactly as explained above.)

How to install

named is by default on most of the systems by the package name ‘caching-nameserver‘. If its not present on your system, install using

[root@localhost ~]# yum install caching-nameserver [ENTER]
# If that doesn't work try this
[root@localhost ~]# yum install bind [ENTER]

How to configure

The main configuration file for named resides in /var/named/chroot/etc/named.caching-nameserver.conf which is also soft linked from /etc/named.caching-nameserver.conf . named configuration file supports C/C++ style comments.

For a caching nameserver which will cascade to another nameserver, there is nothing much to be configured. You need to configure “options” block. Below is a configuration file for a machine with IP address cascading to two nameserver and The comments inline explain what each option does.

options {
  // Set the port to 53 which is standard port for DNS.
  // Add the IP address on which named will listen separated by semi-colons.
  // It'll be your own IP address.
  listen-on port 53 {;;};
  // These are default. Leave them as it is.
  directory   "/var/named";
  dump-file   "/var/named/data/cache_dump.db";
  statistics-file "/var/named/data/named_stats.txt";
  memstatistics-file "/var/named/data/named_mem_stats.txt";
  // The machines which are allowed to query this nameserver.
  // Normally you'll allow only your machine. But you can allow other machines also.
  // The address should be separated by semi-colons. To allow a network,
  // the line would be
  // allow-query {localhost;; };
  // Don't forget the semi-colons.
  allow-query     { localhost;; };
  recursion yes;
  // The parent nameservers. List all the nameserver which you can query.
  forwarders {;; };
  forward first;
logging {
        channel default_debug {
                file "data/";
                severity dynamic;
zone "." IN {
  type hint;
  file "";
include "/etc/named.rfc1912.zones";

Start caching-nameserver

Now start the caching-nameserver using the following command

[root@localhost ~]# server named start [ENTER]


[root@localhost ~]# /etc/init.d/named start [ENTER]

To make named start every time your reboot your machine use following command

[root@localhost ~]# chkconfig named on [ENTER]

Using caching-nameserver

To use your caching-nameserver, open /etc/resolv.conf file and add the following line


Comment all other lines in the file, so that finally the file looks like

; generated by /sbin/dhclient-script

Now your system will use your own nameserver (in caching mode) for resolving all domain names. To test if your nameserver use the following command

[root@localhost ~]# dig [ENTER]

Now if you use that command for the second time, the resolution time will be around 2-3 milli seconds while first time it would be around 400-700 milli seconds.


Below is two subsequent runs of dig for . Notice the Query time.

[root@bordeaux SPECS]# dig
; <<>> DiG 9.4.2rc1 <<>>
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7839
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;                  IN      A
;; ANSWER SECTION:           83629   IN      A
;; AUTHORITY SECTION:           79709   IN      NS
;; ADDITIONAL SECTION:        79709   IN      A
;; Query time: 531 msec
;; WHEN: Wed Nov 19 18:04:47 2008
;; MSG SIZE  rcvd: 79
[root@bordeaux SPECS]# dig
; <<>> DiG 9.4.2rc1 <<>>
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64233
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;                  IN      A
;; ANSWER SECTION:           83625   IN      A
;; AUTHORITY SECTION:           79705   IN      NS
;; ADDITIONAL SECTION:        79705   IN      A
;; Query time: 1 msec
;; WHEN: Wed Nov 19 18:04:51 2008
;; MSG SIZE  rcvd: 79
[root@bordeaux SPECS]#

Google is Fastest

While testing a piece of code for my squid plugin, I ended up changing permissions of /tmp/ directory to 0755. A few minutes later (after making changes to the code), I tried committing it to and got this error

[project@bordeaux youtube_cache]$ git push --all ssh://
Enter passphrase for key '/home2/Studies/project/.ssh/id_rsa':
ssh_control_listener bind(): Permission denied
fatal: The remote end hung up unexpectedly
error: failed to push to 'ssh://'
[project@bordeaux youtube_cache]$

Well, I couldn’t understand the error and jumped to #fedora-admin. I pasted the error on pastebin. Almost a minute laster, while trying to conquer the error, I Googled the exact error and I was damn surprised to see the paste as first result. What an indexing speed Google has??? See the screen shot for proof :)

Google is Fastest

In #fedora-admin ricky confirmed that nothing was wrong on server side and it should be a local problem with my machine or proxy server at my insti border. A few minutes later, I reliazed the /tmp/ permission thing and changing permissions back to 0777 fixed everything :)


Info: Spicebird 0.7 Pre with Awesome Features

Spicebird is

your one platform for many collaboration needs. It provides e-mail, calendaring and instant messaging with intuitive integration and unlimited extensibility.

Spicebird beta 0.7 pre release is out now and can be downloaded in 10 languages from the i10n nightly build archive. For the latest nightly build of English version, check this English nightly build archive.

Some of the new features in version 0.7 are

  • Google Applets in Home Tab
    • You can add Google applets in the Home tab. For example: On home tab, click Add Applet -> Google Applet. Add a url to Google applet (e.g. Google Map Search). And you’ll have a nice Google map on your home page :)
    • Or add date & time applet ( this url )
    • Or from the thousands of applets available from Google :)

Google Applets in Spicebird

  • Auto Update Feature
    • Spicebird now checks for updates automatically :)

Spicebird Auto Update

  • Its way faster than the previous version. Thats my personal opinion. I was using Spicebird beta 0.4 since more than 6 months.

Check the official release announcement for more details.

How to install Spicebird for test usage


Get the latest version of Spicebird from nighty build archive.

Extract and Move

Extract the Spicebird archive file as

[root@localhost ~]# tar -xjf spicebird-beta-0.7pre.en-US.linux-i686.tar.bz2 [ENTER]

Move the extracted directory to /opt/

[root@localhost ~]# mv spicebird-beta /opt/ [ENTER]

Create shortcut on Panel

Right click on Gnome panel and click “Add to Panel

Add Spicebird to Panel

Click on “Custom Application Launcher”

Spicebird Custom Application Launcher

Fill in appropriate details as shown in the following image

Spicebird Create Application Launcher

Choose an icon for Spicebird by clicking the “No Icon” button on the top left corner.

Spicebird Launcher Icon

Click Ok. And you are done. Now click the new icon that has just appeared on the panel. Rest of the configuration like account creation and settings is exactly same as Thunderbird or Evolution or any other mail client.

Reference : Spicebird Official Website


Hack: A Fast Network Scanning Program

I was searching for a simple tool which can do a port scanning in a huge network quickly without making me wait for ages. I first thought of using nmap, but it was a bit too complex and it takes a lot of time to discover the machines even after optimizing the parameters. After searching a lot, I wrote to one of my seniors, Sandeep Kumar, asking the details of his program which maintains a list of active FTP servers in the network. He replied with a reference to his own findings about the network scanning tools. He is using an enhanced version of a program originally written by Troy Robinson. I tried the program out of curiosity and found out that its damn fast as compared to nmap (no literal comparison) :) The program can be downloaded from here.

How to use

Compile the program using gcc as

[root@localhost ~]# gcc NetworkScanner.c [ENTER]

Now create a file IPRange.txt containing the IP address ranges for your network. The contents of the file may be

172.16.*.* Meaning all the IP address with first two parts as 172.16 and rest of the address will be generated by permutations.

172.16.1-16.* Meaning the first two parts are fixed. Third part will vary from 1 to 16. And the fourth part will be permuted from 0 to 255.

So an IPRange.txt may look like


Now run the program as

[root@localhost ~]# ./a.out port_to_be_scanned Parallel_attempts IP_list_file output.txt [ENTER]

Parallel_attempts is the number of processes that’ll be forked for scanning the network port. It is safe to have its value as 255. A very high value may hog the network or may even slow down your machine. So an example run would be

[root@localhost ~]# ./a.out 21 255 IPRange.txt Output.txt [ENTER]


I carried out a lot of test on my network using the following setup and parameters

Machine : AMD X2 5600+ (2.6GHz Dual Core), 4GB 800MHz DDR2 RAM, Gigabit Ethernet Card (on 100mbps network).

Port : 21 (FTP)

IPRange.txt : Total 16896 IP Addresses

Machines on wired (100mbps) network
Machines on wireless (54mbps) network

Network Scanner Benchmarks

Parallel Attempts

Scanning Time (seconds)

Upload Bandwidth (kbps)

255 180 13
512 90 25
1024 47 55
2048 25 100
4096 14 205
6144 11 307
8192 9 374

The interval between two scans was almost 30-40 seconds. I think parallelism beyond 8192 will crash my machine, so I didn’t try. You can try it at your own risk :) I hope this program help you scan your network.


IntelligentMirror Gets Even More Intelligent (1.0.1)

Warning : This version of IntelligentMirror is compatible with only squid-2.7 as of now. It is NOT compatible even with squid-3.0.

IntelligentMirror Version 1.0.1

I have been following squid development regularly (at least the part in which I am interested) and they have introduced a new directive in squid-2.7 known as StoreUrlRewrite (storeurl_rewrite_program). Using this directive you can instruct squid to cache url A ( as url B ( In simple words you can direct squid to cache any url as any other url without any extra efforts.

So keeping the above directive in mind, I have worked out a different version of intelligentmirror especially for squid-2.7.

IntelligentMirror : Old method of operation

  1. IntelligentMirror gets a client request for a URL.
  2. Check: if URL is not in (RPM, metadata file)
    • Then its none of our business.
    • Let proxy handle it the normal way.
    • Done and exit.
  3. Check: if RPM/metadata is available in cache
    • Stream the RPM/metadata from cache.
    • Done and exit.
  4. Check: if RPM/metadata is not available in cache
    • Download in parallel for caching in some dir and stream.
    • Done and exit.

IntelligentMirror : New method of operation

  1. IntelligentMirror gets a client request for a URL.
  2. Check: if request for rpm
    1. Direct squid to cache the request as http://<same_host_all_the_time>/intelligentmirror/<rpmname>.rpm
  3. Check: if request for deb
    1. Direct squid to cache the request as http://<same_host_all_the_time>/intelligentmirror/<debname>.deb
  4. Done and exit.

So your squid will see every request for an rpm package as a request http://<same_host_all_the_time>/intelligentmirror/<rpmname>.rpm. So, if you happen to request the same rpm from a different mirror, it’ll still be served from cache :)


  1. No need to check if the url supplied by squid is for rpm or not because storeurl_rewrite_program has an acl controller attached which will invoke intelligentmirror for urls ending in .rpm .
  2. No need to check if the url is already cached or not. No need to worry about the directory where you are going to store the packages. No human intervention is needed in maintaining the cache. Almighty squid is doing everything for us.
  3. No need to worry if the target package has changed because of the resigning or whatever because squid will do that for you.
  4. No need to actually download the package in parallel for caching because squid is already doing that.
  5. No need to worry about the hashing algorithms and storage optimizations for the cached content.


  1. RPM for Fedora/Red Hat
  2. Source RPM for Fedora/Red Hat
  3. Source Tarball

Install and Configure

The install and configure files should be enough to guide you through the installation if you choose the tar ball way. Otherwise you can always install from rpm from the above link.

Note1: You have to configure your squid to use intelligentmirror as a plugin even if you install via rpm. Check the configure file at the above link.

Note2: StoreUrlRewrite will probably be available in squid-3.1.


IntelligentMirror: RPM and DEB Caching Improved (0.4)

IntelligentMirror version 0.4 is available now. There have been significant improvements in intelligent mirror since last release.


  1. Fixed defunct process problem. You will not see defunct python processes hanging around anymore. Previously every forked daemon used to got defucnt because parent never waited for the forked child to finish.
  2. IntelligentMirror now supports caching of Debian packages just like rpms. So now IntelligentMirror is best suited shared environments where people have different tastes.
  3. Intelligent Mirror now uses url_rewrite_program instead of redirect_program. This boosts the efficiency of IntelligentMirror by a significant factor as url_rewrite_program has an acl controller url_rewrite_access. And using url_rewrite_access only requests for rpm/deb packages will be passed to Intelligent Mirror. So, IM now need not process each and every incoming request. Also, it has redirector_bypass directive which will bypass IM in case all the instances of IM are busy serving requests. So, squid will not die with a fatal error in case of huge requests.
  4. Options to enable/disable caching for rpm and Debian packages have been added.
  5. Options to control the total size of caching directories and the size of individual package to be cached have also been introduced.
  6. Proxy authentication is also supported now just the way it is supported in yum.
  7. Packages are not checked for last-modified time anymore. Because in principle two rpms A and B can only have same name iff they have the same contents. So, the delay in response time in case of hits has reduced.


  1. RPMs for Fedora/Red Hat
  2. Source RPMs for Fedora/Red Hat
  3. Source Tar balls

Installation and configuration is easy and the INSTALL and README files should serve the purpose.

In case you have any suggestions or problems, leave a comment here or file a ticket on project page.


Humour: Ubuntu is Costlier than Microsoft Windows XP

Dell started selling their new Dell Inspiron Mini 9 series yesterday as informed by slashdot article. Lately I have been looking for a mobile solution which should be easy to carry and have enough computing power to meet my expectation. I liked the SSD concept replacing the mechanical hard disk. I just moved over to Dell website and tried configuring one for myself (go here to configure them yourself). I am an open source addict but I am not an Ubuntu fan but still going with ubuntu sounds better than going with M$ stuff. So, started configuring the Ubuntu machine and pushed everything (main memory, hard disk and other components) to maximum. A few minutes later I realized that the Ubuntu model’s price is more than the equivalent config with M$ Windows.

Below is a table comparing Windows XP and Ubuntu model of Dell Inspiron Mini 9 series. The differences are highlighted in red color.

Ubuntu 8.04
Microsoft Windows XP Home Premium
My Components
Obsidian Black
Obsidian Black
Mini OS powered by Ubuntu 8.04
Genuine Windows® XP Home Edition
1GB DDR2 at 533MHz
1GB DDR2 at 533MHz
16GB Solid State Drive
16GB Solid State Drive
Built-in Bluetooth 2.1 capability
Built-in Bluetooth 2.1 capability
Integrated 1.3M Pixel Webcam
Integrated 1.3M Pixel Webcam
My Service
1Yr Ltd Warranty and Mail-In Service
1Yr Ltd Warranty and Mail-In Service
Also Includes
Intel® Atom Processor® N270 (1.6GHz/533Mhz FSB/512K cache) Intel® Atom Processor® N270 (1.6GHz/533Mhz FSB/512K cache)
Glossy 8.9 inch LED display (1024X600)
Glossy 8.9 inch LED display (1024X600)
Intel Graphics Media Accelerator (GMA) 950
Intel Graphics Media Accelerator (GMA) 950
Wireless 802.11g Mini Card
Wireless 802.11g Mini Card
32WHr Battery (4 cell)
32WHr Battery (4 cell)
Base LCD Assembly
Base LCD Assembly
Base LCD Assembly in Black
Base LCD Assembly in Black
No Installation
No Installation
Adobe® Acrobat® Reader 8.1, English
McAfee SecurityCenter 30-day Trial
No ISP requested

According to the above table Ubuntu alone is costlier than Genuine Microsoft Windows XP Home Premium + Adobe Acrobat Reader 8.1 English + McAfee SecurityCenter 30-day Trial + Microsoft Works 9 (MS Word Excluded). I am not sure if Dell is trying to promote Microsoft by selling Windows XP model at a lower price or they are generating more revenues for Ubuntu by selling it at a higher price or they are just fooling the customers. Below are the picture proofs if Dell changes the prices.

Inspiron Ubuntu

Inspiron Windows


How To: Install Fedora without CD or DVD

Note: If you are new to Fedora/Linux, I highly recommend the book “Fedora Linux Toolbox

[amazon-product alink=”0000FF” bordercolor=”000000″ height=”240″]0470082917[/amazon-product]

Use Case

  1. When you don’t have CD / DVD drive on your system.
  2. You have Fedora DVD but your system has only a CD Drive.
  3. You don’t want to waste time and resources in burning iso on optical media.


  1. You have a Fedora DVD iso or rescue cd iso.
  2. You have a Linux installation on your system.
  3. You have a partition (FAT32, ext2, ext3) which you will not format while installing the new OS.

How to proceed

Let us assume you want to install Fedora 9 on your system and you have a Linux distro already installed on your system. You have downloaded the Fedora DVD iso (Fedora-9-DVD-i686.iso). And you have a FAT32/ext2/ext3 partition /stuff/ which you will not format during installation.

Step 1 : Move the Fedora DVD iso to /stuff/ directory.

[root@saini saini]# mv Fedora-9-DVD-i686.iso /stuff/ [Enter]

Step 2 : Mount Fedora DVD iso on /mnt/

[root@saini saini]# mount /stuff/Fedora-9-DVD-i686.iso /mnt/ -ro loop [Enter] (do as root)

Step 3 : Copy the initrd.img and vmlinuz to /boot/ partition

[root@saini saini]# cd /mnt/isolinux/ [Enter]
[root@saini isolinux]# cp initrd.img vmlinuz /boot/ [Enter] (do as root)

Step 4 : Create grub entry for booting into Fedora 9

Add these lines at the end of your /boot/grub/grub.conf file.

title Fedora 9 (New installation)
    kernel /vmlinuz
    initrd /initrd.img

Step 5 : Note the device having Fedora DVD iso

[root@saini saini]# df -h [Enter]
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              15G  9.5G  4.1G  70% /
/dev/sda8             135G  116G   13G  91% /stuff
/dev/sda5             4.8G  1.2G  3.4G  26% /home
/dev/sda1              99M   12M   82M  13% /boot

In this case /dev/sda8 contains Fedora DVD iso. Note this down as you need it later.

Step 6 : Reboot

Reboot your system and boot into the Fedora 9 (New installation) grub entry.

Step 7 : Install from hard disk

While in installation wizard, select “Hard drive” as installation method and choose /dev/sda8 as it contains the Fedora DVD iso. And rest is damn easy.