<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Tinder Blog</title>
	<atom:link href="http://tinderblog.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://tinderblog.wordpress.com</link>
	<description>Technology in Developing Regions</description>
	<lastBuildDate>Sat, 27 Jun 2009 21:01:15 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='tinderblog.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/d953dee7c64fc7eb35bf572f96640e52?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Tinder Blog</title>
		<link>http://tinderblog.wordpress.com</link>
	</image>
			<item>
		<title>New spammer check: too many PTRs</title>
		<link>http://tinderblog.wordpress.com/2009/06/27/new-spammer-check-too-many-ptrs/</link>
		<comments>http://tinderblog.wordpress.com/2009/06/27/new-spammer-check-too-many-ptrs/#comments</comments>
		<pubDate>Sat, 27 Jun 2009 20:59:21 +0000</pubDate>
		<dc:creator>chrisw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tinderblog.wordpress.com/2009/06/27/new-spammer-check-too-many-ptrs/</guid>
		<description><![CDATA[I just found the following unusual message in my Exim logs:

2009-06-27 21:14:58 host name alias list truncated for 69.10.169.230

I guessed that this meant that the host had a long list of reverse name mappings (IP to name). Curious as to why, I did a DNS lookup on that IP:

chris@top ~ $ host 69.10.169.230 &#124; wc [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=114&subd=tinderblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I just found the following unusual message in my Exim logs:</p>
<pre style="border:1px dashed #bbf;background-color:#ddf;padding:.5em;">
2009-06-27 21:14:58 host name alias list truncated for 69.10.169.230
</pre>
<p>I guessed that this meant that the host had a long list of reverse name mappings (IP to name). Curious as to why, I did a DNS lookup on that IP:</p>
<pre style="border:1px dashed #bbf;background-color:#ddf;padding:.5em;">
chris@top ~ $ host 69.10.169.230 | wc -l
86

chris@top ~ $ host 69.10.169.230 | head -5
;; Truncated, retrying in TCP mode.
230.169.10.69.in-addr.arpa domain name pointer heavenlydonut.com.
230.169.10.69.in-addr.arpa domain name pointer pitrivertribe.org.
230.169.10.69.in-addr.arpa domain name pointer shastawebmail.com.
230.169.10.69.in-addr.arpa domain name pointer vidalvineyard.com.
</pre>
<p>So, the host has 86 names, right? And they all look like spam domains to me.</p>
<p>This looks like someone is trying hard to get around SMTP HELO verification, by providing a valid domain with forward and reverse lookups that map to their own IP. But they tried a bit too hard, because that&#8217;s a LONG list of domains. Nobody does that in the real world, I think.</p>
<p>So I decided to block mail from anyone with more than four reverse DNS entries. I have no idea what the collateral damage will be. I&#8217;m going to keep an eye on it.</p>
<p>Luckily, Exim makes this very easy:</p>
<pre style="border:1px dashed #bbf;background-color:#ddf;padding:.5em;">
defer
        set acl_c_ptr_count = ${reduce {${lookup dnsdb{&gt;: \
                ptr=$sender_host_address}}} {0} {${eval:$value+1}}}
        condition = ${if &gt;{$acl_c_ptr_count}{4}}
        message = Too many PTR records ($acl_c_ptr_count)
</pre>
<p>This counts the number of entries in the PTR list, assigns it to a local variable, and tests whether that number is greater than four. If so, it defers the message (tells the sender to come back later). This gives me a chance to fix it if I discover that it&#8217;s rejecting valid email, and still get the message.</p>
<p>The code to count the number of entries in a list is pretty ugly. I don&#8217;t suppose anyone wants to implement a &#8220;count&#8221; operation to count the number of items in a list in Exim?</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tinderblog.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tinderblog.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tinderblog.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tinderblog.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tinderblog.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tinderblog.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tinderblog.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tinderblog.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tinderblog.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tinderblog.wordpress.com/114/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=114&subd=tinderblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tinderblog.wordpress.com/2009/06/27/new-spammer-check-too-many-ptrs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7782b62dbb1ec838a7887795ab59a53?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisw</media:title>
		</media:content>
	</item>
		<item>
		<title>Traffic shaping with PF, ALTQ and HFSC</title>
		<link>http://tinderblog.wordpress.com/2009/06/12/traffic-shaping-with-pf-altq-and-hfsc/</link>
		<comments>http://tinderblog.wordpress.com/2009/06/12/traffic-shaping-with-pf-altq-and-hfsc/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 10:21:27 +0000</pubDate>
		<dc:creator>chrisw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tinderblog.wordpress.com/?p=101</guid>
		<description><![CDATA[I usually use Linux firewalls for traffic shaping, because the power of the traffic control (tc) system exceeds FreeBSD&#8217;s dummynet in most ways.
Dummynet can be used to create arbitrary delays and packet loss, which is very useful for simulating poor connections, but not for sharing bandwidth and prioritising packets between different traffic classes on a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=101&subd=tinderblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I usually use Linux firewalls for traffic shaping, because the power of the traffic control (tc) system exceeds FreeBSD&#8217;s dummynet in most ways.</p>
<p>Dummynet can be used to create arbitrary delays and packet loss, which is very useful for simulating poor connections, but not for sharing bandwidth and prioritising packets between different traffic classes on a real traffic shaper.</p>
<p>However, I&#8217;ve just been testing PF (the new standard packet filter) and ALTQ (the alternative queueing system) on FreeBSD, and I&#8217;m impressed by the capabilities. It does annoy me that ALTQ is not enabled in the default kernel, so you have to <a href="http://www.freebsd.org/doc/en/books/handbook/kernelconfig-building.html">compile your own kernel</a>. I used the following commands:</p>
<pre style="border:1px dashed #bbf;background-color:#ddf;padding:.5em;">
cd /boot
cp -p kernel GENERIC # backup the current kernel
cd /usr/src/sys/i386/conf
cp GENERIC ~/ALTQ
ln -s ~/ALTQ .
vi ALTQ
</pre>
<p>and added the following lines to my new kernel configuration file, which I called ALTQ:</p>
<pre style="border:1px dashed #bbf;background-color:#ddf;padding:.5em;">
options ALTQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_HFSC
options ALTQ_PRIQ
</pre>
<p>and then compiled and installed the new kernel:</p>
<pre style="border:1px dashed #bbf;background-color:#ddf;padding:.5em;">
cd /usr/src
make buildkernel KERNCONF=ALTQ
make installkernel KERNCONF=ALTQ
</pre>
<p>and then reboot to load the new kernel. After that, we need to create a pf configuration. I prefer HFSC over CBQ queueing, because:</p>
<ul>
<li>HFSC is guaranteed accurate, whereas CBQ is approximate</li>
<li>CBQ requires you to guess the average packet size and its accuracy depends entirely on this</li>
<li>HFSC has service curves which allow you to deliver small files quickly <strong>and</strong> drop the priority of large connections (e.g. file downloads) with great ease.</li>
</ul>
<p>I prefer PF+ALTQ over linux TC because:</p>
<ul>
<li>PF and ALTQ are fully integrated and configured using the same file, whereas TC has its own (very hard to use) classifier. I normally use the iptables CLASSIFY target to classify traffic instead, but this is not integrated.</li>
<li>TC is very hard to use generally. The authors seem more concerned with functionality than usability.</li>
<li>ALTQ has named queues which helps usability enormously compared to TC&#8217;s hex numbered classes.</li>
<li>ALTQ gives very low delay when the interface is not 100% saturated, which seems impossible to achieve with TC.</li>
</ul>
<p>Here is a sample configuration of PF+ALTQ that I used for testing on a transparent bridging firewall (bridge0 connecting em0 and em1):</p>
<pre style="border:1px dashed #bbf;background-color:#ddf;padding:.5em;">
altq on em1 hfsc bandwidth 1Mb queue { ftp, ssh, icmp, other }
queue ftp bandwidth 30% priority 0 hfsc (upperlimit 99%)
queue ssh bandwidth 30% priority 2 hfsc (upperlimit 99%)
queue icmp bandwidth 10% priority 2 hfsc (upperlimit 99%)
queue other bandwidth 30% priority 1 hfsc (default upperlimit 99%)
pass out quick on bridge0 inet proto tcp from any port 21 to any queue ftp
pass out quick on bridge0 inet proto tcp from any port 22 to any queue ssh
pass out quick on bridge0 inet proto icmp from any to any queue icmp
pass out quick on bridge0 all
</pre>
<p>We are only queueing on em1 here, which is the downstream, so we are only limiting downloads. We deliberately limit them to 1 Mbps for testing. The limit should always be lower than your actual download bandwidth, to ensure that the queue is on the FreeBSD firewall and not any other device.</p>
<p>We create four named queues under the root, which is implicitly named <code>root_em1</code>. We reserve 30% of bandwidth each for FTP, SSH and other traffic, and 10% for ICMP. However, any class can exceed its reserved bandwidth, up to the <code>upperlimit</code>, which defaults to 100%, which means that one class can potentially cause delays to traffic in other classes, so we override this to 99%.</p>
<p>Note that even though we create the queues on the em1 device, we must filter packets on bridge0, as otherwise our traffic does not match our pf rules.</p>
<p>Update: I found some more information about <a href="http://doc.pfsense.org/index.php/Traffic_Shaping_Guide">traffic shaping</a> and <a href="http://devwiki.pfsense.org/HFSCBandwidthShapingNotes">advanced usage of HFSC</a>, including realtime guaranteed classes for VoIP.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tinderblog.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tinderblog.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tinderblog.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tinderblog.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tinderblog.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tinderblog.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tinderblog.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tinderblog.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tinderblog.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tinderblog.wordpress.com/101/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=101&subd=tinderblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tinderblog.wordpress.com/2009/06/12/traffic-shaping-with-pf-altq-and-hfsc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7782b62dbb1ec838a7887795ab59a53?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisw</media:title>
		</media:content>
	</item>
		<item>
		<title>Flash encryption broken, Adobe censors SourceForge</title>
		<link>http://tinderblog.wordpress.com/2009/05/24/flash-encryption-broken-adobe-censors-sourceforge/</link>
		<comments>http://tinderblog.wordpress.com/2009/05/24/flash-encryption-broken-adobe-censors-sourceforge/#comments</comments>
		<pubDate>Sun, 24 May 2009 15:02:00 +0000</pubDate>
		<dc:creator>chrisw</dc:creator>
				<category><![CDATA[Appropriate Technology]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[dmca]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[freedom]]></category>
		<category><![CDATA[proprietary]]></category>

		<guid isPermaLink="false">http://tinderblog.wordpress.com/2009/05/24/flash-encryption-broken-adobe-censors-sourceforge/</guid>
		<description><![CDATA[As seen on Slashdot:
Adobe uses a proprietary encrypted communications system between their Flash player and their Media Server product. This is intended to ensure that only people who pay for Flash Media Server can stream Flash movies, and only official clients can access them.
In other words, it&#8217;s a copy protection (DRM) scam. It&#8217;s completely antithetical [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=96&subd=tinderblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>As <a href="http://tech.slashdot.org/article.pl?sid=09/05/23/2017218">seen on Slashdot</a>:</p>
<p>Adobe uses a proprietary encrypted communications system between their Flash player and their Media Server product. This is intended to ensure that only people who pay for Flash Media Server can stream Flash movies, and only official clients can access them.</p>
<p>In other words, it&#8217;s a copy protection (<a href="http://en.wikipedia.org/wiki/Digital_rights_management">DRM</a>) scam. It&#8217;s completely antithetical to the goals of running a free software desktop or serving content to users using free software. However, despite Adobe&#8217;s claims, it doesn&#8217;t actually provide any security except through the obscurity of the protocol and some short secret keys.</p>
<p><a href="http://lkcl.net/">lkcl</a> claims to have created an open source, clean-room implementation of this protocol, called RTMPE, and published it on Sourceforge. Despite promising in January to <a href="http://tech.slashdot.org/article.pl?sid=09/01/22/1844230&amp;tid=215">open RTMP</a>, Adobe wants to protect their revenue stream, so they <a href="http://yro.slashdot.org/article.pl?sid=09/05/22/1254246&amp;tid=153">sent</a> a <a href="en.wikipedia.org/wiki/DMCA">DMCA</a> takedown notice to Sourceforge, who <a href="http://sourceforge.net/projects/rtmpdump/">complied by censoring the project</a>.</p>
<p>If you value your freedom to publish and receive Flash videos using free software, help us fight Adobe and embarrass SourceForge by <a href="http://sourceforge.net/community/cca09/nominate/?project_name=rtmpdump&amp;project_url=http://sourceforge.net/projects/rtmpdump/">nominating rtmpdump</a> for &#8220;Best Project for Multimedia&#8221; in the SourceForge Community Choice awards.</p>
<p><a href="http://sourceforge.net/community/cca09/nominate/?project_name=rtmpdump&amp;project_url=http://sourceforge.net/projects/rtmpdump/"><img border="0" src="http://sourceforge.net/images/cca/cca_nominate.png"></a></p>
<p>If you just want to download it, here are some handy links now that it&#8217;s been censored by SourceForge: <a href="http://lkcl.net/rtmp">LKCL</a> <a href="http://downloads.sehe.nl/lkcl.net/rtmp/">sehe.nl</a> <a href="http://www.megashare.com/935955">megashare.com</a> <a href="http://www.mininova.org/det/2613010">mininova.org</a> <a href="http://www.sumotorrent.com/en/files/2973323/rtmpdump-v1.6.tar.gz.html">sumotorrent.com</a> <a href="http://www.fulldls.com/torrent-linuxapp-1738933.html">fulldls.com</a> <a href="http://btjunkie.org/torrent/rtmpdump-v1-6-tar-gz/44325ecd7c57a7f6fac0c2f41ba92c5feda6ecf6c5f2">btjunkie.org</a> <a href="http://www.mybittorrent.com/details/5ecd7c57a7f6fac0c2f41ba92c5feda6ecf6c5f2/">mybittorrent.com</a> <a href="http://www.demonoid.com/files/details/1931454/3100888/">demonoid.com</a> <a href="http://www.mininova.org/tor/2613010">mininova/TOR</a>.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tinderblog.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tinderblog.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tinderblog.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tinderblog.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tinderblog.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tinderblog.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tinderblog.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tinderblog.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tinderblog.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tinderblog.wordpress.com/96/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=96&subd=tinderblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tinderblog.wordpress.com/2009/05/24/flash-encryption-broken-adobe-censors-sourceforge/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7782b62dbb1ec838a7887795ab59a53?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisw</media:title>
		</media:content>

		<media:content url="http://sourceforge.net/images/cca/cca_nominate.png" medium="image" />
	</item>
		<item>
		<title>Ubuntu Live CD/Network Boot</title>
		<link>http://tinderblog.wordpress.com/2009/04/29/ubuntu-live-cdnetwork-boot/</link>
		<comments>http://tinderblog.wordpress.com/2009/04/29/ubuntu-live-cdnetwork-boot/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 18:24:00 +0000</pubDate>
		<dc:creator>chrisw</dc:creator>
				<category><![CDATA[Appropriate Technology]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[live]]></category>
		<category><![CDATA[nfs]]></category>
		<category><![CDATA[pxe]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://tinderblog.wordpress.com/?p=92</guid>
		<description><![CDATA[Live CDs are great. In particular, they&#8217;re a great way to try out software, knowing that the chances of damaging the host system are minimal and you can throw away the entire system if you want to.
Sometimes you want to use a live CD environment without a CD. CDs are slow, get lost and scratched, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=92&subd=tinderblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Live CDs are great. In particular, they&#8217;re a great way to try out software, knowing that the chances of damaging the host system are minimal and you can throw away the entire system if you want to.</p>
<p>Sometimes you want to use a live CD environment without a CD. CDs are slow, get lost and scratched, and require a CD drive. If you&#8217;re going to use live environments a lot, you&#8217;d probably prefer to boot them over the network from a machine with a hard disk and a cache.</p>
<p>Luckily, Ubuntu&#8217;s live CD includes all the necessary support to do this easily, if you know how to use it. Unfortunately, it&#8217;s not really documented as far as I can tell. Please correct me if I&#8217;m wrong about this.</p>
<p>I managed to make the live CD boot over the network on a PXE client using the following steps.</p>
<ul>
<li>set your DHCP server up to hand off to a TFTP server. For example, add the following lines to your subnet definition in /etc/dhcp3/dhcpd.conf:</li>
<pre style="border:1px dashed #bbf;background-color:#ddf;padding:.5em;">
next-server 10.0.156.34;
filename "pxelinux.0";
</pre>
<li>get a copy of <code>pxelinux.0</code> from the pxelinux package and put it in the tftproot of your TFTP server.</li>
<li>copy the <code>casper</code> directory off the CD and put it into your tftproot as well.</li>
<li>get an NFS server on your network to loopback-mount the Desktop ISO (e.g. ubuntu-8.04.2-desktop-i386.iso) and export the mount directory through NFS. Let&#8217;s say your NFS server is 1.2.3.4 and the ISO is mounted at <code>/var/nfs/ubuntu/live</code>. Edit <code>/etc/exports</code> on the server and export the mount directory to the world by adding the following line:</li>
<pre style="border:1px dashed #bbf;background-color:#ddf;padding:.5em;">
/var/nfs/ubuntu/live *(ro,all_squash,no_subtree_check)
</pre>
<li>put the following section into your <code>tftproot/pxelinux.cfg/default</code> file:</li>
<pre style="border:1px dashed #bbf;background-color:#ddf;padding:.5em;">
DEFAULT live-804
LABEL live-804
  kernel casper/vmlinuz
  append file=/cdrom/preseed/ubuntu.seed boot=casper initrd=ubuntu/ubuntu-8-04/casper/initrd.gz netboot=nfs nfsroot=1.2.3.4:/var/nfs/ubuntu/live quiet splash --
</pre>
<li>test that the PXE client boots into the live CD environment</li>
<li>if it doesn&#8217;t, remove the &#8220;quiet splash&#8221; from the end of the &#8220;append&#8221; line and boot it again, to see where it gets stuck.</li>
</ul>
<p>I hope this helps someone, and that NFS-booting a live environment will be properly documented (better than this!) one day.</p>
<p>(Also filed on <a href="https://bugs.launchpad.net/ubuntu/+source/casper/+bug/296089">Ubuntu bug 296089</a>.)</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tinderblog.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tinderblog.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tinderblog.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tinderblog.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tinderblog.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tinderblog.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tinderblog.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tinderblog.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tinderblog.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tinderblog.wordpress.com/92/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=92&subd=tinderblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tinderblog.wordpress.com/2009/04/29/ubuntu-live-cdnetwork-boot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7782b62dbb1ec838a7887795ab59a53?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisw</media:title>
		</media:content>
	</item>
		<item>
		<title>Pakistan to spend economic stimulus budget on&#8230; Microsoft?</title>
		<link>http://tinderblog.wordpress.com/2009/02/19/pakistan-to-spend-economic-stimulus-budget-on-microsoft/</link>
		<comments>http://tinderblog.wordpress.com/2009/02/19/pakistan-to-spend-economic-stimulus-budget-on-microsoft/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 10:51:50 +0000</pubDate>
		<dc:creator>chrisw</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Funding]]></category>
		<category><![CDATA[Government]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[asia pakistan government research funding business microsoft]]></category>

		<guid isPermaLink="false">http://tinderblog.wordpress.com/?p=87</guid>
		<description><![CDATA[Fouad Bajwa writes of an unusual deal between the Pakistani government and Microsoft, on the s-asia-it mailing list:
To all members of the IT Industry &#38; Technical Community,
Everyone is well aware that global financial recession has hit even the Tech Giants where companies like Microsoft and Intel have being saying goodbye to thousands of their employees. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=87&subd=tinderblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong><a title="Fouad Bajwa's AskBajwa site" href="http://www.askbajwa.com">Fouad Bajwa</a> <a href="http://mailman.apnic.net/mailing-lists/s-asia-it/archive/2009/02/msg00004.html">writes</a> of an unusual deal between the Pakistani government and Microsoft</strong>, on the s-asia-it mailing list:</p>
<blockquote><p>To all members of the IT Industry &amp; Technical Community,</p>
<p>Everyone is well aware that global financial recession has hit even the Tech Giants where companies like Microsoft and Intel have being saying goodbye to thousands of their employees. The situation doesn&#8217;t seem to be getting better but interestingly our <a href="http://www.ictrdf.org.pk/">Pakistani National ICT R&amp;D Fund</a> is thinking about helping Microsoft in Pakistan and we from the industry feel that it is sad that instead of supporting local Hi-Tech Start-ups and struggling IT Entrepreneurs [they are]  funding the usual &#8220;Non-Useful&#8221; activities like conferences [and] so-called accelerator programs for Pakistan&#8230;</p></blockquote>
<p>To be fair, they have <a href="http://www.ictrdf.org.pk/fp-trd.htm">funded a number of open source projects</a>, and funding for conferences and other networking activities is always in short supply for those without a significant marketing budget.</p>
<blockquote><p>I have come to know through my friends in the IT Industry that the National ICT R&amp;D Fund has signed an MoU with Microsoft to fund the Microsoft Developers Conference and something called an &#8220;Innovators Accelerator Program&#8221;. The funds haven&#8217;t been disbursed yet but it definitely annoys me and many of my friends in the IT industry that our government should fund Microsoft initiatives which is already a global giant. I have heard that around 5 million rupees [about USD 60,000] or thereabouts for the innovation accelerator program which will involve Microsoft training, entrepreneurship training and connecting with Microsoft partners and similar amounts related.</p></blockquote>
<p>I also find it strange that Pakistan would choose it invest money in Microsoft at this time, despite their obvious experience and competence with open source. Others <a href="http://mailman.apnic.net/mailing-lists/s-asia-it/archive/2009/02/msg00006.html">come to the Fund&#8217;s defence</a>, saying:</p>
<blockquote><p>ICT R&amp;D Fund is one of the few institutions in the country that are doing an excellent job&#8230; [it] is the role of a funding agency to encourage collaborations for promoting research cultures and provide help in bringing the best minds closer.</p></blockquote>
<p>But nobody has denied that the Fund has signed an MoU with Microsoft, or argued for its benefit to Pakistan. Fouad also writes:</p>
<blockquote><p>When will our national institutions support its people, the vulnerable, not the already empowered? Why doesn&#8217;t it support the local entrepreneurs, the ones that don&#8217;t have large companies or university backings? Why does it have liabilities to include universities whereas it knows what the state of R&amp;D in universities has been except for a few handful? Why doesn&#8217;t it include this money for Social Enterprise and created a NATIONAL INCUBATION AND  ACCELERATION CENTRE where people like me or you or anyone can walk in and build their ideas and companies?</p></blockquote>
<p>Ashiq Anjum <a href="http://mailman.apnic.net/mailing-lists/s-asia-it/archive/2009/02/msg00006.html">replies</a> that &#8220;No funding agency can build incubators for industry, probably this is outside of their scope.&#8221; But the Fund&#8217;s stated goal is &#8220;To transform Pakistan’s economy into a knowledge based economy by promoting efficient, sustainable and effective ICT initiatives through synergic development of industrial and academic resources.&#8221;</p>
<p>It sounds entirely reasonable on this basis for them to assist university graduates in gaining skills that are useful in the knowledge industry, and in setting up their own companies in the knowledge industry. Indeed, another stated goal is to &#8220;make Pakistan an attractive destination for service oriented and research and development related outsourced jobs.&#8221;</p>
<blockquote><p>We can establish centres like <a href="http://www.socialinnovation.ca/">http://www.socialinnovation.ca/</a><br />
and help local entrepreneurs in business development and social innovation with the same amount of money[.] That helps and benefits our people and companies directly as well as innovate for local and international markets.</p></blockquote>
<p><strong>I agree that all countries should support local development, training and entrepreneurship as much as possible.</strong></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tinderblog.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tinderblog.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tinderblog.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tinderblog.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tinderblog.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tinderblog.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tinderblog.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tinderblog.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tinderblog.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tinderblog.wordpress.com/87/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=87&subd=tinderblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tinderblog.wordpress.com/2009/02/19/pakistan-to-spend-economic-stimulus-budget-on-microsoft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7782b62dbb1ec838a7887795ab59a53?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisw</media:title>
		</media:content>
	</item>
		<item>
		<title>Internet Explorer 8: breaking Windows?</title>
		<link>http://tinderblog.wordpress.com/2009/02/19/internet-explorer-8-breaking-windows/</link>
		<comments>http://tinderblog.wordpress.com/2009/02/19/internet-explorer-8-breaking-windows/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 10:00:44 +0000</pubDate>
		<dc:creator>chrisw</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://tinderblog.wordpress.com/?p=84</guid>
		<description><![CDATA[zdnet.com reports that &#8216;In an effort to improve Web users&#8217; compatibility experience, Microsoft  added a new, user-selectable Compatibility List  to the Release Candidate test  version of IE 8 that the company released in January&#8230; Microsoft describes the list — Version 1.0 of which includes 2,400 sites that don&#8217;t render properly in IE [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=84&subd=tinderblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>zdnet.com <a title="Article on IE8 on zdnet.com" href="http://blogs.zdnet.com/microsoft/?p=2072">reports that</a> &#8216;In an effort to improve Web users&#8217; compatibility experience, Microsoft  added a new, user-selectable Compatibility List  to the Release Candidate test  version of IE 8 that the company released in January&#8230; Microsoft describes the list — Version 1.0 of which includes 2,400 sites that don&#8217;t render properly in IE 8 (in other words, an &#8220;incompatibility list&#8221;) –  as a tool designed to &#8220;make sure IE8 customers have a great experience with highly trafficked sites that have not yet fully accomodated IE8&#8217;s better implementation of web standards.&#8221;&#8216;</p>
<p>(read more from the horse&#8217;s business end at <a title="Microsoft IE8 blog on compatibility list" href="http://blogs.msdn.com/ie/archive/2009/02/16/just-the-facts-recap-of-compatibility-view.aspx">http://blogs.msdn.com/ie/archive/2009/02/16/just-the-facts-recap-of-compatibility-view.aspx</a>)</p>
<p>I think this is interesting. On the one hand Microsoft has finally  (finally!) decided to bite the bullet and fix some of the bugs in IE that  cause web developers so much pain. In my experience, supporting IE&#8217;s buggy  CSS takes about as much effort as developing the CSS for Firefox in the  first place.</p>
<p>Microsoft has always used the excuse before that users would view sites  that rendered badly in a new standards-compliant IE and blame IE for the  problems. This is an understandable, if self-serving excuse. Perhaps with  IE&#8217;s market share <a title="Wikipedia on browser market share" href="http://en.wikipedia.org/wiki/Usage_share_of_web_browsers">below 70%</a>, they feel that they can no  longer get away with it on the basis of user base alone.</p>
<p>On the other hand, the list has some very interesting entries, apart from  nearly every chinese website in existence:</p>
<ul>
<li>amazon.com</li>
<li>blogger.com</li>
<li>ebay.com</li>
<li>facebook.com</li>
<li>google.com</li>
<li>live.com</li>
<li>microsoft.com</li>
<li>msn.com</li>
<li>myspace.com</li>
<li>wikipedia.org</li>
<li>yahoo.com</li>
<li>youtube.com</li>
</ul>
<p>I can&#8217;t think of a high-profile site that&#8217;s not on the list. I think  Microsoft has asked a million monkeys to beta-test IE8 and they&#8217;re hitting  the error report button randomly.</p>
<p>Otherwise, I can only assume that IE8  doesn&#8217;t support <strong>any websites at all</strong>. Perhaps this is the  EU-competition-commission version of IE8 that they were testing?</p>
<p>(thanks to PC The Great at lugm.org for the heads-up)</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tinderblog.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tinderblog.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tinderblog.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tinderblog.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tinderblog.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tinderblog.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tinderblog.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tinderblog.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tinderblog.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tinderblog.wordpress.com/84/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=84&subd=tinderblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tinderblog.wordpress.com/2009/02/19/internet-explorer-8-breaking-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7782b62dbb1ec838a7887795ab59a53?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisw</media:title>
		</media:content>
	</item>
		<item>
		<title>Open source in Government</title>
		<link>http://tinderblog.wordpress.com/2009/02/17/open-source-in-government/</link>
		<comments>http://tinderblog.wordpress.com/2009/02/17/open-source-in-government/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 10:49:48 +0000</pubDate>
		<dc:creator>chrisw</dc:creator>
				<category><![CDATA[Appropriate Technology]]></category>
		<category><![CDATA[Government]]></category>
		<category><![CDATA[Healthcare]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[open source healthcare redhat novell marketing quality]]></category>

		<guid isPermaLink="false">http://tinderblog.wordpress.com/?p=81</guid>
		<description><![CDATA[The Register has an interesting article about various open source vendors&#8217; latest attempt to legislate their way into the healthcare system, and why it&#8217;s doomed to fail.
I found it well-written and convincing right up to the last
paragraph but one:
If open source is going to make any real headway in the government, there needs to be [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=81&subd=tinderblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The Register has an <a title="The Register on Open Source in Government" href="http://www.theregister.co.uk/2009/02/16/open_source_letter_to_obama/print.html">interesting article</a> about various open source vendors&#8217; latest attempt to legislate their way into the healthcare system, and why it&#8217;s doomed to fail.</p>
<p>I found it well-written and convincing right up to the last<br />
paragraph but one:</p>
<blockquote><p>If open source is going to make any real headway in the government, there needs to be an incentive to choose it, not a rule. Time and again, this is where the open source community falls short: Quality code isn&#8217;t enough of an incentive. You can put the best engineering in the world<br />
into your product, but if you don&#8217;t know how to market, your project will rot in the source repository.</p>
</blockquote>
<p>Uhh, non sequitur? Needs to be an incentive to choose it =&gt; needs better marketing? Where&#8217;s the incentive in marketing? Surely the incentive should be that it&#8217;s a better product or that it saves money or time, not that it has flashing lights all over it?</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tinderblog.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tinderblog.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tinderblog.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tinderblog.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tinderblog.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tinderblog.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tinderblog.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tinderblog.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tinderblog.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tinderblog.wordpress.com/81/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=81&subd=tinderblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tinderblog.wordpress.com/2009/02/17/open-source-in-government/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7782b62dbb1ec838a7887795ab59a53?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisw</media:title>
		</media:content>
	</item>
		<item>
		<title>Backup Mail Exchangers</title>
		<link>http://tinderblog.wordpress.com/2009/01/28/backup-mail-exchangers/</link>
		<comments>http://tinderblog.wordpress.com/2009/01/28/backup-mail-exchangers/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 11:29:16 +0000</pubDate>
		<dc:creator>chrisw</dc:creator>
				<category><![CDATA[Appropriate Technology]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[bandwidth]]></category>

		<guid isPermaLink="false">http://tinderblog.wordpress.com/?p=78</guid>
		<description><![CDATA[On Monday night, the power supply unit (PSU) in the server that hosts our mail server failed at around 2200 GMT. We don&#8217;t have physical access to the server out of hours, so I wasn&#8217;t able to replace it until about 1045 the next day, so our main email server was down for nearly 13 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=78&subd=tinderblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>On Monday night, the power supply unit (PSU) in the server that hosts our mail server failed at around 2200 GMT. We don&#8217;t have physical access to the server out of hours, so I wasn&#8217;t able to replace it until about 1045 the next day, so our main email server was down for nearly 13 hours.</p>
<p>We didn&#8217;t have a backup MX because:</p>
<ul>
<li>It usually can&#8217;t check whether recipients are valid or not, and therefore must accept mail that it can&#8217;t deliver;</li>
<li>It usually doesn&#8217;t have as good antispam checks as the primary, because it&#8217;s a hassle to keep it updated;</li>
<li>Spammers usually abuse backup MXes to send more spam, including Joe Jobs.</li>
</ul>
<p>I thought that this was OK because people who send us mail also have mail servers with queues, which should hold the mail until our server comes back up. It&#8217;s normal for mail servers to go down sometimes and this should not cause mail to be lost or returned.</p>
<p>However, we had a report that one of our users did not receive a mail addressed to them, and was told by the sender that it had bounced. I saw the bounce messsage and suspected Exchange, so I decided to check how long Exchange holds messages before bouncing them. Turns out it&#8217;s only five hours by default. Most mail servers hold mail for far longer, for example five days, sending a warning message back to the sender after one day.</p>
<p>Bouncing messages looks bad on us. Apart from making our main mail server more reliable <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  we need a backup MX to accept mail when the master is down.</p>
<p>However I do still want to minimise the spam problem that this will cause. Therefore I configured our backup MX to only accept mail when the master is <strong>down</strong>. Otherwise it defers it, which will tell the sender to try sending it to the master (again).</p>
<p>How did I achieve this magic? With a little Exim configuration that took me a day and that I&#8217;m quite proud of. I set up a new virtual machine which just has Exim on it, nothing else. I configured it as an Internet host, and to relay for our most important domains. Then I created /etc/exim4/exim4.conf.localmacros with the following contents:</p>
<pre style="border:1px dashed #bbf;background-color:#ddf;padding:.5em;">CHECK_RCPT_LOCAL_ACL_FILE=/etc/exim4/exim4.acl.conf
callout_positive_expire = 5m</pre>
<p>This allows us to create a file called <tt>/etc/exim4/exim4.acl.conf</tt> which contains additional ACL (access control list) conditions. The other change, <tt>callout_positive_expire</tt>, I&#8217;ll describe in a minute.</p>
<p>I created <tt>/etc/exim4/exim4.acl.conf</tt> with the following contents:</p>
<pre style="border:1px dashed #bbf;background-color:#ddf;padding:.5em;"># if we know that the primary MX rejects this address, we should too
deny
        ! verify = recipient/callout=30s,defer_ok
        message = Rejected by primary MX

# detect whether the callout is failing, without causing it to
# defer the message. only a warn verb can do this.
warn
        set acl_m_callout_deferred = true
        verify = recipient/callout=30s
        set acl_m_callout_deferred = false

# if the callout did not fail, and the primary mail server is not
# refusing  mail for this address, then it's accepting it, so tell
# our client to try again later
defer
        ! condition = $acl_m_callout_deferred
        message = The primary MX is working, please use it

# callout is failing, main server must be failing,
# accept everything
accept
        message = Accepting mail on behalf of primary MX</pre>
<p>The first clause, which has a <tt>deny</tt> verb, does a callout to the recipient. A callout is an Exim feature which makes a test SMTP connection and starts the process of sending a mail, checking that the recipient would be accepted. This is designed to catch and block emails that the main server would reject. Our backup server has no idea what addresses are valid in our domains; only the primary knows that.</p>
<p>The callout response is cached for the default two hours if it returns a negative result (the recipient does not exist on the master) or five minutes (see <tt>callout_positive_expire</tt> above) if the address does exist. We use a <tt>defer_ok</tt> condition here so that if we fail to contact the master, we don&#8217;t defer the mail immediately, but instead assume that the address is OK and therefore continue to the next clause.</p>
<p>The second clause of the ACL,  which has a <tt>warn</tt> verb, is what took me so long to work out. Normally, if a condition in a statement returns a result of <em>defer</em>, which means that it failed, the server will defer the whole message (tell the sender to come back later). In almost all cases this is the right thing to do, but it&#8217;s the exact opposite of what we want here. We want to accept mail if the callout is failing, not defer it, otherwise our backup MX is useless (it stops accepting mail if the primary goes down).</p>
<p>Because this is such an unusual thing to do, there is no configurable option for it in Exim. The only workaround that I found is that there is exactly one way to avoid a deferring condition causing the message to be deferred: a <tt>warn</tt> verb. The <a title="Exim documentation" href="http://www.exim.org/exim-html-current/doc/html/spec_html/ch40.html#id623530">documentation for the warn verb</a> says:</p>
<blockquote><p>If any condition on a <span><strong class="option">warn</strong></span> statement cannot be completed (that is, there is some sort of defer), the log line specified by <span><strong class="option">log_message</strong></span> is not written&#8230; After a defer, no further conditions or modifiers in the <span><strong class="option">warn</strong></span> statement are processed. The incident is logged, and the ACL continues to be processed, from the next statement onwards.</p></blockquote>
<p>So what we do is:</p>
<ol>
<li>Set the local variable<br />
<tt>acl_m_callout_deferred</tt> to <em>true</em>;</li>
<li>Try the callout. If it defers (cannot contact the primary server) then we stop processing the rest of the conditions in the <strong>warn</strong> statement, as described above;</li>
<li>If we get to this point, we know that the callout did not defer, so we set <tt>acl_m_callout_deferred</tt> to <em>false</em>.</li>
</ol>
<p>The third clause  of the ACL,  which has a <tt>defer</tt> verb, simply checks the variable that we set above. If we get this far then the primary server is not rejecting this address; and if it&#8217;s not deferring either, then it must be accepting mail for the address. In that case, we defer the message, telling our SMTP client to try again later, at which point it will hopefully succeed in delivering directly to the primary.</p>
<p>Callout result caching becomes a problem here. If the master was not reachable, but a previous callout had verified that a particular address existed, and that callout result was cached for the default 24 hours, then the backup MX would defer subsequent mail to that address for the next 24 hours, even if the master went down. This is why we changed the positive callout result caching time to 5 minutes earlier.</p>
<p>The fourth clause  of the ACL,  which has an <tt>accept</tt> verb, is even simpler. It accepts everything that was not denied or deferred earlier. We can only get this far if the master is not accepting or rejecting mail for that address.</p>
<p>So far the configuration appears to work fine and has blocked 14 spam attempts (abusing the backup MX) in 14 hours.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tinderblog.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tinderblog.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tinderblog.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tinderblog.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tinderblog.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tinderblog.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tinderblog.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tinderblog.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tinderblog.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tinderblog.wordpress.com/78/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=78&subd=tinderblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tinderblog.wordpress.com/2009/01/28/backup-mail-exchangers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7782b62dbb1ec838a7887795ab59a53?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisw</media:title>
		</media:content>
	</item>
		<item>
		<title>Offline Wikipedia part 2</title>
		<link>http://tinderblog.wordpress.com/2008/12/01/offline-wikipedia-part-2/</link>
		<comments>http://tinderblog.wordpress.com/2008/12/01/offline-wikipedia-part-2/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 11:37:07 +0000</pubDate>
		<dc:creator>chrisw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tinderblog.wordpress.com/?p=76</guid>
		<description><![CDATA[Having decided on a local MediaWiki installation, I started working through the import process. I noticed a few things that may help others.
If one forgets to increase the MySQL max_packet_size, then the import breaks somewhere in the middle (around 3 million records) but the Java process keeps producing progress information, so it&#8217;s not at all [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=76&subd=tinderblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Having decided on a local MediaWiki installation, I started working through the import process. I noticed a few things that may help others.</p>
<p>If one forgets to increase the MySQL max_packet_size, then the import breaks somewhere in the middle (around 3 million records) but the Java process keeps producing progress information, so it&#8217;s not at all clear that the import has failed. One sign is that the import process rate of progress, as reported by the import tool in pages per second, suddenly speeds up by a factor of 5-10. You may wish to look out for this and abort the import if it happens, and to monitor the import process with mysqladmin processlist to ensure that it&#8217;s still doing things.</p>
<p>Installing the MediaWiki <a href="http://www.mediawiki.org/wiki/Extension:ParserFunctions">ParserFunctions</a> extension solves most of the problems with random program code appearing in articles.</p>
<p>The import will tend to slow down very badly over time. For example, on one system it started at a rate of 160 pages/second and dropped to 18 over a three-day period. At this rate, it would have taken around 5-6 days to import all 7.5 million pages. Using the MySQL disable keys command did not help much, but what did was to restructure the tables to remove all the indexes. You can even do this while the import is running (I did). The SQL commands are:</p>
<ul>
<li>ALTER TABLE page MODIFY COLUMN page_id INT(10) UNSIGNED NOT NULL, DROP PRIMARY KEY, DROP INDEX name_title, DROP INDEX page_random, DROP INDEX page_len;</li>
<li>ALTER TABLE revision MODIFY COLUMN rev_id INT(10) UNSIGNED NOT NULL, DROP PRIMARY KEY, DROP INDEX rev_id, DROP INDEX rev_timestamp, DROP INDEX page_timestamp, DROP INDEX user_timestamp, DROP INDEX usertext_timestamp;</li>
<li>ALTER TABLE text MODIFY COLUMN old_id INT(10) UNSIGNED NOT NULL, DROP PRIMARY KEY;</li>
</ul>
<p>The following SQL commands should restore the indexes after the import is complete. If you don&#8217;t do this, the MediaWiki site will be very slow in operation.</p>
<ul>
<li>ALTER TABLE page MODIFY COLUMN page_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, ADD UNIQUE KEY name_title (page_namespace,page_title), ADD KEY page_random (page_random), ADD KEY page_len (page_len);</li>
<li>ALTER TABLE revision MODIFY COLUMN rev_id int(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, ADD UNIQUE KEY rev_id (rev_id), ADD KEY rev_timestamp (rev_timestamp),<br />
ADD KEY page_timestamp (rev_page,rev_timestamp), ADD KEY user_timestamp (rev_user,rev_timestamp), ADD KEY usertext_timestamp (rev_user_text,rev_timestamp);</li>
<li>ALTER TABLE text MODIFY COLUMN old_id int(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY;</li>
</ul>
<p>With these changes I was able to achieve import speeds around fifty times faster, or 1000 pages per second, which should make it possible to import the entire Wikipedia in about 2 hours.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tinderblog.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tinderblog.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tinderblog.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tinderblog.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tinderblog.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tinderblog.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tinderblog.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tinderblog.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tinderblog.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tinderblog.wordpress.com/76/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=76&subd=tinderblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tinderblog.wordpress.com/2008/12/01/offline-wikipedia-part-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7782b62dbb1ec838a7887795ab59a53?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisw</media:title>
		</media:content>
	</item>
		<item>
		<title>Offline Wikipedia</title>
		<link>http://tinderblog.wordpress.com/2008/11/21/offline-wikipedia/</link>
		<comments>http://tinderblog.wordpress.com/2008/11/21/offline-wikipedia/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 16:48:55 +0000</pubDate>
		<dc:creator>chrisw</dc:creator>
				<category><![CDATA[Appropriate Technology]]></category>
		<category><![CDATA[Design and Usability]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Offline]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[bandwidth]]></category>

		<guid isPermaLink="false">http://tinderblog.wordpress.com/?p=52</guid>
		<description><![CDATA[I&#8217;m working on making Wikipedia, the (in)famous free encyclopaedia, available offline, for a project in a school in rural Zambia where Internet access will be slow, expensive and unreliable.
What I&#8217;m looking for is:

Completely offline operation
Runs on Linux
Reasonable selection of content from English Wikipedia, preferably with some images
Looks and feels like the Wikipedia website (e.g. accessed [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=52&subd=tinderblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;m working on making <a href="http://en.wikipedia.org/">Wikipedia</a>, the <a href="http://en.wikipedia.org/wiki/Wikipedia">(in)famous</a> free encyclopaedia, available offline, for a project in a school in rural Zambia where Internet access will be slow, expensive and unreliable.</p>
<p>What I&#8217;m looking for is:</p>
<ul>
<li>Completely offline operation</li>
<li>Runs on Linux</li>
<li>Reasonable selection of content from English Wikipedia, preferably with some images</li>
<li>Looks and feels like the Wikipedia website (e.g. accessed through a browser)</li>
<li>Keyword search like the Wikipedia website</li>
</ul>
<p>Tools that have built-in search engines usually require that you download a <a title="Latest Wikipedia pages-articles XML dump file" href="http://download.wikimedia.org/enwiki/latest/enwiki-latest-pages-articles.xml.bz2">pages and articles dump file from Wikipedia</a> (about 3 GB download) and then generate a search index, which can take from half an hour to five days.</p>
<p>For an open source project that seems ideally suited to being used offline, and considering the amount of interest, there are surprisingly few options (already developed). They also took me a long time to find, so I&#8217;m collating the information here in the hope that it will help others. Here are my impressions of the solutions that I&#8217;ve tried so far, gathered from various sources including <a href="http://www.makeuseof.com/tag/4-free-tools-for-taking-wikipedia-offline/">makeuseof.com</a>.</p>
<div id="attachment_56" class="wp-caption aligncenter" style="width: 310px"><a href="http://tinderblog.files.wordpress.com/2008/11/wikipedia2.png"><img class="size-medium wp-image-56" title="The One True Wikipedia" src="http://tinderblog.files.wordpress.com/2008/11/wikipedia2.png?w=300&#038;h=231" alt="The One True Wikipedia" width="300" height="231" /></a><p class="wp-caption-text">The One True Wikipedia, for comparison</p></div>
<p><strong><a title="MediaWiki website" href="http://www.mediawiki.org/wiki/MediaWiki">MediaWiki</a></strong> (the Wikipedia wiki software) can be <a href="http://www.blindedbytech.com/2006/08/31/how-to-install-wikipedia-for-offline-access/">downloaded and installed</a> on a computer configured as an AMP server (Apache, MySQL, PHP). You can then <a href="http://www.blindedbytech.com/2006/08/31/how-to-install-wikipedia-for-offline-access/">import a Wikipedia database dump</a> and use the wiki offline. This is quite a complex process, and importing takes a long time, about 4 hours for the articles themselves (on a 3 GHz P4). Apparently <a href="http://users.softlab.ece.ntua.gr/~ttsiod/buildWikipediaOffline.html">it takes days</a> to build the search index (I&#8217;m testing this at the moment). This method does not include any images, as the image dump is apparently 75 GB, and no longer appears to be available, and it displays some odd template codes in the text (shown in red below) which may confuse users.</p>
<div id="attachment_68" class="wp-caption aligncenter" style="width: 310px"><a href="http://tinderblog.files.wordpress.com/2008/11/offline_mediawiki.png"><img class="size-medium wp-image-68" title="Mediawiki local installation" src="http://tinderblog.files.wordpress.com/2008/11/offline_mediawiki.png?w=300&#038;h=231" alt="Mediawiki local installation" width="300" height="231" /></a><p class="wp-caption-text">Mediawiki local installation</p></div>
<p><strong><a title="Wikipedia Selection for Schools Website" href="http://schools-wikipedia.org/">Wikipedia Selection for Schools</a></strong> is a static website, created by <a title="WikiMedia Foundation, a non-profit organisation that funds and administers Wikipedia" href="http://www.wikimedia.org">Wikimedia</a> and <a title="A British charity/NGO" href="http://www.soschildrensvillages.org.uk">SOS Childrens Villages</a>, with a hand-chosen and checked selection of articles from the main Wikipedia, and images, that fit on a DVD or 3GB of disk space. It&#8217;s available for free <a title="Wikipedia Selection for Schools Download" href="http://www.soschildrensvillages.org.uk/charity-news/2008-wikipedia-for-schools.htm">download</a> using BitTorrent, which is rather slow. Although it looks like <a title="The English Wikipedia online website" href="http://en.wikipedia.org/wiki/Main_Page">Wikipedia</a>, it&#8217;s a static website, so while it&#8217;s easy to install, it has no search feature. It also has only 5,500 articles compared to the 2 million in Wikipedia itself (about 0.25%). Another review is on the <a title="Review of Wikipedia Selection for Schools." href="http://www.speedofcreativity.org/2008/11/11/wikipedia-to-go-an-offline-download-for-schools/">Speed of Creativity Blog</a>. Older versions are available <a title="Wikipedia CD Download Page" href="http://en.wikipedia.org/wiki/Wikipedia:Wikipedia-CD/Download">here</a>. (thanks <a title="BBC News on Wikipedia CD" href="http://news.bbc.co.uk/1/hi/technology/6566749.stm">BBC</a>)</p>
<div id="attachment_57" class="wp-caption aligncenter" style="width: 310px"><a href="http://tinderblog.files.wordpress.com/2008/11/schools.png"><img class="size-medium wp-image-57" title="Wikipedia Selection for Schools" src="http://tinderblog.files.wordpress.com/2008/11/schools.png?w=300&#038;h=231" alt="Wikipedia Selection for Schools" width="300" height="231" /></a><p class="wp-caption-text">Wikipedia Selection for Schools</p></div>
<p><strong><a href="https://addons.mozilla.org/en-US/firefox/addon/2423">Zipedia</a></strong> is a <a title="About Mozilla Firefox" href="http://www.mozilla.com/firefox/">Firefox</a> plugin which loads and indexes a Wikipedia dump file. It requires a different dump file, containing the latest metadata (8 GB) instead of the usual one (3 GB). You can then access Wikipedia offline in your browser by going to a URL such as <em>wikipedia://wiki</em>. It does not support images, and the search feature only searches article titles, not their contents. You can pass the indexed data between users as a Zip file to save time and bandwidth, and you may be able to share this file between multiple users on a computer or a network. (thanks <a href="http://www.ghacks.net/2008/08/06/download-and-use-wikipedia-offline-with-firefox/">Ghacks.net</a>)</p>
<p><a title="WikiTaxi product information page" href="http://wikitaxi.org/delphi/doku.php/products/wikitaxi/index"><strong>WikiTaxi</strong></a> is a free Windows application which also loads and indexes Wikipedia dump files. It has its own user interface, which displays Wikipedia formatting properly (e.g. tables). It looks very nice, but it&#8217;s a shame that it doesn&#8217;t run on Linux.</p>
<div id="attachment_58" class="wp-caption aligncenter" style="width: 310px"><a href="http://tinderblog.files.wordpress.com/2008/11/wikitaxi.png"><img class="size-medium wp-image-58" title="WikiTaxi screenshot (wikitaxi.org)" src="http://tinderblog.files.wordpress.com/2008/11/wikitaxi.png?w=300&#038;h=268" alt="WikiTaxi screenshot (wikitaxi.org)" width="300" height="268" /></a><p class="wp-caption-text">WikiTaxi screenshot (wikitaxi.org)</p></div>
<p><strong><a title="Moulin Wiki Website" href="http://www.moulinwiki.org/">Moulin Wiki</a></strong> is a project to develop open source offline distributions of Wikipedia content, based on the <a title="Kiwix offline Wikipedia browser" href="http://www.kiwix.org/index.php/Main_Page">Kiwix</a> browser. They claim that their <a href="http://reg.kiwix.org/download/ar/">150 MB Arabic version</a> contains an impressive 70,000 articles, and that their <a href="http://reg.kiwix.org/download/fr/">1.5 GB French version</a> contains the entire French Wikipedia, more than 700,000 articles. Unfortunately they have not yet released an English version.</p>
<p><strong><a title="Kiwix offline Wikipedia browser" href="http://www.kiwix.org/index.php/Main_Page">Kiwix</a></strong> itself can be used to read a downloaded dump file, thereby giving access to the whole English Wikipedia via the 3 GB download. It runs on Linux only (as far as I know) and the user interface is a customised version of the Firefox browser. Unfortunately I could not get it to build on <a title="Ubuntu Linux 8.04, aka Hardy Heron" href="http://releases.ubuntu.com/8.04/">Ubuntu Hardy</a> due to an incompatible change in Xulrunner. (Kiwix developers told me that a new version would be released before the end of November 2008, but I wasn&#8217;t able to test it yet).</p>
<div id="attachment_61" class="wp-caption aligncenter" style="width: 310px"><a href="http://tinderblog.files.wordpress.com/2008/11/ocean_blue_skin_example.jpg"><img class="size-medium wp-image-61" title="Kiwix (and probably MoulinWiki)" src="http://tinderblog.files.wordpress.com/2008/11/ocean_blue_skin_example.jpg?w=300&#038;h=240" alt="Kiwix (and probably MoulinWiki)" width="300" height="240" /></a><p class="wp-caption-text">Kiwix (and probably MoulinWiki)</p></div>
<p><strong><a title="KDE-Apps website entry for Wikipedia Dump Reader" href="http://www.kde-apps.org/content/show.php/Wikipedia+Dump+Reader?content=65244">Wikipedia Dump Reader</a></strong> is a KDE application which browses Wikipedia dump files. It generates an index on the first run, which took 5 hours on a 3 GHz P4, and you can&#8217;t use it until it&#8217;s finished. It doesn&#8217;t require extracting or uncompressing the dump file, so it&#8217;s efficient on disk space, and you can copy or share the index between computers. The display is in plain text, so it looks nothing like Wikipedia, and it includes some odd system codes in the output which could confuse users.</p>
<div id="attachment_59" class="wp-caption aligncenter" style="width: 310px"><a href="http://tinderblog.files.wordpress.com/2008/11/wikipedia-dump-reader.png"><img class="size-medium wp-image-59" title="Wikipedia Dump Reader" src="http://tinderblog.files.wordpress.com/2008/11/wikipedia-dump-reader.png?w=300&#038;h=246" alt="Wikipedia Dump Reader" width="300" height="246" /></a><p class="wp-caption-text">Wikipedia Dump Reader</p></div>
<p><a href="http://users.softlab.ece.ntua.gr/~ttsiod/buildWikipediaOffline.html"><strong>Thanassis Tsiodras</strong></a> has created a set of scripts to extract Wikipedia article titles from the compressed dump, index them, parse and display them with a search engine. It&#8217;s a clever hack but the user interface is quite rough, it doesn&#8217;t always work, requires about two times the dump file size in additional data, it was a pain to figure out how to use it and get it working, and it looks nothing like Wikipedia, but better than the Dump Reader above.</p>
<div id="attachment_62" class="wp-caption aligncenter" style="width: 310px"><a href="http://tinderblog.files.wordpress.com/2008/11/thanassis_tsiodras.png"><img class="size-medium wp-image-62" title="Thanassis Tsiodras' Fast Wiki with Search" src="http://tinderblog.files.wordpress.com/2008/11/thanassis_tsiodras.png?w=300&#038;h=231" alt="Thanassis Tsiodras' Fast Wiki with Search" width="300" height="231" /></a><p class="wp-caption-text">Thanassis Tsiodras&#39; Fast Wiki with Search</p></div>
<p><a title="Pocket Wikipedia website" href="http://www.free-soft.ro/pocket-wikipedia/pocket-wikipedia.html"><strong>Pocket Wikipedia</strong></a> is designed for PDAs, but apparently runs on Linux and Windows as well. The interface looks a bit rough, and I haven&#8217;t tested the keyword search yet. It doesn&#8217;t say exactly how many articles it contains, but my guess is that it&#8217;s about 3% of Wikipedia. Unfortunately it&#8217;s closed source, and as it comes from Romania, I don&#8217;t trust it enough to run it. (thanks <a title="Four free tools for taking Wikipedia offline" href="http://www.makeuseof.com/tag/4-free-tools-for-taking-wikipedia-offline/">makeuseof.com</a>)</p>
<div id="attachment_63" class="wp-caption aligncenter" style="width: 310px"><a href="http://tinderblog.files.wordpress.com/2008/11/pocketwikipedial.png"><img class="size-medium wp-image-63" title="Pocket Wikipedia on Linux" src="http://tinderblog.files.wordpress.com/2008/11/pocketwikipedial.png?w=300&#038;h=219" alt="Pocket Wikipedia on Linux" width="300" height="219" /></a><p class="wp-caption-text">Pocket Wikipedia on Linux (makeuseof.com)</p></div>
<p><strong><a title="Webaroo Wikislice" href="http://wikislice.webaroo.com/">Wikislice</a></strong> allows users to download part of Wikipedia and view it using the free Webaroo client. Unfortunately this client appears only to work on Windows. (thanks <a title="Four free tools for taking Wikipedia offline" href="http://www.makeuseof.com/tag/4-free-tools-for-taking-wikipedia-offline/">makeuseof.com</a>)</p>
<div id="attachment_64" class="wp-caption aligncenter" style="width: 310px"><a href="http://tinderblog.files.wordpress.com/2008/11/webslices.png"><img class="size-medium wp-image-64" title="WikiSlice (makeuseof.com)" src="http://tinderblog.files.wordpress.com/2008/11/webslices.png?w=300&#038;h=190" alt="WikiSlice (makeuseof.com)" width="300" height="190" /></a><p class="wp-caption-text">WikiSlice (makeuseof.com)</p></div>
<p><strong><a title="Encyclopodia (Wikipedia on iPod) website" href="http://encyclopodia.sourceforge.net/en/index.html">Encyclopodia</a></strong> puts the open source project on an iPod, but I want to use it on Linux.</p>
<div id="attachment_66" class="wp-caption aligncenter" style="width: 310px"><a href="http://tinderblog.files.wordpress.com/2008/11/encyclopodia.png"><img class="size-medium wp-image-66" title="Encyclopodia" src="http://tinderblog.files.wordpress.com/2008/11/encyclopodia.png?w=300&#038;h=231" alt="Encyclopodia" width="300" height="231" /></a><p class="wp-caption-text">Encyclopodia</p></div>
<p>It appears that if you need search and Linux compatibility, then running a real Wikipedia (MediaWiki) server is probably the best option, despite the time taken.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tinderblog.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tinderblog.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tinderblog.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tinderblog.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tinderblog.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tinderblog.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tinderblog.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tinderblog.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tinderblog.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tinderblog.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tinderblog.wordpress.com&blog=4786354&post=52&subd=tinderblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tinderblog.wordpress.com/2008/11/21/offline-wikipedia/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7782b62dbb1ec838a7887795ab59a53?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisw</media:title>
		</media:content>

		<media:content url="http://tinderblog.files.wordpress.com/2008/11/wikipedia2.png?w=300" medium="image">
			<media:title type="html">The One True Wikipedia</media:title>
		</media:content>

		<media:content url="http://tinderblog.files.wordpress.com/2008/11/offline_mediawiki.png?w=300" medium="image">
			<media:title type="html">Mediawiki local installation</media:title>
		</media:content>

		<media:content url="http://tinderblog.files.wordpress.com/2008/11/schools.png?w=300" medium="image">
			<media:title type="html">Wikipedia Selection for Schools</media:title>
		</media:content>

		<media:content url="http://tinderblog.files.wordpress.com/2008/11/wikitaxi.png?w=300" medium="image">
			<media:title type="html">WikiTaxi screenshot (wikitaxi.org)</media:title>
		</media:content>

		<media:content url="http://tinderblog.files.wordpress.com/2008/11/ocean_blue_skin_example.jpg?w=300" medium="image">
			<media:title type="html">Kiwix (and probably MoulinWiki)</media:title>
		</media:content>

		<media:content url="http://tinderblog.files.wordpress.com/2008/11/wikipedia-dump-reader.png?w=300" medium="image">
			<media:title type="html">Wikipedia Dump Reader</media:title>
		</media:content>

		<media:content url="http://tinderblog.files.wordpress.com/2008/11/thanassis_tsiodras.png?w=300" medium="image">
			<media:title type="html">Thanassis Tsiodras' Fast Wiki with Search</media:title>
		</media:content>

		<media:content url="http://tinderblog.files.wordpress.com/2008/11/pocketwikipedial.png?w=300" medium="image">
			<media:title type="html">Pocket Wikipedia on Linux</media:title>
		</media:content>

		<media:content url="http://tinderblog.files.wordpress.com/2008/11/webslices.png?w=300" medium="image">
			<media:title type="html">WikiSlice (makeuseof.com)</media:title>
		</media:content>

		<media:content url="http://tinderblog.files.wordpress.com/2008/11/encyclopodia.png?w=300" medium="image">
			<media:title type="html">Encyclopodia</media:title>
		</media:content>
	</item>
	</channel>
</rss>