<?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/"
	>

<channel>
	<title>NANO ZEN &#187; Technical</title>
	<atom:link href="http://nanozen.info/category/technical/feed/" rel="self" type="application/rss+xml" />
	<link>http://nanozen.info</link>
	<description>Enlightenment by small measures</description>
	<lastBuildDate>Sat, 26 Nov 2011 17:36:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Browser Utility Comparision</title>
		<link>http://nanozen.info/2011/11/browser-utility-comparision/</link>
		<comments>http://nanozen.info/2011/11/browser-utility-comparision/#comments</comments>
		<pubDate>Sat, 26 Nov 2011 07:56:20 +0000</pubDate>
		<dc:creator>Anthony Howe</dc:creator>
				<category><![CDATA[Humour]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://nanozen.info/?p=1942</guid>
		<description><![CDATA[Personally I think Firefox and Chrome should trade places, but as for the reset, its pretty spot on.

]]></description>
			<content:encoded><![CDATA[<p>Personally I think <a href="http://www.mozilla.org/" target="_blank">Firefox</a> and <a href="http://www.google.com/chrome/" target="_blank">Chrome</a> should trade places, but as for the reset, its pretty spot on.</p>
<p><a href="http://nanozen.info/wp-content/uploads/2011/11/browser-chart.png" rel="lightbox[1942]"><img src="http://nanozen.info/wp-content/uploads/2011/11/browser-chart-500x1024.png" alt="" title="browser-chart" width="500" height="1024" class="aligncenter size-large wp-image-1941" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://nanozen.info/2011/11/browser-utility-comparision/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Greylisting&#8230; Revisited</title>
		<link>http://nanozen.info/2011/02/greylisting-revisited/</link>
		<comments>http://nanozen.info/2011/02/greylisting-revisited/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 09:03:03 +0000</pubDate>
		<dc:creator>Anthony Howe</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://nanozen.info/?p=1806</guid>
		<description><![CDATA[Reprinted here with permission of Steve Freegard of Fort Systems Ltd. (Original article)
Greylisting&#8230; Revisited
&#160;&#160;by Steve Freegard

Our BarricadeMX products have supported greylisting since they were first released. From the beginning, our greylisting used custom modifications to make it more acceptable to businesses and to address some of the original method&#8217;s shortcomings.


As we have started working on [...]]]></description>
			<content:encoded><![CDATA[<p>Reprinted here with permission of Steve Freegard of <a href="http://www.fsl.com/">Fort Systems Ltd.</a> (<a href="http://www.fsl.com/index.php/resources/whitepapers/99">Original article</a>)</p>
<h2>Greylisting&#8230; Revisited</h2>
<p>&nbsp;&nbsp;by Steve Freegard</p>
<p class="c0">
<span class="c1">Our </span><span class="c10"><a href="http://www.fsl.com/" target="_blank">BarricadeMX</a></span><span class="c1"> products have supported greylisting since they were first released. From the beginning, our greylisting used custom modifications to make it more acceptable to businesses and to address some of the original method&rsquo;s shortcomings.</span>
</p>
<p class="c0">
<span class="c1">As we have started working on what will become the 3rd version of the BarricadeMX SMTP engine; I started by looking back at support issues over the past few years to see what we could do better and decide what should and should not be present in the new version.</span>
</p>
<p class="c0">
<span class="c1">As part of that review process I started looking again at greylisting; should we keep it or should it go? &nbsp;I had found a number of tickets where we had advised customers to whitelist servers because they did not handle greylisting at all. &nbsp;But was this reason enough to get rid of it completely? &nbsp;Is it still effective?</span>
</p>
<p class="c0">
<span class="c1">For the purpose of this paper, it is assumed that the reader has an understanding of the Simple Mail Transfer Protocol (SMTP), the Domain Name System (DNS), and related terminology.</span>
</p>
<h2>Background</h2>
<p class="c0">
<span class="c1">Greylisting has been around since 2003 when Evan Harris wrote the original </span><br />
<span class="c10"><a href="http://www.greylisting.org/articles/whitepaper.shtml" target="_blank">whitepaper</a></span><span class="c1"> on it as a spam filtering mechanism. </span>
</p>
<p class="c0">
<span class="c1">The basic premise was that during the SMTP connection for each connecting IP address, sender, and recipient a tuple is created in a database and the recipients deferred (with a temporary failure) for a fixed period of time. &nbsp;If the same tuple comes back after that period of time had passed, then the recipients are passed and the message accepted. &nbsp;The idea being that if the sending system implements a retry-queue it would pass the greylisting after a period of time, while spam engines would not because they do not implement retry queues, but instead work in a fire-and-forget fashion.</span>
</p>
<p class="c0">
<span class="c1">The issues with this approach were that using the proposed tuple of IP, sender, and recipient caused mail to be delayed excessively for a period of time until the greylisting system had &lsquo;learnt&rsquo; who are the regular correspondents. &nbsp;Worse still, SMTP servers can have wildly varying timeouts meaning some will retry after a few seconds, others might take hours to retry meaning that genuine mail can be delayed for very long periods.</span>
</p>
<p class="c0">
<span class="c1">The other issue was with SMTP implementations that use a shared spool for the retry-queue; this means that while one host might send the initial message, another host on a different IP might send the retry; therefore the greylist tuple will not match this retry again causing severe delays.</span>
</p>
<p class="c0">
<span class="c1">Many implementations were created with various workarounds for these shortcomings. &nbsp;</span>
</p>
<p class="c0">
<span class="c1">Many people have spoken out against greylisting and have speculated that like all anti-spam mechanisms it will become less effective over time, because the spammers will adapt to it. &nbsp; So in 2011, eight years after the original whitepaper was published, has this happened?</span>
</p>
<h2>Testing</h2>
<p class="c0">
<span class="c1">Because traditional greylisting sends a temporary failure to each recipient, quantifying how many messages this actually equates to is impossible. &nbsp; So for the purposes of this test I will be sending the temporary failure at the end of DATA so that I may count unique messages and track the retries of each message. &nbsp;This comes with a big caveat &#8211; bitter experience with SMTP implementations tells me that greylisting a message at the end-of-data phase instead of each recipient can and probably will cause different results in the real world, because some SMTP implementations handle retries differently depending where the deferral is done and what deferral code was used.</span>
</p>
<p class="c0">
<span class="c1">As noted in the &lsquo;background&rsquo; section above, using the IP address as part of the tuple causes problems with shared-spools. &nbsp;Many greylisting implementations therefore only use the first 3 octets of the IPv4 address to treat a single /24 as one entry. &nbsp;The problem with this approach is that some shared spools might use more than one /24 or there might be multiple unrelated hosts in that same /24; either way this could also cause some undesired results. &nbsp;To overcome the issues with shared spools I will use a different approach:</span>
</p>
<p class="c0">
<span class="c1">The full IPv4 or IPv6 address will be used if:</span>
</p>
<ul class="c19">
<li class="c16" value="1">
<span class="c1">The connecting host has no PTR record, a.k.a. reverse DNS (rDNS).</span>
</li>
<li class="c16">
<span class="c1">The rDNS record contains the first two or last two octets of the IP address.</span>
</li>
<li class="c16">
<span class="c1">The rDNS record contains the &lsquo;short&rsquo;, decimal, or hex representation of the full IP address.</span>
</li>
<li class="c16">
<span class="c1">Multiple rDNS records are returned.</span>
</li>
<li class="c16">
<span class="c1">The rDNS record cannot be verified by forward confirmation (e.g. </span><br />
<span class="c10"><a href="http://en.wikipedia.org/wiki/Forward-confirmed_reverse_DNS" target="_blank">FCrDNS</a></span><span class="c1">).</span>
</li>
<li class="c16">
<span class="c1">The top-level-domain (TLD) used is not valid.</span>
</li>
</ul>
<p class="c0">
<span class="c1">Otherwise the first label, host part, of the rDNS is stripped, but only until the domain boundary will be used. &nbsp;For example:</span>
</p>
<table cellpadding="0" cellspacing="0" class="c6" align="center" border="1" width="80%">
<tbody>
<tr>
<td class="c8">
<p class="c9">
<span class="c1 c12">rDNS</span>
</p>
</td>
<td class="c27">
<p class="c9">
<span class="c1 c12">Greylist key used</span>
</p>
</td>
</tr>
<tr>
<td class="c8">
<p class="c9">
<span class="c1">host.sub.domain.com</span>
</p>
</td>
<td class="c27">
<p class="c9">
<span class="c1">sub.domain.com</span>
</p>
</td>
</tr>
<tr>
<td class="c8">
<p class="c9">
<span class="c1">host.domain.com</span>
</p>
</td>
<td class="c27">
<p class="c9">
<span class="c1">.domain.com</span>
</p>
</td>
</tr>
<tr>
<td class="c8">
<p class="c9">
<span class="c1">domain.com</span>
</p>
</td>
<td class="c27">
<p class="c9">
<span class="c1">domain.com</span>
</p>
</td>
</tr>
</tbody>
</table>
<p class="c0">
<span class="c1">For the remainder of this paper I will refer to this hybrid IP / rDNS key as the &lsquo;hostid&rsquo;.</span>
</p>
<p class="c0">
<span class="c1">This method presumes that shared spool hosts will always have valid rDNS and that the pool of hosts will also either share a common sub-domain or domain. &nbsp;Experience of using this method in our BarricadeMX products has proven this to be the case. &nbsp;</span>
</p>
<p class="c0">
<span class="c1">Here is an example of this from the results, this shows a single message being received and greylisted and each of the retries showing the time difference between the last retry and the IP address of the host sending the message &nbsp;In this case the hostid is &lsquo;.obsmtp.com&rsquo; (Outblaze):</span>
</p>
<table cellpadding="0" cellspacing="0" class="c6" align="center" border="1" width="80%">
<tbody>
<tr>
<td class="c23">
<p class="c9">
<span class="c1 c12">Retry</span>
</p>
</td>
<td class="c13">
<p class="c9">
<span class="c1 c12">Time Diff.</span>
</p>
</td>
<td class="c20">
<p class="c9">
<span class="c1 c12">IP address</span>
</p>
</td>
</tr>
<tr>
<td class="c23">
<p class="c9">
<span class="c1">1</span>
</p>
</td>
<td class="c13">
<p class="c2">
<span class="c1">0</span>
</p>
</td>
<td class="c20">
<p class="c2">
<span class="c1">64.18.3.98</span>
</p>
</td>
</tr>
<tr>
<td class="c23">
<p class="c9">
<span class="c1">2</span>
</p>
</td>
<td class="c13">
<p class="c2">
<span class="c1">68</span>
</p>
</td>
<td class="c20">
<p class="c2">
<span class="c1">64.18.3.98</span>
</p>
</td>
</tr>
<tr>
<td class="c23">
<p class="c9">
<span class="c1">3</span>
</p>
</td>
<td class="c13">
<p class="c2">
<span class="c1">67</span>
</p>
</td>
<td class="c20">
<p class="c2">
<span class="c1">64.18.3.86</span>
</p>
</td>
</tr>
<tr>
<td class="c23">
<p class="c9">
<span class="c1">4</span>
</p>
</td>
<td class="c13">
<p class="c2">
<span class="c1">65</span>
</p>
</td>
<td class="c20">
<p class="c2">
<span class="c1">64.18.3.88</span>
</p>
</td>
</tr>
<tr>
<td class="c23">
<p class="c9">
<span class="c1">5</span>
</p>
</td>
<td class="c13">
<p class="c2">
<span class="c1">65</span>
</p>
</td>
<td class="c20">
<p class="c2">
<span class="c1">64.18.3.88</span>
</p>
</td>
</tr>
<tr>
<td class="c23">
<p class="c9">
<span class="c1">6</span>
</p>
</td>
<td class="c13">
<p class="c2">
<span class="c1">66</span>
</p>
</td>
<td class="c20">
<p class="c2">
<span class="c1">64.18.3.36</span>
</p>
</td>
</tr>
<tr>
<td class="c23">
<p class="c9">
<span class="c1">7</span>
</p>
</td>
<td class="c13">
<p class="c2">
<span class="c1">68</span>
</p>
</td>
<td class="c20">
<p class="c2">
<span class="c1">64.18.3.36</span>
</p>
</td>
</tr>
<tr>
<td class="c23">
<p class="c9">
<span class="c1">8</span>
</p>
</td>
<td class="c13">
<p class="c2">
<span class="c1">65</span>
</p>
</td>
<td class="c20">
<p class="c2">
<span class="c1">64.18.3.22</span>
</p>
</td>
</tr>
<tr>
<td class="c23">
<p class="c9">
<span class="c1">9</span>
</p>
</td>
<td class="c13">
<p class="c2">
<span class="c1">65</span>
</p>
</td>
<td class="c20">
<p class="c2">
<span class="c1">64.18.3.26</span>
</p>
</td>
</tr>
<tr>
<td class="c23">
<p class="c9">
<span class="c1">10</span>
</p>
</td>
<td class="c13">
<p class="c2">
<span class="c1">66</span>
</p>
</td>
<td class="c20">
<p class="c2">
<span class="c1">64.18.3.90</span>
</p>
</td>
</tr>
<tr>
<td class="c23">
<p class="c9">
<span class="c1">11</span>
</p>
</td>
<td class="c13">
<p class="c2">
<span class="c1">66</span>
</p>
</td>
<td class="c20">
<p class="c2">
<span class="c1">64.18.3.100</span>
</p>
</td>
</tr>
<tr>
<td class="c23">
<p class="c9">
<span class="c1">12</span>
</p>
</td>
<td class="c13">
<p class="c2">
<span class="c1">66</span>
</p>
</td>
<td class="c20">
<p class="c2">
<span class="c1">64.18.3.32</span>
</p>
</td>
</tr>
<tr>
<td class="c23">
<p class="c9">
<span class="c1">13</span>
</p>
</td>
<td class="c13">
<p class="c2">
<span class="c1">67</span>
</p>
</td>
<td class="c20">
<p class="c2">
<span class="c1">64.18.3.24</span>
</p>
</td>
</tr>
<tr>
<td class="c23">
<p class="c9">
<span class="c1">14</span>
</p>
</td>
<td class="c13">
<p class="c2">
<span class="c1">65</span>
</p>
</td>
<td class="c20">
<p class="c2">
<span class="c1">64.18.3.86</span>
</p>
</td>
</tr>
<tr>
<td class="c23">
<p class="c9">
<span class="c1 c12">TOTAL</span>
</p>
</td>
<td class="c13">
<p class="c2">
<span class="c1 c12">859</span>
</p>
</td>
<td class="c20">
<p class="c9">
<span class="c1">&nbsp;</span>
</p>
</td>
</tr>
</tbody>
</table>
<p class="c0">
<span class="c1">As can be seen, multiple retries from a pool of hosts sharing a spool are easily handled by one greylist &lsquo;hostid&rsquo; with a total greylist delay for this message of 859 seconds. &nbsp;My only comment regarding this is that the retry interval used here is rather short with no back-off.</span>
</p>
<p class="c0">
<span class="c1">The greylist tuple I am going to use for the purposes of this paper and so that I can track unique messages and their retries will be:</span>
</p>
<table cellpadding="0" cellspacing="0" class="c6" align="center" border="1" width="80%">
<tbody>
<tr>
<td class="c14" width="35%">
<p class="c9">
<span class="c1">hostid</span>
</p>
</td>
<td class="c14" width="65%">
<p class="c9">
<span class="c1">As described above</span>
</p>
</td>
</tr>
<tr>
<td class="c14">
<p class="c9">
<span class="c1">sender</span>
</p>
</td>
<td class="c14">
<p class="c9">
<span class="c1">The envelope sender as sent in MAIL FROM:</span>
</p>
</td>
</tr>
<tr>
<td class="c14">
<p class="c9">
<span class="c1">recipients</span>
</p>
</td>
<td class="c14">
<p class="c9">
<span class="c1">All envelope recipients as sent in RCPT TO:</span>
</p>
</td>
</tr>
<tr>
<td class="c14">
<p class="c9">
<span class="c1">message ID</span>
</p>
</td>
<td class="c14">
<p class="c9">
<span class="c1">The Message ID header if present. &nbsp;If missing the &lsquo;md5&rsquo; field will be used and &lsquo;@my.hostname.tld&rsquo; suffixed to the end.</span>
</p>
</td>
</tr>
<tr>
<td class="c14">
<p class="c9">
<span class="c1">md5</span>
</p>
</td>
<td class="c14">
<p class="c9">
<span class="c1">The md5 of the message body.</span>
</p>
</td>
</tr>
</tbody>
</table>
<p class="c0">
<span class="c1">The other deviation from the original paper is to prevent excessive delays for each hostid. &nbsp;All that greylisting proves is that a host (or group of hosts) correctly implements a retry-queue. &nbsp;Once that has been proven then that &lsquo;hostid&rsquo; is exempted from further greylisting for 40 days since it was last seen. &nbsp;This is done to reduce the impact and delays that greylisting can cause. &nbsp;Although I have not done so in this test I also recommend that hosts listed on the public DNS whitelists such as the DNS Whitelist (</span><span class="c10"><a href="http://www.dnswl.org/" target="_blank">DNSWL</a></span><span class="c1">) be exempted from greylisting for the same reason.</span>
</p>
<p class="c0">
<span class="c1">To prevent spammers from exploiting this exemption by continuously cycling through their sender, recipient, and template lists in a effort to defeat greylisting and/or be exempted, a &lsquo;hostid&rsquo; must retry either the first or the last message that has been seen from that given &lsquo;hostid&rsquo; (this is to handle last-in-first-out and first-in-first-out queue strategies), until that time any other messages will be greylisted.</span>
</p>
<p class="c0">
<span class="c1">I also had to choose what timeout periods I would use:</span>
</p>
<p class="c0">
<span class="c1">850 seconds for the greylist deferral period. This was chosen because a </span> <span class="c10"><a href="http://en.wikipedia.org/wiki/Greylisting" target="_blank">Wikipedia</a></span> <span class="c1">article on greylisting shows the default retry times for various MTAs with the average 1st retry being around the 15 minute mark, 850 seconds prevents a host retrying every minute from passing before this.</span>
</p>
<p class="c0">
<span class="c1">I also believe that 15 minutes is a good margin for a DNS blacklist (DNSBL) to see the message from an IP (e.g. infected, malicious, hacked or other), list it, sync the list with any mirrors and allow for a negative cache TTL to expire. &nbsp;The theory being that if host is greylisted and is not already listed on a DNSBL, then prior to accepting mail from them, they could be subsequently black listed. &nbsp;This theory maybe the subject of a future article.</span>
</p>
<p class="c0">
<span class="c1">25 hours before greylist deferral records are removed. This was chosen in case someone had set their queue retry timer to 24 hours, unlikely, but you never know. &nbsp;I just wanted to pick an arbitrarily big number. I can revisit this choice based on the results in my conclusions.</span>
</p>
<p class="c0">
<span class="c1">Based on the 25 hours before any greylist records are removed, I decided that the test would run for a total of 50 hours. &nbsp;The first 25 hours would allow any messages through as normal subject to the rules of greylisting, after which I would only allow through messages for hosts that had outstanding greylist records to give them the chance to pass the test, no other messages would be allowed or tracked after this time to allow the test to finish gracefully.</span>
</p>
<p class="c0">
<span class="c1">I should also mention the mail stream that I am running this test on: it&rsquo;s an old 3-letter domain that was first registered in 1989, but has been out of use for the past 10 years or so and has no real users present on it. &nbsp;I spent a lot of time generating addresses that were harvested and sold on a few years ago, so it gets a quite a lot of </span><span class="c10"><a href="http://en.wikipedia.org/wiki/Botnet" target="_blank">botnet</a></span><span class="c1"> spew, </span><span class="c10"><a href="http://mainsleazespam.com/" target="_blank">mainsleaze</a></span><span class="c1"> and the occasional bit of misdirected mail.</span>
</p>
<h2>Results</h2>
<table cellpadding="0" cellspacing="0" class="c6" align="center" border="1" width="80%">
<tbody>
<tr>
<td class="c26">
<p class="c2">
<span class="c1 c12">&nbsp;</span>
</p>
</td>
<td class="c24">
<p class="c2">
<span class="c1 c12">Messages</span>
</p>
</td>
<td class="c25">
<p class="c2">
<span class="c1 c12">%</span>
</p>
</td>
</tr>
<tr>
<td class="c26">
<p class="c9">
<span class="c1">Rejected</span>
</p>
</td>
<td class="c24">
<p class="c2">
<span class="c1">71,638</span>
</p>
</td>
<td class="c25">
<p class="c2">
<span class="c1 c12 c22">98.5</span>
</p>
</td>
</tr>
<tr>
<td class="c26">
<p class="c9">
<span class="c1">Lost</span>
</p>
</td>
<td class="c24">
<p class="c2">
<span class="c1">34</span>
</p>
</td>
<td class="c25">
<p class="c2">
<span class="c1">0.04</span>
</p>
</td>
</tr>
<tr>
<td class="c26">
<p class="c9">
<span class="c1">Accepted</span>
</p>
</td>
<td class="c24">
<p class="c2">
<span class="c1">1,041</span>
</p>
</td>
<td class="c25">
<p class="c2">
<span class="c1">1.43</span>
</p>
</td>
</tr>
<tr>
<td class="c26">
<p class="c9">
<span class="c1 c12">TOTAL</span>
</p>
</td>
<td class="c24">
<p class="c2">
<span class="c1">72,713</span>
</p>
</td>
<td class="c25">
<p class="c9">
<span class="c1">&nbsp;</span>
</p>
</td>
</tr>
</tbody>
</table>
<p class="c0">
<span class="c1">Lost is the count of the number of messages that were not retried after the hostid that sent them had passed the greylisting test.</span>
</p>
<p class="c0">
<span class="c1">These results were quite a surprise to me. &nbsp;Prior to starting this test I expected the numbers to be considerably lower. &nbsp;With this in mind I decided to analyse the results further to verify the outcome.</span>
</p>
<p class="c0">
<span class="c1">I started by analysing the number of retries seen for each message for all messages that had been seen during the test. &nbsp;The graph speaks for itself:</span>
</p>
<p><a href="http://nanozen.info/wp-content/uploads/2011/02/image4.png" rel="lightbox[1806]"><img src="http://nanozen.info/wp-content/uploads/2011/02/image4-300x196.png" alt="" title="image4" width="300" height="196" class="aligncenter size-medium wp-image-1820" /></a></p>
<p class="c0">
<span class="c1">It shows that nearly all messages that failed greylisting made only a single delivery attempt.</span>
</p>
<p class="c0">
<span class="c1">For comparison &#8211; here is the same graph, but showing only messages that passed greylisting:</span>
</p>
<p><a href="http://nanozen.info/wp-content/uploads/2011/02/image5.png" rel="lightbox[1806]"><img src="http://nanozen.info/wp-content/uploads/2011/02/image5-300x196.png" alt="" title="image5" width="300" height="196" class="aligncenter size-medium wp-image-1815" /></a></p>
<p class="c0">
<span class="c1">And here is a graph that shows the maximum delay caused by greylisting:</span>
</p>
<p><a href="http://nanozen.info/wp-content/uploads/2011/02/image1.png" rel="lightbox[1806]"><img src="http://nanozen.info/wp-content/uploads/2011/02/image1-300x196.png" alt="" title="image1" width="300" height="196" class="aligncenter size-medium wp-image-1817" /></a></p>
<p><span class="c1">This shows the vast majority of messages were initially delayed for less than an hour.</span>
</p>
<h2>Extremes</h2>
<p class="c0">
<span class="c1">The graphs above show some big numbers at the extremes. &nbsp;I decided to investigate these.</span>
</p>
<ul class="c19">
<li class="c16">
<span class="c1">61 failed retry attempts. &nbsp;All of the retries counts over 17 were caused by a single group of hosts with a hostid of &lsquo;newsletter.m6.fr&rsquo;. &nbsp;It would appear to be a pool of hosts with a shared-spool and a retry interval of 10 seconds.</span>
</li>
<li class="c16">
<span class="c1">17 retry attempts for a message that passed greylisting. This was a pool of hosts with a hostid of &lsquo;.xraybot.com&rsquo; running a shared-pool that appear to be running the Lyris ListManager 10 software (verified by visiting </span><br />
<span class="c10"><a href="http://www.xraybot.com/" target="_blank">www.xraybot.com</a></span><span class="c1"> and the SMTP banners). &nbsp;</span></p>
<p class="c0 c21">
<span class="c1">In this case there are 16 hosts in the pool and each host retried 1 second after the previous host, then once all of the hosts in the pool had attempted to send the message &#8211; the first host in the pool retried an hour later therefore passing the greylisting.</span>
</p>
<li class="c16">
<span class="c1">A message that was delayed for almost 24 hours. This was from a single host with a hostid of &lsquo;.built2go.com&rsquo; and an envelope from &lsquo;root@unknown.scnet.net&rsquo;, but the From header shows &lsquo;updates@boxedartupdates.com&rsquo;. &nbsp;It scored 1 in the SpamAssassin mass-checks and appears to be a non-spam newsletter. &nbsp;According to the headers, the message was delivered by Sendmail, so it was simply configured with a very long retry.</span>
</li>
<li class="c16">
<span class="c1">Not shown on the graph, but in the greylist database I found a single case where the retried message was over 25 hours old and the greylist record had been deleted. &nbsp;The message was a lottery scam message relayed through host </span><br />
<span class="c10"><a href="http://dormant.esatclear.ie/" target="_blank">dormant.esatclear.ie</a></span><span class="c1"> via authenticated SMTP from a host in the Czech Republic and was retried after 28.9 hours. &nbsp;According to the received header the host was running Exim 4.14. &nbsp;The message would have passed greylisting had the record expiry time have been higher. &nbsp;I the only explanation I have for the very long retry timer is that the host is under heavy load and is not running its queues due to that load.</span>
</li>
</ul>
<h2>SpamAssassin Mass Checks</h2>
<p class="c0">
<span class="c1">I ran a SpamAssassin mass-check for each message class that I had collected from the test. &nbsp;This produced some interesting results, but it should be noted that the mass-checks were run after the test was complete. &nbsp;That means that some of the messages checked could have been over 50 hours old and would most likely have scored lower at the time the message was received.</span>
</p>
<p class="c0">
<span class="c1"> I started with all the messages that had failed to greylist properly:</span>
</p>
<p><a href="http://nanozen.info/wp-content/uploads/2011/02/image3.png" rel="lightbox[1806]"><img src="http://nanozen.info/wp-content/uploads/2011/02/image3-300x196.png" alt="" title="image3" width="300" height="196" class="aligncenter size-medium wp-image-1819" /></a></p>
<p class="c0">
<span class="c1">This shows 0.6% of the messages were underneath the SpamAssassin threshold of 5. &nbsp;I manually inspected these messages and found only two that I would consider a false-positive, the rest were all false-negatives.</span>
</p>
<p class="c0">
<span class="c1">Both of the false-positives were a newsletter from the New York Post (Subject: Daily Newsletter). &nbsp;Upon inspection both of these messages were only attempted to be delivered once. &nbsp;The Received header shows that Postfix was the MTA used to deliver the message, so it must have been configured to do this is not the default behaviour. &nbsp;The messages were sent from IP 209.73.248.15, which is listed on the DNSWL.</span>
</p>
<p class="c0">
<span class="c1">The mass-check results also show a high overlap with DNSBL / URIBL services:</span>
</p>
<table cellpadding="0" cellspacing="0" class="c6" align="center" border="1" width="80%">
<tbody>
<tr>
<td class="c18">
<p class="c9">
<span class="c1 c12">Rule</span>
</p>
</td>
<td class="c7">
<p class="c2">
<span class="c1 c12">%</span>
</p>
</td>
</tr>
<tr>
<td class="c18">
<p class="c9">
<span class="c1">RCVD_IN_BRBL_LASTEXT</span>
</p>
</td>
<td class="c7">
<p class="c2">
<span class="c1">98.160</span>
</p>
</td>
</tr>
<tr>
<td class="c18">
<p class="c9">
<span class="c1">RCVD_IN_XBL</span>
</p>
</td>
<td class="c7">
<p class="c2">
<span class="c1">95.977</span>
</p>
</td>
</tr>
<tr>
<td class="c18">
<p class="c9">
<span class="c1">URIBL_DBL_SPAM</span>
</p>
</td>
<td class="c7">
<p class="c2">
<span class="c1">90.352</span>
</p>
</td>
</tr>
<tr>
<td class="c18">
<p class="c9">
<span class="c1">URIBL_JP_SURBL</span>
</p>
</td>
<td class="c7">
<p class="c2">
<span class="c1">89.991</span>
</p>
</td>
</tr>
<tr>
<td class="c18">
<p class="c9">
<span class="c1">URIBL_WS_SURBL</span>
</p>
</td>
<td class="c7">
<p class="c2">
<span class="c1">89.873</span>
</p>
</td>
</tr>
<tr>
<td class="c18">
<p class="c9">
<span class="c1">URIBL_AB_SURBL</span>
</p>
</td>
<td class="c7">
<p class="c2">
<span class="c1">84.937</span>
</p>
</td>
</tr>
<tr>
<td class="c18">
<p class="c9">
<span class="c1">RCVD_IN_PSBL</span>
</p>
</td>
<td class="c7">
<p class="c2">
<span class="c1">76.349</span>
</p>
</td>
</tr>
<tr>
<td class="c18">
<p class="c9">
<span class="c1">RCVD_IN_RP_RNBL</span>
</p>
</td>
<td class="c7">
<p class="c2">
<span class="c1">69.914</span>
</p>
</td>
</tr>
<tr>
<td class="c18">
<p class="c9">
<span class="c1">URIBL_SBL</span>
</p>
</td>
<td class="c7">
<p class="c2">
<span class="c1">68.271</span>
</p>
</td>
</tr>
<tr>
<td class="c18">
<p class="c9">
<span class="c1">RCVD_IN_PBL</span>
</p>
</td>
<td class="c7">
<p class="c2">
<span class="c1">68.152</span>
</p>
</td>
</tr>
<tr>
<td class="c18">
<p class="c9">
<span class="c1">URIBL_SC_SURBL</span>
</p>
</td>
<td class="c7">
<p class="c2">
<span class="c1">55.040</span>
</p>
</td>
</tr>
<tr>
<td class="c18">
<p class="c9">
<span class="c1">RCVD_IN_BL_SPAMCOP_NET</span>
</p>
</td>
<td class="c7">
<p class="c2">
<span class="c1">52.021</span>
</p>
</td>
</tr>
<tr>
<td class="c18">
<p class="c9">
<span class="c1">RCVD_IN_SORBS_DUL</span>
</p>
</td>
<td class="c7">
<p class="c2">
<span class="c1">22.286</span>
</p>
</td>
</tr>
<tr>
<td class="c18">
<p class="c9">
<span class="c1">URIBL_PH_SURBL</span>
</p>
</td>
<td class="c7">
<p class="c2">
<span class="c1">12.720</span>
</p>
</td>
</tr>
</tbody>
</table>
<p class="c0">
<span class="c1">Here is the score distribution of messages that were not retried after the host sending the messages had passed the greylisting test with another message. &nbsp;As there were only 34 of these I manually looked at all of them and found them all to be spam.</span>
</p>
<p><a href="http://nanozen.info/wp-content/uploads/2011/02/image2.png" rel="lightbox[1806]"><img src="http://nanozen.info/wp-content/uploads/2011/02/image2-300x196.png" alt="" title="image2" width="300" height="196" class="aligncenter size-medium wp-image-1818" /></a></p>
<p class="c0">
<span class="c1">I would speculate that some of these messages were not retried as the hosts were found to be compromised and the messages were subsequently deleted from the queues. &nbsp;On previous trial runs of this test I found evidence that Google did this when it shut down compromised accounts.</span>
</p>
<p class="c0">
<span class="c1">Again I found a significant overlap with DNSBL / URIBL services in the mass-check results:</span>
</p>
<table cellpadding="0" cellspacing="0" class="c6" align="center" border="1" width="80%">
<tbody>
<tr>
<td class="c4">
<p class="c9">
<span class="c1 c12">Rule</span>
</p>
</td>
<td class="c17">
<p class="c2">
<span class="c1 c12">%</span>
</p>
</td>
</tr>
<tr>
<td class="c4">
<p class="c9">
<span class="c1">RCVD_IN_BRBL_LASTEXT</span>
</p>
</td>
<td class="c17">
<p class="c2">
<span class="c1">87.879</span>
</p>
</td>
</tr>
<tr>
<td class="c4">
<p class="c9">
<span class="c1">URIBL_DBL_SPAM</span>
</p>
</td>
<td class="c17">
<p class="c2">
<span class="c1">81.818</span>
</p>
</td>
</tr>
<tr>
<td class="c4">
<p class="c9">
<span class="c1">URIBL_RHS_DOB</span>
</p>
</td>
<td class="c17">
<p class="c2">
<span class="c1">39.394</span>
</p>
</td>
</tr>
<tr>
<td class="c4">
<p class="c9">
<span class="c1">RCVD_IN_RP_RNBL</span>
</p>
</td>
<td class="c17">
<p class="c2">
<span class="c1">39.394</span>
</p>
</td>
</tr>
<tr>
<td class="c4">
<p class="c9">
<span class="c1">URIBL_JP_SURBL</span>
</p>
</td>
<td class="c17">
<p class="c2">
<span class="c1">36.364</span>
</p>
</td>
</tr>
<tr>
<td class="c4">
<p class="c9">
<span class="c1">URIBL_AB_SURBL</span>
</p>
</td>
<td class="c17">
<p class="c2">
<span class="c1">21.212</span>
</p>
</td>
</tr>
<tr>
<td class="c4">
<p class="c9">
<span class="c1">RCVD_IN_PSBL</span>
</p>
</td>
<td class="c17">
<p class="c2">
<span class="c1">15.152</span>
</p>
</td>
</tr>
<tr>
<td class="c4">
<p class="c9">
<span class="c1">URIBL_OB_SURBL</span>
</p>
</td>
<td class="c17">
<p class="c2">
<span class="c1">12.121</span>
</p>
</td>
</tr>
<tr>
<td class="c4">
<p class="c9">
<span class="c1">RCVD_IN_XBL</span>
</p>
</td>
<td class="c17">
<p class="c2">
<span class="c1">12.121</span>
</p>
</td>
</tr>
<tr>
<td class="c4">
<p class="c9">
<span class="c1">URIBL_WS_SURBL</span>
</p>
</td>
<td class="c17">
<p class="c2">
<span class="c1">12.121</span>
</p>
</td>
</tr>
<tr>
<td class="c4">
<p class="c9">
<span class="c1">RCVD_IN_BL_SPAMCOP_NET</span>
</p>
</td>
<td class="c17">
<p class="c2">
<span class="c1">9.091</span>
</p>
</td>
</tr>
<tr>
<td class="c4">
<p class="c9">
<span class="c1">URIBL_SBL</span>
</p>
</td>
<td class="c17">
<p class="c2">
<span class="c1">9.091</span>
</p>
</td>
</tr>
</tbody>
</table>
<p class="c0">
<span class="c1">&nbsp;</span>
</p>
<p class="c0">
<span class="c1">And finally here is the score distribution of the messages that passed greylisting:</span>
</p>
<p><a href="http://nanozen.info/wp-content/uploads/2011/02/image0.png" rel="lightbox[1806]"><img src="http://nanozen.info/wp-content/uploads/2011/02/image0-300x196.png" alt="" title="image0" width="300" height="196" class="aligncenter size-medium wp-image-1816" /></a></p>
<p class="c0">
<span class="c1">As the mail stream I&rsquo;m testing this on predominantly receives spam, it was not much of a surprise that a high proportion of these messages were considered to be spam. &nbsp;Here is the overlap with the DNSBL / URIBL services from the mass-check results:</span>
</p>
<table align="center" cellpadding="0" cellspacing="0" class="c6" border="1" width="80%">
<tbody>
<tr>
<td class="c3">
<p class="c9">
<span class="c1 c12">Rule</span>
</p>
</td>
<td class="c5">
<p class="c2">
<span class="c1 c12">%</span>
</p>
</td>
</tr>
<tr>
<td class="c3">
<p class="c9">
<span class="c1">RCVD_IN_BRBL_LASTEXT</span>
</p>
</td>
<td class="c5">
<p class="c2">
<span class="c1">64.808</span>
</p>
</td>
</tr>
<tr>
<td class="c3">
<p class="c9">
<span class="c1">URIBL_DBL_SPAM</span>
</p>
</td>
<td class="c5">
<p class="c2">
<span class="c1">52.692</span>
</p>
</td>
</tr>
<tr>
<td class="c3">
<p class="c9">
<span class="c1">URIBL_RHS_DOB</span>
</p>
</td>
<td class="c5">
<p class="c2">
<span class="c1">25.673</span>
</p>
</td>
</tr>
<tr>
<td class="c3">
<p class="c9">
<span class="c1">RCVD_IN_PSBL</span>
</p>
</td>
<td class="c5">
<p class="c2">
<span class="c1">25.192</span>
</p>
</td>
</tr>
<tr>
<td class="c3">
<p class="c9">
<span class="c1">URIBL_WS_SURBL</span>
</p>
</td>
<td class="c5">
<p class="c2">
<span class="c1">20.000</span>
</p>
</td>
</tr>
<tr>
<td class="c3">
<p class="c9">
<span class="c1">URIBL_JP_SURBL</span>
</p>
</td>
<td class="c5">
<p class="c2">
<span class="c1">14.712</span>
</p>
</td>
</tr>
<tr>
<td class="c3">
<p class="c9">
<span class="c1">RCVD_IN_RP_RNBL</span>
</p>
</td>
<td class="c5">
<p class="c2">
<span class="c1">12.500</span>
</p>
</td>
</tr>
<tr>
<td class="c3">
<p class="c9">
<span class="c1">URIBL_OB_SURBL</span>
</p>
</td>
<td class="c5">
<p class="c2">
<span class="c1">11.827</span>
</p>
</td>
</tr>
<tr>
<td class="c3">
<p class="c9">
<span class="c1">URIBL_AB_SURBL</span>
</p>
</td>
<td class="c5">
<p class="c2">
<span class="c1">7.115</span>
</p>
</td>
</tr>
<tr>
<td class="c3">
<p class="c9">
<span class="c1">URIBL_SBL</span>
</p>
</td>
<td class="c5">
<p class="c2">
<span class="c1">6.346</span>
</p>
</td>
</tr>
<tr>
<td class="c3">
<p class="c9">
<span class="c1">RCVD_IN_BL_SPAMCOP_NET</span>
</p>
</td>
<td class="c5">
<p class="c2">
<span class="c1">5.577</span>
</p>
</td>
</tr>
<tr>
<td class="c3">
<p class="c9">
<span class="c1">RCVD_IN_XBL</span>
</p>
</td>
<td class="c5">
<p class="c2">
<span class="c1">5.385</span>
</p>
</td>
</tr>
<tr>
<td class="c3">
<p class="c9">
<span class="c1">RCVD_IN_SBL</span>
</p>
</td>
<td class="c5">
<p class="c2">
<span class="c1">4.712</span>
</p>
</td>
</tr>
</tbody>
</table>
<h2>Overheads</h2>
<p class="c0">
<span class="c1">The database that I used for this test recorded a single greylisting record for each greylist tuple which corresponds to a unique message, and a separate table tracked the retries for that tuple. &nbsp;This allowed me to track the bandwidth overhead associated with greylisting at the end-of-data in this way.</span>
</p>
<p class="c0">
<span class="c1">If all messages greylisted during this test were allowed through without being greylisted, the total size of the message data accepted would have been 151 MB excluding any protocol overheads. &nbsp;With greylisting this rose to 210 MB which is a 39% increase. &nbsp;However greylisting prevented 130 MB of traffic from being content scanned, an intensive activity, which is an 89% decrease in volume.</span>
</p>
<h2>Queue strategies</h2>
<p class="c0">
<span class="c1">In the &lsquo;Testing&rsquo; section above, I mentioned the requirement that a hostid should not be able to pass greylisting until it had retried the first or last message (e.g. LIFO or FIFO) that it had sent to prevent spammers from passing the greylisting via a &lsquo;brute force&rsquo; retry method. &nbsp;This would also allow an optimisation to reduce the amount of bandwidth used by moving the greylisting deferral back to the RCPT TO: or DATA stage if the sender and recipients do not match either the first or last greylist tuple for that hostid.</span>
</p>
<p class="c0">
<span class="c1">However, while doing initial testing and removing any bugs from my greylist plug-in, I observed that several messages from free-mail hosts were &lsquo;lost&rsquo; and never retried after the hostid had passed the test. &nbsp;Upon investigation, these messages were all spam and I concluded that they were never retired because the abuse was detected and the accounts that sent them were either disabled or deleted and any messages in the queues for these accounts were de-queued.</span>
</p>
<p class="c0">
<span class="c1">If one of these messages deleted from the queue had been either the first or the last message seen by the greylisting plug-in, then all mail from that hostid would have been delayed considerably as the hostid would not be able to pass the test for over 25 hours (in the case of a FIFO queue strategy). &nbsp;I also realised that I commonly ran Sendmail queues on overloaded systems with &lsquo;sendmail -qp -OMinQueueAge=15m -OQueueSortOrder=random&rsquo; which would also fall foul of this requirement.</span>
</p>
<p class="c0">
<span class="c1">The data collected for this paper showed that only 6 messages were rejected because of this requirement that would otherwise have been accepted. &nbsp;All of the messages were considered to be spam by me and by SpamAssassin.</span>
</p>
<p class="c0">
<span class="c1">Based upon these observations I would not recommend making the queue strategy a requirement to pass greylisting at this time.</span>
</p>
<h2>Conclusion</h2>
<p class="c0">
<span class="c1">The numbers I think speak for themselves, even after eight years greylisting is still effective. &nbsp;With modifications to the greylist tuple used, such as the hostid, exempting hosts that finally pass greylisting, and skipping greylisting for hosts on DNS whitelists it can be effective without adversely delaying genuine mail.</span>
</p>
<p class="c0">
<span class="c1">It can also significantly reduce the amount of external network look-ups required and reduce the CPU cost of content filtering until a host has passed greylisting allowing greater scalability at the expense of extra bandwidth.</span>
</p>
<p class="c0">
<span class="c1">Critics of greylisting as an anti-spam technique would say that it can cause valid mail to be lost, I would counter this argument and say that any e-mail server or web application that cannot correctly handle temporary failures as required by the </span><span class="c10"><a href="http://tools.ietf.org/html/rfc5321#section-4.5.4.1" target="_blank">RFC</a></span><span class="c1"> is going to be terminally unreliable anyway.</span>
</p>
<p class="c0">
<span class="c1">While it might not be for everyone and it will still require some hosts to be manually exempted. Based on these results greylisting will definitely be in the next version of </span><span class="c10"><a href="http://www.fsl.com/" target="_blank">BarricadeMX</a></span><span class="c1"> and our customers can choose for themselves if they want to enable it or not.</span>
</p>
<h2>Thanks</h2>
<p class="c0">
<span class="c1">The original idea for greylisting using part of the PTR record was made by Anthony Howe. &nbsp;My thanks to Stephen Swaney, Randolph Langley and Anthony Howe for editing and contributing changes to this paper. </span>
</p>
<p><br/></p>
<p class="copyright">
<span class="c1">Copyright 2011 by Fort Systems Ltd. All rights reserved.<br />
May not be reprinted without permission.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://nanozen.info/2011/02/greylisting-revisited/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spamhaus under DDOS from AnonOps (Wikileaks.info)</title>
		<link>http://nanozen.info/2010/12/spamhaus-under-ddos-from-anonops-wikileaks-info/</link>
		<comments>http://nanozen.info/2010/12/spamhaus-under-ddos-from-anonops-wikileaks-info/#comments</comments>
		<pubDate>Sat, 18 Dec 2010 14:39:33 +0000</pubDate>
		<dc:creator>Anthony Howe</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://nanozen.info/?p=1794</guid>
		<description><![CDATA[Sent to a private anti-spam list I&#8217;m a member of&#8230;
From: Steve Linford at Spamhaus
Date: Sat, 18 Dec 2010 12:39:18 +0000

For speaking out about the crime gangs located at the wikileaks.info mirror IP, Spamhaus is now under ddos by AnonOps.
As our site can&#8217;t be reached now, we can not continue to warn Wikileaks users not to [...]]]></description>
			<content:encoded><![CDATA[<p>Sent to a private anti-spam list I&#8217;m a member of&#8230;</p>
<p><strong>From: Steve Linford at Spamhaus<br />
Date: Sat, 18 Dec 2010 12:39:18 +0000<br />
</strong><br />
For speaking out about the <strong>crime gangs located at the wikileaks.info mirror IP</strong>, Spamhaus is now under ddos by AnonOps.</p>
<p>As our site can&#8217;t be reached now, we can not continue to warn Wikileaks users not to load things from the Heihachi IP. If you know journalists who would get this message out, please forward this message (entire) to them.</p>
<p>AnonOps did not like our article update, here&#8217;s what we said and what brought the ddos on us:</p>
<p>&#8212;-</p>
<p>In a statement released today on wikileaks.info entitled &#8220;Spamhaus&#8217; False Allegations Against wikileaks.info&#8221;, the person running the wikileaks.info site (which is not connected with Julian Assange or the real Wikileaks organization) called Spamhaus&#8217;s information on his infamous cybercrime host &#8220;false&#8221; and &#8220;none of our business&#8221; and called on people to contact Spamhaus and &#8220;voice your opinion&#8221;. Consequently Spamhaus has now received a number of emails some asking if we &#8220;want to be next&#8221;, some telling us to stop blacklisting Wikileaks (obviously they don&#8217;t understand that we never did) and others claiming we are &#8220;a pawn of US Government Agencies&#8221;.</p>
<p>None of the people who contacted us realised that the &#8220;Wikileaks press release&#8221; published on wikileaks.info was not written by Wikileaks and not issued by Wikileaks &#8211; but by the person running the wikileaks.info site only &#8211; the very site we are warning about. The site data, disks, connections and visitor traffic, are all under the control of the Heihachi cybercrime gang. There are more than 40 criminal-run sites operating on the same IP address as wikileaks.info, including carder-elite.biz, h4ck3rz.biz, elite-crew.net, and bank phishes paypal-securitycenter.com and postbank-kontodirekt.com.</p>
<p>Because they are using a Wikileaks logo, many people thought that the &#8220;press release&#8221; was issued &#8220;by Wikileaks&#8221;. In fact there has been no press release about this by Wikileaks and none of the official Wikileaks mirrors sites even recognise the wikileaks.info mirror. We wonder how long it will be before Wikileaks supporters wake up and start to question why wikileaks.info is not on the list of real Wikileaks mirrors at <a href="http://wikileaks.ch/mirrors.html" target="_blank">wikileaks.ch</a>.</p>
<p>Currently wikileaks.info is serving highly sensitive leaked documents to the world, from a server fully controlled by Russian malware cybercriminals, to an audience that faithfully believes anything with a &#8216;Wikileaks&#8217; logo on it.</p>
<p>Spamhaus continues to warn Wikileaks readers to make sure they are viewing and downloading documents only from an official Wikileaks mirror site. We&#8217;re not saying &#8220;don&#8217;t go to Wikileaks&#8221; we&#8217;re saying &#8220;Use the wikileaks.ch server instead&#8221;.</p>
<p>&#8212;-</p>
<p>Steve Linford<br />
The Spamhaus Project<br />
<a href="http://www.spamhaus.org/" target="_blank">http://www.spamhaus.org</a></p>
<p><strong>Update:</strong> The full Spamhaus warning concerning wikileaks.info is <a href="http://www.spamhaus.org/news.lasso?article=665" target="_blank">here</a>. A similar warning made by Trend Micro is <a href="http://blog.trendmicro.com/wikileaks-in-a-dangerous-internet-neighborhood/" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://nanozen.info/2010/12/spamhaus-under-ddos-from-anonops-wikileaks-info/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Release of Private Wimp MLM</title>
		<link>http://nanozen.info/2010/01/release-of-private-wimp-mlm/</link>
		<comments>http://nanozen.info/2010/01/release-of-private-wimp-mlm/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 16:37:28 +0000</pubDate>
		<dc:creator>Anthony Howe</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://nanozen.info/?p=1602</guid>
		<description><![CDATA[For those who follow my technical exploits&#8230;
SnertSoft is happy to announce Private Wimp, a simple light weight mailing list manager, that is free to download. Private Wimp has been used to manage several mailing lists for past few months now.
It avoids the bloat of Major Domo, Mailman, and Ecartis . Completely written in C and [...]]]></description>
			<content:encoded><![CDATA[<p>For those who follow my technical exploits&#8230;</p>
<p><a href="http://www.snertsoft.com/" target="_blank">SnertSoft</a> is happy to announce Private Wimp, a simple light weight mailing list manager, that is free to download. Private Wimp has been used to manage several mailing lists for past few months now.</p>
<p>It avoids the bloat of Major Domo, Mailman, and Ecartis . Completely written in C and so avoids the overhead of Perl or Python. Installation and configuration is short and simple; all list management can be done remotely by email; always confirms subscribe/unsubscribe requests and admin. commands; handles bounce messages (discard, forward, or removal of unknown users); provides support for four list types (announcement, trusted, closed moderated, open moderated); keeps track of users that unsubscribe; and provides a simple archive structure (similar to Ecartis).</p>
<p>The online documentation can be found here:</p>
<p>	<a href="http://www.snertsoft.com/sendmail/wimp/" target="_blank">http://www.snertsoft.com/sendmail/wimp/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://nanozen.info/2010/01/release-of-private-wimp-mlm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning New Tricks</title>
		<link>http://nanozen.info/2010/01/learning-new-tricks/</link>
		<comments>http://nanozen.info/2010/01/learning-new-tricks/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 22:46:47 +0000</pubDate>
		<dc:creator>Anthony Howe</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://nanozen.info/?p=1595</guid>
		<description><![CDATA[I just love Google and Wikipedia for research.  I spent the better part of today learning about the Lunar Standard Time (LST) proposal and the Julian Day Number (also the Calendar FAQ is very informative).
I even wrote Javascript classes that implemented them. I thought it would be kind of neat in an odd ball [...]]]></description>
			<content:encoded><![CDATA[<p>I just love <a href="http://www.google.com/" target="_blank">Google</a> and <a href="http://www.wikipedia.org/" target="_blank">Wikipedia</a> for research.  I spent the better part of today learning about the <a href="http://www.lunarclock.org/" target="_blank">Lunar Standard Time</a> (LST) proposal and the <a href="http://en.wikipedia.org/wiki/Julian_day" target="_blank">Julian Day Number</a> (also the <a href="http://www.tondering.dk/claus/calendar.html" target="_blank">Calendar FAQ</a> is very informative).</p>
<p>I even wrote Javascript classes that implemented them. I thought it would be kind of neat in an odd ball off the wall sense, like expressing the speed of light in <a href="http://en.wikipedia.org/wiki/FFF_system" target="_blank">furlong per fortnight</a>, to display them here on the blog (see sidebar right). I&#8217;ve even had an idea for a new <a href="http://en.wikipedia.org/wiki/Request_for_Comments" target="_blank">RFC</a> <img src='http://nanozen.info/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://nanozen.info/2010/01/learning-new-tricks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anal-tics &amp; Urchins</title>
		<link>http://nanozen.info/2009/09/anal-tics-urchins/</link>
		<comments>http://nanozen.info/2009/09/anal-tics-urchins/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 08:52:03 +0000</pubDate>
		<dc:creator>Anthony Howe</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[Rant]]></category>

		<guid isPermaLink="false">http://nanozen.info/?p=1545</guid>
		<description><![CDATA[Google Analytics, or my preferred name for it &#8220;google anal-tics&#8221;, is a service designed to provide web site owners with statistics about visitors movements on their site. One would think this is a simple and ordinary enough service  and nothing to worry about. 
However, I have two issues with this:
First, to achieve this data [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://analytics.google.com/" target="_blank">Google Analytics</a>, or my preferred name for it &#8220;google anal-tics&#8221;, is a service designed to provide web site owners with statistics about visitors movements on their site. One would think this is a simple and ordinary enough service  and nothing to worry about. </p>
<p>However, I have two issues with this:</p>
<p>First, to achieve this data gathering, a web site is required to load on each web page of interest a Javascript file called <code>urchin.js</code> from Google or the more advanced <code>ga.js</code> file. Essentially a web site is telling your browser to execute some remote 3rd party script on your system. This is a BAD idea in terms of security, since it might be possible to hijack that script in transit and replace it with attack / hack code. Also the script is not loaded securely via HTTPS, so no certificate authentication or validation of any kind is done; just blind trust that <code>google-analytics.com</code> has not been hijack by <a href="http://en.wikipedia.org/wiki/DNS_cache_poisoning" target="_blank">DNS cache poisioning</a> or that some intermediate web proxy hasn&#8217;t been compromised.</p>
<p>Second, I am interested in protecting my privacy online as much as possible these days. I already have a pretty big online foot print dating as far back as 1986; regardless I see it as my right to restrict data collected about me. So whenever a web site asks for <a href="http://en.wikipedia.org/wiki/HTTP_cookie" target="_blank">HTTP cookies</a>, Flash Cookies (<a href="http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager.html" target="_blank">How to Manage Flash Settings</a>), tries to load advertising, or track my movements through scripts and/or cookies, I&#8217;ll go out of my way to block that from happening.</p>
<p>So when a web site loads <code>urchin.js</code> or <code>ga.js</code>, it is going to communicate information about visitors back to Google. I find this an invasion of my online privacy. What I do online is my business, not Google&#8217;s. Google already has enough data about what search terms I look for (this can be controlled through Google, though who knows if it is honoured or not). Frankly I don&#8217;t think Google or any other 3rd party advertiser needs to know where and what the frack I&#8217;m doing. </p>
<p>Simple solution: use a URL blocker, like <a href="https://addons.mozilla.org/en-US/firefox/addon/507" target="_blank">Bork Bork Bork!</a> or Adblock Plus, to block <code>urchin.js</code>, <code>ga.js</code>, and/or anything from <code>google-analytics.com</code> from being accessed. If you don&#8217;t want to use a URL block, this can also be achieved by adding to the Unix or Mac OS X <code>/etc/hosts</code> file (Windows has an equivalent <code>C:\WINDOWS\system32\drivers\etc\hosts</code>) and add an entry like:</p>
<blockquote><p>
127.0.0.1&nbsp;&nbsp;www.google-analytics.com
</p></blockquote>
<p>Most webs sites where <code>google-analytics.com</code> has been blocked are designed well enough to continue functioning. However, there are a small handful of web sites the refuse to do anything when the tracking code is not loaded. Typical bad design on the web sites part. In the end I see Google Anal-Tics as evil and chose not to do business with web sites that expect me to put up with that shit.</p>
]]></content:encoded>
			<wfw:commentRss>http://nanozen.info/2009/09/anal-tics-urchins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vista&#8217;s Gapping Maw</title>
		<link>http://nanozen.info/2009/07/vistas-gapping-maw/</link>
		<comments>http://nanozen.info/2009/07/vistas-gapping-maw/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 08:41:43 +0000</pubDate>
		<dc:creator>Anthony Howe</dc:creator>
				<category><![CDATA[Humour]]></category>
		<category><![CDATA[Poetry]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[haiku]]></category>

		<guid isPermaLink="false">http://nanozen.info/?p=1437</guid>
		<description><![CDATA[CNet News reported how the Microsoft vomit ad was removed by them and their ad company. They probably realised the actress was actually reacting to Vista instead and the state of Microsoft products.


getTweet("http://nanozen.info/wp-content/uploads/2009/07/2438467728.json");
]]></description>
			<content:encoded><![CDATA[<p>CNet News <a href="http://news.cnet.com/8301-17852_3-10278063-71.html">reported</a> how the Microsoft vomit ad was removed by them and their ad company. They probably realised the actress was actually reacting to Vista instead and the state of Microsoft products.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/xB9fhjnJcB0&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/xB9fhjnJcB0&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object></p>
<blockquote id='2438467728'></blockquote>
<p><script type="text/javascript">getTweet("http://nanozen.info/wp-content/uploads/2009/07/2438467728.json");</script></p>
<div style="display: none;"<br />
<a href='http://nanozen.info/wp-content/uploads/2009/07/ms-vomit-ad.flv'>ms-vomit-ad</a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://nanozen.info/2009/07/vistas-gapping-maw/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bork Bork Bork! 1.8</title>
		<link>http://nanozen.info/2009/07/bork-bork-bork-1-8/</link>
		<comments>http://nanozen.info/2009/07/bork-bork-bork-1-8/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 06:43:15 +0000</pubDate>
		<dc:creator>Anthony Howe</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[Bork]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://nanozen.info/?p=1397</guid>
		<description><![CDATA[My Mozilla Firefox &#038; Thunderbird extension Bork Bork Bork! has been updated for Mozilla Firefox 3.5. Bork Bork Bork! is a Swedish Chef (of Muppets fame) travesty filter and URL blocker. View web pages or (junk) mail as spoken by the Swedish Chef like this&#8230;

My Muzeella Fureffux &#038; Thoonderburd ixtenseeun Bork Bork Bork! hes beee [...]]]></description>
			<content:encoded><![CDATA[<p>My Mozilla Firefox &#038; Thunderbird extension <em>Bork Bork Bork!</em> has been updated for <a href="http://www.mozilla.com/" target="_blank">Mozilla Firefox 3.5</a>. <em>Bork Bork Bork!</em> is a Swedish Chef (of Muppets fame) travesty filter and URL blocker. View web pages or (junk) mail as spoken by the Swedish Chef like this&#8230;</p>
<blockquote><p>
My Muzeella Fureffux &#038; Thoonderburd ixtenseeun Bork Bork Bork! hes beee updeted fur Muzeella Fureffux 3.5. Bork Bork Bork! is a Svedeesh Cheff trefesty feelter und URL blucker. Feeoo veb peges oor (joonk) meeel es spukee by zee Svedeesh Cheff leeke-a thees.</p></blockquote>
<p>It is available directly from:</p>
<ul>
<li>my <a href="http://www.snert.com/" target="_blank">snert.com</a> page for <a href="http://www.snert.com/Software/bork.html" target="_blank">Bork Bork Bork! 1.8</a></li>
<li>the official Mozilla Add-On page for <a href="https://addons.mozilla.org/en-US/firefox/addon/507" target="_blank">Bork Bork Bork! 1.8</a><br />
(if they ever get around to approving it)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://nanozen.info/2009/07/bork-bork-bork-1-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shorter URL Links</title>
		<link>http://nanozen.info/2009/04/shorter-url-links/</link>
		<comments>http://nanozen.info/2009/04/shorter-url-links/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 09:16:47 +0000</pubDate>
		<dc:creator>Anthony Howe</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://nanozen.info/?p=902</guid>
		<description><![CDATA[Joshua Schachter has written an article about The Great Linkrot Apocalypse related to the use of URL shortening services (TinyURL.com, twhirl.nl, bit.ly, snurl.com, is.gd, digg.com, etc.). Chris Shiflett along with several others are actively discussing proposals such as A rev=&#8221;canonical&#8221; HTTP Header that a site publisher can use to specify their own recommended short URL, [...]]]></description>
			<content:encoded><![CDATA[<p>Joshua Schachter has written an article about <a href="http://joshua.schachter.org/2009/04/on-url-shorteners.html">The Great Linkrot Apocalypse</a> related to the use of URL shortening services (<a href="http://tinyurl.com/">TinyURL.com</a>, twhirl.nl, <a href="http://bit.ly/">bit.ly</a>, <a href="http://snurl.com/">snurl.com</a>, <a href="http://is.gd/">is.gd</a>, <a href="http://digg.com/">digg.com</a>, etc.). Chris Shiflett along with several others are actively discussing proposals such as <a href=" http://shiflett.org/blog/2009/apr/a-rev-canonical-http-header">A rev=&#8221;canonical&#8221; HTTP Header</a> that a site publisher can use to specify their own recommended short URL, rather than rely on a 3rd party service.</p>
<p>Sites like <a href="http://php.net/">PHP.net</a> and <a href="http://flickr.com/">Flickr</a> have already added support for many of the ideas discussed. But what is really required is that there be more adoption by blogs, social network sites like <a href="http://twitter.com/">twitter</a> and <a href="http://identi.ca/">identi.ca</a>, and applications like <a href="http://www.twhirl.org/">twhirl</a> and <a href="http://www.tweetdeck.com/">tweetdeck</a>. </p>
<p>To that end there is already a WordPress plugin called <a href=" http://wordpress.org/extend/plugins/shorter-links/">Shorter Links</a>, which having installed it here works very nicely and I assume the author will continue to track the developments in this space. There is also a <a href="http://revcanonical.appspot.com/#canonical">tool</a> to test self-published shortened URLs.</p>
<p>One can also follow the twitter discussion thread about <a href="http://search.twitter.com/search?q=%23revcanonical">#revcanonical</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://nanozen.info/2009/04/shorter-url-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows System Tools</title>
		<link>http://nanozen.info/2009/01/windows-system-tools/</link>
		<comments>http://nanozen.info/2009/01/windows-system-tools/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 11:18:03 +0000</pubDate>
		<dc:creator>Anthony Howe</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[Thoughts]]></category>
		<category><![CDATA[antivirus]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://nanozen.info/?p=586</guid>
		<description><![CDATA[I&#8217;ve been having some trouble with my Windows XP SP3 machine the past 72 hours. Suspect either a bad update to either Windows, the anti-virus scanner, or something more sinister. @n3wjack pointed me at some of the tools he recommends and figured I should share my favourites too:

Malwarebytes Anti-Malware &#8211; the best malware detection tool [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been having some trouble with my Windows XP SP3 machine the past 72 hours. Suspect either a bad update to either Windows, the anti-virus scanner, or something more sinister. <a href="http://twitter.com/n3wjack">@n3wjack</a> pointed me at some of the <a href="http://n3wjack.net/2007/01/22/5-tools-to-keep-your-windows-running-smooth/">tools he recommends</a> and figured I should share my favourites too:</p>
<ul>
<li><a href="http://malwarebytes.org/">Malwarebytes Anti-Malware</a> &#8211; the best malware detection tool I&#8217;ve used to date that works! Will catch things that an up to date AV, adware, and spyware scanners fail to find. If you suspect you have a problem, get this tool, update it, and do a quick scan. Odds are this tool will save you from a tedious system wipe and rebuild.</li>
<li><a href="http://www.avast.com/">Avast! Home Edition</a> &#8211; free for private and personal use. This has been the one I&#8217;ve been using for a couple of years now. See <a href="http://www.av-comparatives.org/">AV Comparitives</a>.</li>
<li><a href="http://www.eset.com/">NOD32</a> &#8211; commercial AV with free trial, not yet tried this, but I&#8217;m told by a fellow sys.admin. friend that swears it is the fastest, least resource consuming. See <a href="http://www.av-comparatives.org/">AV Comparitives</a>.</li>
<li><a href="http://www.vipreantivirus.com/">Vipre</a> &#8211; another colleague suggested last night this AV scanner, but it appears to be completely unknown underdog. But I trust the source of the suggestion.</li>
<li><a href="http://www.clamwin.com/">ClamAV for Windows</a> &#8211; free open source anti-virus scanner; however it lacks an on-access scanner, which is essential for being alerted to problems quickly. Have tried to find add-on on-access scanners for ClamWin, but not yet found a suitable one. ClamWin is great for whole disk scanning though, but with modern disk being so big, how often do you bother to scan a whole disk or individual files.</li>
<li><a href="http://sysinternals.com/">System Internals Tools</a> &#8211; bought out by Microsoft, they have a superior Process Explorer, and many many other neat power user / admin. tools.</li>
<li><a href="http://www.microsoft.com/windowsxp/Downloads/powertoys/Xppowertoys.mspx">Tweak UI</a> &#8211; part of the Microsoft Power Toys suite and essential for customising Windows behaviour, like turning off the annoying &#8220;Ballon Tips&#8221; or disabling CD/DVD autorun to prevent installation of the evil <em>PC Friendly</em> (causes nothing but grief) or other potential nasties the studios try to slip onto a machine, like DRM root kits.</li>
<li><a href="http://www.pctools.com/guides/registry/">Registry Guide</a> &#8211; formerly regedit.com and winguides.com, they used to provide a Windows helpfile download showing many many handy registry keys, but now it&#8217;s only available online (grrr). Documents much of what you can change using TweakUI or regedit.exe. Handy information for locking down a Windows computer. Here&#8217;s an out of date copy of the last free <a href="http://www.snert.com/reference/registry.chm">Registry Guide</a> downloadable.</li>
<li><a href="http://www.sisoftware.net/">SiSoftware Sandra Lite</a> &#8211; everything you wanted to know about your computer hardware.</li>
<li><a href="http://www.memtest.org/">Memory Testing</a> &#8211; A comprehensive free memory testing tool.</li>
<li><a href="http://www.speedtest.net/">SpeedTest</a> &#8211; a handy bandwidth testing web site. BTW it helps if you know where your network provider&#8217;s &#8220;peering&#8221; is done in order to compute favourable results.</li>
<li><a href="http://www.ranish.com/">Ranish Partition Manager</a> &#8211; a free tool for resizing and managing primary &amp; extendied disk partitions. Handy if you want to setup dual boot systems.</li>
<li><a href="http://home.eunet.no/~pnordahl/ntpasswd/">Admin. Password Reset Tool</a> &#8211; have you ever forgotten the admin. password for your Windows system or have you ever had to service someone&#8217;s machine to remove virii and needed admin. access.</li>
<li><a href="http://www.jam-software.com/freeware/index.shtml">Treesize Free</a> &#8211; handy tool for seeing what the size of directories are and where you might be wasting disk space. Also handy for estimating CD/DVD backup sizes. I have a copy of the older TreeSize Pro 2.4 which is just brill.</li>
</ul>
<p>When it comes to AV tools, I&#8217;ve given up on Symantec and McAfee. I think they&#8217;re past their heyday. Symantec Norton Anti-Virus is a resource <em>pig</em> that can slow a Windows machine down at least (I estimate) 20%, certainly noticeable; the user interface is slow; and frankly it misses catching virus, trojans, spyware, etc. In my humble opinion its rubbish. As for McAfee, I stopped using it some where around Windows 98, when it just stopped being as affective in identifying malware. At the time I switched to Norton AV and was happy for a long time until Windows XP and performance problems started appearing. I&#8217;ve not revisited McAfee since, but frankly if I&#8217;m going to pay for an AV, I&#8217;m going to trying something different, like NOD32.</p>
<p>Forget about installing adware or spyware detection tools; remove them if you have. Frankly I do not trust these tools to not be the actual source of adware and spyware themselves. This should be the job of a good and well known anti-virus scanner. The only tool I&#8217;ve come to trust that I&#8217;ve seen catch stuff that an AV scanner have missed has been Malwarebytes. I recommend running this even if you have an AV scanner.</p>
<p>The above are just some of the handy tools I&#8217;ve kept booked marked for emergencies or use on a daily basis. I have others I could probably mention, but for Windows sys.admin. and field support the above is a good place to start and should keep you calm enough to get the job done. You&#8217;ll still curse Windows as rubbish, but at least it you might be able to fix it enough to tolerate it longer.</p>
<p><strong>Update 2009-10-07:</strong></p>
<ul>
<li><a href="http://www.avira.com/en/download/">Avira AntiVir Personal </a> &#8211; free for personal use. I&#8217;ve been using this for the past 10 months as I&#8217;ve found it to be less resource intensive (aka faster) than Avast! and just as good. It lacks many of the extra features of Avast!, such as SMTP, POP, IMAP, P2P, IM, and web scanning, but then for power users who are aware of the pitfalls, use secure channels, and use tools already adapted to their situation, like Firefox web browser, then Avira&#8217;s light weight nature compared to Avast! will be better. Still for the average joe unfamiliar with internet security, Avast! Home Edition will probably be a more comprehensive solution.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://nanozen.info/2009/01/windows-system-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BarricadeMX 2.2</title>
		<link>http://nanozen.info/2009/01/barricademx-22/</link>
		<comments>http://nanozen.info/2009/01/barricademx-22/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 22:56:13 +0000</pubDate>
		<dc:creator>Anthony Howe</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://nanozen.info/?p=562</guid>
		<description><![CDATA[Today my partners, FSL, and I announced the release of BarricadeMX 2.2, the latest version of my comprehensive anti-spam software for POSIX mail servers, in particular Linux, OpenBSD, and FreeBSD. In addition versions for Windows and Mac OS X have been ported and are currently being tested.
Along with the usual plethora of speed, accuracy, and [...]]]></description>
			<content:encoded><![CDATA[<p>Today my partners, <a href="http://www.fsl.com/">FSL</a>, and I announced the release of <a href="http://www.snertsoft.com/smtp/smtpf/">BarricadeMX 2.2</a>, the latest version of my comprehensive anti-spam software for POSIX mail servers, in particular Linux, OpenBSD, and FreeBSD. In addition versions for Windows and Mac OS X have been ported and are currently being tested.</p>
<p>Along with the usual plethora of speed, accuracy, and bug fixes that are part of any major release, are several new features and enhancements:</p>
<dl>
<dt>Enhanced Message-ID for Email Watermark (EMEW) Version 2</dt>
<dd style="padding: 0px 0px 8px 0px;">Improved outbound message &#8220;water-marking&#8221; reduces the threat of Denial of Service due to &#8220;bounce message&#8221; floods. With <a href="http://www.snertsoft.com/smtp/smtpf/smtpf-cf.html#smtpf_emew">EMEW</a> it is now possible to selectively apply different secrets by individual sender, sender domain, or sender account for outbound tagging and validation of of inbound non-delivery reports or content white listing of replies. This allows an ISP to apply EMEW only for those domains known to use the ISP outbound mail servers exclusively and exclude those domains that might use a mixed mail server model. </dd>
<dt>Attachment Reject Policies</dt>
<dd style="padding: 0px 0px 8px 0px;">Using simple file name patterns, deny attachments based on attachment<br />
name, content-type, and/or file names found in .zip and .rar compressed<br />
archives.
</dd>
<dt>Time limited recipient addresses</dt>
<dd style="padding: 0px 0px 8px 0px;">Easily generate safe and disposable time limited email addresses as part of user&#8217;s regular mail address. Intended for use by users who want to supply short lived addresses to questionable web sites registration forms or mailing lists.</dd>
<dt>Digest DNS Blacklist Support</dt>
<dd style="padding: 0px 0px 8px 0px;">Originally intended for use with the <a href="http://www.team-cymru.org/Services/MHR/">Malware Hash Registry</a>, it can be used with other similar blacklists. Support for other distributed hashes, such as <a href="http://en.wikipedia.org/wiki/Vipul%27s_Razor">Vipul&#8217;s Razor</a>, Pyzor, and <a href="http://www.rhyolite.com/dcc/">DCC</a> is being considered.</dd>
<dt>Sophos AV Support</dt>
<dd style="padding: 0px 0px 8px 0px;">Sophos AV has been added to the already supported AV engines: Avast, ClamAV, F-Prot.</dd>
<dt>More RFC Supprot</dt>
<dd style="padding: 0px 0px 8px 0px;">RFC 1652 8BITMIME simple pass-through support now advertised with EHLO capabilities list.</p>
<p>RFC 1870 SMTP SIZE parameter extension supported and can be used in conjunction with the existing access-map size limitation tags length-connect:, length-from:, and length-to: for rejections based on SIZE at RCPT TO: command instead of end of message.
</p>
</dd>
<dt>DNS, URI, and NS BL Additions</dt>
<dd>Now possible to check IP addresses and URI found within selected headers against blacklists. Also experimental options to check URI name servers against specialised NS blacklists now available.</dd>
</dl>
<p>Technical questions concerning the software or documentation, please contact me via <a href="http://www.snertsoft.com/">SnertSoft</a> directly. Otherwise to arrange for demos, discuss pricing, speciality needs, or other POSIX based platforms please contact my partners <a href="http://www.fsl.com/">FSL</a>.</p>
<blockquote id="1104163299"></blockquote>
<p><script src='http://nanozen.info/wp-content/uploads/2009/01/1104163299.js'></script></p>
<blockquote id="1104347693"></blockquote>
<p><script src='http://nanozen.info/wp-content/uploads/2009/01/1104347693.js'></script></p>
]]></content:encoded>
			<wfw:commentRss>http://nanozen.info/2009/01/barricademx-22/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrade to WP 2.7</title>
		<link>http://nanozen.info/2009/01/upgrade-to-wp-27/</link>
		<comments>http://nanozen.info/2009/01/upgrade-to-wp-27/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 11:37:50 +0000</pubDate>
		<dc:creator>Anthony Howe</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://nanozen.info/?p=558</guid>
		<description><![CDATA[Have finally updated the blog software to WordPress 2.7. Not as painful as I was anticipating.
I have a theory if you anticipate the worst, things typically work first go, but you waste lots of time and energy being paranoid; of course that one time you&#8217;re not paranoid or too complacent about installing an upgrade happens [...]]]></description>
			<content:encoded><![CDATA[<p>Have finally updated the blog software to WordPress 2.7. Not as painful as I was anticipating.</p>
<p>I have a theory if you anticipate the worst, things typically work first go, but you waste lots of time and energy being paranoid; of course that one time you&#8217;re not paranoid or too complacent about installing an upgrade happens to be that one time when <em>the shit hits the fan</em>. The same is true with computer hardware; when you install a new interface card or memory and carefully close up the box, before testing the new hardware, you always end up having to reopen the box because: the card / memory wasn&#8217;t seated properly; you unseated a cable by accident that just happened to get caught on your sleeve cuff button; forget to reconnect a cable you disconnected so you get your hands inside, etc. Sometimes I think Murphy was the court jester to God.</p>
]]></content:encoded>
			<wfw:commentRss>http://nanozen.info/2009/01/upgrade-to-wp-27/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;You no speaky english&#8221;</title>
		<link>http://nanozen.info/2008/09/you-no-speaky-english/</link>
		<comments>http://nanozen.info/2008/09/you-no-speaky-english/#comments</comments>
		<pubDate>Sat, 27 Sep 2008 08:20:02 +0000</pubDate>
		<dc:creator>Anthony Howe</dc:creator>
				<category><![CDATA[Commentary]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Rant]]></category>

		<guid isPermaLink="false">http://nanozen.info/?p=255</guid>
		<description><![CDATA[Today is I have some technical pet peeves I want to get off my chest, arse, and other parts of my anatomy.
I&#8217;m Canadian and live in France. I speak and read both English and French, but English is my first and preferred language, especially for all things technical. I&#8217;ve configured my web browser Firefox (Opera [...]]]></description>
			<content:encoded><![CDATA[<p>Today is I have some technical pet peeves I want to get off my chest, arse, and other parts of my anatomy.</p>
<p>I&#8217;m Canadian and live in France. I speak and read both English and French, but English is my first and preferred language, especially for all things technical. I&#8217;ve configured my web browser Firefox (Opera and IE have this facility too) as to which language variants I want. The HTTP/1.1 web protocol as described by <a href="http://tools.ietf.org/html/rfc2616">RFC 2616</a> supports the <em>Accept-Language</em> header that the web client software specifies in HTTP requests as to which language the user wants to receive in order of preference.</p>
<p>So <em>!WHY!</em> is it that web sites like <a href="http://www.google.com/">Google</a>, <a href="http://www.youtube.com/">YouTube</a>, and many others select a web page language based on the user&#8217;s geographical location (determined by country assignments of IP addresses) rather than my personal preferences!?! Especially when there is a protocol mechanism to facilitate language choice! Why should I then have to change the web site preferences and store a language <a href="http://en.wikipedia.org/wiki/HTTP_cookie"><em>cookie</em></a> (<a href="http://tools.ietf.org/html/rfc2965">RFC 2965</a>) to remember that choice, when my web browser keeps telling the web site my preferences as part of each request I make where ever I go!?</p>
<p>Why do web sites insist on pissing users off by making broad assumptions about as simple a thing as preferred language? &#8220;Oh! You live in France, you must speak French by choice. We&#8217;ll give you the French version of the site.&#8221; Bzzzzt! WRONG! Game over! Thanks for playing! Bloody wankers! (I can make similar comments about language selection when installing software, my region is set to France, but I have a UK QWERTY keyboard! What does tell you about me? Grrr.)</p>
<p>My second peeve concerns <em>Contact Us</em> links on web sites, either the lack there of, that they are often buried deep deep in the web site in some obscure corner of a page, the poor choice of options such as no means to make <em>general comments, suggestions, or ideas</em>, or that the page is inaccessible or won&#8217;t display at all. I wanted to comment on my language selection peeve to YouTube, but there was no link for comments, just how to complain about copyright, abuse, security, get <a href="http://en.wikipedia.org/wiki/Api">API </a>information, and the like. Trying some of the alternative choices, like <em>Help Centre</em>, would not even display at all in the browser &#8211; as though the web page request was stuck in some sort of redirection loop.</p>
<p>One thing YouTube/Google have done is publish their postal address and phone numbers, so I&#8217;ll probably print a hard copy of this rant and mail it to them. If I had a fax (OK, I could use the computer&#8217;s fax service I suppose), I might do it that way, but I&#8217;d probably find their fax machine connected to an automated telephone system menu that I&#8217;d have to navigate first before I could get a carrier tone. Hmm. Maybe if I press zero for an operator and blast the modem tones in their ear. That might give me some small measure of pleasure and assuage my need use a clue bat on someone.</p>
<blockquote id="934291458"></blockquote>
<p><script src='http://nanozen.info/wp-content/uploads/2008/09/934291458.js' type="text/javascript"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://nanozen.info/2008/09/you-no-speaky-english/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My XYZZY, my rules.</title>
		<link>http://nanozen.info/2008/06/my-xyzzy-my-rules/</link>
		<comments>http://nanozen.info/2008/06/my-xyzzy-my-rules/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 12:42:36 +0000</pubDate>
		<dc:creator>Anthony Howe</dc:creator>
				<category><![CDATA[Commentary]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://nanozen.info/?p=32</guid>
		<description><![CDATA[Charles Cooper of CNET wrote Monday an article A commenter&#8217;s Bill of Rights? Let&#8217;s think first concerning whether or not comments made on a blog belong to the blog owner or the commenter and/or whether a commenter has any rights with respect to their ability to manage what they&#8217;ve said.
There is an old Internet saying [...]]]></description>
			<content:encoded><![CDATA[<p>Charles Cooper of CNET wrote Monday an article <a href="http://news.cnet.com/8301-10787_3-9957956-60.html">A commenter&#8217;s Bill of Rights? Let&#8217;s think first</a> concerning whether or not comments made on a blog belong to the blog owner or the commenter and/or whether a commenter has any rights with respect to their ability to manage what they&#8217;ve said.</p>
<p>There is an old Internet saying <em>my server, my rules</em> or more precisely with respect to the topic at hand <em>my blog, my rules</em>. If I own, operate, and pay for the hosting of a web site or blog, then any content generated on that web site belongs me, thus comments left on my blog would belong to me, with proper attribution to the commenter of course (otherwise why bother having comments at all). If someone wants to save and/or protect their comments, then they should use their own blog and link back to the source article or comment to form the thread of discussion for readers.</p>
<p><em>My blog, my rules</em> is a question of simplicity and easy of management of content. To do otherwise would be chaos. <span id="more-32"></span> </p>
<p>What about issues of liable? The Internet has already seen cases where blog owners linking back to defamatory articles have been held liable, even though they did not write the original article. As a person running a blog, I need to be able to manage the content, especially when someone else contributes commentary, in order to protect myself legally. I do not think blog owners will have the same protection as an ISP or social network site (ie. America&#8217;s &#8220;safe habour&#8221; provisions). What happens when the blog owner and the commenter live in different countries, each with different laws with respect to freedom of speech and copyright?</p>
<p>Consider too <em>comment spam</em>. If commenters had rights to their utterances on blogs and  you delete or edit a comment that is spam, would you be liable in some manner? A blogger has more risk in terms of hosting costs, what they publish, and general reputation, such that they must have ownership and control of what is said on their sites, especially when it is an opposing opinion. Commenters are more like hecklers in a comedy club audience. </p>
<p>Probably the best solution is to disallow blog comments altogether. Force people to remain silent or use they&#8217;re own blogs or web sites to voice their views in response to articles. At least then each blogger takes equal responsibility for what is said in public.</p>
]]></content:encoded>
			<wfw:commentRss>http://nanozen.info/2008/06/my-xyzzy-my-rules/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The message is more important, not the messenger.</title>
		<link>http://nanozen.info/2008/05/the-message-is-more-important-not-the-messenger/</link>
		<comments>http://nanozen.info/2008/05/the-message-is-more-important-not-the-messenger/#comments</comments>
		<pubDate>Fri, 30 May 2008 07:32:10 +0000</pubDate>
		<dc:creator>Anthony Howe</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://nanozen.info/?p=29</guid>
		<description><![CDATA[This morning I read this interesting article 13 reasons why Ruby, Python, and the gang will push Java to die&#8230; of old age.  Some of the initial points are relevant, while many of the latter ones are irrelevant.
For example Reason 13 &#8220;lack of tools&#8221; I disagree with. My design tool of choice is a [...]]]></description>
			<content:encoded><![CDATA[<p>This morning I read this interesting article <a href="http://littletutorials.com/2008/05/28/13-reasons-java-die-old-age/">13 reasons why Ruby, Python, and the gang will push Java to die&#8230; of old age</a>.  Some of the initial points are relevant, while many of the latter ones are irrelevant.</p>
<p>For example Reason 13 &#8220;lack of tools&#8221; I disagree with. My design tool of choice is a good text editor like <a href="http://www.textpad.com/">TextPad</a> or <a href="http://en.wikipedia.org/wiki/Nvi">nvi</a>. I never use an <a href="http://en.wikipedia.org/wiki/Integrated_development_environment">IDE</a> as I find they get in the way of &#8220;<em>how I think</em>&#8221; about a problem and often hide the language preventing a programmer from learning a language properly. Outside of an editor, compiler, interpreter, and debugger all the additional tools that serve as programming aids can often be a crutch that impede a developer from actually thinking about design and logic; sure they can help, but I don&#8217;t see this as the reason behind a language not being adopted. <span id="more-29"></span></p>
<p>Reason 10 &#8220;hanging about&#8221; I disagree with. Java evolved out of C, C++, and Smalltalk. Algol inspired Pascal which begot Modula2 &#038; 3 which in turn inspired Ada, which was sponsored by US military needs. Lisp inspired Scheme and Lisp is still the favourite of the Emacs crowd. Python draws some of its roots from ABC and Fortran in terms of using indentation / column position for code blocks. <a href="http://en.wikipedia.org/wiki/Forth_(programming_language)">Forth</a>, a stack based language, was probably the inspiration for Postscript, which are both popular in their respective domains (embedded systems, printing). The point here is that the older languages had merit in their time, but go on to inspire a newer variant, and some languages have a certain niche domain or problem space that they were design for, rather than being general purpose.</p>
<p>Reason 9 &#8220;lack of sponsor&#8221; I disagree with. Perl became popular because it provided superior <a href="http://en.wikipedia.org/wiki/Regular_Expressions">regular expression</a> handling as syntactical objects, instead of a set of functions or methods. In addition Perl brought together all the elements of AWK, sed, and grep (regular expression based tools) and the shell into one kitchen sink type language at a time when shell script programming was painful due to the multitude of shells (Bournce, Korn, Csh, &#8230;) and their assorted quirks. Don&#8217;t recall there being any particular big name sponsor behind it. I&#8217;ve read some where that Larry Wall would not have written Perl had Ruby existed at that time to solve his needs. This would imply that the adoption of a language by programmers is also a matter of timing in addressing a need.</p>
<p>Also I see the creation of huge collections of libraries that are distributed as part of the core support more of a discouragement to learning a language like Java, Perl, or Python. I dislike &#8220;everything and the kitchen sink&#8221; approaches. I learnt Java several years ago before the sudden influx of APIs where added. It was appealing then because one could see and understand the whole of it. Now I seldom program in Java, because I just see it as bloated mess; the language is ok, but all the additional libraries that are bundled with it now make me want to run screaming into the hills.</p>
<p>Reason 8 &#8220;no killer application&#8221; I strongly disagree with. A killer application is a new and novel idea or concept, which is separate from the implementation language. The choice of language used to develop a killer application might simplify parts of the implementation, but do not inspire the actual ideas behind the application. What a killer application does for a programming language is give it exposure. However, this can lead to programmers &#8220;worshipping the messenger more than the message&#8221;, which is why some languages like Perl, Python, Tcl, or Ruby on Rails will gain sudden followings. What people do after with their language(s) of choice will be more interesting to history.</p>
]]></content:encoded>
			<wfw:commentRss>http://nanozen.info/2008/05/the-message-is-more-important-not-the-messenger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

