<?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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Matt&#039;s Hacking Blog</title>
	<atom:link href="http://baudehlo.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://baudehlo.wordpress.com</link>
	<description>Some ramblings from an old hack</description>
	<lastBuildDate>Thu, 23 Feb 2012 16:47:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='baudehlo.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Matt&#039;s Hacking Blog</title>
		<link>http://baudehlo.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://baudehlo.wordpress.com/osd.xml" title="Matt&#039;s Hacking Blog" />
	<atom:link rel='hub' href='http://baudehlo.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Setting up Haraka for outbound email</title>
		<link>http://baudehlo.wordpress.com/2012/02/23/setting-up-haraka-for-outbound-email/</link>
		<comments>http://baudehlo.wordpress.com/2012/02/23/setting-up-haraka-for-outbound-email/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 16:47:42 +0000</pubDate>
		<dc:creator>baudehlo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://baudehlo.wordpress.com/2012/02/23/setting-up-haraka-for-outbound-email/</guid>
		<description><![CDATA[I just wrote a tutorial for this, because it&#8217;s incredibly easy and people were getting bogged down in too many details :) Click here for the tutorial.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=286&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I just wrote a tutorial for this, because it&#8217;s incredibly easy and people were getting bogged down in too many details :)</p>
<p>Click <a href="https://github.com/baudehlo/Haraka/blob/master/docs/tutorials/SettingUpOutbound.md">here</a> for the tutorial.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/baudehlo.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/baudehlo.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/baudehlo.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/baudehlo.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/baudehlo.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/baudehlo.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/baudehlo.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/baudehlo.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/baudehlo.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/baudehlo.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/baudehlo.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/baudehlo.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/baudehlo.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/baudehlo.wordpress.com/286/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=286&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://baudehlo.wordpress.com/2012/02/23/setting-up-haraka-for-outbound-email/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f39643d2451e54e8aba0697668a90a11?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">baudehlo</media:title>
		</media:content>
	</item>
		<item>
		<title>craigslist deploys Haraka</title>
		<link>http://baudehlo.wordpress.com/2012/02/17/craigslist-deploys-haraka/</link>
		<comments>http://baudehlo.wordpress.com/2012/02/17/craigslist-deploys-haraka/#comments</comments>
		<pubDate>Fri, 17 Feb 2012 15:24:22 +0000</pubDate>
		<dc:creator>baudehlo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://baudehlo.wordpress.com/?p=276</guid>
		<description><![CDATA[craigslist deploys Haraka SMTP Server craigslist has implemented Haraka SMTP Server, based on its compelling combination of scalability and configurability. craigslist classifieds are used by over 50 million users each month in the US alone, generating massive demand for its email relay services &#8211; demand that Haraka is designed to accomodate with ease. Haraka plugins [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=276&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>craigslist deploys Haraka SMTP Server</p>
<p>craigslist has implemented Haraka SMTP Server, based on its compelling combination of scalability and configurability.</p>
<p>craigslist classifieds are used by over 50 million users each month in the US alone, generating massive demand for its email relay services &#8211; demand that Haraka is designed to accomodate with ease.</p>
<p>Haraka plugins written in Javascript can access any part of the SMTP conversation, for email filtering, sender and recipient filtering and modification, authentication, content modification, and custom delivery. By leveraging the Node.js framework, the Haraka project provides extremely high mail server performance along with ease of use and flexibility.</p>
<p>craigslist has contributed significantly to Haraka development, and hopes to continue providing new plugins and features to the open source project.</p>
<p>Haraka can be found here: <a href="http://haraka.github.com/" target="_blank">http://haraka.github.com/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/baudehlo.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/baudehlo.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/baudehlo.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/baudehlo.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/baudehlo.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/baudehlo.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/baudehlo.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/baudehlo.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/baudehlo.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/baudehlo.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/baudehlo.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/baudehlo.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/baudehlo.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/baudehlo.wordpress.com/276/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=276&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://baudehlo.wordpress.com/2012/02/17/craigslist-deploys-haraka/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f39643d2451e54e8aba0697668a90a11?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">baudehlo</media:title>
		</media:content>
	</item>
		<item>
		<title>Github Continuous Deployment to EC2</title>
		<link>http://baudehlo.wordpress.com/2012/02/09/github-continuous-deployment-to-ec2/</link>
		<comments>http://baudehlo.wordpress.com/2012/02/09/github-continuous-deployment-to-ec2/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 18:12:43 +0000</pubDate>
		<dc:creator>baudehlo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[Github]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://baudehlo.wordpress.com/2012/02/09/github-continuous-deployment-to-ec2/</guid>
		<description><![CDATA[After searching far and wide for EASY solutions for continuous deployment to EC2 from our Github repository I decided to write my own, and detail it here so that other people could find it easily on google. Here are the tools I use for this: EC2 running Linux (Ubuntu) Ruby and sinatra (but you can [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=271&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After searching far and wide for EASY solutions for continuous deployment to EC2 from our Github repository I decided to write my own, and detail it here so that other people could find it easily on google.</p>
<p>Here are the tools I use for this:</p>
<ul>
<li>EC2 running Linux (Ubuntu)</li>
<li>Ruby and sinatra (but you can use something else if it floats your boat)</li>
<li>Nginx frontend</li>
<li>runit for keeping services running, and logging</li>
</ul>
<p>I&#8217;m not going to go into details on how to setup EC2 &#8211; just get a Linux host of some sort (we&#8217;re using Ubuntu) up and running there, and assign an easy to remember CNAME to point to it (below I call this &#8220;yournewhostname.yourdomain.com&#8221;).</p>
<p>Firstly create a user account for your deployment on your EC2 instance, and create ssh keys for this user &#8211; we&#8217;ll call this user &#8220;deployment&#8221;. Then create a github account for that user, and add your ssh public key into that new account&#8217;s github configuration. [This is necessary only for private repositories - if you're using a public repo then it's not required]. You then need to make a &#8220;Team&#8221; for this user, so that account can get &#8220;pull&#8221; request rights on your project. We call our team &#8220;EC2 Deployment&#8221;. Set the team up so it gets pull rights only. Add this new user to that team.</p>
<p>Then in your Github repository, go into Admin, Teams, and add the &#8220;EC2 Deployment&#8221; team to your project. Now while you&#8217;re in Admin, go into Service Hooks, and add a Post-Receive URL hook pointing to http://yournewhostname.yourdomain.com/.</p>
<p>Now configure nginx to forward requests to yournewhostname.yourdomain.com to a server on localhost on a unique port. I use 10001, but pick whatever works.</p>
<p>Now you need a Ruby sinatra app running on 10001 which receives the POST data, performs a pull request, and restarts the service. This has to run as root (to restart the service) so make sure you audit this code!</p>
<p>Finally, here&#8217;s the sinatra code that processes the request:</p>
<pre>post '/' do
 if (!params[:payload])
   return "Stop sending me rubbish"
 end
 push = JSON.parse(params[:payload]);

 if (push['ref'] != 'refs/heads/master')
   return "Not a push on master - ignorning"
 end

 repo = push['repository']['name'];

 Dir.chdir("/var/deployments/" + repo)
 if (system("/bin/su", "deployment", "-c", "/usr/bin/git pull"))
   puts "git pull of #{repo} successful"
   if (system("/usr/bin/sv", "kill", "."))
    return "Restarted!"
   end
 end
 return "Thanks";
end</pre>
<p>I removed a lot of the logging here, but you get the idea. It&#8217;s pretty simple, and doesn&#8217;t do any testing or anything like that, but I&#8217;ve provided this here for you as an example, not as the final solution.</p>
<p>PS: We&#8217;re hiring. <a href="https://sites.google.com/a/hubdoc.com/jobs/">Come work for us!</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/baudehlo.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/baudehlo.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/baudehlo.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/baudehlo.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/baudehlo.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/baudehlo.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/baudehlo.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/baudehlo.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/baudehlo.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/baudehlo.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/baudehlo.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/baudehlo.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/baudehlo.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/baudehlo.wordpress.com/271/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=271&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://baudehlo.wordpress.com/2012/02/09/github-continuous-deployment-to-ec2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f39643d2451e54e8aba0697668a90a11?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">baudehlo</media:title>
		</media:content>
	</item>
		<item>
		<title>ANNOUNCE: Haraka 1.1.0</title>
		<link>http://baudehlo.wordpress.com/2012/01/13/announce-haraka-1-1-0/</link>
		<comments>http://baudehlo.wordpress.com/2012/01/13/announce-haraka-1-1-0/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 18:22:03 +0000</pubDate>
		<dc:creator>baudehlo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://baudehlo.wordpress.com/2012/01/13/announce-haraka-1-1-0/</guid>
		<description><![CDATA[I actually pushed this code to npm a week ago but didn&#8217;t get chance to write an announcement yet. This is a minor version bump because of some significant logging changes: Fix for helo_checks plugin for dynamic looking HELOs All logging should now include the log level, UUID, the plugin name (if available) and the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=157&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I actually pushed this code to npm a week ago but didn&#8217;t get chance to write an announcement yet.</p>
<p>This is a minor version bump because of some significant logging changes:</p>
<ul>
<li>Fix for helo_checks plugin for dynamic looking HELOs</li>
<li>All logging should now include the log level, UUID, the plugin name (if available) and the logging details</li>
</ul>
<p>For those happy with the current logging there is no particular reason to update.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/baudehlo.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/baudehlo.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/baudehlo.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/baudehlo.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/baudehlo.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/baudehlo.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/baudehlo.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/baudehlo.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/baudehlo.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/baudehlo.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/baudehlo.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/baudehlo.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/baudehlo.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/baudehlo.wordpress.com/157/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=157&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://baudehlo.wordpress.com/2012/01/13/announce-haraka-1-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f39643d2451e54e8aba0697668a90a11?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">baudehlo</media:title>
		</media:content>
	</item>
		<item>
		<title>Apple TV 2 Review</title>
		<link>http://baudehlo.wordpress.com/2011/11/23/apple-tv-2-review/</link>
		<comments>http://baudehlo.wordpress.com/2011/11/23/apple-tv-2-review/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 17:35:13 +0000</pubDate>
		<dc:creator>baudehlo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://baudehlo.wordpress.com/?p=132</guid>
		<description><![CDATA[I&#8217;ve had the Apple TV 2 for a few days now, after having upgraded from the original ATV1. I just wanted to jot down some notes on what&#8217;s good and what&#8217;s not so good. Firstly why did I bother upgrading? Well it was mostly for Airplay &#8211; the ATV1 doesn&#8217;t do Airplay (it does sound [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=132&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had the Apple TV 2 for a few days now, after having upgraded from the original ATV1. I just wanted to jot down some notes on what&#8217;s good and what&#8217;s not so good.</p>
<p>Firstly why did I bother upgrading? Well it was mostly for Airplay &#8211; the ATV1 doesn&#8217;t do Airplay (it does sound only), and so I wanted to be able to load up a youtube video or things like that on the iPad (which I also bought), and have them play on the TV. I also just wanted to see what the latest version was like, and for $110 (CAD) it is a great price.</p>
<p>My biggest gripe is that despite the software version being the same as what I had on the old ATV, the user interface has changed for the worse. The ATV2 no longer syncs from my iTunes, it <strong>only</strong> does &#8220;Home Sharing&#8221;. Previously it would sync the playlist (I didn&#8217;t have it copy things over &#8211; just the playlist) and have a Movies menu containing my movies, a TV Shows menu showing my TV Shows, and a Music menu showing my music. It would also give me direct access to the most recently added items in there.</p>
<p>The new version however has the &#8220;Computers&#8221; menu, which shows my iMac iTunes share, so you go in there, click on Movies, and it syncs the list of movies right then (it&#8217;s not too slow, but it takes a couple of seconds), and then just shows them all. No access to the most recently added movies, though technically I could make a playlist for this I guess.</p>
<p>Furthermore, the TV Shows are no longer grouped by TV Show, but by TV Show Series. So for something like Dexter and How I Met Your Mother I now have 6+ entries in the list to scroll through. This makes the list of TV Shows way too long.</p>
<p>Since watching movies that I have on my iMac iTunes share is my primary use of this device, this has been a disappointing experience.</p>
<p>Of course that&#8217;s not how Apple wants you to use the device any more. They want you to rent movies and TV Shows on it from the iTunes Store, or use Netflix. I haven&#8217;t signed up for Netflix yet, so I can&#8217;t describe how good that interface is yet.</p>
<p>Pros:</p>
<ul>
<li>Airplay &#8211; seems to work well for youtube/vimeo videos on the iPad.</li>
<li>Smaller, runs cooler, no hard drive to go wrong.</li>
<li>Rewinding and ffwding movies seems to work better.</li>
<li>Netflix access.</li>
</ul>
<p>Cons:</p>
<ul>
<li>Airplay doesn&#8217;t seem to work with music videos on the iPad. WTF? I mean I can access them directly on the ATV itself (via the horrible menu system I described above), but why not Just Work? It transfers the sound only. This may be an iPad issue though.</li>
<li>The lack of Sync and interface to Home Sharing is crap</li>
<li>Not much of an update really &#8211; the UI should be much fancier</li>
<li>No ability to sign up for Netflix or any of the other services on there via the ATV itself. Not a huge deal, but goes against the grain</li>
</ul>
<p>Overall I&#8217;m going to keep with it for a while, and see if subscribing to Netflix helps things out.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/baudehlo.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/baudehlo.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/baudehlo.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/baudehlo.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/baudehlo.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/baudehlo.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/baudehlo.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/baudehlo.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/baudehlo.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/baudehlo.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/baudehlo.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/baudehlo.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/baudehlo.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/baudehlo.wordpress.com/132/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=132&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://baudehlo.wordpress.com/2011/11/23/apple-tv-2-review/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f39643d2451e54e8aba0697668a90a11?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">baudehlo</media:title>
		</media:content>
	</item>
		<item>
		<title>It&#8217;s all about the logging</title>
		<link>http://baudehlo.wordpress.com/2011/11/11/its-all-about-the-logging/</link>
		<comments>http://baudehlo.wordpress.com/2011/11/11/its-all-about-the-logging/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 05:09:13 +0000</pubDate>
		<dc:creator>baudehlo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://baudehlo.wordpress.com/?p=128</guid>
		<description><![CDATA[I&#8217;ve been a developer for a long time. Hell, I&#8217;ve been with my current company, as a developer, for a very long time &#8211; over ten years now. And there&#8217;s one thing that has really struck me over that period of time that is the one thing that makes life easier: Logging. You can almost [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=128&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been a developer for a long time. Hell, I&#8217;ve been with my current company, as a developer, for a very long time &#8211; over ten years now. And there&#8217;s one thing that has really struck me over that period of time that is the one thing that makes life easier: Logging.</p>
<p>You can almost never log enough. When we&#8217;ve come across problems that we don&#8217;t understand, the first thing we end up doing is adding more logging.</p>
<p>One of my goals in Haraka has been to ensure that issues are easy to track. Deny (5xx and 4xx to the SMTP-savvy people) messages contain a UUID which can be tracked back directly into the logs. Having sat across the developer/sysadmin divide for a number of years (ok in truth, I just had fantastically bitchy sysadmins, and I love them for that) this is <em>HUGELY</em> important.</p>
<p>A lot of developers think that writing defect free software is the most important thing. They are entirely wrong &#8211; even defect free software gets a boat load of bug reports. Most problems and expenses with software will occur after you ship it. The only way you are going to be able to track what that problem was is through extensive logging.</p>
<p>So my message to you, dear coder friends, is to log early, log often, and log in a way you can track it back to an individual transaction. And save logs, lots of them, for as long as you possibly can.</p>
<p>And for Haraka users &#8211; we are working on improving this &#8211; it will be improved in the next major release (even though it&#8217;s pretty darn good already).</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/baudehlo.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/baudehlo.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/baudehlo.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/baudehlo.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/baudehlo.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/baudehlo.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/baudehlo.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/baudehlo.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/baudehlo.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/baudehlo.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/baudehlo.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/baudehlo.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/baudehlo.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/baudehlo.wordpress.com/128/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=128&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://baudehlo.wordpress.com/2011/11/11/its-all-about-the-logging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f39643d2451e54e8aba0697668a90a11?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">baudehlo</media:title>
		</media:content>
	</item>
		<item>
		<title>On thinking of senders</title>
		<link>http://baudehlo.wordpress.com/2011/11/02/on-thinking-of-senders/</link>
		<comments>http://baudehlo.wordpress.com/2011/11/02/on-thinking-of-senders/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 01:44:45 +0000</pubDate>
		<dc:creator>baudehlo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://baudehlo.wordpress.com/?p=125</guid>
		<description><![CDATA[So I&#8217;ve been starting hacking on a sender&#8217;s system for Haraka. Senders seem to love HTTP, and Node makes this really easy, so adding a HTTP server that allows sending to Haraka is dead easy (just a exports.register() function that starts a HTTP server, loading outbound.js for sending &#8211; I already have the proof of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=125&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve been starting hacking on a sender&#8217;s system for Haraka. Senders seem to love HTTP, and Node makes this really easy, so adding a HTTP server that allows sending to Haraka is dead easy (just a exports.register() function that starts a HTTP server, loading outbound.js for sending &#8211; I already have the proof of concept).</p>
<p>What I&#8217;ve been thinking is something that takes a sender, recipients, a subject, a text body, and potentially a HTML body, and produces the correct contents for outbound, and sends the mail.</p>
<p>It might return a UUID which you could query for a status (but that&#8217;s yet to be determined &#8211; and not something Haraka can do yet).</p>
<p>Is that something the senders who follow this blog would be interested in?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/baudehlo.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/baudehlo.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/baudehlo.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/baudehlo.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/baudehlo.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/baudehlo.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/baudehlo.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/baudehlo.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/baudehlo.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/baudehlo.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/baudehlo.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/baudehlo.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/baudehlo.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/baudehlo.wordpress.com/125/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=125&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://baudehlo.wordpress.com/2011/11/02/on-thinking-of-senders/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f39643d2451e54e8aba0697668a90a11?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">baudehlo</media:title>
		</media:content>
	</item>
		<item>
		<title>Why linting Javascript is totally bloody useless</title>
		<link>http://baudehlo.wordpress.com/2011/11/01/why-linting-javascript-is-totally-bloody-useless/</link>
		<comments>http://baudehlo.wordpress.com/2011/11/01/why-linting-javascript-is-totally-bloody-useless/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 21:12:32 +0000</pubDate>
		<dc:creator>baudehlo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://baudehlo.wordpress.com/?p=121</guid>
		<description><![CDATA[There was a post this week that was talked about how a missing &#8220;var&#8221; ruined their launch (because it put the Javascript variable in the global/module scope). All of the discussion about this seemed to focus on one thing &#8220;You Should Have Run jslint&#8221;. I&#8217;m here to tell you that jslint (and the fork: jshint) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=121&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There was a <a href="http://blog.meloncard.com/post/12175941935/how-one-missing-var-ruined-our-launch">post this week</a> that was talked about how a missing &#8220;var&#8221; ruined their launch (because it put the Javascript variable in the global/module scope). All of the discussion about this seemed to focus on one thing &#8220;You Should Have Run jslint&#8221;.</p>
<p>I&#8217;m here to tell you that <a href="http://www.jslint.com/">jslint</a> (and the fork: <a href="http://www.jshint.com/">jshint</a>) is <em>absolutely bloody useless</em>, and hence I don&#8217;t use it.</p>
<p>Let&#8217;s have a quick look shall we. First let&#8217;s install jshint (which is better than jslint, and more modern):</p>
<pre>$ sudo npm -g install jshint
Password:
/usr/local/bin/jshint -&gt; /usr/local/lib/node_modules/jshint/bin/hint
jshint@0.5.2 /usr/local/lib/node_modules/jshint
├── argsparser@0.0.6
└── minimatch@0.0.4</pre>
<p>That all went well&#8230; So lets try it on <a href="https://github.com/baudehlo/Haraka/blob/master/haraka.js">haraka.js</a>:</p>
<pre>$ jshint haraka.js
haraka.js: line 3, col 1, Use the function form of "use strict".
haraka.js: line 5, col 14, 'require' is not defined.
haraka.js: line 8, col 1, 'process' is not defined.
haraka.js: line 8, col 22, 'process' is not defined.
haraka.js: line 10, col 5, 'require' is not defined.
haraka.js: line 10, col 34, 'process' is not defined.
haraka.js: line 13, col 5, 'process' is not defined.
haraka.js: line 13, col 46, 'process' is not defined.
haraka.js: line 16, col 14, 'require' is not defined.
haraka.js: line 17, col 14, 'require' is not defined.
haraka.js: line 18, col 14, 'require' is not defined.
haraka.js: line 20, col 1, 'exports' is not defined.
haraka.js: line 21, col 35, '__dirname' is not defined.
haraka.js: line 24, col 1, 'process' is not defined.
haraka.js: line 34, col 5, 'process' is not defined.
haraka.js: line 37, col 52, 'exports' is not defined.

16 errors</pre>
<p>WTF? This script is pretty battle tested. Everything it has complained about are node.js variables, but everything I have read told me that jshint was node.js compatible.</p>
<p>So maybe jshint just shouldn&#8217;t be used. Let&#8217;s do a search on NPM for alternatives:</p>
<pre>lint                  This package provide lint validation library + node-lint command line tool allows you to che</pre>
<p>Looks promising. Installed it, tried it:</p>
<pre>$ node-lint haraka.js 

node.js:134
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
Error: Cannot find module 'vows'
    at Function._resolveFilename (module.js:320:11)
    at Function._load (module.js:266:25)
    at require (module.js:348:19)
    at Object.&lt;anonymous&gt; (/usr/local/lib/node_modules/lint/lib/lint/vows.js:5:12)
    at Module._compile (module.js:404:26)
    at Object..js (module.js:410:10)
    at Module.load (module.js:336:31)
    at Function._load (module.js:297:12)
    at require (module.js:348:19)
    at Object.&lt;anonymous&gt; (/usr/local/lib/node_modules/lint/lib/lint/index.js:15:16)</pre>
<p>Fucking useless. And dependencies really aren&#8217;t that hard in npm. Let&#8217;s press on:</p>
<pre>nodelint              The nodelint command line tool allows you to check for problems using JSLint. You can specif</pre>
<p>What do we get:</p>
<pre>$ nodelint haraka.js
0 errors</pre>
<p>Praise Thor! OK so now we&#8217;re getting somewhere. Let&#8217;s move on to <a href="https://github.com/baudehlo/Haraka/blob/master/utils.js">another file</a>:</p>
<pre>$ nodelint utils.js
utils.js, line 5, character 78: Use the array literal notation [].
var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
utils.js, line 9, character 10: Move 'var' declarations to the top of the function.
for (var i = 0; i &lt; 36; i++) {
utils.js, line 9, character 10: Stopping.  (10% scanned).

3 errors</pre>
<p>These kinds of errors are completely fucking unreasonable, and laid down by Crockford who clearly needs to revise his viewpoint &#8211; putting the var in the for() statement is a reasonable thing to do, and yes I KNOW it doesn&#8217;t do what it looks like it does. I don&#8217;t care. And the problem is that these aren&#8217;t configurable checks for jslint &#8211; the &#8220;var at the top of the function&#8221; is not a parameter in the jslint config, and if it finds too many of those it just stops until you fix them!</p>
<p>So does nodelint actually find anything worth worrying about?</p>
<p>The truth is, yes it does occasionally find some issues, but getting it to accept your style is hard. Getting it to find real bugs is really hard. I&#8217;d love to be proved otherwise.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/baudehlo.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/baudehlo.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/baudehlo.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/baudehlo.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/baudehlo.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/baudehlo.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/baudehlo.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/baudehlo.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/baudehlo.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/baudehlo.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/baudehlo.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/baudehlo.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/baudehlo.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/baudehlo.wordpress.com/121/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=121&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://baudehlo.wordpress.com/2011/11/01/why-linting-javascript-is-totally-bloody-useless/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f39643d2451e54e8aba0697668a90a11?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">baudehlo</media:title>
		</media:content>
	</item>
		<item>
		<title>Language Detection in Haraka</title>
		<link>http://baudehlo.wordpress.com/2011/10/20/language-detection-in-haraka/</link>
		<comments>http://baudehlo.wordpress.com/2011/10/20/language-detection-in-haraka/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 23:33:48 +0000</pubDate>
		<dc:creator>baudehlo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://baudehlo.wordpress.com/?p=119</guid>
		<description><![CDATA[English emails only please! A while ago someone (somewhere &#8211; maybe the Node.js mailing list, I forget) mentioned that they had ported PEAR&#8217;s language detection module to Node. This struck me as a great thing to have in Haraka, as I&#8217;m continually bombarded with foreign spam which slips through the filters (mostly mainsleaze, and the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=119&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>English emails only please!</p>
<p>A while ago someone (somewhere &#8211; maybe the Node.js mailing list, I forget) mentioned that they had ported PEAR&#8217;s language detection module to Node. This struck me as a great thing to have in Haraka, as I&#8217;m continually bombarded with foreign spam which slips through the filters (mostly mainsleaze, and the SBL clearly misses it). There&#8217;s only me on my domain, so blocking anything not in English is a reasonable thing to do.</p>
<p>The first step to this though had to be decoding mail body text properly to UTF-8. There&#8217;s been a TODO line in Haraka forever to do this. I just never got around to it.</p>
<p>So after work today I made that work. It took a fair bit of hackery as previously I was decoding base64 line by line, but that can easily break encoding routines because you get partial characters. So I modified this to decode the entire thing at once into a single buffer, then it was just a matter of using node-iconv to convert (and cope with errors).</p>
<p>Then language detection was just a matter of finding the right body part &#8211; in emails you can have both a text/plain part and a HTML part saying the same thing (or sometimes different things), so in that case I prefer the HTML part as it&#8217;s more likely to contain relevant text. Then I strip HTML and pass it to node-languagedetect (available on npm). This returns a list of possibilities and confidences. Of which I just choose the top one. Bingo.</p>
<p>66 lines of code. It&#8217;s pretty horrible so I won&#8217;t put it into the distro. But come the next release (when the iconv stuff is there) I&#8217;ll be putting it to the test live on my server.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/baudehlo.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/baudehlo.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/baudehlo.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/baudehlo.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/baudehlo.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/baudehlo.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/baudehlo.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/baudehlo.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/baudehlo.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/baudehlo.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/baudehlo.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/baudehlo.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/baudehlo.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/baudehlo.wordpress.com/119/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=119&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://baudehlo.wordpress.com/2011/10/20/language-detection-in-haraka/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f39643d2451e54e8aba0697668a90a11?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">baudehlo</media:title>
		</media:content>
	</item>
		<item>
		<title>Haraka v1.0</title>
		<link>http://baudehlo.wordpress.com/2011/10/14/haraka-v1-0/</link>
		<comments>http://baudehlo.wordpress.com/2011/10/14/haraka-v1-0/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 20:58:11 +0000</pubDate>
		<dc:creator>baudehlo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://baudehlo.wordpress.com/?p=116</guid>
		<description><![CDATA[I&#8217;m very pleased to announce today the release of Haraka v1.0 Haraka is a scalable event based SMTP server, designed to be extended with plugins to allow you to process your email however you require. It ships with a number of unique plugins to fight spam and malware, and provide you with many ways to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=116&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m very pleased to announce today the release of Haraka v1.0</p>
<p>Haraka is a scalable event based SMTP server, designed to be extended with plugins to allow you to process your email however you require. It ships with a number of unique plugins to fight spam and malware, and provide you with many ways to deliver email either inbound to your users, or outbound to the wider internet.</p>
<p>v1.0 marks a major milestone in the development. While the core remains stable and there are no major API changes in this release, it was a significant step up from 0.9.0.</p>
<p>Major changes in this release:</p>
<ul>
<li>New clamd plugin for email anti-virus</li>
<li>Syslog plugin allowing logs to be sent to syslog</li>
<li>Support for JSON and &#8220;data&#8221; config files</li>
<li>Support for the XCLIENT protocol when delivering onward to servers that support it</li>
<li>Connection pool for smtp_proxy backend for large scale installations</li>
<li>Plugin inheritance &#8211; allows plugins to share code by subclassing</li>
<li>New quarantine plugin</li>
<li>New rdns plugin which allows large amounts of control over hosts with bad/broken reverse-DNS setups</li>
<li>TLS everywhere &#8211; full support for TLS on outbound, and in smtp forward and proxy plugins</li>
<li>Added delivered hook to outbound mailer allowing you to gather stats on outbound mail</li>
<li>The usual assortment of bug fixes and performance improvements</li>
</ul>
<p>Thanks to the contributors (see the Commits page on github) for their contributions &#8211; this release is all down to their help.</p>
<p>This release is also faster than 0.9.0 &#8211; my previous benchmark showed it capable of receiving 50,000 messages in 12 seconds. This release brings that down to 8.5 seconds, and with node version 0.6 (which is net yet released), even faster still: 7.8 seconds! That&#8217;s nearly 30 million emails an hour!</p>
<p>Haraka also has a <a href="http://haraka.github.com/">new web site</a>. Contributions to improve that would be most welcome.</p>
<p>As usual, the main Haraka github page for download and installation instructions is in the sidebar.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/baudehlo.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/baudehlo.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/baudehlo.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/baudehlo.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/baudehlo.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/baudehlo.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/baudehlo.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/baudehlo.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/baudehlo.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/baudehlo.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/baudehlo.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/baudehlo.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/baudehlo.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/baudehlo.wordpress.com/116/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=baudehlo.wordpress.com&amp;blog=21735897&amp;post=116&amp;subd=baudehlo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://baudehlo.wordpress.com/2011/10/14/haraka-v1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f39643d2451e54e8aba0697668a90a11?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">baudehlo</media:title>
		</media:content>
	</item>
	</channel>
</rss>
