<?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>Draconis Software&#187; System Administration</title>
	<atom:link href="http://www.draconis.com/blog/category/system-administration/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.draconis.com</link>
	<description></description>
	<lastBuildDate>Fri, 02 Dec 2011 15:20:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Pulling Subversion Logs for a Single User</title>
		<link>http://www.draconis.com/blog/2008/05/19/pulling-subversion-logs-for-a-single-user/</link>
		<comments>http://www.draconis.com/blog/2008/05/19/pulling-subversion-logs-for-a-single-user/#comments</comments>
		<pubDate>Mon, 19 May 2008 11:30:17 +0000</pubDate>
		<dc:creator>steve</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[System Administration]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/?p=136</guid>
		<description><![CDATA[There are many times during a project where I use the svn log command in order to see what has changed and to get a feel for the pace of development. It&#8217;s also great when you&#8217;re dealing with clients; you&#8217;re only one command away from telling an inquisitive client exactly who did what task and [...]]]></description>
			<content:encoded><![CDATA[<p>There are many times during a project where I use the <span class="code">svn log</span> command in order to see what has changed and to get a feel for the pace of development. It&#8217;s also great when you&#8217;re dealing with clients; you&#8217;re only one command away from telling an inquisitive client exactly who did what task and when they did them. However, <span class="code">svn log</span> is missing one important feature &#8212; the ability to filter by a particular username. When I asked in #svn on <a href="http://freenode.net/">freenode</a>, they suggested I use the <span class="code">-<!--brk-->-xml</span> option and parse the resulting output.</p>
<p>The following is what I came up with. It&#8217;s a ruby script that uses the delightful <a href="http://code.whytheluckystiff.net/hpricot">Hpricot</a> gem to parse the xml. It takes one argument, the subversion username that you wish to retrieve the logs for. I hope that it&#8217;s useful for someone else! You can curl it from <a href="http://pastie.textmate.org/197763.txt">http://pastie.textmate.org/197763.txt</a> if that makes it easier, too.</p>
<p>[ruby]<br />
#!/usr/bin/ruby<br />
require &#8216;rubygems&#8217;<br />
require &#8216;hpricot&#8217;</p>
<p>username = ARGV[0]<br />
if username.nil? || username == &#8220;&#8221;<br />
  puts &#8220;Please specify the username to cull log entries for.&#8221;<br />
  exit<br />
end</p>
<p>puts &#8220;Requesting SVN log, this may take a bit.&#8221;</p>
<p>doc = IO.popen(&#8220;svn log &#8211;xml&#8221;) do |f|<br />
  Hpricot.XML(f)<br />
end</p>
<p>entries = doc.search(&#8220;logentry&#8221;).find_all do |entry|<br />
  (entry/&#8221;author&#8221;).innerHTML == username<br />
end</p>
<p>entries.each do |entry|<br />
  revision = entry.attributes["revision"]<br />
  author = (entry/&#8221;author&#8221;).innerHTML<br />
  date = (entry/&#8221;date&#8221;).innerHTML<br />
  msg = (entry/&#8221;msg&#8221;).innerHTML</p>
<p>  puts &#8220;r#{revision} &#8211; #{author}&#8221;<br />
  puts &#8220;#{date}&#8221;<br />
  puts &#8220;#{msg}&#8221;<br />
  puts &#8220;-&#8221;*80<br />
end<br />
[/ruby]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.draconis.com/blog/2008/05/19/pulling-subversion-logs-for-a-single-user/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Hiding a mounted volume on MacOS</title>
		<link>http://www.draconis.com/blog/2007/09/05/hiding-a-mounted-volume-on-macos/</link>
		<comments>http://www.draconis.com/blog/2007/09/05/hiding-a-mounted-volume-on-macos/#comments</comments>
		<pubDate>Wed, 05 Sep 2007 19:40:47 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
				<category><![CDATA[System Administration]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/2007/09/05/hiding-a-mounted-volume-on-macos/</guid>
		<description><![CDATA[Quick note here, that&#8217;s especially useful to people using BootCamp on their Macs and don&#8217;t want their Windows-formatted partition appearing on their desktop. To hide it whenever the Finder starts (it will still be mounted, but not visible on the Finder), open the Terminal and run the following command: /Developer/Tools/SetFile -a V /Volumes/Untitled Replace the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.gigoblog.com/2007/03/07/boot-camp-hide-a-windows-xp-volume-on-mac-desktop/" title="Boot Camp: Hide a Windows XP volume on Mac desktop">Quick note here</a>, that&#8217;s especially useful to people using <a href="http://www.apple.com/macosx/bootcamp/" title="BootCamp">BootCamp</a> on their Macs and don&#8217;t want their Windows-formatted partition appearing on their desktop.  To hide it whenever the Finder starts (it will still be mounted, but not visible on the Finder), open the Terminal and run the following command:</p>
<p><tt>/Developer/Tools/SetFile -a V /Volumes/Untitled</tt></p>
<p>Replace the &#8220;Untitled&#8221; with whatever the volume name is listed as in /Volumes.  Note also, that you will need to have <a href="http://developer.apple.com/tools/" title="Apple Developer Tools">Apple&#8217;s Developer Tools</a> installed in order for this to work.  It&#8217;s free, but a fairly large download.  Hope you find this useful!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.draconis.com/blog/2007/09/05/hiding-a-mounted-volume-on-macos/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Linux 2.6.22 Released</title>
		<link>http://www.draconis.com/blog/2007/07/08/linux-2622-released/</link>
		<comments>http://www.draconis.com/blog/2007/07/08/linux-2622-released/#comments</comments>
		<pubDate>Mon, 09 Jul 2007 03:29:28 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[System Administration]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/2007/07/08/linux-2622-released/</guid>
		<description><![CDATA[The latest and greatest Linux kernel (2.6.22) has just been released. Of the numerous interesting new features, I&#8217;m especially excited about two things: a new way to measure approximately how much memory a process is using (via the process footprint measurement facility), and the ability to measure file timestamps using nanoseconds for greater precision. In [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/wp-content/uploads/2007/07/200px-linux_tux_logo.thumbnail.png" title="Linux" alt="Linux" align="right" border="0" />The latest and greatest Linux kernel (2.6.22) has just been released.  Of the numerous interesting new features, I&#8217;m especially excited about two things: a new way to measure approximately how much memory a process is using (via the process footprint measurement facility), and the ability to measure file timestamps using nanoseconds for greater precision.</p>
<p>In addition, there&#8217;s a new wireless stack, a new Firewire stack (very cool), and a slew of new drivers and other changes.  Check out <a href="http://kernelnewbies.org/Linux_2_6_22" title="Linux 2.6.22 Changes">details about this release here</a>, then <a href="http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.22.bz2" title="Linux Kernel 2.6.22">download the kernel</a>.  Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.draconis.com/blog/2007/07/08/linux-2622-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to upgrade to BugZilla 3.0</title>
		<link>http://www.draconis.com/blog/2007/06/12/how-to-upgrade-to-bugzilla-30/</link>
		<comments>http://www.draconis.com/blog/2007/06/12/how-to-upgrade-to-bugzilla-30/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 14:33:53 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
				<category><![CDATA[System Administration]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/2007/06/12/how-to-upgrade-to-bugzilla-30/</guid>
		<description><![CDATA[BugZilla 3.0 stable was recently released, and upgrading an existing BugZilla installation is easy. Yesterday, I spent some time upgrading our 2.22.1 installation to the new 3.0 and have, so far, been impressed with the updates. Here&#8217;s a quick overview of the upgrade process (it might seem a bit unintuitive at first). First, backup your [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.bugzilla.org/news/#release30"><img src="/wp-content/uploads/2007/06/buggie.png" title="BugZilla" alt="BugZilla" align="right" />BugZilla 3.0 stable was recently released</a>, and upgrading an existing BugZilla installation is easy.  Yesterday, I spent some time upgrading our 2.22.1 installation to the new 3.0 and have, so far, been impressed with the updates.  Here&#8217;s a quick overview of the upgrade process (it might seem a bit unintuitive at first).<br />
<span id="more-194"></span><br />
First, backup your current database and local BugZilla installation (so you can quickly roll back to a working version should something go wrong).  I used mysqldump to get a copy of the &#8220;bugs&#8221; database: &#8220;mysqldump -u root -p bugs &gt; bugs.sql&#8221;.</p>
<p>Second, <a href="http://www.bugzilla.org/download/#stable">grab a copy of the new BugZilla</a>.  As I&#8217;m installing on a Ubuntu box, I used the tarball, but there are different versions available for other operating systems (including, apparently, an unsupported automated installer, which I haven&#8217;t tried).  Once you&#8217;ve downloaded it, move it to your web directory, unpack it, and name it something like bugzilla-3.0.</p>
<p>Third, copy the important stuff out of the old BugZilla (from the <a href="http://www.bugzilla.org/docs/3.0/html/upgrading.html">Upgrading to New Releases documentation</a>):</p>
<p>bash$ cd bugzilla-3.0<br />
bash$ cp -p ../bugzilla/localconfig* .<br />
bash$ cp -pr ../bugzilla/data .</p>
<p>Note the &#8220;bugzilla&#8221; directory is your old BugZilla installation, while the bugzilla-3.0 is the new installation you just downloaded.</p>
<p>Fourth, run the &#8220;checksetup.pl&#8221; script in the bugzilla-3.0 directory.  This script will go through your environment and alert you to any missing Perl modules, and update your database schema to the new version for BugZilla 3.0.  I had to install several new Perl modules in order for the new version to work, which can be done using the command &#8220;perl -MCPAN -e &#8216;install [some::module]&#8216;&#8221;, or you can just download the packages individually from CPAN and build/install them by hand.</p>
<p>One additional note about the checksetup.pl script: the new version of BugZilla is using a new data encoding for the database, which requires updating any existing data currently in your database to the new version (UTF-8, I believe).  To do this, I needed to run the command &#8220;./contrib/recode.pl &#8211;guess&#8221;, which figured out my existing encoding and updated it to the new UTF-8 format.  Check out the options for recode.pl (and consider trying the &#8211;dry-run flag first).</p>
<p>After running recode.pl, I needed to rerun my checksetup.pl to finish updating the database to the new version.  Once done, my BugZilla installation was nearly complete.  When going to the new BugZilla installation via my web browser, I noticed no images were appearing.  It turned out to be a permissions problem.  Make sure the owner/group and access rights are set properly for your BugZilla installation based on how you&#8217;re running Apache.</p>
<p>And that&#8217;s it!  All my existing bug data appeared in the new version of BugZilla and I was ready to go.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.draconis.com/blog/2007/06/12/how-to-upgrade-to-bugzilla-30/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Introduction to Antispam Practices</title>
		<link>http://www.draconis.com/blog/2007/06/11/introduction-to-antispam-practices/</link>
		<comments>http://www.draconis.com/blog/2007/06/11/introduction-to-antispam-practices/#comments</comments>
		<pubDate>Mon, 11 Jun 2007 16:15:22 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
				<category><![CDATA[Emerging IT]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[System Administration]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/2007/06/11/introduction-to-antispam-practices/</guid>
		<description><![CDATA[There&#8217;s a good overview of antispam practices at Howto Forge today, detailing the various methods either currently in use (black/gray/white lists, applications, etc), and proposed (DKIM, etc). In a world where spam is bound to hold such an important position, methods of preventing it should also be given an increasing importance. Some of the easiest [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a <a href="http://www.howtoforge.com/introduction_antispam_practices">good overview of antispam practices at Howto Forge today</a>, detailing the various methods either currently in use (black/gray/white lists, applications, etc), and proposed (DKIM, etc).</p>
<blockquote><p>In a world where spam is bound to hold such an important position,<br />
methods of preventing it should also be given an increasing importance.<br />
Some of the easiest and most widely used prevention methods are host<br />
control solutions, Antispam applications and user education.</p></blockquote>
<p>I&#8217;m particularly excited about <a href="http://www.dracoware.com/blog/2007/05/29/domain-keys-identified-mail/">Domain Keys Identified Mail (DKIM), which I wrote about recently</a>.  Such a method would be very useful in tracking down spammers and controlling the flood of junk they put out, though, as this article points out, it&#8217;s not without it&#8217;s limitations.  &#8220;The main disadvantage of DKIM is that email messages can be significantly modified in certain situations (e.g. when being forwarded by list severs), causing the signature to be invalidated and the message to be rejected. A solution to this issue would be combining DomainKeys with SPF, because SPF is immune to modifications of the email data.&#8221;</p>
<p>Check the article out &#8211; it&#8217;s a good overview of what&#8217;s currently going on, and perhaps may inspire you to try a different approach to your current antispam efforts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.draconis.com/blog/2007/06/11/introduction-to-antispam-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>$899 to reset password</title>
		<link>http://www.draconis.com/blog/2007/05/31/899-to-reset-password/</link>
		<comments>http://www.draconis.com/blog/2007/05/31/899-to-reset-password/#comments</comments>
		<pubDate>Thu, 31 May 2007 16:56:53 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[System Administration]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/2007/05/31/899-to-reset-password/</guid>
		<description><![CDATA[In IT, many devices have an administrator password that, when forgotten, require some hoop-jumping to reset. Holding down the power button while booting the router/switch/etc, using a secret &#8220;back-door&#8221; password, or something similar is usually the norm. Not so with a Sony tape library, as this post at Everything Sysadmin shows. Talking to Sony tech [...]]]></description>
			<content:encoded><![CDATA[<p>In IT, many devices have an administrator password that, when forgotten, require some hoop-jumping to reset.  Holding down the power button while booting the router/switch/etc, using a secret &#8220;back-door&#8221; password, or something similar is usually the norm.  Not so with a Sony tape library, as <a href="http://www.everythingsysadmin.com/archives/000185.html">this post at Everything Sysadmin shows</a>.  Talking to Sony tech support meant that, in order to reset the password on the tape library, it would cost $899 (escalating to Sony customer support dropped the price to $699):</p>
<blockquote><p>The manual says that one can&#8217;t reset the password and I should call my dealer. I figured they just didn&#8217;t want the information spread around, so I contacted Sony and they gave me the right people to speak with. A very helpful person names Lucia informed me that I could send in the device and for only $899 they would reset the password. That seemed unreasonable, but escalating it brought me no joy. John Marshall, Customer Service/Support Manager at Sony &#8230; was very polite and friendly, but was not able to tell me the secrets to doing the process myself. I even offered to sign a non-disclosure if the process was secret. No luck. He offered to reduce the rate to $699 but that was unstatisfactory.</p></blockquote>
<p>That&#8217;s an expensive password reset.  Do you have a crazy password reset story?  Let&#8217;s hear it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.draconis.com/blog/2007/05/31/899-to-reset-password/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mail Retrieval with Fetchmail</title>
		<link>http://www.draconis.com/blog/2007/05/31/mail-retrieval-with-fetchmail/</link>
		<comments>http://www.draconis.com/blog/2007/05/31/mail-retrieval-with-fetchmail/#comments</comments>
		<pubDate>Thu, 31 May 2007 12:00:14 +0000</pubDate>
		<dc:creator>costa</dc:creator>
				<category><![CDATA[System Administration]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/2007/05/31/mail-retrieval-with-fetchmail/</guid>
		<description><![CDATA[Fetchmail is one of the core Linux applications that I use consistently &#8212; pretty much every email I get is passed through it before getting filtered, forwarded or backed up. It fills an important place in the email chain between the Mail Transfer Agent (or MTA) such as sendmail or qmail, and the Mail Delivery [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.fetchmail.info/">Fetchmail</a> is one of the core Linux applications that I use consistently &#8212; pretty much every email I get is passed through it before getting filtered, forwarded or backed up.  It fills an important place in the email chain between the Mail Transfer Agent (or MTA) such as sendmail or qmail, and the Mail Delivery Agent (MDA) such as procmail (there&#8217;s also MUA and MSA &#8212; the architecture of email seems to demand MxA style acronyms).  Fetchmail&#8217;s place in this chain is to retrieve emails from a mail server using protocols like POP3 and IMAP, and then deliver them to local or remote users with SMTP.</p>
<p>HowtoForge has a nice tutorial on getting <a href="http://www.howtoforge.com/debian_etch_fetchmail">setup with fetchmail</a>.  Fetchmail&#8217;s robust configuration system allows for a variety of setups.  This allows for a number of uses:</p>
<ol>
<li><strong>Consolidating Accounts</strong> &#8211; It&#8217;s common nowadays for a person to have many email addresses, such as work, ISP, school, as well as plenty of free accounts.  With fetchmail you can check all of these accounts and forward them to a single address.</li>
<li><strong>Usage of text-based email clients</strong> &#8211; Since fetchmail can also deliver to a local account, it allows you to store all your email on a Linux machine and read it using a client like mutt, pine, elm and others.  This means you can check your email from any computer just by SSHing to your machine.</li>
<li><strong>Integration with mail filters</strong> &#8211; It&#8217;s easy to have messages be filtered before local delivery or remote forwarding.  The Linux filter I use is <a href="http://www.procmail.org/">procmail</a> although there are many others.  For example, you may want to filter out emails from a mailing list into a separate boxes.  It also allows you to benefit from a spam filter that integrates with the mail delivery agent.</li>
</ol>
<p>My personal email setup is rather complicated but it fits my needs very well.   First emails are retrieved from my various accounts using fetchmail, and delivered to my local account with over Qmail.  Procmail then filters out any spam, forwards the remaining emails to a separate email account, and then does further filtering before delivering to local mailbox files.  The reason for doing this is it allows my email to be stored and backed up on my Linux machine, and if from any computer to SSH in and read email with mutt.  But when I&#8217;m on my own computer, I can check the secondary account with <a href="http://www.mozilla.com/en-US/thunderbird/">Thunderbird</a>, which gives me the benefits of a graphical mail client.  It&#8217;s these kinds of personalized setups that fetchmail (along with the rest of the MxA family) allows.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.draconis.com/blog/2007/05/31/mail-retrieval-with-fetchmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Domain Keys Identified Mail</title>
		<link>http://www.draconis.com/blog/2007/05/29/domain-keys-identified-mail/</link>
		<comments>http://www.draconis.com/blog/2007/05/29/domain-keys-identified-mail/#comments</comments>
		<pubDate>Tue, 29 May 2007 14:45:05 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
				<category><![CDATA[Emerging IT]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[System Administration]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/2007/05/29/domain-keys-identified-mail/</guid>
		<description><![CDATA[I recently saw an article about the DomainKeys Identified Mail (DKIM) draft being accepted by the IETF as an official proposed standard (even though it happened back in February). I really hope the acceptance of this takes off, though the article seemed to show many large companies (who could probably benefit from it) non-committal. DKIM [...]]]></description>
			<content:encoded><![CDATA[<p>I recently saw <a href="http://news.com.com/Promising%20antispam%20technique%20gets%20nod/2100-1029_3-6185904.html?part=rss">an article</a> about the DomainKeys Identified Mail (DKIM) draft being accepted by the IETF as an official proposed standard (even though it happened back in February).  I really hope the acceptance of this takes off, though the article seemed to show many large companies (who could probably benefit from it) non-committal.</p>
<p>DKIM is a simple means for verifying the origination of an email in an attempt to better track (and fight) spam and phishing messages.  The method is simple: the sender encrypts the message body using it&#8217;s private key and stores this in the message header (non DKIM receivers, then, can safely ignore it and still deliver the message).  A DKIM-enabled receiver looks up the originating domain&#8217;s record and extracts the public key.  From <a href="http://en.wikipedia.org/wiki/Domain_Keys">Wikipedia</a>: &#8220;The receiver can then decrypt the hash value in the header field and at the same time recalculate the hash value for the mail body that was received, from the point immediately following the &#8220;DomainKey-Signature:&#8221; header. If the two values match, this cryptographically proves that the mail did in fact originate at the purported domain, and has not been tampered with in transit.&#8221;</p>
<p><span id="more-188"></span> Using such a technique makes it nearly impossible to create forged emails like the kind hitting our inboxes purporting to be from PayPal, eBay, and others.  From <a href="http://news.com.com/Promising%20antispam%20technique%20gets%20nod/2100-1029_3-6185904.html?part=rss">CNET</a>: &#8220;In the long run, DomainKeys is more promising than existing antispam and antiphishing technologies, which rely on techniques like assembling a &#8220;blacklist&#8221; of known fraudsters or detecting such messages by trying to identify common characteristics.&#8221;</p>
<p>Microsoft has also put together a method for guaranteeing identity of email messages, called <a href="http://www.microsoft.com/mscorp/safety/technologies/senderid/default.mspx">Sender ID</a>, though it&#8217;s acceptance has been very slow (&#8220;because Microsoft initially did not agree to license patents in ways that are compatible with GNU General Public License&#8221;).</p>
<p>I think the DKIM technique towards spam/phishing message blocking is one of the most interesting and promising methods to come around.  I&#8217;ve used Bayesian filters and blacklists, and spammers always find a way around it.  But if we can get mail servers to all use this technique, I could easily see the eradication of nearly all phishing messages, and much-reduced spam messages (since it would be possible to track the sending habits of domains better).</p>
<p>What&#8217;s your take?  In order for DKIM to be useful, both the sender and receiver must implement the DKIM method, which may mean upgrading your mail server software.  One of the biggest downsides to this, unfortunately, is the extra overhead involved in email: each message requires cryptographic signing and a domain lookup, which can be quite taxing for already overworked email servers.  Will you be using DKIM?</p>
<p><strong>Additional Reading</strong><br />
<a href="http://en.wikipedia.org/wiki/Domain_Keys">Wikipedia: DomainKeys</a><br />
<a href="http://news.com.com/Promising%20antispam%20technique%20gets%20nod/2100-1029_3-6185904.html?part=rss">CNET News: Promising antispam technique gets nod</a><br />
<a href="http://dkim.org/">DomainKeys Identified Mail Homepage</a><br />
<a href="http://dkim.org/specs/draft-ietf-dkim-base-10.html">DKIM Signatures IETF Standards Draft</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.draconis.com/blog/2007/05/29/domain-keys-identified-mail/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Recursive diffs in Vim</title>
		<link>http://www.draconis.com/blog/2007/05/21/recursive-diffs-in-vim/</link>
		<comments>http://www.draconis.com/blog/2007/05/21/recursive-diffs-in-vim/#comments</comments>
		<pubDate>Mon, 21 May 2007 14:24:36 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
				<category><![CDATA[System Administration]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/2007/05/21/recursive-diffs-in-vim/</guid>
		<description><![CDATA[I was working on a project recently that had a number of minor changes between revisions (a client of ours had made minor changes to a project we produced, keeping it under their own version control system), and I needed to sync these changes with a local copy. Since all of these changes were minor, [...]]]></description>
			<content:encoded><![CDATA[<p>I was working on a project recently that had a number of minor changes between revisions (a client of ours had made minor changes to a project we produced, keeping it under their own version control system), and I needed to sync these changes with a local copy.  Since all of these changes were minor, and there were pieces in both versions I wanted to preserve, I would need to do diffs/merges by hand across each of the files (there were about two dozen).  Well, diff/edit/close/repeat doesn&#8217;t sound like much fun, so I thought a more streamlined approach was necessary.</p>
<p>My favorite command-line editor is vim &#8211; no, I don&#8217;t mean to start a war here &#8211; and I knew I&#8217;d be using it quite a bit in merging these changes.  In coming up with a streamlined approach, I found a vim plugin that does recursive diffs, splitting the screen up to show differences between each of the files, and allowing for streamlined sync&#8217;s in the process.  The <a href="http://www.vim.org/scripts/script.php?script_id=102">plugin is called DirDiff</a>, and is written by William Lee, and it proved very useful.</p>
<p>To install, just download the plugin, and place it in your ~/.vim/plugin directory (create it, if you don&#8217;t already have one).  Once installed, open vim and type <img src='http://www.draconis.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> irDiff [directory1] [directory2].  It found and diff&#8217;d each of the files in the directories correctly.  It also has a nice feature of sync&#8217;ing files, one from the other, based on what you choose.  I would have liked more advanced merge capabilities, as I couldn&#8217;t take chunks from one file and have them merge into the other, but in most cases, the plugin proved very useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.draconis.com/blog/2007/05/21/recursive-diffs-in-vim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dealing with (really) big log files</title>
		<link>http://www.draconis.com/blog/2007/05/14/dealing-with-really-big-log-files/</link>
		<comments>http://www.draconis.com/blog/2007/05/14/dealing-with-really-big-log-files/#comments</comments>
		<pubDate>Mon, 14 May 2007 10:04:36 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
				<category><![CDATA[System Administration]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/2007/05/14/dealing-with-really-big-log-files/</guid>
		<description><![CDATA[Recently we had to deal with some really big log files. One of our clients had an Apache access log several gigs large, and needed to logically separate entries for a new analytics package. The easiest way, of course, is to write a simple Perl (or any other language, such as Ruby) script, iterate through [...]]]></description>
			<content:encoded><![CDATA[<p>Recently we had to deal with some really big log files.  One of our clients had an <a href="http://httpd.apache.org/docs/2.3/logs.html">Apache access log</a> several gigs large, and needed to logically separate entries for a new analytics package.  The easiest way, of course, is to write a simple Perl (or any other language, such as <a href="http://www.dracoware.com/blog/2007/04/23/system-administration-with-ruby/" title="System Administration with Ruby">Ruby</a>) script, iterate through the file line-by-line, and parse each line.  The problem here was speed and system resources: opening the file took several minutes on a very fast, SCSI RAID box, and used a huge amount of RAM.  We realized there had to be a better way.</p>
<p><span id="more-184"></span> Probably the first, and most helpful, thing to do in a situation like this is to split the log file down into smaller chunks.  It reduces the time it takes to open the file, reduces the memory used when opening it, and just makes it easier all around.  Using the <a href="http://www.howtogeek.com/howto/ubuntu/split-a-text-file-in-half-or-any-percentage-on-ubuntu-linux/" title="Split a text file">split -l</a> command allowed us to pull out a set number of lines (say 100k), keeping the line endings intact (rather than splitting on bytes, for instance).  The split command is extremely fast, which is great for files of this size.</p>
<p>The next step was to write a Perl script to do our parsing.  Pretty simple (here&#8217;s the template):<br />
<code>open(FILE, "file-aa");<br />
foreach my $line (&lt;file&gt;) {<br />
   # parse using split/regex/etc<br />
}<br />
close(FILE);</code></p>
<p>Finally, to output the line again, we used the &#8220;echo&#8221; shell command, called from within the script.  Though a little extra overhead is incurred from having to execute a shell command, it meant we didn&#8217;t have to deal with managing file handles, etc.  Plus, there didn&#8217;t seem to be a lot of extra overhead involved, and the real bottleneck is with the disk anyway, not the CPU.</p>
<p>One useful trick was to buffer lines rather than writing every line immediately.  This allowed us to read in, say, a thousand or so lines at a time, then append all of them to the appropriate new file(s) as a batch, making the write larger, but all at once, which our disks could handle much faster.</p>
<p>These tricks allowed us to split this huge log access log in under a day or so, when other methods (especially before using split) we projected to take closer to a week.  With the splitting and buffering we managed to get some significant speed increases.</p>
<p>Have you ever dealt with huge log files before?  What tricks have you come up with?  Certainly the best is to avoid them altogether using appropriate rolling and other tricks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.draconis.com/blog/2007/05/14/dealing-with-really-big-log-files/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

