<?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>Christopher J. Buckley &#187; Linux</title>
	<atom:link href="http://www.cjbuckley.net/blog/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cjbuckley.net/blog</link>
	<description>Free-Software, GNU/Linux, Traffic Management &#38; Thoughts</description>
	<lastBuildDate>Mon, 16 Mar 2009 16:18:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>10 Year Anniversary of Open Source</title>
		<link>http://www.cjbuckley.net/blog/2008/02/09/10-year-anniversary-of-open-source/</link>
		<comments>http://www.cjbuckley.net/blog/2008/02/09/10-year-anniversary-of-open-source/#comments</comments>
		<pubDate>Sat, 09 Feb 2008 21:43:06 +0000</pubDate>
		<dc:creator>Christopher Buckley</dc:creator>
				<category><![CDATA[Essays]]></category>
		<category><![CDATA[free-software]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.cjbuckley.net/blog/2008/02/09/10-year-anniversary-of-open-source/</guid>
		<description><![CDATA[To commemorate the 10 year anniversary of the Open Source Definition, its author Bruce Perens (former Debian Project Leader and noted Free-Software developer) has written a very worthwhile essay explaining the current state of Open Source and outlining the next decade for the Open Source movement.  
Notable pieces from Bruce&#8217;s essay are outlined herein:

And [...]]]></description>
			<content:encoded><![CDATA[<p>To commemorate the 10 year anniversary of the <a href="http://www.opensource.org/docs/definition.php">Open Source Definition</a>, its author <a href="http://en.wikipedia.org/wiki/Bruce_Perens">Bruce Perens</a> (former Debian Project Leader and noted Free-Software developer) has <a href="http://perens.com/works/articles/State8Feb2008/">written a very worthwhile essay</a> explaining the current state of Open Source and outlining the next decade for the Open Source movement.  </p>
<p>Notable pieces from Bruce&#8217;s essay are outlined herein:</p>
<blockquote><p>
And that brings me to our first mistake: for a time, there was a conflict between Open Source  and Free Software  evangelism. My intent has always been for Open Source to simply be another way of talking about Free Software, tailored to the ears of business people, and that it would eventually lead them to a greater appreciation of Richard Stallman&#8217;s arguments. This has come to pass, and I hope you&#8217;ll continue to make it so. One only had to witness the attendance of the GPL 3 committees to see that the importance of FSF&#8217;s work was appreciated by the largest of corporations.
</p></blockquote>
<p>For me, this is the single most important message to make people aware of: Open Source is a &#8216;business-friendly&#8217; term to spread the philosophy and principles of Free-Software.   The GNU foundation does tremendous work in enabling, and preserving, software freedom&#8217;s for users.  It is of great sadness to me that people I talk to are at times completely unaware of the term &#8216;Free-Software&#8217;, instead thinking that this software is &#8216;Free as in no-cost&#8217;, rather than &#8216;Free as in Freedom&#8217;.  Richard Stallman is owed an extremely large debt for his vision in creating the FSF and ensuring software freedom&#8217;s for all.</p>
<blockquote><p>
In contrast, we have not yet achieved the penetration that we might have desired on user desktop systems, at least if you don&#8217;t count the fact that Free Software provides a large part of Apple&#8217;s MacOS today, and critical elements of Microsoft Windows as well. Both companies have been forced to develop strategies to live with us, some of them less comfortable than others. Today we are seeing much of the value of software move from the desktop to the network, an area in which we are already entrenched. This can only lead to the expansion of Open Source on the systems in individual user&#8217;s hands.
</p></blockquote>
<p>This is a very realistic point: GNU+Linux penetration on the desktop is growing daily; users are realising that proprietary software and vendor lock-in is something that they no longer have to be part of &#8211; they can possess software freedom with GNU+Linux &#8211; primarily first on Server, but now on Desktop.  The next decade will be pivotal in ensuring GNU+Linux on the Desktop penetrates to the masses.</p>
<blockquote><p>
One recent phenomenon has been the appearance of government officials openly on the stage at conferences concerning Free Software. Of late, it&#8217;s my turn to speak when the minister has finished his greeting, and they are always announcing some national government initiative concerning Open Source. OK, I speak outside of the U.S. a lot, but even in the U.S. we are seeing Linux (and presumably the GNU system)
</p></blockquote>
<p>Free-Software is here to stay: it is used both by Enterprises and Governments.  Ignore the <a href="http://en.wikipedia.org/wiki/Fear%2C_uncertainty_and_doubt">FUD</a> from Proprietary vendors who tell you that Free and Open Source Software bears a heavier risk than using proprietary software.<br />
Remember also, when you are using a &#8216;Linux&#8217; machine, you are more than likely using the GNU System, be your distribution from Red Hat, Debian, Mandriva, Gentoo, Slackware et al.  Go and tell people about the GNU System!</p>
<blockquote><p>
Microsoft remains a problem, as the bastion of the old way of thinking about software, and as the epitome of the old school of dirty corporate fighting. Their current strategy seems to be to poison us with money, most recently by making patent agreements with a number of Linux distributions. These agreements go against the spirit of the software licenses used by our developers, and were perhaps intended to dissuade developers from contributing their work. To this end, Microsoft poured more money into Novell last year than Novell&#8217;s annual profit &#8211; indeed Novell would have had no annual profit without Microsoft.
</p></blockquote>
<p>A very articulate observation from Perens.  </p>
<p>Perens closes by stating that:</p>
<blockquote><p>
So, you can see that the future will present its challenges for Open Source. We could never have forecast how big we would become during Decade Zero of Open Source. But we&#8217;ve built tremendous strength, to the point that we can consider much larger tasks. Join us now, as we enter Decade One.
</p></blockquote>
<p>Please do take time to read the original article located at <a href="http://perens.com/works/articles/State8Feb2008/">Perens&#8217; personal website</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cjbuckley.net/blog/2008/02/09/10-year-anniversary-of-open-source/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Postfix: $relayhost and port 587</title>
		<link>http://www.cjbuckley.net/blog/2007/08/23/postfix-relayhost-and-port-587/</link>
		<comments>http://www.cjbuckley.net/blog/2007/08/23/postfix-relayhost-and-port-587/#comments</comments>
		<pubDate>Thu, 23 Aug 2007 15:30:37 +0000</pubDate>
		<dc:creator>Christopher Buckley</dc:creator>
				<category><![CDATA[MailServer]]></category>
		<category><![CDATA[DKIM]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.cjbuckley.net/blog/2007/08/23/postfix-relayhost-and-port-587/</guid>
		<description><![CDATA[This quick article concerns using the relayhost variable to allow postfix to relay into the submission port (587), rather than the smtp port (25).
When using a separated tier network of postfix servers, ie &#8211; a cluster at the front, which receive from a cluster in a segmented network, you will need to use the relayhost [...]]]></description>
			<content:encoded><![CDATA[<p>This quick article concerns using the <tt>relayhost</tt> variable to allow <a href="http://www.postfix.org/">postfix</a> to relay into the <a href="http://www.faqs.org/rfcs/rfc2476.html">submission port</a> (587), rather than the <a href="http://www.faqs.org/rfcs/rfc2821.html">smtp port</a> (25).</p>
<p>When using a separated tier network of postfix servers, ie &#8211; a cluster at the front, which receive from a cluster in a segmented network, you will need to use the <tt>relayhost</tt> variable to daisy link the two clusters together.  Usually, you may be tempted to simply submit on port 25.  This was previously acceptable, but now a concerted drive is being made towards the correct port &#8211; 587.  When using <a href="http://en.wikipedia.org/wiki/DKIM">DKIM</a> implementations such as <a href="http://jason.long.name/dkimproxy/">DKIM proxy </a> mail will not be signed on port 25 without some hackery in master.cf [<u>this is strongly advised against</u>].  As Jason states:</p>
<blockquote><p>
. . .The point is we don&#8217;t want to sign mail from untrusted sources, and that&#8217;s what could happen if you direct that mail through dkimproxy.out.
</p></blockquote>
<p>So how do we ensure our chain of servers signs mail submitted?  Easy!</p>
<pre>
relayhost = [smtp.domain.tld]:587
</pre>
<p>You can now sit back and watch as all your mail is digitally signed by what-ever DKIM implementation you have chosen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cjbuckley.net/blog/2007/08/23/postfix-relayhost-and-port-587/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SpamAssassin: How to protect against current spam attacks</title>
		<link>http://www.cjbuckley.net/blog/2007/08/20/spamassassin-how-to-protect-against-current-spam-attacks/</link>
		<comments>http://www.cjbuckley.net/blog/2007/08/20/spamassassin-how-to-protect-against-current-spam-attacks/#comments</comments>
		<pubDate>Mon, 20 Aug 2007 17:26:44 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[MailServer]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mailscanner]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[spamassassin]]></category>
		<category><![CDATA[Troubleshooting]]></category>

		<guid isPermaLink="false">http://www.cjbuckley.net/blog/2007/08/20/spamassassin-how-to-protect-against-current-spam-attacks/</guid>
		<description><![CDATA[Currently, there are four major spam attacks postmasters are being faced with.  They include, but are not limited to:

PDF &#038; FDF: usually a blank e-mail with a PDF attachment.
Greeting Card: invitations from an &#8216;old friend&#8217; to go to a website with a numerical http address, usually containing malware.
Image Spam: A gif or png attached [...]]]></description>
			<content:encoded><![CDATA[<p>Currently, there are four major spam attacks postmasters are being faced with.  They include, but are not limited to:</p>
<ul>
<li><strong>PDF &#038; FDF:</strong> usually a blank e-mail with a PDF attachment.</li>
<li><strong>Greeting Card:</strong> invitations from an &#8216;old friend&#8217; to go to a website with a numerical http address, usually containing malware.</li>
<li><strong>Image Spam:</strong> A gif or png attached to a, usually &#8211; though not always, blank e-mail ready to sell the latest software or stock.</li>
<li><strong>Obfuscate Words:</strong> Lines of text take this format, <tt>N o*t o,n-l-y d o-e's t,h+i s f i+r*m h+a'v_e grea_t fundamenta,ls*,</tt>.
</li>
</ul>
<p>I&#8217;m going to show you how using the <a href="http://en.wikipedia.org/wiki/Free_software">free-software</a> package, <a href="http://spamassassin.apache.org/">SpamAssassin</a>, you can successfully neuter these 4 major spam attacks.</p>
<ul>
<li><strong>Greeting Card:</strong> Can be easily defeated using <a href="http://www.impsec.org/~jhardin/antispam/postcards.cf">postcards.cf</a>.</li>
<li><strong>Image Spam:</strong> These quickly become extremely popular, but have now decreased in prevalence after very successful methods were implemented to combat them.  For SA, use the module <a href="http://www.rulesemporium.com/plugins.htm">Imageinfo</a>: <a href="http://www.rulesemporium.com/plugins/ImageInfo.pm">Imageinfo.pm </a> and <a href="http://www.rulesemporium.com/plugins/imageinfo.cf">Imageinfo.cf </a> supplied by <a href="http://www.rulesemporium.com/plugins.htm">SARE Rules Emporium</a>.</li>
<li><strong>PDF &#038; FDF:</strong> Can be successfully discarded by using <a href="http://www.rulesemporium.com/plugins/PDFInfo.pm">PDFInfo.pm</a> and <a href="http://www.rulesemporium.com/plugins/pdfinfo.cf">PDFInfo.cf</a> again supplied by <a href="http://www.rulesemporium.com/plugins.htm">SARE Rules Emporium</a>.</li>
<li><strong>Obfuscate Words:</strong> These have recently hit, and hit hard.  Spammers, seemingly bewildered by their inability to get through current filters using the above popular methods, have now resorted to the old way of securing spam delivery: obfuscation.  The good news is that this, again, is easily defeatable.  The ruleset(s) originally written by <a href="http://www.emtinc.net/spamhammers.htm">Jennifer Wheeler</a> are mirrored locally by this site.
<ol>
<li><a href="/uploads/spam-filters/chickenpox.cf">chickenpox.cf</a>: [words obfuscated by non word characters] <b>Th</b>1<b>s</b>|<b>s</b> <b>a</b> <b>v</b>3<b>ry</b> <b>h</b>4<b>ndy</b> <b>se</b>7 <b>t</b>0 <b>c</b>@<b>tch</b> <b>th</b>!<b>s</b> 50<b>rt</b> 0<b>f</b> (<b>rap</b>.
            </li>
<li><a href="/uploads/spam-filters/backhair.cf">backhair.cf</a>: [words obfuscated by nonsense html tags]&nbsp;<br />
<b>Y</b><font color="#FF00FF">&lt;oivugriub&gt;</font><b>ou</b><b>cou</b><font color="#FF00FF">&lt;iuqgheriugv9h&gt;</font><b>ld</b> <b>rea</b><font color="#FF00FF">&lt;y&gt;</font><b>lly</b><b>u</b><font color="#FF00FF">&lt;owiuer88&gt;</font><b>se</b> <b>this</b>.
           </li>
</ol>
</li>
</ul>
<p>Game on, spammers!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cjbuckley.net/blog/2007/08/20/spamassassin-how-to-protect-against-current-spam-attacks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RT, Postfix &amp; Virtual Domains: Problems faced and a solution!</title>
		<link>http://www.cjbuckley.net/blog/2007/08/19/rt-postfix/</link>
		<comments>http://www.cjbuckley.net/blog/2007/08/19/rt-postfix/#comments</comments>
		<pubDate>Sun, 19 Aug 2007 04:59:56 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[MailServer]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[Request Tracker]]></category>
		<category><![CDATA[Rewrite]]></category>
		<category><![CDATA[RT]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[Virtual Domains]]></category>

		<guid isPermaLink="false">http://www.cjbuckley.net/blog/2007/08/19/rt-postfix/</guid>
		<description><![CDATA[Request Tracker is an enterprise grade ticketing system developed by Best Practical. RT is used by Fortune 100 companies, government agencies, educational institutions, and development organizations worldwide.  Many implementations of RT run behind the Postfix mail-server.
The RT wiki has instructions on setting up your MTA to &#8216;pipe&#8217; the e-mails into RT:
You need to tell [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://bestpractical.com/rt/">Request Tracker</a> is an enterprise grade ticketing system developed by Best Practical. RT is used by Fortune 100 companies, government agencies, educational institutions, and development organizations worldwide.  Many implementations of RT run behind the <a href="http://www.postfix.org/">Postfix</a> mail-server.</p>
<p>The <a href="http://wiki.bestpractical.com/view/ManualInstallation">RT wiki</a> has instructions on setting up your MTA to &#8216;pipe&#8217; the e-mails into RT:</p>
<p>You need to tell your Mail Transfer Agent (ex sendmail, postfix, or qmail) how to forward messages to RT&#8217;s mail gateway. To do this, create an aliases in your system&#8217;s mail aliases file. Here&#8217;s an example, which routes mail to the mailbox [=rt@example.com] (and [=rt-comment@example.com]) into new tickets in the RT queue named General. Note that the queue name is case-insensitive.</p>
<p>Add the following lines to /etc/aliases (or your local equivalent such as /etc/mail/aliases):</p>
<p><tt>rt: "|/opt/rt3/bin/rt-mailgate --queue general --action correspond --url http://localhost/rt"<br />
rt-comment: "|/opt/rt3/bin/rt-mailgate --queue general --action comment --url http://localhost/rt"<br />
</tt><br />
These instructions are accurate, but rely on Postfix not having implemented <a href="http://www.postfix.org/VIRTUAL_README.html">Virtual Domains</a>.  Here&#8217;s an example configurationfrom <tt>main.cf</tt> where virtual domains have been implemented:</p>
<p><tt>virtual_transport = virtual<br />
virtual_uid_maps = static:5000<br />
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf<br />
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf<br />
</tt></p>
<p>This configuration will invoke the <tt><a href="http://www.postfix.org/virtual.8.html">virtual</a></tt> transport within Postfix.  A <tt>virtual</tt> transport is unable to perform the necessary <tt><a href="http://en.wikipedia.org/wiki/Vertical_bar">pipe</a></tt> (&#8220;|&#8221;) to the <tt><a href="http://linux.die.net/man/1/rt-mailgate">rt-mailgate</a></tt> binary.  Only the <tt><a href="http://www.postfix.org/local.8.html">local</a></tt> transport is able to perform a <tt>pipe</tt>. So, the question is: <u>how do we run virtual domain(s), but still invoke the <tt>local</tt> transport delivery method to successfully perform the <tt>pipe</tt> into <tt>rt-mailgate</tt>?</u></p>
<h2>A Virtual to Local Rewrite Solution</h2>
<p>Here&#8217;s a quick walkthrough on what steps you need to put in place to ensure that a mail to the (virtual) domain of  rt-test@domain.tld is successfully piped as per the RT wiki instructions above.  </p>
<ol>
<li>Create an <tt>/etc/postfix/aliases</tt> file.</li>
<li>Within this file add entries that follow this format:
<pre>
rt-test                       rt@rt.domain.tld
support                       support@rt.domain.tld
abuse                         abuse@rt.domain.tld
# and so on...
</pre>
</li>
<li><tt><a href="http://www.postfix.org/postmap.1.html">postmap</a> /etc/postfix/aliases</tt></li>
<li>Within <tt>/etc/aliases</tt> create the pipe aliases referred to in the RT wiki:
<pre>
support: "|/opt/rt3/bin/rt-mailgate --queue 'Support' --action &#92;
correspond --url http://rt.domain.tld/"
rt: "|/opt/bin/rt-mailgate --queue 'General' --action &#92;
correspond --url http://rt.domain.tld/"
abuse: "|/opt/rt3/bin/rt-mailgate --queue 'Abuse'  --action &#92;
correspond --url http://rt.domain.tld/"
# Ensure there are no line breaks..
</pre>
</li>
<li>Run the <tt><a href="http://linux.about.com/library/cmd/blcmdl1_newaliases.htm">newaliases</a></tt> command.</li>
<li>Insert the appropriate configuration amendments to <tt>main.cf</tt>
<pre>
# To ensure <tt>local</tt> delivery, <tt>rt.domain.tld</tt> must be added to
# <tt><a href="http://www.postfix.org/basic.html">$mydestination</a></tt>
mydestination = localhost localhost.localdomain rt.domain.tld
# <tt>/etc/postfix/aliases</tt> is added:
virtual_alias_maps = hash:/etc/postfix/aliases
mysql:/etc/postfix/mysql_virtual_alias_maps.cf
# alias_maps is what is READ by delivery agents etc.
alias_maps = hash:/etc/aliases
# alias_databases is what is WRITTEN by newaliases
alias_database = hash:/etc/aliases
# masquerade as @rt.example.com unless also on this list,never root
masquerade_domains = rt.domain.tld
masquerade_exceptions = root
</pre>
</li>
<li>Save the file, then reload Postfix&#8217;s configuration: <tt>/etc/init.d/postfix reload</tt></li>
<li>Send an e-mail to <tt>support@domain.tld</tt> and observe Postfix working its wonders..<br />
<tt><br />
Aug 19 21:12:18 solo postfix/local[2972]: 2B91710EB92: to=&lt;support @rt.domain.tld&gt;, orig_to=&lt;support@cjbuckley.net&gt;, relay=local, delay=17, delays=17/0.05/0/0.54, dsn=2.0.0, status=sent (delivered to command: /opt/rt3/bin/rt-mailgate --queue 'Support' --action correspond --url http://rt.domain.tld/)</tt></li>
</ol>
<p>I wrote this article mainly because I see the question oft repeated on the <a href="http://archives.neohapsis.com/archives/postfix/">Postfix Users Mailing List</a>.   Any comments and (especially) improvements welcome. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cjbuckley.net/blog/2007/08/19/rt-postfix/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>MailScanner &amp; Password Protected Archives</title>
		<link>http://www.cjbuckley.net/blog/2007/07/25/mailscanner-password-protected-archives/</link>
		<comments>http://www.cjbuckley.net/blog/2007/07/25/mailscanner-password-protected-archives/#comments</comments>
		<pubDate>Wed, 25 Jul 2007 12:02:03 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[MailServer]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mailscanner]]></category>

		<guid isPermaLink="false">http://www.cjbuckley.net/blog/2007/07/25/mailscanner-password-protected-archives/</guid>
		<description><![CDATA[Today at work I encountered an interesting &#8216;problem&#8217; on our Ubuntu 6.06 LTS mail-server. I deploy MailScanner 4.51.5 across our cluster, which after a good initial configuration sits 24/7/365 unattended.  Today a user reported that password protected archives were being removed before Postfix attempted delivery.
I know from knowledge of MailScanner that the default conf [...]]]></description>
			<content:encoded><![CDATA[<p>Today at work I encountered an interesting &#8216;problem&#8217; on our Ubuntu 6.06 LTS mail-server. I deploy <a href="http://www.mailscanner.info/ChangeLog/">MailScanner 4.51.5</a> across our cluster, which after a good initial configuration sits 24/7/365 unattended.  Today a user reported that password protected archives were being removed before <a href="http://www.postfix.org/">Postfix</a> attempted delivery.</p>
<p>I know from knowledge of MailScanner that the default conf file blocks password protected archives by default.  However, upon looking in the conf file I did not see the entry to over-ride this.   Knowing that this over-ride entry exists I checked the conf file on my home e-mail server from <a href="http://www.mailscanner.info/">MailScanner 4.60</a> . </p>
<pre>
chris@solo> grep 'Password' /etc/MailScanner/MailScanner.conf
Allow Password-Protected Archives = no
</pre>
<p>Interestingly, this attribute is <i>not</i> present in the <a href="https://launchpad.net/ubuntu/+source/mailscanner/4.51.5-1ubuntu1">Ubuntu package of MailScanner</a></p>
<h2>How To Add Exceptions To Password Protected Archives</h2>
<ol>
<li>Within <tt>/etc/MailScanner/MailScanner.conf</tt> add entry:<br />
      <tt>Allow Password-Protected Archives = %rules-dir%/password.protected.rules</tt></li>
<li>Create the file <tt>/etc/MailScanner/rules/password.protected.rules</tt></li>
<li>Within this file add entries for IP&#8217;s or e-mail addresses you wish to allow password protected archives from.  An example of this file could be:<br />
<tt><br />
From:          152.78.         yes<br />
From:          130.246.        yes<br />
From:           chris.buckley@domain.tld        yes<br />
FromorTo:       allow-zips@domain.tld            yes<br />
FromOrTo:       default         no<br />
</tt>
    </li>
<li>Save this file, then restart MailScanner.</li>
</ol>
<p><b>NB:</b> Post updated, see Julian&#8217;s comment below.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cjbuckley.net/blog/2007/07/25/mailscanner-password-protected-archives/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>DKIM, Domain-Keys and SPF verification</title>
		<link>http://www.cjbuckley.net/blog/2007/07/10/dkim-domain-keys-and-spf-verification/</link>
		<comments>http://www.cjbuckley.net/blog/2007/07/10/dkim-domain-keys-and-spf-verification/#comments</comments>
		<pubDate>Tue, 10 Jul 2007 17:56:28 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[MailServer]]></category>
		<category><![CDATA[DKIM]]></category>
		<category><![CDATA[Domain Keys]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[SPF]]></category>

		<guid isPermaLink="false">http://www.cjbuckley.net/blog/2007/07/10/dkim-domain-keys-and-spf-verification/</guid>
		<description><![CDATA[Whilst recently implementing DKIM and SPF for both my personal domain e-mail and for the corporate mail-servers I am responsible for, I found a great verification e-mail box from the DKIM mailing list.
If, after setting up your new extensions to the SMTP protocol, you wish to verify everything is working correctly then I thoroughly recommend [...]]]></description>
			<content:encoded><![CDATA[<p>Whilst recently implementing <a href="http://www.rfc-editor.org/rfc/rfc4871.txt">DKIM</a> and SPF for both my personal domain e-mail and for the corporate mail-servers I am responsible for, I found a great verification e-mail box from the DKIM mailing list.</p>
<p>If, after setting up your new extensions to the SMTP protocol, you wish to verify everything is working correctly then I thoroughly recommend a blank e-mail to this address: <a href="mailto:check-auth@verifier.port25.com">check-auth@verifier.port25.com</a></p>
<p>Let&#8217;s run through the results of this e-mail for my domain, cjbuckley.net:</p>
<pre> <u>Summary of Results</u>
SPF check:          pass
DomainKeys check:   neutral
DKIM check:         pass
Sender-ID check:    pass</pre>
<p>Immediately, we can see that the implementations have been successful &#8211; this is a good sign!</p>
<pre><u>SPF check details</u>
Result:         pass
ID(s) verified: smtp.mail=example@cjbuckley.net
DNS record(s):
cjbuckley.net. 300 IN TXT "v=spf1 redirect=_spf.cjbuckley.net"
_spf.cjbuckley.net. 300 IN TXT "v=spf1 ip4:87.127.106.176/29 ip4:84.45.189.64/29 include:ukfsn.org -all"
</pre>
<p>The detail outputted from this SPF check is impressive; as we can see, my domain initially does a redirect to _spf.cjbuckley.net (note the underscore &#8211; these _are_ valid in TXT records).  This allows many domains I am the hostmaster for (corporate ones, usually) to be easily managed.</p>
<p>For example, I use redirect: _spf.mycorporatedomain.com  for all my corporate domains, this cleans up the SPF records and allows easy management of the record database &#8211; all other domains can be redirected to _spf.mycorporatedomain.com.  It works very well, and is something I noticed Google taking advantage of, initially.. :-)</p>
<p>Next up &#8211; DomainKeys:</p>
<pre><u>DomainKeys check details:</u>
Result:         neutral (message not signed)
ID(s) verified: header.From=example@cjbuckley.net
DNS record(s):
</pre>
<p>The checker confirms that I do not have DK implemented &#8211; indeed, this is correct.  DKIM replaces DK, and is now being driven forward to replace Yahoo! DomainKey&#8217;s.  Note: gmail.com only verifies DK signatures, not DKIM yet &#8211; a bit disappointing, though they _do_ sign both with DKIM and DK.</p>
<pre> <u>DKIM check details:</u>
Result:         pass
ID(s) verified: header.From=example@cjbuckley.net
DNS record(s):
beta._domainkey.cjbuckley.net. 300 IN TXT "k=rsa; t=y;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDiIfv9vqSRUo9L8
ztX/C4gfCD/Ivt8eAGyQbjJ2g4Rq764NPwauj5/sY2AfMrFPqhA0ieXWtmJy2gFS
c4ZlxT8KYaFsJATOpJfYAXUtzmmQ8+RcioyeN3LjzNhm1gUYyJI1Lw0yD2y+k
dN3YxY4NZ0esMXrKbsngTl3pNcNCNxXwIDAQAB"
</pre>
<p>We can see that our DKIM policy has been verified successfully.  As dkim.org states:</p>
<blockquote><p>
DKIM lets an organization take responsibility for a message.  The organization taking responsibility is a handler of the message, either as its originator or as an intermediary. Their reputation is the basis for evaluating whether to trust the message for delivery.
</p></blockquote>
<p>Given this statement, e-commerce, financial and banking organisations should have either implemented or be on their way to planning an implementation of DKIM.  Personally, I find SPF flawed &#8211; DKIM is the wiser choice.  </p>
<p>I&#8217;m hoping to blog a <a href="http://www.jason.long.name/dkimproxy/">dkimproxy</a> implementation guide shortly, as the published guide has a few advisories I have issue with and would like clarified.</p>
<p>Comments, welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cjbuckley.net/blog/2007/07/10/dkim-domain-keys-and-spf-verification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monitor your server OS and Applications &#8211; Munin</title>
		<link>http://www.cjbuckley.net/blog/2007/05/28/monitor-your-server-os-and-applications-munin/</link>
		<comments>http://www.cjbuckley.net/blog/2007/05/28/monitor-your-server-os-and-applications-munin/#comments</comments>
		<pubDate>Mon, 28 May 2007 14:39:06 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Munin]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.cjbuckley.net/blog/2007/05/28/monitor-your-server-os-and-applications-munin/</guid>
		<description><![CDATA[Recently, i&#8217;ve become aware of a fantastic monitoring tool that allows easy visilibity of server clusters.  The program is called Munin.  The authors address their program as:

[Munin] The monitoring tool surveys all your computers and remembers what it saw. It presents all the information in graphs through a web interface. Its emphasis is [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, i&#8217;ve become aware of a fantastic monitoring tool that allows easy visilibity of server clusters.  The program is called <a href="http://munin.projects.linpro.no/">Munin</a>.  The authors address their program as:</p>
<blockquote><p>
[Munin] The monitoring tool surveys all your computers and remembers what it saw. It presents all the information in graphs through a web interface. Its emphasis is on plug and play capabilities. After completing a installation a high number of monitoring plugins will be playing with no more effort.</p>
<p>Using Munin you can easily monitor the performance of your computers, networks, SANs, applications, weather measurements and whatever comes to mind. It makes it easy to determine &#8220;what&#8217;s different today&#8221; when a performance problem crops up. It makes it easy to see how you&#8217;re doing capacity-wise on any resources.
</p></blockquote>
<p>So, i&#8217;ve implemented Munin across my platform of servers &#8211; as I write this I have implemented monitoring of my load-balancer and web/mailserver box.  <del>There is a secondary web-server to be bought online soon.</del></p>
<p>Of special interest to me in this program is the ability to <a href="http://monitors.cjbuckley.net/cjbuckley.com/comparison-day.html#Mysql">track the replication of MySQL</a>, I can now easily see (and be alerted to via Nagios) any lag in my replication &#8217;seconds behind master&#8217; time.  </p>
<p>Please take a look at the monitoring information at: <a href="http://monitors.cjbuckley.net/">monitors.cjbuckley.net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cjbuckley.net/blog/2007/05/28/monitor-your-server-os-and-applications-munin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSSEC rulesets for Zeus Webserver and ZXTM</title>
		<link>http://www.cjbuckley.net/blog/2007/05/04/ossec-ruleset-for-zeus-webserver-and-zxtm/</link>
		<comments>http://www.cjbuckley.net/blog/2007/05/04/ossec-ruleset-for-zeus-webserver-and-zxtm/#comments</comments>
		<pubDate>Fri, 04 May 2007 13:27:04 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[intrusion prevention]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[ossec]]></category>
		<category><![CDATA[zeus]]></category>
		<category><![CDATA[zxtm]]></category>

		<guid isPermaLink="false">http://www.cjbuckley.net/blog/2007/05/04/ossec-ruleset-for-zeus-webserver-and-zxtm/</guid>
		<description><![CDATA[OSSEC is a leading Intrusion Detection System for Enterprise UNIX(-like) and Windows platforms.  OSSEC is, by quite a way, the most innovative and customisable IDS product I have worked with.  
As a result of it&#8217;s ease of customisations, the developer Daniel B. Cid, with a little bit of help from myself, have implemented [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ossec.net/">OSSEC </a>is a <a href="http://www.linuxworld.com/news/2007/031207-top-5-security.html">leading Intrusion Detection System</a> for Enterprise UNIX(-like) and Windows platforms.  OSSEC is, by quite a way, the most innovative and customisable IDS product I have worked with.  </p>
<p>As a result of it&#8217;s ease of customisations, the developer Daniel B. Cid, with a little bit of help from myself, have implemented supported rule-sets for my former employers&#8217; products: <a href="http://www.zeus.com/products/zws">Zeus WebServer</a> and <a href="http://www.zeus.com/products/zxtm">ZXTM</a>.  Both products are widely deployed across many enterprise environments; adding specific rulesets for their software is one which I hope assists all fellow sysadmins tasked with running infrastructure using Zeus software. </p>
<h2>Download</h2>
<p>You can download the latest snapshot of OSSEC from <a href="http://www.ossec.net/files/snapshots/">this page</a>.  </p>
<h2>Implementation</h2>
<p>After running <code>install.sh</code> you can add the Zeus rulesets as you would any other supported rule set. </p>
<p><b>Example:</b></p>
<p>     &lt;localfile&gt;<br />
     &lt;log_format&gt;syslog&lt;/log_format&gt;<br />
     &lt;location&gt;/usr/local/zeus/zxtm/zxtm/log/errors&lt;/location&gt;</p>
<p>     &lt;localfile&gt;<br />
     &lt;log_format&gt;syslog&lt;/log_format&gt;<br />
     &lt;location&gt;/usr/local/zeus/zws/web/log&lt;/location&gt;</p>
<h2>Alerts</h2>
<p>Below you can clearly see the ruleset alerting you, quickly and efficiently, to a failure.<br />
&nbsp;<br />
<a href='http://www.cjbuckley.net/blog/wp-content/uploads/2007/05/ossec-monitor.png' title='OSSEC IDS Web Monitor'><img src='http://www.cjbuckley.net/blog/wp-content/uploads/2007/05/ossec-monitor.png' alt='OSSEC IDS Web Monitor' /></a></p>
<h2>Help..</h2>
<p>Any questions, just ask!  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cjbuckley.net/blog/2007/05/04/ossec-ruleset-for-zeus-webserver-and-zxtm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delay when connecting to SSH via Mac OSX Terminal</title>
		<link>http://www.cjbuckley.net/blog/2007/04/28/delay-when-connecting-to-ssh-via-mac-osx-terminal/</link>
		<comments>http://www.cjbuckley.net/blog/2007/04/28/delay-when-connecting-to-ssh-via-mac-osx-terminal/#comments</comments>
		<pubDate>Sat, 28 Apr 2007 19:04:05 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.cjbuckley.net/blog/2007/04/28/delay-when-connecting-to-ssh-via-mac-osx-terminal/</guid>
		<description><![CDATA[A problem i&#8217;ve been putting up with recently involves my Mac being used for VPN access to my SSH servers.  I&#8217;d see this in my logs:

debug1: Local version string SSH-2.0-OpenSSH_4.5
debug1: An invalid name was supplied
Cannot determine realm for numeric host address

..but was unable to find the fix.  I tried UseDNS no within sshd_config, [...]]]></description>
			<content:encoded><![CDATA[<p>A problem i&#8217;ve been putting up with recently involves my Mac being used for VPN access to my SSH servers.  I&#8217;d see this in my logs:</p>
<pre>
debug1: Local version string SSH-2.0-OpenSSH_4.5
debug1: An invalid name was supplied
Cannot determine realm for numeric host address
</pre>
<p>..but was unable to find the fix.  I tried <code>UseDNS no</code> within <code>sshd_config</code>, no luck.</p>
<p>However, I&#8217;ve stumbled across the answer!   On your client Mac, add your server to your <code>/etc/hosts</code> file.   With that done, try connecting via SSH again &#8211; all fixed!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cjbuckley.net/blog/2007/04/28/delay-when-connecting-to-ssh-via-mac-osx-terminal/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Achieving an Application upgrade, whilst still maintaining High Availability</title>
		<link>http://www.cjbuckley.net/blog/2007/04/23/achieving-an-application-upgrade-whilst-still-maintaining-high-availability/</link>
		<comments>http://www.cjbuckley.net/blog/2007/04/23/achieving-an-application-upgrade-whilst-still-maintaining-high-availability/#comments</comments>
		<pubDate>Mon, 23 Apr 2007 14:36:46 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[zeus]]></category>
		<category><![CDATA[zxtm]]></category>

		<guid isPermaLink="false">http://www.cjbuckley.net/blog/2007/04/23/achieving-an-application-upgrade-whilst-still-maintaining-high-availability/</guid>
		<description><![CDATA[Upgrading part of your back-end application is a task that must be planned and implemented meticulously.  This site has recently under-gone a code change to its Gallery application.  Here&#8217;s how this site was able to perform a full code upgrade, as well as still achieving full availability across both servers.
Considerations

Backup, backup, backup! We [...]]]></description>
			<content:encoded><![CDATA[<p>Upgrading part of your back-end application is a task that must be planned and implemented meticulously.  This site has recently under-gone a code change to its <a href="http://gallery.menalto.com/">Gallery</a> application.  Here&#8217;s how this site was able to perform a full code upgrade, as well as still achieving full availability across both servers.</p>
<h2>Considerations</h2>
<ul>
<li><b>Backup, backup, backup!</b> We must make sure that our backups are held securely and cannot be corrupted.  This database is small enough to use mysqldump, but incremental backups of the SQL binaries is a serious consideration in large scale enterprises</li>
<li><b>Gallery is clustered across two Apache webservers:</b> Any changes to my document root, will be quickly replicated across to the other webserver.  This must not be allowed to happen until regression testing has taken place across one production server.</li>
<li><b>MySQL replication:</b> any code changes rolled out will immediately be replicated across the MySQL cluster.   If the application upgrade fails, it will be a lot easier to roll back only one database.  We must be careful to not push this change across our databases until regression tested across one production box.</li>
<li><b>What role does our Load Balancer play?</b>  What rules do we need to implement to make sure traffic is directed accordingly&#8230;</li>
<li>For file replication, this site uses <a href="http://en.wikipedia.org/wiki/Rsync">rsync</a>.  To ensure code consistency during the maintenance window, this replication must be disabled. </li>
</ul>
<h2>Maintenance Actions</h2>
<ol>
<li>Perform a full backup of both the original Gallery code and the MySQL DB Binaries</li>
<li>Stop the replication slave running on Webserver 02.  The code change will be rolled out across Webserver 01, so it&#8217;s important no changes are replicated within our maintenance window.</li>
<li>How to deal with our traffic across our load balancers?  This will be covered in the next section.  Ultimately, we want all requests that <b>do not</b> contain /gallery/ in the path to be spread across all webservers; all requests for /gallery/ must be directed across the node not under maintenance (webserver 02) </li>
<li>Stop the rsync file replication process on both servers.</li>
</ol>
<h2>Load Balancer specifics</h2>
<ul>
<li>Create a rule that distributes requests for all requests that <b>do not</b> equal /gallery/ across all available webservers</li>
<pre>
if( ! string.contains( $path, "gallery" ) ) break;
</pre>
<li>Make sure that my IP address can reach the maintenance pool</li>
<pre>
   if ( ! string.ipmaskmatch( $ip, "my.ip.address/32" ) ) {
        pool.use( "Sticky Pool" );
}     else {
        pool.use( "Maintenance" ); }
</pre>
</ul>
<p>This ensures that my IP address reaches a pool containing one specific node &#8211; webserver01.  All other requests are load-balanced to the &#8216;Sticky Pool&#8217; which includes two nodes &#8211; webserver01 &#038; 02, however 01 is put in a draining node (no further connections being sent to it).  </p>
<p>So, both quickly and easily, using <a href="http://www.zeus.com/products/zxtm/manage/trafficscript">ZXTM&#8217;s trafficscript</a> we&#8217;re able to create rules to efficiently distribute traffic appropriately.   </p>
<p><b>End Result:</b> All requests are still load-balanced across both webservers, with the exception of requests for $path == /gallery/.  These requests are sent to one specific node (not under maintenance).  This allows the webmaster (me!) to upgrade the code base, and regression test, across webserver 01.</p>
<h2>Code Upgrade</h2>
<p>Load Balancer rules enabled, we can safely proceed with our code upgrade.  This is simply a matter of uploading the new codebase across the existing one.  We can then proceed to the <a href="http://www.cjbuckley.net/gallery/">Gallery site</a> knowing that we will go to webserver 01; able to both test and perform the application upgrade as applicable.  This completed, and tested, we can now restart our rsync daemons, and allow the MySQL slave to start again on webserver 02.  Within seconds the code change has been pushed out across the remaining webserver.  </p>
<p><b>End Result:</b> A complete success.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cjbuckley.net/blog/2007/04/23/achieving-an-application-upgrade-whilst-still-maintaining-high-availability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
