<?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>unsaturated.com &#187; dreamhost</title>
	<atom:link href="http://www.unsaturated.com/tag/dreamhost/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.unsaturated.com</link>
	<description>The personal and professional website of Matthew Crumley</description>
	<lastBuildDate>Mon, 19 Apr 2010 03:51:34 +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>Dreamhost T-Shirt Contest</title>
		<link>http://www.unsaturated.com/graphics/dreamhost-t-shirt-contest/</link>
		<comments>http://www.unsaturated.com/graphics/dreamhost-t-shirt-contest/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 03:46:12 +0000</pubDate>
		<dc:creator>Matthew Crumley</dc:creator>
				<category><![CDATA[Graphics]]></category>
		<category><![CDATA[contest]]></category>
		<category><![CDATA[dreamhost]]></category>
		<category><![CDATA[graphic design]]></category>
		<category><![CDATA[SVG]]></category>

		<guid isPermaLink="false">http://www.unsaturated.com/?p=794</guid>
		<description><![CDATA[The offer of free stuff is tempting when the free stuff in question is web hosting for life.  Dreamhost wanted some t-shirt ideas with a retro theme, so I went for the 80s look and used a Rubik's cube.]]></description>
			<content:encoded><![CDATA[<p>My website has been hosted by Dreamhost for a long time and I can&#8217;t complain about much.  Once I moved my mail over to Google, I had even less to complain about.  I also follow the <a href="http://blog.dreamhost.com">official Dreamhost blog</a>, which is amusing at times.  One post in particular caught my attention.  Not so much the title, which declared the <a href="http://blog.dreamhost.com/2009/09/21/the-happy-dreamhost-62nd-birthday-contest/">62nd Birthday of Dreamhost</a>, but the bonus for anyone who designed a retro t-shirt.  A lifetime of free hosting is the prize.  No asterisks within sight.</p>
<p>I decided to go with a retro 80s theme.  The subject fell into place when I was browsing for kitsch:  the Rubik&#8217;s Cube.  Even better was the fact that nine squares (3&#215;3) exactly fits the spelling of DRE-AMH-OST.  To finish the design I needed something to indicate, beyond any question of doubt, that this shirt was sent back to the future from the 1980s.  A word often used to describe a nerd was &#8220;dweeb&#8221; which seems to have lost its vogue.  All the elements of a radical t-shirt came into place.<br />
<img class="size-full wp-image-795" title="dweeb-web" src="http://www.unsaturated.com/wordpress/wp-content/data/dweeb-web.png" alt="Dreamhost t-shirt design" width="500" height="587" /></p>
<h2>What Works?</h2>
<p>If the company was named &#8220;Dreamshost&#8221; I would either wrap the text to another side or move on.  The nine-letter coincidence worked in my favor.  There&#8217;s very little that <i>can&#8217;t</i> be identified with the 80s here.  The light gray boundary around the design allows for black or white t-shirts to be used without diminishing the impact of the design.</p>
<h2>What Failed?</h2>
<p>It&#8217;s not immediately clear this is a retro design.  The individual elements are there but there&#8217;s nothing in your face to remind you it&#8217;s a retro t-shirt.  It also doesn&#8217;t tie-in the 62nd birthday or anniversary or whatever Dreamhost is celebrating.  But being ironic isn&#8217;t representative of the 1980s &#8211; that&#8217;s something the 00s can claim.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.unsaturated.com/graphics/dreamhost-t-shirt-contest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SpamAssassin for Dreamhost</title>
		<link>http://www.unsaturated.com/projects/spamassassin-for-dreamhost/</link>
		<comments>http://www.unsaturated.com/projects/spamassassin-for-dreamhost/#comments</comments>
		<pubDate>Sun, 19 Aug 2007 12:22:02 +0000</pubDate>
		<dc:creator>Matthew Crumley</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[dreamhost]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[SpamAssassin]]></category>

		<guid isPermaLink="false">http://www.unsaturated.com/projects/spamassassin-for-dreamhost/</guid>
		<description><![CDATA[You're using Dreamhost and tired of SPAM. I feel your pain. Here's an installation guide I wrote for version 3.1.0, which uses MySQL to store Bayes data.]]></description>
			<content:encoded><![CDATA[<p>This SpamAssassin guide is for <a href="http://www.dreamhost.com/rewards.cgi">Dreamhost</a> clients who want to run a personal copy of SpamAssassin separate from the one already provided.  This will take you step-by-step through the process of downloading, installing, and configuring SpamAssassin (SA) version 3.1.0. </p>
<p>Although DH currently supports SA, it is applied to your entire domain. To further complicate matters, DH upgraded to Debian Linux &#8220;Sarge&#8221; and it caused compatibility issues with the Bayesian database files; these are read/write files created using a Perl library. The next best alternative is to store those Bayes tokens in a MySQL database. By using SA&#8217;s Bayesian filtering you stand a <i>much</i> greater chance of eliminating your junk mail, and MySQL seems to circumvent the problem mentioned earlier.</p>
<p><b>Update: changes to Dreamhost&#8217;s network architecture require amendments to this procedure.  Please reference my <a href="http://www.unsaturated.com/projects/spamassassin-changes-for-dreamhost/">updated tutorial</a> for more information.</b></p>
<p>A few assumptions before we get started&#8230;</p>
<ul>
<li>You have a basic understanding of Linux.</li>
<li>You have an active DH account.</li>
<li>You have access to the DH Panel.</li>
<li>The <code>%&gt;</code> notation indicates what you should type at the command prompt.</li>
<li>The <code>&lt;Valid URL for: FileXYZ&gt;</code> notation indicates you need to insert a URL that points to the file in question.</li>
</ul>
<ol>
<li><b>Disable <u>all</u> keyword and junk mail filtering via the Dreamhost Panel.</b>  The Panel modifies your <code>.procmailrc</code> file and later we will be making changes to it and other files in your root directory.</li>
<p><img src='http://www.unsaturated.com/wordpress/wp-content/data/samail.png' alt='Mail Tab' id='centered'/><br />
</p>
<li><b>Log in to the account that will be using SpamAssassin.</b>  You will be doing most of the work from the shell.  Having a browser window open to the DH Panel would also be a good idea.</li>
<p></p>
<li><b>Download SpamAssassin 3.1.0.</b>  The 3.1.0 distribution can be obtained from the SA home page. Be sure to get the tar.gz format. Using this command will download it to your home directory.  Type the following:
<pre>
<code>%&gt; cd ~
%&gt; wget &lt;Valid URL for: Mail-SpamAssassin-3.1.0.tar.gz&gt;</code>
</pre>
</li>
<li><b>Extract the SpamAssassin archive.</b>  You must now extract the files to prepare for installation.  Be sure the tar.gz file is in your root directory.  Type the following:
<pre>
<code>%&gt; tar xvfz Mail-SpamAssassin-3.1.0.tar.gz
%&gt; cd Mail-SpamAssassin-3.1.0</code>
</pre>
</li>
<li><b>Make the SpamAssassin files.</b>  This step is found in the <code>INSTALL</code> file under the heading &#8220;Installing SpamAssassin for Personal Use (Not System-Wide).&#8221;  Each step takes some processing time, so please be patient. It will place your configuration files in <code>~/saetc</code> and binaries in <code>~/sausr</code>. Type the following at the command prompt:
<pre>
<code>%&gt; perl Makefile.PL PREFIX=~/sausr SYSCONFDIR=~/saetc
%&gt; make
%&gt; make install</code>
</pre>
</li>
<li><b>Create a directory for spam rules.</b>  This directory provides a location for all of your procmail-related rules. Type the following at the command prompt:
<pre>
<code>%&gt; cd ~
%&gt; mkdir procmail
%&gt; cd procmail</code>
</pre>
</li>
<li><b>Create the spam.rc file in your procmail folder.</b>  The <code>spam.rc</code> file will tell SA where to place junk mail and where to find associated rules for filtering. I have set up a rule to sort all spam into SquirrelMail&#8217;s Spam folder.  Thus, it is not downloaded by my POP3 client. Type the following at the command prompt and insert the text shown:
<pre>
<code>%&gt; pico spam.rc

#=================================================
# spam.rc should be located in ~/procmail

# Send e-mail to SpamAssassin if less than 500kB in size
:0fw
* &lt; 500000
| $HOME/sausr/bin/spamassassin

# Delete all spam with a score of 8 or higher
:0
* ^X-Spam-Level: ********
/dev/null

# Move suspected spam into a separate folder
:0:
* ^X-Spam-Status: Yes
.Spam/
#=================================================</code>
</pre>
</li>
<li><b>Create the .forward.postfix file in your root directory.</b>  Type the following at the command prompt and insert the text shown:
<pre>
<code>%&gt; cd ~
%&gt; pico .forward.postfix


#==========================================
#.forward.postfix should be located in ~
"| /usr/bin/procmail -t"
#==========================================</code>
</pre>
</li>
<li><b>Modify the .procmailrc file in your root directory.</b>  This step edits the file that specifies which rules are applied to your e-mail.  You want to reference the <code>spam.rc</code> file you already created.  Type the following at the command prompt and modify the file as shown:
<pre>
<code>%&gt; mv .procmailrc .procmailrc.bak
%&gt; pico .procmailrc


#=======================================
# .procmailrc should be located in ~

# Directory for procmail-related files
PMDIR=$HOME/procmail

# This is the message directory
MAILDIR=$HOME/Maildir

# procmail will use spam.rc for rules
INCLUDERC=$PMDIR/spam.rc

# Send everything else to Maildir
:0
$HOME/Maildir/
#=======================================</code>
</pre>
</li>
<li><b>Install modules necessary to enable DNS tests.</b>  Although DNS-based tests are not necessary for SA to work, it&#8217;s another great feature that helps to reduce spam.  You&#8217;ll need the Net::IP dependency before installing Net::DNS.  DH currently has this installed but the version is insufficient for SA to run correctly. Type the following at the command prompt:
<pre>
<code>%&gt; cd ~
%&gt; wget &lt;Valid URL for: Net-IP-1.24.tar.gz&gt;
%&gt; wget &lt;Valid URL for: Net-DNS-0.53.tar.gz&gt;
%&gt; tar xvfz Net-IP-1.24.tar.gz
%&gt; tar xvfz Net-DNS-0.53.tar.gz
%&gt; export PERL5LIB=/home/your_username/sausr/share/perl/5.8.4
%&gt; cd Net-IP-1.24
%&gt; perl Makefile.PL PREFIX=~/sausr
%&gt; make
%&gt; make install
%&gt; cd ~/Net-DNS-0.53
%&gt; perl Makefile.PL PREFIX=~/sausr
%&gt; make
%&gt; make install
%&gt; ln -s ~/sausr/lib/perl/5.8.4/Net/* ~/sausr/share/perl/5.8.4/Net</code>
</pre>
</li>
<li><b>Send yourself an e-mail to check the installation.</b>  Your installation should be working properly.  Be sure to check the e-mail headers for &#8220;X-Spam-Checker-Version: SpamAssassin 3.1.0&#8243;  This means your local copy of SA is working.</li>
<p></p>
<li><b>Create a MySQL database for SA.</b>  Go to the Goodies, MySQL link on the DH Panel. The username/password are examples. For security reasons, do <i>not</i> use the following. I used these only to complete the guide.  Remember these settings because you&#8217;ll be using them later.  After DH has set-up your database you will see it added to your list. Proceed to the next step. <img src='http://www.unsaturated.com/wordpress/wp-content/data/sacreatenew.png' alt='New MySQL Database' id='centered'/></li>
<p></p>
<li><b>Create the database tables necessary for SA.</b>  Doing this step will create all the necessary tables used by SA for user preferences and the Bayes tokens. I&#8217;m not currently using the database for my preferences but doing this step now would make it easier later.  Type the following at the command prompt and enter your database password as prompted:
<pre>
<code>%&gt; cd ~/Mail-SpamAssassin-3.1.0/sql
%&gt; mysql -h spam.sa.com -u spam_user -p MySpamDB &lt; userpref_mysql.sql
%&gt; mysql -h spam.sa.com -u spam_user -p MySpamDB &lt; bayes_mysql.sql
%&gt; mysql -h spam.sa.com -u spam_user -p MySpamDB &lt; awl_mysql.sql</code>
</pre>
</li>
<li><b>Modify the local.cf file.</b>  Everything is set-up to use Bayesian filtering but it&#8217;s not enabled by default. Type the following at the command prompt and add the lines indicated:
<pre>
<code>%&gt; cd ~/saetc/mail/spamassassin
%&gt; pico local.cf


#===================================================
# These lines must be in your local.cf file

# Tell SA to use Bayesian filtering
use_bayes 1

# Tell SA to use a MySQL database for tokens
bayes_store_module  Mail::SpamAssassin::BayesStore::MySQL
bayes_sql_dsn       DBI:mysql:MySpamDB:spam.sa.com
bayes_sql_username  spam_user
bayes_sql_password  itsasecret

user_scores_dsn           DBI:mysql:MySpamDB:spam.sa.com
user_scores_sql_username  spam_user
user_scores_sql_password  itsasecret

#===================================================</code>
</pre>
</li>
<li><b>Modify the user_prefs file.</b>  The user_prefs file is where you should add any white or black listed e-mail addresses. The MySQL database can store this information but I haven&#8217;t integrated it with SquirrelMail&#8230;yet. These preferences are optional but I believe they lead to greater reliability when SA assigns a score to an e-mail.  Type the following at the command prompt and add the lines indicated:
<pre>
<code>%&gt; pico ~/.spamassassin/user_prefs


#===================================================
# These lines should be in your user_prefs file

# Do not autolearn from Bayes
bayes_auto_learn 0

# Do not autowhitelist e-mail addresses
use_auto_whitelist 0

# Bayes will ignore these headers
bayes_ignore_header X-Virus-Scanned
bayes_ignore_header X-Spam-Status
bayes_ignore_header X-Spam-Level
bayes_ignore_header X-Spam-Flag

#===================================================</code>
</pre>
</li>
<li><b>Create a script for training SA.</b>  This will vastly simply your life so training SA becomes <i>almost</i> automatic.  The script is capable of training for spam or ham, depending upon the command line argument.  If training on spam, it will delete all the messages when it&#8217;s done.  Type the following at the command prompt and insert the text shown:
<pre>
<code>%&gt; echo &gt; ~/salearn.bat
%&gt; chmod 744 ~/salearn.bat&lt;br&gt;
%&gt; pico ~/salearn.bat


echo '========================================='
TESTED=false
if [ "$1" ]
then
  if [ $1 = "spam" ]
  then
    TESTED=true
    ~/sausr/bin/sa-learn -V
    echo '-----------------------------------------'
    echo Learning what is SPAM...
    ~/sausr/bin/sa-learn --spam ~/Maildir/.Spam/cur
    rm -f ~/Maildir/.Spam/cur/*
    echo All messages from your Spam folder were deleted.
  elif [ $1 = "ham" ]
  then
    TESTED=true
    ~/sausr/bin/sa-learn -V
    echo '-----------------------------------------'
    echo Learning what is HAM...
    ~/sausr/bin/sa-learn --ham ~/Maildir/cur
  fi

  if [ $TESTED = true ]
  then
    echo '-----------------------------------------'
    echo Summary statistics of Bayes database...
    ~/sausr/bin/sa-learn --dump magic
    echo '-----------------------------------------'
  fi
else
  echo Enter one argument:  [ham | spam]
fi
echo '========================================='</code>
</pre>
</li>
<li><b>Allow spam to accumulate in your Spam folder and train SA.</b>  SpamAssassin gets even better after training it with several thousand spam messages.  It assigns a statistical probability to certain words and characteristics of mail you have designated as junk.  When your Spam folder is getting full type the following at the command prompt:
<pre>
<code>%&gt; ~/salearn.bat spam
%&gt; ~/salearn.bat ham</code>
</pre>
</li>
<li><b>Create a crontab job to run your script.</b>  You have a script but you need to execute it with regularity. That&#8217;s what crontab is used to do.  You could have it doing lots of other chores like emptying the Trash folder, but I will leave the extras to you.  After the script executes you are sent an e-mail with a summary of what happened.  The script will execute 10 minutes after midnight every Sunday. Type the following at the command prompt and add the text listed:
<pre>
<code>%&gt; crontab -e

10 0 * * 7 $HOME/salearn.bat spam</code>
</pre>
</li>
<li><b>Delete the temporary SpamAssassin folder.</b>  To free up a little disk space, go back and delete the temporary folder created when we decompressed the archive. Type the following at the command prompt:
<pre>
<code>%&gt; cd ~
%&gt; rm -R -f Mail-SpamAssassin-3.1.0</code>
</pre>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.unsaturated.com/projects/spamassassin-for-dreamhost/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>
