<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">

<channel>
	<title>The Tlog - a technology blog &#187; Email</title>
	<atom:link href="http://www.thetlog.net/email/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thetlog.net</link>
	<description></description>
	<lastBuildDate>Fri, 18 Mar 2011 11:10:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.5/pt/</creativeCommons:license>		<item>
		<title>What if everyone used SPF?</title>
		<link>http://www.thetlog.net/2009/11/27/what-if-everyone-used-spf/</link>
		<comments>http://www.thetlog.net/2009/11/27/what-if-everyone-used-spf/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 15:07:25 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[SPF]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/?p=528</guid>
		<description><![CDATA[To end my SPF series, I&#8217;m going to consider the following question: what if everyone used SPF? Would it &#8220;end&#8221; spam? The answer is, of course, &#8220;no, but&#8230;&#8221;. But, first, let&#8217;s understand the question itself. In &#8220;everyone used&#8221;, what does &#8220;used&#8221; mean? If you followed my previous posts on this subject, you&#8217;ll know that there [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2009/11/27/what-if-everyone-used-spf/" data-text="What if everyone used SPF?" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2009/11/27/what-if-everyone-used-spf/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p>To end my <a href="http://www.thetlog.net/tag/spf/">SPF series</a>, I&#8217;m going to consider the following question: what if everyone used SPF? Would it &#8220;end&#8221; spam?</p>
<p>The answer is, of course, &#8220;no, but&#8230;&#8221;. But, first, let&#8217;s understand the question itself.</p>
<p>In &#8220;everyone used&#8221;, what does &#8220;used&#8221; mean? If you followed my previous posts on this subject, you&#8217;ll know that there are two distinct parts: having an SPF record for your domain, and configuring your SMTP server to reject email purporting to be from an address with a valid SPF record, when it doesn&#8217;t come from an authorized server.</p>
<p>Let&#8217;s assume that the question implies <i>both</i>.</p>
<p>So, if every legit organization had an SPF record <i>and</i> enforced SPF in their incoming email servers, what would it mean?</p>
<p>It still depends on what was meant by &#8220;enforced&#8221;. For instance, as it is now, it makes sense to <i>use</i> an SPF record (and reject mail coming from an unauthorized server, as I mentioned before), but not to <i>require</i> an SPF record, as most of the world is still not using it. </p>
<p>If that changed, though&#8230; it would certainly make things a lot easier for the &#8220;good guys&#8221;. Think about it: what does SPF prevent? The <i>faking</i> of sender addresses. Who ever does that? Spammers. Therefore, who has ever a reason <i>not</i> to use an SPF record? Spammers. In a world where every legitimate organization used SPF, having such a record wouldn&#8217;t mean that the sender wasn&#8217;t a spammer, but <i>not</i> having one would certainly mean that he <i>was</i>. Ergo, reject any mail from a domain without an SPF record, even <i>before</i> verifying whether the origin server is authorized for that domain.</p>
<p>Of course, spammers would adapt, and have SPF records for their own domains. But <i>never again would they be able to fake a sender address</i>. They would never again be able to efficiently pretend to be your internet provider, or your bank, or Facebook, or anything like that. They would have to use their own domains in the sender address&#8230; and they don&#8217;t exactly tend to look &#8220;nice&#8221;; besides, they&#8217;re not what your ISP or your bank would use.</p>
<p>A world with SPF would mean a world where you could actually trust the &#8220;From:&#8221; field. Can you imagine such a thing?</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2009/11/27/what-if-everyone-used-spf/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Postfix&#8217;s log file when using SPF: what it looks like</title>
		<link>http://www.thetlog.net/2009/11/26/postfixs-log-file-when-using-spf-what-it-looks-like/</link>
		<comments>http://www.thetlog.net/2009/11/26/postfixs-log-file-when-using-spf-what-it-looks-like/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 17:05:02 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[SPF]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/?p=512</guid>
		<description><![CDATA[In the previous post, I wrote, at the end of the recipe: restart Postfix. Check your logs to see if everything is working properly. But what to look for? Here are a few real life examples, from my own Postfix log file: Nov 26 07:07:27 sh postfix/policy-spf[10685]: : SPF none (No applicable sender policy available): [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2009/11/26/postfixs-log-file-when-using-spf-what-it-looks-like/" data-text="Postfix&#8217;s log file when using SPF: what it looks like" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2009/11/26/postfixs-log-file-when-using-spf-what-it-looks-like/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p>In the <a href="http://www.thetlog.net/2009/11/26/spf-part-3-configuring-postfix-to-check-spf-records-when-receiving-mail/">previous post</a>, I wrote, at the end of the recipe:</p>
<blockquote><p>restart Postfix. Check your logs to see if everything is working properly.</p></blockquote>
<p>But what to look for? Here are a few real life examples, from my own Postfix log file:</p>
<p><code>Nov 26 07:07:27 sh postfix/policy-spf[10685]: : SPF none (No applicable sender policy available): Envelope-from: bounce-1492514-406278644@lyris.diskeepermail.com<br />
Nov 26 07:07:27 sh postfix/policy-spf[10685]: handler sender_policy_framework: is decisive.<br />
Nov 26 07:07:27 sh postfix/policy-spf[10685]: : Policy action=PREPEND Received-SPF: none (lyris.diskeepermail.com: No applicable sender policy available) receiver=sh.dehumanizer.com; identity=mailfrom; envelope-from="bounce-1492514-406278644@lyris.diskeepermail.com"; helo=lyris.diskeepermail.com; client-ip=68.177.217.241</code></p>
<p>This (note the &#8220;SPF none&#8221;) is what will happen for most emails: <i>no SPF record exists</i>. Unfortunately, most of the world is still not using it. The mail passes this check, since it&#8217;s not a good idea to enforce SPF yet (but may fail one of the remaining ones, such as an RBL list or SpamAssassin.)</p>
<p><code>Nov 24 16:19:56 sh postfix/policy-spf[32619]: : SPF pass (Mechanism 'ip4:209.128.72.240/28' matched): Envelope-from: promotions@iambic.com<br />
Nov 24 16:19:56 sh postfix/policy-spf[32619]: handler sender_policy_framework: is decisive.<br />
Nov 24 16:19:56 sh postfix/policy-spf[32619]: : Policy action=PREPEND Received-SPF: pass (iambic.com: 209.128.72.242 is authorized to use 'promotions@iambic.com' in 'mfrom' identity (mechanism 'ip4:209.128.72.240/28' matched)) receiver=sh.dehumanizer.com; identity=mailfrom; envelope-from="promotions@iambic.com"; helo=ns1.iambic.com; client-ip=209.128.72.242</code></p>
<p>Above is an example of a legitimate mail from a sender with a properly configured SPF record. The record says &#8220;here are the server(s) that send email from this domain&#8221;, and the origin server is indeed one of those. The email passes (note the &#8220;SPF pass&#8221;), and, if you&#8217;re using SpamAssassin, it takes that into account, meaning that the mail is <i>less</i> likely to be considered spam. (See? That&#8217;s a <i>great</i> reason to have an SPF record for your domain!)</p>
<p>Finally, the following:</p>
<p><code>Nov 24 19:57:13 sh postfix/policy-spf[1210]: : SPF fail (Mechanism '-all' matched): Envelope-from: pedro@dehumanizer.com<br />
Nov 24 19:57:13 sh postfix/policy-spf[1210]: handler sender_policy_framework: is decisive.<br />
Nov 24 19:57:13 sh postfix/policy-spf[1210]: : Policy action=550 Please see http://www.openspf.org/Why?s=mfrom;id=pedro%40dehumanizer.com;ip=204.212.122.254;r=sh.dehumanizer.com</code></p>
<p>is a good demonstration of the usefulness of SPF. You&#8217;ll notice that the mail pretends to come from <i>my own</i> domain, but since I have configured the SPF record for it, Postfix is able to see that the origin server is not authorized to send mail from that domain. And, since my record ends with &#8220;<code>-all</code>&#8220;, it means that the record is to be &#8220;taken seriously&#8221;, so the mail is refused then and there (note the &#8220;SPF fail&#8221;), even before checking RBL lists and the like.</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2009/11/26/postfixs-log-file-when-using-spf-what-it-looks-like/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SPF, part 3: configuring Postfix to check SPF records when receiving mail</title>
		<link>http://www.thetlog.net/2009/11/26/spf-part-3-configuring-postfix-to-check-spf-records-when-receiving-mail/</link>
		<comments>http://www.thetlog.net/2009/11/26/spf-part-3-configuring-postfix-to-check-spf-records-when-receiving-mail/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 11:57:06 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[SPF]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/?p=497</guid>
		<description><![CDATA[(for extra fun, read parts 1 and 2 first.) Now that you know how to configure an SPF record for your domain(s), the natural next step, if you administer an email server, is to start checking SPF records for mails you receive. Now, spammers are infamous for not respecting rules, not &#8220;playing nice&#8221;, so, you [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2009/11/26/spf-part-3-configuring-postfix-to-check-spf-records-when-receiving-mail/" data-text="SPF, part 3: configuring Postfix to check SPF records when receiving mail" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2009/11/26/spf-part-3-configuring-postfix-to-check-spf-records-when-receiving-mail/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p><i>(for extra fun, read parts <a href="http://www.thetlog.net/2009/11/25/spf-part-1-what-is-spf-and-how-to-fight-spam-with-it/">1</a> and <a href="http://www.thetlog.net/2009/11/25/spf-part-2-how-to-configure-spf-for-a-domain/">2</a> first.)</i></p>
<p>Now that you know how to configure an SPF record for your domain(s), the natural next step, if you administer an email server, is to start checking SPF records for mails you <i>receive</i>.</p>
<p>Now, spammers are infamous for not respecting rules, not &#8220;playing nice&#8221;, so, you might ask, what makes me think they&#8217;ll set up SPF records for their domains, which would be kind of self-defeating? The obvious answer is that SPF doesn&#8217;t depend on the spammers&#8217; collaboration. Since legitimate email senders use SPF to tell the world which servers they use to send email, it prevents others &#8212; such as the aforementioned spammers &#8212; from faking sender addresses to pretend they&#8217;re from those senders / domains.</p>
<p>To put it simply: if there&#8217;s an SPF record for the &#8220;gmail.com&#8221; domain, then you can &#8212; and should &#8212; reject mail purporting to be from something@gmail.com that doesn&#8217;t come from the servers listed in that record. In other words, anyone who fakes a @gmail.com address can&#8217;t fool your server, assuming you have it configured to use SPF.</p>
<p>Now, how to do that? There are many ways, of course, depending on the email server you use. The simple recipe below uses <i>postfix-policyd-spf-perl</i> to make Postfix reject mail from domains with properly configured SPF records, when the mail comes from an unauthorized server (that is, one not listed on the record.) This assumes you already have Postfix up and running.</p>
<ul>
<li>install <a href="http://www.openspf.org/Software">postfix-policyd-spf-perl</a>. In Ubuntu, just do an <code>apt-get install postfix-policyd-spf-perl</code> .</li>
<li>add this line to /etc/postfix/main.cf:<br />
<code>spf-policyd_time_limit = 3600s</code></li>
<li>add the following to /etc/postfix/master.cf:
<pre>policy-spf  unix  -       n       n       -       -       spawn
     user=nobody argv=/usr/bin/policyd-spf</pre>
<p> (change the path of policyd-spf if it&#8217;s installed somewhere else; that&#8217;s where the Ubuntu package puts it.)</li>
<li>in /etc/postfix/main.cf, find the <i>smtpd_recipient_restrictions</i> section, and, immediately after permit_mynetworks (and permit_sasl_authenticated, if you&#8217;re using that), add:<br />
<code>check_policy_service unix:private/policy-spf</code></li>
<li>restart Postfix. Check your logs to <a href="http://www.thetlog.net/2009/11/26/postfixs-log-file-when-using-spf-what-it-looks-like/">see if everything is working properly</a>.</li>
</ul>
<p>Now, remember when in part 2 I mentioned a lesser-known reason for configuring the SPF record for your domain? It&#8217;s this: it&#8217;ll stop a lot of <i>incoming</i> spam. These days, a lot of spam email pretends to be from <i>you</i> (that is, it uses your email address as both the &#8220;From:&#8221; and &#8220;To:&#8221;), or at least from <i>your domain</i> (e.g. administrator@yourdomain, manager@yourdomain, and so on.) I don&#8217;t know why spammers do that, but apparently it works, or else they wouldn&#8217;t do it (maybe victims get confused and think the email comes from someone in their company, or maybe webmail services tend &#8212; or at least did so once &#8212; to trust the user&#8217;s own address, I don&#8217;t know.) Well, if you have SPF for your domain <i>and</i> your email server checks SPF records for incoming mail, then spam messages such as these will be always rejected, even when other methods of stopping spam (RBL lists, SpamAssassin, etc.) fail. Never again will you receive emails pretending to be from your own address.</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2009/11/26/spf-part-3-configuring-postfix-to-check-spf-records-when-receiving-mail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What&#8217;s this site running?</title>
		<link>http://www.thetlog.net/2009/11/25/whats-this-site-running/</link>
		<comments>http://www.thetlog.net/2009/11/25/whats-this-site-running/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 19:52:54 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[The Tlog (site)]]></category>
		<category><![CDATA[Unix / Linux / *BSD]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Dehumanizer.com]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[Squid]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/?p=473</guid>
		<description><![CDATA[As an intermission (there&#8217;s more to come in the SPF series), here&#8217;s what&#8217;s changed on my server since, oh, about a year and a half ago: The OS is now Ubuntu Karmic Koala (9.10), and all the server&#8217;s running software comes from the standard Ubuntu packages, which means that whatever version is in Karmic1, that&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2009/11/25/whats-this-site-running/" data-text="What&#8217;s this site running?" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2009/11/25/whats-this-site-running/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p>As an intermission (there&#8217;s more to come in the <a href="http://www.thetlog.net/2009/11/25/spf-part-1-what-is-spf-and-how-to-fight-spam-with-it/">SPF series</a>), here&#8217;s what&#8217;s changed on my server since, oh, about a year and a half ago:</p>
<ul>
<li>The OS is now <a href="http://www.ubuntu.com">Ubuntu</a> Karmic Koala (9.10), and all the server&#8217;s running software comes from the standard Ubuntu packages, which means that whatever version is in Karmic<sup><a href="http://www.thetlog.net/2009/11/25/whats-this-site-running/#footnote_0_473" id="identifier_0_473" class="footnote-link footnote-identifier-link" title="with updates, of course &amp;#8212; people who are afraid of installing updates (&amp;#8220;but&amp;#8230; it might break something!&amp;#8221;) are nothing more than mewling weaklings who are utterly incompetent as sysadmins; they should never be allowed within a mile of any server. Even one running Windows.">1</a></sup>, that&#8217;s what I&#8217;m running here.</li>
<li>I&#8217;ve switched, definitely, from <a href="http://httpd.apache.org/">Apache</a> to <a href="http://nginx.net/">nginx</a>. It&#8217;s faster, more efficient, and <i>ridiculously</i> easier to configure (to put it in perspective, in terms of ease of configuration, it&#8217;s like OpenBSD&#8217;s amazing pf to the unholy abomination that is Linux&#8217;s iptables.) nginx works perfectly with the two pieces of software I use the most on my server, <a href="http://www.wordpress.org/">WordPress</a> and <a href="http://www.mybboard.net/">MyBB</a>, even while using a SEO plugin with the latter, which requires some non-trivial redirect rules.</li>
<li>As I don&#8217;t trust any ISP&#8217;s email server to distribute the mail my server sends (mostly confirmation emails from <a href="http://www.dehumanizer.com/">my forums</a>), and since most ISPs and companies these days block mail sent from dynamic IP addresses, I keep a 256 MB <a href="http://www.slicehost.com/">Slicehost</a> slice, with a static IP address and, most importantly, <i>reverse</i> DNS, which I use as a smart host for my home server. The slice doesn&#8217;t have a lot of power in terms of CPU (and it&#8217;s not meant to), but, as bandwidth is much cheaper in the US than in my poor country, the &#8220;small&#8221; limit the cheapest slice includes is <i>a lot</i>; I use it for serving static files, mostly for my forums (all images and Javascript files are served from there), and I still have bandwidth to spare.</li>
<li>I&#8217;ve stopped using a <a href="http://www.squid-cache.org/">Squid</a> proxy in my home network, and nowadays access the web directly&#8230; except for when I indulge in one of my newest weird habits: reading <i>webcomics</i> like <a href="http://www.shamusyoung.com/twentysidedtale/?p=612">this one</a> or <a href="http://www.darthsanddroids.net/">this one</a> while having lunch or dinner. At such a time, moving <i>instantly</i> from comic to comic is a must&#8230; so I simply re-enable Squid (with more aggressive caching than I&#8217;d use for normal browsing; after all, existing comics typically aren&#8217;t going to change, are they?), do a nice little wget in my server to download and cache the entire comic, and then enjoy reading the whole of it (in as many meals as it takes) as if it was stored locally&#8230;</li>
<li>A few changes to my email server&#8217;s configuration, mostly related to spam filtering&#8230; but I&#8217;ve been  writing about that, haven&#8217;t I? And there&#8217;s still more to come. <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> <ol class="footnotes"><li id="footnote_0_473" class="footnote">with updates, of course &#8212; people who are afraid of installing updates (&#8220;but&#8230; it might break <i>something</i>!&#8221;) are nothing more than mewling weaklings who are utterly incompetent as sysadmins; they should never be allowed within a mile of any server. Even one running Windows.</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2009/11/25/whats-this-site-running/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SPF, part 2: how to configure SPF for a domain</title>
		<link>http://www.thetlog.net/2009/11/25/spf-part-2-how-to-configure-spf-for-a-domain/</link>
		<comments>http://www.thetlog.net/2009/11/25/spf-part-2-how-to-configure-spf-for-a-domain/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 15:42:16 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[SPF]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/?p=454</guid>
		<description><![CDATA[(this is part 2 of a series. You should read part 1 first, and after this post you should read part 3.) Suppose you have a domain and send email from it (in fact, even if you don&#8217;t, this is still a good idea; more about that later). How to configure SPF for it? Easy: [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2009/11/25/spf-part-2-how-to-configure-spf-for-a-domain/" data-text="SPF, part 2: how to configure SPF for a domain" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2009/11/25/spf-part-2-how-to-configure-spf-for-a-domain/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p><i>(this is part 2 of a series. You should read <a href="http://www.thetlog.net/2009/11/25/spf-part-1-what-is-spf-and-how-to-fight-spam-with-it/">part 1</a> first, and after this post you should read <a href="http://www.thetlog.net/2009/11/26/spf-part-3-configuring-postfix-to-check-spf-records-when-receiving-mail/">part 3</a>.)</i></p>
<p>Suppose you have a domain and send email from it (in fact, even if you don&#8217;t, this is still a good idea; more about that later). How to configure SPF for it?</p>
<p>Easy: you simply add a specially formatted <i>TXT record</i> to the domain. (Where? If you have your own public DNS servers, you&#8217;ll have to edit the zone file<sup><a href="http://www.thetlog.net/2009/11/25/spf-part-2-how-to-configure-spf-for-a-domain/#footnote_0_454" id="identifier_0_454" class="footnote-link footnote-identifier-link" title="note: put the entire record contents between quotes; e.g. for Bind, use dehumanizer.com. IN TXT &quot;v=spf1 a a:mail.dehumanizer.com a:sh.dehumanizer.com a:sh2.dehumanizer.com mx include:netcabo.pt -all&quot; (that&amp;#8217;s a single line) ">1</a></sup>; else, if your domain (note: the domain, not the web server) is maintained by a registrar or ISP, it should provide for you an administration interface where you are able to add and edit records.)</p>
<p><a href="http://www.openspf.org/">OpenSPF.org</a> provides a &#8220;wizard&#8221; to build an SPF TXT record for your domain, and I suggest you try it out. However, I think I can give you an example that is mostly self-explanatory, which is the SPF TXT record for my own dehumanizer.com domain:</p>
<p><code>v=spf1 a a:mail.dehumanizer.com a:sh.dehumanizer.com a:sh2.dehumanizer.com mx include:netcabo.pt -all</code></p>
<p><small>(In fact, that record is kind of overkill; I could remove about half of it and everything would still work. But it&#8217;s useful as an example.)</small></p>
<p><code>v=spf1</code> means it&#8217;s an SPF record.</p>
<p><code>a</code> means that &#8220;dehumanizer.com&#8221; (the host that that name resolves to) is authorized for that domain. I could remove that one, as the following one takes care of it (it&#8217;s the same host).</p>
<p><code>a:mail.dehumanizer.com</code> means that mail.dehumanizer.com is authorized. The same for the following two (sh.dehumanizer.com and sh2.dehumanizer.com; the latter doesn&#8217;t exist anymore, so I could remove it.)</p>
<p><code>mx</code> means that the mx records for the domain are also authorized. They&#8217;re currently mail.dehumanizer.com and sh.dehumanizer.com, which were previously taken care of, so I could remove this one as well.</p>
<p><code>include:netcabo.pt</code> means that whatever is authorized for the netcabo.pt domain is also authorized here. This is from when I used my ISP as a smart host, some time ago; as I no longer do that, I could remove this one too.</p>
<p>Finally, <code>-all</code> means, in effect, that, yes, I&#8217;m serious about this, all of the authorized servers for this domain <i>are</i> listed, which means that any <i>other</i> hosts are unauthorized, and emails coming from them with a &#8220;From:&#8221; of this domain should be <i>refused</i>. You should configure this part only after successfully testing your configuration. Until then, there&#8217;s a &#8220;soft fail&#8221; option, <code>~all</code>, which means the same, but adds &#8220;but don&#8217;t take it seriously.&#8221;</p>
<p>If you&#8217;ve been paying attention, you&#8217;ve probably already noticed that I could replace that record with the much simpler:</p>
<p><code>v=spf1 a:mail.dehumanizer.com a:sh.dehumanizer.com -all</code></p>
<p>for the exact same results (and I&#8217;ll probably do that a bit later today.)</p>
<p>What&#8217;s the benefit of this? Well, as you are telling the world &#8220;mails from my domain come only from my servers&#8221;, the rest of the world will more easily be able to kill mails pretending to be from your domain&#8230; while also &#8220;respecting&#8221; legit mail more. In effect, you tell other servers &#8220;here&#8217;s how you can tell which mails from my domain are genuine&#8221;. Many ISPs and filtering systems (such as SpamAssassin) take advantage of a properly configured SPF record to raise the &#8220;trustworthiness&#8221; of emails coming from the correct servers (while lowering it, or even simply refusing to accept the mail, for messages coming from a server not listed in the SPF record.)</p>
<p>There&#8217;s also another (lesser-known) advantage of using SPF for your domain, when you also receive email <i>to</i> it. But that&#8217;s for part 3, where I&#8217;ll explain how to configure Postfix to look at SPF records when receiving mail&#8230;</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> <ol class="footnotes"><li id="footnote_0_454" class="footnote">note: put the entire record contents between quotes; e.g. for Bind, use <code>dehumanizer.com. IN TXT "v=spf1 a a:mail.dehumanizer.com a:sh.dehumanizer.com a:sh2.dehumanizer.com mx include:netcabo.pt -all"</code> (that&#8217;s a single line) </li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2009/11/25/spf-part-2-how-to-configure-spf-for-a-domain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SPF, part 1: what is SPF, and how to fight spam with it</title>
		<link>http://www.thetlog.net/2009/11/25/spf-part-1-what-is-spf-and-how-to-fight-spam-with-it/</link>
		<comments>http://www.thetlog.net/2009/11/25/spf-part-1-what-is-spf-and-how-to-fight-spam-with-it/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 15:12:51 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[SPF]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/?p=449</guid>
		<description><![CDATA[(Note: this is the first of a series of posts related to email servers and spam. This one is more of a theoretical intro; future posts will delve into the gory details.) (Later note: here are parts 2 and 3.) You may have heard of SPF (Sender Policy Framework), but what is it? To put [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2009/11/25/spf-part-1-what-is-spf-and-how-to-fight-spam-with-it/" data-text="SPF, part 1: what is SPF, and how to fight spam with it" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2009/11/25/spf-part-1-what-is-spf-and-how-to-fight-spam-with-it/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p><i>(Note: this is the first of a series of posts related to email servers and spam. This one is more of a theoretical intro; future posts will delve into the gory details.)</i></p>
<p><i>(Later note: here are parts <a href="http://www.thetlog.net/2009/11/25/spf-part-2-how-to-configure-spf-for-a-domain/">2</a> and <a href="http://www.thetlog.net/2009/11/26/spf-part-3-configuring-postfix-to-check-spf-records-when-receiving-mail/">3</a>.)</i></p>
<p>You may have heard of SPF (<a href="http://en.wikipedia.org/wiki/Sender_Policy_Framework">Sender Policy Framework</a>), but what is it? To put it simply, it&#8217;s a way for domain owners to say to the world: <i>&#8220;these servers are the only ones that send email from this domain.&#8221;</i></p>
<p>What is the point? Well, if you have been using email for any amount of time, you&#8217;ve probably noticed that a lot of spam <i>fakes</i> its sender address (the &#8220;From:&#8221; field). In fact, you may have found yourself that it&#8217;s incredibly easy to do; most SMTP servers simply accept <i>any</i> sender, as long as either 1) the <i>destination</i> address is theirs, or 2) your IP address is on their client list. In other words, a company&#8217;s email server accepts mail to the company&#8217;s employees, and also allows those employees to use it to send mail to the rest of the world.</p>
<p>SPF, when correctly configured by everyone involved, prevents that.</p>
<p>&#8220;Everyone involved&#8221; is, of course, an utopic scenario. Still, there is no reason for you <i>not</i> to do your part, whether you are a domain owner who sends email from that domain, the administrator of an email server that receives mail to its users, or both.</p>
<p>More to come&#8230;</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2009/11/25/spf-part-1-what-is-spf-and-how-to-fight-spam-with-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reading blogs away from the computer</title>
		<link>http://www.thetlog.net/2006/10/08/reading-blogs-away-from-the-computer/</link>
		<comments>http://www.thetlog.net/2006/10/08/reading-blogs-away-from-the-computer/#comments</comments>
		<pubDate>Sat, 07 Oct 2006 23:22:35 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Mobile phones]]></category>
		<category><![CDATA[Mobile phones software]]></category>
		<category><![CDATA[PDAs]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/2006/10/08/reading-blogs-away-from-the-computer/</guid>
		<description><![CDATA[Now that I work at home (and yes, I&#8217;ve been incredibly lazy&#8230; where are the new posts? ahem&#8230; any day now ), I&#8217;ve discovered something about myself: I don&#8217;t like to read stuff on my computer. Sure, I do a lot of that, anyway, but, for instance, there are a lot of blogs that I [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2006/10/08/reading-blogs-away-from-the-computer/" data-text="Reading blogs away from the computer" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2006/10/08/reading-blogs-away-from-the-computer/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p>Now that I work at home <small>(and yes, I&#8217;ve been incredibly lazy&#8230; where are the new posts? ahem&#8230; any day now <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</small>, I&#8217;ve discovered something about myself: <b>I don&#8217;t like to read stuff on my computer</b>.</p>
<p>Sure, I do a lot of that, anyway, but, for instance, there are a lot of blogs that I have subscribed in <a href="http://www.bloglines.com/">Bloglines</a>&#8230; only I usually <i>skip them</i>. It&#8217;s not that I don&#8217;t enjoy the content of those blogs &#8211; I do. I simply tend, repeatedly, to find excuses, other things I&#8217;d rather do at the time, and so on. However, I love to read them in other places &#8211; in bed, in a café, and so on. Whenever I&#8217;m alone, with nothing to do, and away from a computer.</p>
<p>Reading them in a mobile phone or PDA, then, is the logical answer <small>(a laptop is still much too &#8220;PC-like&#8221;, with all its myriad distractions; when you can do <i>everything</i>, sometimes it&#8217;s hard to focus on just what you need to actually do)</small>. I currently use a <a href="http://www.thetlog.net/2005/08/29/nokia-6630/">Nokia 6630</a>, which I&#8217;ve had for more than a year. I&#8217;ve tried several aggregators, and also the <a href="http://m.bloglines.com/">mobile Bloglines</a>, which is accessed through a web browser such as Opera, and, while they work well, they&#8217;re too slow and cumbersome for my tastes. Therefore, I used a combination of <a href="http://newspipe.sourceforge.net/">newspipe</a> <small>(to convert posts from feeds to email messages)</small> and <a href="http://www.lonelycatgames.com/index.php?chapter=profimail">Profimail</a> <small>(to access a mailbox through IMAP)</small>. Recently, I&#8217;ve dumped newspipe for <a href="http://rss2email.infogami.com/">rss2email</a>, for reasons I&#8217;ll mention in a future post, and that&#8217;s what I have right now.</p>
<p>I&#8217;ve been considering other possibilities, though. As I said, a laptop isn&#8217;t a good idea here. I&#8217;d mostly like something a little bigger than the 6630, with a larger and better screen, and possibly a QWERTY keyboard (to do annotations and so on). The <a href="http://europe.nokia.com/phones/e61">Nokia E61</a> seems to fit the bill (and it supports Wi-Fi, which would save me a lot of money in phone bills), though I wouldn&#8217;t like to spend too much money <small>(after all, it&#8217;s mostly a luxury &#8211; I can keep using the 6630, or even battle my distaste for reading on the PC)</small>. A PocketPC (are they still called that, these days?) PDA might also do the trick, though the ones I saw recently would cost an arm and a leg <small>(really, 800 euros!? what are they thinking?)</small>.</p>
<p>So, any suggestions / tips? <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2006/10/08/reading-blogs-away-from-the-computer/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>ProfiMail and the Gmail &quot;untrusted certificate&quot;</title>
		<link>http://www.thetlog.net/2006/07/31/profimail-and-the-gmail-untrusted-certificate/</link>
		<comments>http://www.thetlog.net/2006/07/31/profimail-and-the-gmail-untrusted-certificate/#comments</comments>
		<pubDate>Mon, 31 Jul 2006 10:40:21 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Mobile phones]]></category>
		<category><![CDATA[Mobile phones software]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/2006/07/31/profimail-and-the-gmail-untrusted-certificate/</guid>
		<description><![CDATA[If you read your email on a Series 60 phone, you probably use ProfiMail, a very nice mobile email client. However, when you configure it to access a Gmail account, you will always get the &#8220;This site uses an untrusted certificate&#8221; message. Quite annoying, since it requires 2 key presses to pass. Every single time. [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2006/07/31/profimail-and-the-gmail-untrusted-certificate/" data-text="ProfiMail and the Gmail &quot;untrusted certificate&quot;" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2006/07/31/profimail-and-the-gmail-untrusted-certificate/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p>If you read your email on a Series 60 phone, you probably use <a href="http://www.lonelycatgames.com/index.php?chapter=profimail">ProfiMail</a>, a very nice mobile email client.</p>
<p>However, when you configure it to access a Gmail account, you will always get the <i>&#8220;This site uses an untrusted certificate&#8221;</i> message. Quite annoying, since it requires 2 key presses to pass. <i>Every single time</i>. There&#8217;s no option for &#8220;I know, just ignore it from now on&#8221;.</p>
<p>The cause of the problem is that Series 60 phones, much like web browsers, have a list of trusted <b>root certificates</b>, and the one Gmail uses, from Equifax, isn&#8217;t in it.</p>
<p>How to fix it? I search around, and didn&#8217;t find a single page with instructions on how to solve this thing. But, by combining <a href="http://librestuff.blogspot.com/2006/05/untrusted-certificate-gmail-on-nokias.html">this</a> and <a href="http://notbrainsurgery.livejournal.com/27558.html">this</a>, I was able to remove that annoying prompt for good.</p>
<p>Here&#8217;s how to do it:</p>
<ul>
<li>Using the phone&#8217;s browser (Opera also works), browse to <a href="http://www.ocasta.co.uk/cert.html">http://www.ocasta.co.uk/cert.html</a>. Click on the only link on that page.</li>
<li>It should prompt you to install the certificate. Accept it.</li>
<li>It should ask you what you want to trust the certificate for. Choose <b>&#8220;Internet&#8221;</b>.</li>
</ul>
<p>This works on my Nokia 6630. Other phones may simply install the certificate, after which you have to go to <b>Settings</b>, <b>Security</b>, <b>Certificate Management</b>, and set the new Equifax certificate as <b>&#8220;Trusted&#8221;</b>.</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2006/07/31/profimail-and-the-gmail-untrusted-certificate/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>An Anti-Spam gateway #11: amavisd-new and Postfix</title>
		<link>http://www.thetlog.net/2006/03/27/an-anti-spam-gateway-11-amavisd-new-and-postfix/</link>
		<comments>http://www.thetlog.net/2006/03/27/an-anti-spam-gateway-11-amavisd-new-and-postfix/#comments</comments>
		<pubDate>Mon, 27 Mar 2006 09:34:01 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/2006/03/27/an-anti-spam-gateway-11-amavisd-new-and-postfix/</guid>
		<description><![CDATA[(NOTE: this is part of the &#8220;An Anti-Spam gateway&#8221; series) Not much longer, now&#8230; Add the following line to /etc/postfix/main.cf: content_filter=smtp-amavis:[127.0.0.1]:10024 and the following lines to /etc/postfix/master.cf: # amavisd-new smtp-amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2006/03/27/an-anti-spam-gateway-11-amavisd-new-and-postfix/" data-text="An Anti-Spam gateway #11: amavisd-new and Postfix" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2006/03/27/an-anti-spam-gateway-11-amavisd-new-and-postfix/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p><i>(NOTE: this is part of the <a href="http://www.thetlog.net/an-anti-spam-gateway/">&#8220;An Anti-Spam gateway&#8221; series</a>)</i></p>
<p>Not much longer, now&#8230; <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Add the following line to <code>/etc/postfix/main.cf</code>:</p>
<p><code><small>content_filter=smtp-amavis:[127.0.0.1]:10024</small></code></p>
<p>and the following lines to <code>/etc/postfix/master.cf</code>:</p>
<p><code><small># amavisd-new<br />
smtp-amavis unix -      -       n       -       2  smtp<br />
    -o smtp_data_done_timeout=1200<br />
    -o smtp_send_xforward_command=yes<br />
    -o disable_dns_lookups=yes</small></code></p>
<p><code><small>127.0.0.1:10025 inet n  -       n       -       -  smtpd<br />
    -o content_filter=<br />
    -o local_recipient_maps=<br />
    -o relay_recipient_maps=<br />
    -o smtpd_restriction_classes=<br />
    -o smtpd_client_restrictions=<br />
    -o smtpd_helo_restrictions=<br />
    -o smtpd_sender_restrictions=<br />
    -o smtpd_recipient_restrictions=permit_mynetworks,reject<br />
    -o mynetworks=127.0.0.0/8<br />
    -o strict_rfc821_envelopes=yes<br />
    -o smtpd_error_sleep_time=0<br />
    -o smtpd_soft_error_limit=1001<br />
    -o smtpd_hard_error_limit=1000<br />
    -o receive_override_options=no_header_body_checks</small></code></p>
<p>(re)Start postfix. It should be listening on two ports now: 25 and 10025.</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2006/03/27/an-anti-spam-gateway-11-amavisd-new-and-postfix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Anti-Spam gateway #10: amavisd-new</title>
		<link>http://www.thetlog.net/2006/03/01/an-anti-spam-gateway-10-amavisd-new/</link>
		<comments>http://www.thetlog.net/2006/03/01/an-anti-spam-gateway-10-amavisd-new/#comments</comments>
		<pubDate>Wed, 01 Mar 2006 08:56:55 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/2006/03/01/an-anti-spam-gateway-10-amavisd-new/</guid>
		<description><![CDATA[(NOTE: this is part of the &#8220;An Anti-Spam gateway&#8221; series) Go to the amavisd-new site and download the latest version (2.3.3 at the time of writing). Uncompress it somewhere, then copy amavisd to /usr/local/sbin (for instance), and amavisd.conf to /etc. Edit the /etc/amavisd.conf file. Add the following lines to the end: $daemon_user = 'amavis'; $daemon_group [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2006/03/01/an-anti-spam-gateway-10-amavisd-new/" data-text="An Anti-Spam gateway #10: amavisd-new" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2006/03/01/an-anti-spam-gateway-10-amavisd-new/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p><i>(NOTE: this is part of the <a href="http://www.thetlog.net/an-anti-spam-gateway/">&#8220;An Anti-Spam gateway&#8221; series</a>)</i></p>
<p>Go to <a href="http://www.ijs.si/software/amavisd/">the amavisd-new site</a> and download the latest version (2.3.3 at the time of writing). Uncompress it somewhere, then copy <code>amavisd</code> to <code>/usr/local/sbin</code> (for instance), and <code>amavisd.conf</code> to <code>/etc</code>.</p>
<p>Edit the <code>/etc/amavisd.conf</code> file. Add the following lines to the end:</p>
<p><code><small>$daemon_user  = 'amavis';<br />
$daemon_group = 'amavis';<br />
$mydomain = 'YOURDOMAIN';   # replace with your own domain, of course<br />
$virus_quarantine_method = '';<br />
$spam_quarantine_method = '';<br />
$banned_files_quarantine_method = '';<br />
$bad_header_quarantine_method = '';<br />
$sa_tag_level_deflt  = -202.0;<br />
$sa_tag2_level_deflt = 8.31;<br />
$sa_kill_level_deflt = 50;<br />
$sa_dsn_cutoff_level = 50;<br />
$mailfrom_notify_admin = "YOUR EMAIL"; # add \ before the @, as in cats\@allyourbase.com<br />
$mailfrom_notify_recip = "YOUR EMAIL"; # add \ before the @, as in cats\@allyourbase.com<br />
$mailfrom_notify_spamadmin = "YOUR EMAIL";# add \ before the @, as in cats\@allyourbase.com<br />
$final_virus_destiny = D_DISCARD;<br />
$final_banned_destiny = D_DISCARD;<br />
$final_spam_destiny = D_DISCARD;<br />
$final_bad_header_destiny = D_PASS; # many badly configured servers out there<br />
$warnvirusrecip = 1;<br />
$warnbannedrecip = 1;</small></code></p>
<p>(a few lines may have wrapped around in the above. They all start with &#8220;<code>$</code>&#8220;)</p>
<p>Create the following directories, making sure they belong to user and group <code>amavis</code>:</p>
<p><code><small>/var/amavis/tmp<br />
/var/amavis/var,<br />
/var/amavis/db</small></code></p>
<p>Run <code>amavisd</code>, and check if it&#8217;s listening in port 10024. If not, there should be some error message telling you what the problem (in <code>/etc/amavisd.conf</code>) is.</p>
<p>We&#8217;re almost done, now. Next: configuring Postfix to work with amavisd-new.</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2006/03/01/an-anti-spam-gateway-10-amavisd-new/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Anti-Spam gateway #9: ClamAV</title>
		<link>http://www.thetlog.net/2006/02/28/an-anti-spam-gateway-9-clamav/</link>
		<comments>http://www.thetlog.net/2006/02/28/an-anti-spam-gateway-9-clamav/#comments</comments>
		<pubDate>Tue, 28 Feb 2006 15:28:11 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/2006/02/28/an-anti-spam-gateway-9-clamav/</guid>
		<description><![CDATA[(NOTE: this is part of the &#8220;An Anti-Spam gateway&#8221; series) Now for the anti-virus. Go to the ClamAV site, download the latest stable version, uncompress it, then compile and install it: ./configure --with-user=amavis --with-group=amavis --sysconfdir=/etc make make install (note: 3 lines. The first one ends with &#8220;&#8211;sysconfdir=/etc&#8221;) Edit the /etc/freshclam.conf file. At the end, add [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2006/02/28/an-anti-spam-gateway-9-clamav/" data-text="An Anti-Spam gateway #9: ClamAV" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2006/02/28/an-anti-spam-gateway-9-clamav/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p><i>(NOTE: this is part of the <a href="http://www.thetlog.net/an-anti-spam-gateway/">&#8220;An Anti-Spam gateway&#8221; series</a>)</i></p>
<p>Now for the anti-virus. Go to <a href="http://www.clamav.net">the ClamAV site</a>, download the latest stable version, uncompress it, then compile and install it:</p>
<p><code>./configure --with-user=amavis --with-group=amavis --sysconfdir=/etc<br />
make<br />
make install</code></p>
<p><small>(note: 3 lines. The first one ends with &#8220;&#8211;sysconfdir=/etc&#8221;)</small></p>
<p>Edit the <code>/etc/freshclam.conf</code> file. At the end, add the following line:</p>
<p><code>DatabaseMirror db.XY.clamav.net</code></p>
<p>replacing the XX with your country code (e.g. &#8220;us&#8221;, &#8220;uk&#8221;, &#8220;pt&#8221;, etc.)</p>
<p>Now, edit the <code>/etc/clamd.conf</code> file.</p>
<p>Near the beginning, comment out or delete the &#8220;Example&#8221; line. Then, add the following lines at the end:</p>
<p><code>TCPAddr 127.0.0.1<br />
User amavis</code></p>
<p>Test if ClamAV is able to update itself:</p>
<p><code>freshclam --log-verbose</code></p>
<p>If there are any problems, it should tell you.</p>
<p>Finally, make it so that</p>
<p><code>/usr/local/bin/freshclam -d</code></p>
<p>(note the &#8220;-d&#8221;)</p>
<p>and</p>
<p><code>/usr/local/sbin/clamd</code></p>
<p>are run when the system boots. That will depend on your Unix variant.</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2006/02/28/an-anti-spam-gateway-9-clamav/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Anti-Spam gateway #8: MySQL and SpamAssassin</title>
		<link>http://www.thetlog.net/2006/02/06/an-anti-spam-gateway-8-mysql-and-spamassassin/</link>
		<comments>http://www.thetlog.net/2006/02/06/an-anti-spam-gateway-8-mysql-and-spamassassin/#comments</comments>
		<pubDate>Mon, 06 Feb 2006 14:36:58 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/2006/02/06/an-anti-spam-gateway-8-mysql-and-spamassassin/</guid>
		<description><![CDATA[(NOTE: this is part of the &#8220;An Anti-Spam gateway&#8221; series) Thought I&#8217;d forgotten about this one, didn&#8217;t you? Ready to make SpamAssassin actually use MySQL for the bayes database? Start by creating the database itself: mysql CREATE DATABASE bayes; GRANT ALL PRIVILEGES on bayes.* TO bayes@localhost IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES on bayes.* TO [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2006/02/06/an-anti-spam-gateway-8-mysql-and-spamassassin/" data-text="An Anti-Spam gateway #8: MySQL and SpamAssassin" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2006/02/06/an-anti-spam-gateway-8-mysql-and-spamassassin/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p><i>(NOTE: this is part of the <a href="http://www.thetlog.net/an-anti-spam-gateway/">&#8220;An Anti-Spam gateway&#8221; series</a>)</i></p>
<p><small>Thought I&#8217;d forgotten about this one, didn&#8217;t you? <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </small></p>
<p>Ready to make SpamAssassin actually use MySQL for the bayes database?</p>
<p>Start by creating the database itself:</p>
<p><small><code>mysql<br />
CREATE DATABASE bayes;<br />
GRANT ALL PRIVILEGES on bayes.* TO bayes@localhost IDENTIFIED BY 'password';<br />
GRANT ALL PRIVILEGES on bayes.* TO bayes@10.0.0.1 IDENTIFIED BY 'password';<br />
EXIT</code></small></p>
<p>changing <i>password</i> to something else, of course</p>
<p>Next, I know you&#8217;ve already installed SpamAssassin using CPAN, but go to <a href="http://www.spamassassin.org">www.spamassassin.org</a> and download it manually; you&#8217;ll be needing a file from the distribution, and while it should still be in <code>/root/.CPAN</code>, it&#8217;s simpler this way. Uncompress the .tar.gz and go to the <code>sql/</code> directory. Then type:</p>
<p><small><code>mysql -u bayes -p &lt; bayes_mysql.sql</code></small></p>
<p>It&#8217;ll ask for a password, which is the one you used when creating the database.</p>
<p>Now, edit the file <code>/etc/mail/spamassassin/local.cf</code>. Add the following lines:</p>
<p><small><code>bayes_store_module                 Mail::SpamAssassin::BayesStore::MySQL<br />
bayes_sql_dsn                      DBI:mysql:bayes:localhost<br />
bayes_sql_username                 bayes<br />
bayes_sql_password                 password</code></small></p>
<p>(again, replace <i>password</i> with the proper one.)</p>
<p>SpamAssassin is now configured to store bayes data on MySQL. Wasn&#8217;t too hard, was it? <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2006/02/06/an-anti-spam-gateway-8-mysql-and-spamassassin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thunderbird 1.5 relased</title>
		<link>http://www.thetlog.net/2006/01/13/thunderbird-15-relased/</link>
		<comments>http://www.thetlog.net/2006/01/13/thunderbird-15-relased/#comments</comments>
		<pubDate>Fri, 13 Jan 2006 12:12:32 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>
		<category><![CDATA[Windows software]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/2006/01/13/thunderbird-15-relased/</guid>
		<description><![CDATA[Much like Firefox, the last RC &#8211; in this case, 1.5 RC 2 &#8211; is the same as the final version. If you already have that one, you have the latest Thunderbird. For everyone else, you can get Thunderbird here. Copyright &#169; 2012 The Tlog - a technology blog]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2006/01/13/thunderbird-15-relased/" data-text="Thunderbird 1.5 relased" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2006/01/13/thunderbird-15-relased/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p>Much like Firefox, the last RC &#8211; in this case, 1.5 RC 2 &#8211; is the same as the final version. If you already have that one, you have the latest Thunderbird.</p>
<p>For everyone else, you can <a href="http://getthunderbird.com/">get Thunderbird here</a>.</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2006/01/13/thunderbird-15-relased/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thunderbird 1.5 RC 1 released</title>
		<link>http://www.thetlog.net/2005/11/07/thunderbird-15-rc-1-released/</link>
		<comments>http://www.thetlog.net/2005/11/07/thunderbird-15-rc-1-released/#comments</comments>
		<pubDate>Mon, 07 Nov 2005 10:42:10 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>
		<category><![CDATA[Windows software]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/?p=162</guid>
		<description><![CDATA[Ricardo got there first this time. Mozilla Thunderbird 1.5 RC1 is out, and can be downloaded here. Or you can try the auto-update. I&#8217;m using it right now, at work (on Linux). Copyright &#169; 2012 The Tlog - a technology blog]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2005/11/07/thunderbird-15-rc-1-released/" data-text="Thunderbird 1.5 RC 1 released" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2005/11/07/thunderbird-15-rc-1-released/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p><a href="http://www.odrakir.com/blog/?p=152">Ricardo</a> got there first this time. <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  <a href="http://www.mozilla.org/products/thunderbird/releases/1.5.html">Mozilla Thunderbird 1.5 RC1</a> is out, and can be downloaded <a href="http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/1.5rc1/">here</a>. Or you can try the auto-update.</p>
<p>I&#8217;m using it right now, at work (on Linux).</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2005/11/07/thunderbird-15-rc-1-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Anti-Spam gateway #7: MySQL</title>
		<link>http://www.thetlog.net/2005/10/14/an-anti-spam-gateway-7-mysql/</link>
		<comments>http://www.thetlog.net/2005/10/14/an-anti-spam-gateway-7-mysql/#comments</comments>
		<pubDate>Fri, 14 Oct 2005 11:57:44 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/?p=125</guid>
		<description><![CDATA[(NOTE: this is part of the &#8220;An Anti-Spam gateway&#8221; series) Time for MySQL. We&#8217;ll be using it just for storing the bayes tokens, not for per-user configuration (because, in this case, there is none) or anything else. Note: if you already have a working MySQL on the server, being used for something else (this isn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2005/10/14/an-anti-spam-gateway-7-mysql/" data-text="An Anti-Spam gateway #7: MySQL" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2005/10/14/an-anti-spam-gateway-7-mysql/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p><i>(NOTE: this is part of the <a href="http://www.thetlog.net/an-anti-spam-gateway/">&#8220;An Anti-Spam gateway&#8221; series</a>)</i></p>
<p>Time for MySQL. We&#8217;ll be using it just for storing the bayes tokens, not for per-user configuration (because, in this case, there is none) or anything else.</p>
<p><b>Note: </b> if you already have a working MySQL on the server, being used for something else (this isn&#8217;t Windows, you <i>can</i> use the same machine for several different things <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ), just skip to the next part.</p>
<p>So, go to <a href="http://dev.mysql.com/downloads/">http://dev.mysql.com/downloads/</a>, choose the General Availability Release (it&#8217;s the top one &#8211; at this moment, it&#8217;s version 5.0), then scroll down <i>a lot</i> until you find the <b>Source Downloads</b>. Get the .tar.gz file. Uncompress it, enter the directory, and then&#8230;</p>
<p><code>export CFLAGS="-O2"<br />
export CXXFLAGS="-O2 -fno-exceptions -fno-rtti"<br />
./configure --prefix=/usr/local --localstatedir=/var/mysql --sysconfdir=/etc --without-innodb</code></p>
<p>(note: your browser may have split the &#8220;./configure&#8221; line in two. It starts with &#8220;./configure&#8221;, and ends with &#8220;&#8211;without-innodb&#8221;.)</p>
<p>then do the usual</p>
<p><code>make<br />
make install</code></p>
<p>If everything went well,</p>
<p><code>mysql_install_db</code></p>
<p>and start the server with:</p>
<p><code>mysqld_safe --user=mysql &#038;</code></p>
<p>Then assign a password to the MySQL <code>root</code> account (which is <b><i>not</i></b> the OS&#8217;s root account!):</p>
<p><code>mysqladmin -u root password "newpwd"<br />
mysqladmin -u root -h host_name password "newpwd"</code></p>
<p>Replace &#8220;host_name&#8221; with the correct one, and &#8220;newpwd&#8221; with something else, of course.</p>
<p>Now, for efficiency, you should have an <code>/etc/my.cnf</code> file with several options set manually. The MySQL sources include some examples in the <code>support-files</code> directory: <code>my-small.cnf</code>, <code>my-medium.cnf</code>, etc.. Copy one to <code>/etc/my.cnf</code>, edit it, then restart the server. Nope, I won&#8217;t give detailed instructions for that here&#8230; read the MySQL docs at <a href="http://www.mysql.com">http://www.mysql.com</a>.</p>
<p>Next: how to create the bayes database, and how to configure SpamAssassin to use it.</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2005/10/14/an-anti-spam-gateway-7-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Anti-Spam gateway #6: Razor</title>
		<link>http://www.thetlog.net/2005/10/13/an-anti-spam-gateway-6-razor/</link>
		<comments>http://www.thetlog.net/2005/10/13/an-anti-spam-gateway-6-razor/#comments</comments>
		<pubDate>Wed, 12 Oct 2005 23:40:52 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/?p=120</guid>
		<description><![CDATA[(NOTE: this is part of the &#8220;An Anti-Spam gateway&#8221; series) Vipul&#8217;s Razor is a piece of software for accessing a large database of spam messages. By installing it, and configuring SpamAssassin to use it, you can, among SpamAssassin&#8217;s other tests, see whether a particular message has been previously reported as spam by other people. You [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2005/10/13/an-anti-spam-gateway-6-razor/" data-text="An Anti-Spam gateway #6: Razor" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2005/10/13/an-anti-spam-gateway-6-razor/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p><i>(NOTE: this is part of the <a href="http://www.thetlog.net/an-anti-spam-gateway/">&#8220;An Anti-Spam gateway&#8221; series</a>)</i></p>
<p><a href="http://razor.sourceforge.net/">Vipul&#8217;s Razor</a> is a piece of software for accessing a large database of spam messages. By installing it, and configuring SpamAssassin to use it, you can, among SpamAssassin&#8217;s other tests, see whether a particular message has been previously reported as spam by other people. You can also report messages yourself.</p>
<p>It&#8217;s not a perfect system, but the best way to use SpamAssassin is by combining several methods of checking spam. This is simply one more.</p>
<p><b>Note: </b> although I have previously said that I won&#8217;t be offering different alternatives, as this is a &#8220;recipe&#8221;, for Razor I&#8217;ll make an exception. If you don&#8217;t want to use it, simply skip this part and move on to the next.</p>
<p><span id="more-120"></span><br />
You&#8217;re still here? <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Fine, let&#8217;s move on. Go to CPAN&#8217;s shell again with the command:<br />
<code>perl -MCPAN -e shell</code></p>
<p>then type in the following commands, to install some more Perl modules:</p>
<p><code>install Time::HiRes<br />
install Digest::SHA1<br />
install Test::Simple<br />
install Test::Harness<br />
install Getopt::Long<br />
install File::Copy<br />
install URI::Escape<br />
quit</code></p>
<p>Again, it&#8217;s possible that some are already installed, and it&#8217;s also possible that some ask for dependencies; if so, say that, yes, indeed, you know what you&#8217;re doing <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  and that you really, certainly, indeed, want to install them.</p>
<p>Now, go to <a href="http://razor.sourceforge.net/">http://razor.sourceforge.net/</a>, and download &#8220;<code>razor-agents</code>&#8220;. Just that one, not the <code>-sdk</code> file. Uncompress it, enter the directory, then:</p>
<p><code><br />
perl Makefile.PL<br />
make<br />
make install<br />
</code></p>
<p>It&#8217;s installed, now. But we have to configure something more, and, first, we need to create an user. Let&#8217;s call it &#8220;<code>amavis</code>&#8220;, since it will be amavisd-new which will be running the show, and, therefore, everything except Postfix itself will run as that user.</p>
<p>So, create a group &#8220;<code>amavis</code>&#8221; and an user &#8220;<code>amavis</code>&#8221; with that group as its main group, and <code>/var/amavis</code> as its home directory. Come on, you don&#8217;t need help with this one, do you? <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Then <code>su</code> to that user.</p>
<p>Now, execute the following (as user &#8220;<code>amavis</code>):</p>
<p><code>razor-admin -register</code></p>
<p>Finally (for SpamAssassin 3.1 or greater) , go back to root and edit the file <code>/etc/mail/spamassassin/v310.pre</code>. Uncomment the following line</p>
<p><code>#loadplugin Mail::SpamAssassin::Plugin::Razor2</code></p>
<p>by removing the &#8220;<code>#</code>&#8221; from the beginning.</p>
<p>There. Next part: MySQL.</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2005/10/13/an-anti-spam-gateway-6-razor/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>An Anti-Spam gateway #5: SpamAssassin</title>
		<link>http://www.thetlog.net/2005/10/12/an-anti-spam-gateway-5-spamassassin/</link>
		<comments>http://www.thetlog.net/2005/10/12/an-anti-spam-gateway-5-spamassassin/#comments</comments>
		<pubDate>Wed, 12 Oct 2005 12:52:44 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/?p=116</guid>
		<description><![CDATA[(NOTE: this is part of the &#8220;An Anti-Spam gateway&#8221; series) Installing SpamAssassin isn&#8217;t too hard, thanks to Perl&#8216;s CPAN. First, type the following: perl -MCPAN -e shell If it&#8217;s the first time you do that, it will ask you a bunch of questions. Accept the defaults, and when asked about where to download from, try [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2005/10/12/an-anti-spam-gateway-5-spamassassin/" data-text="An Anti-Spam gateway #5: SpamAssassin" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2005/10/12/an-anti-spam-gateway-5-spamassassin/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p><i>(NOTE: this is part of the <a href="http://www.thetlog.net/an-anti-spam-gateway/">&#8220;An Anti-Spam gateway&#8221; series</a>)</i></p>
<p>Installing SpamAssassin isn&#8217;t too hard, thanks to <a href="http://www.perl.com">Perl</a>&#8216;s CPAN.</p>
<p>First, type the following:<br />
<code>perl -MCPAN -e shell</code></p>
<p>If it&#8217;s the first time you do that, it will ask you a bunch of questions. Accept the defaults, and when asked about where to download from, try to pick a couple of places near you. When you finally get to the command prompt, it&#8217;s time to install the modules.</p>
<p>Now, we could simply tell it to install SpamAssassin, and it would install all the <b>required</b> modules for it. But we&#8217;ll want to install some <b>optional</b> ones as well, so, do the following (one at a time, naturally), saying &#8220;yes&#8221; whenever it asks you if you want to install a pre-requisite (note, also, that some of the modules may already be installed &#8211; if so, just move on to the next one):</p>
<p><code>install MIME::Base64<br />
install DB_File<br />
install Net::DNS<br />
install Net::SMTP<br />
install DBI<br />
install LWP<br />
install Compress::Zlib<br />
install IO::Zlib<br />
install Archive::Tar<br />
install Mail::SpamAssassin<br />
</code></p>
<p>There are 2 still missing, related to MySQL, but we haven&#8217;t installed MySQL yet, so&#8230; just type <code>quit</code> to exit the CPAN shell.</p>
<p>Onward to Razor, in the next part.</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2005/10/12/an-anti-spam-gateway-5-spamassassin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Anti-Spam gateway #4: Postfix, part 2</title>
		<link>http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-4-postfix-part-2/</link>
		<comments>http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-4-postfix-part-2/#comments</comments>
		<pubDate>Tue, 11 Oct 2005 17:05:11 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/?p=115</guid>
		<description><![CDATA[(NOTE: this is part of the &#8220;An Anti-Spam gateway&#8221; series) Continuing the Postfix configuration&#8230; Edit the /etc/postfix/main.cf file. Look for, and change according to your configuration, the following options: myhostname (should be your machine&#8217;s name) myorigin (probably $mydomain) mynetworks (your network(s), possibly 10.0.0.0/24 in this case) relay_domains (should be, of course, your domain(s)) bounce_notice_recipient, delay_notice_recipient, [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-4-postfix-part-2/" data-text="An Anti-Spam gateway #4: Postfix, part 2" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-4-postfix-part-2/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p><i>(NOTE: this is part of the <a href="http://www.thetlog.net/an-anti-spam-gateway/">&#8220;An Anti-Spam gateway&#8221; series</a>)</i></p>
<p>Continuing the Postfix configuration&#8230; Edit the <code>/etc/postfix/main.cf</code> file.</p>
<p>Look for, and change according to your configuration, the following options:</p>
<p><code>myhostname</code> (should be your machine&#8217;s name)</p>
<p><code>myorigin</code> (probably <code>$mydomain</code>)</p>
<p><code>mynetworks</code> (your network(s), possibly <code>10.0.0.0/24</code> in this case)</p>
<p><code>relay_domains</code> (should be, of course, your domain(s))</p>
<p><code>bounce_notice_recipient</code>, <code>delay_notice_recipient</code>, <code>error_notice_recipient</code>, <code>policy_notice_recipient</code> (change them all to <code>postmaster@yourdomain</code>, assuming that address exists or is an alias to an existing one &#8211; possibly yours, and replacing <code>yourdomain</code> with your domain, of course)</p>
<p>Change the <code>smtpd_client_restrictions</code> option to:<br />
<code>&nbsp; smtpd_client_restrictions = permit_mynetworks,<br />
&nbsp;&nbsp;   reject_rbl_client relays.ordb.org,<br />
&nbsp;&nbsp;   reject_rbl_client sbl.spamhaus.org,<br />
&nbsp;&nbsp;   permit</code></p>
<p>Change <code>smtpd_helo_required</code> to <code>yes</code>. Mail servers should learn to behave. Besides, it&#8217;s bulk spam senders that normally don&#8217;t.</p>
<p>Now, save that file, and edit <code>/etc/postfix/transport</code>. Except for the comments, it should be changed so that it only has this line:</p>
<p><code>*    &nbsp;&nbsp;&nbsp;    &nbsp;             smtp:10.0.0.2</code></p>
<p>(remember? that&#8217;s the real mail server&#8217;s address)</p>
<p>Leave the editor, then do the following: <code>postmap /etc/postfix/transport</code>, to update the <code>transport.db</code> file.</p>
<p>Now, test it. Yes, when you start it (<code>postfix start</code>), if everything went well, it should already be working as a non-filtering gateway. Assuming, of course, that you configure your firewall so that mail from the outside (to port 25) is delivered there, and that it can connect to the real mail server, and that the latter accepts mail from the gateway.</p>
<p>When it&#8217;s working, go to the next part of the series. <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-4-postfix-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Anti-Spam gateway #3: Postfix</title>
		<link>http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-3-postfix/</link>
		<comments>http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-3-postfix/#comments</comments>
		<pubDate>Tue, 11 Oct 2005 16:44:31 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/?p=114</guid>
		<description><![CDATA[(NOTE: this is part of the &#8220;An Anti-Spam gateway&#8221; series) So, at last, we&#8217;re getting our hands dirty. It&#8217;s time to separate the boys from the men, or something. Now, as I was writing this, I had a decision to make. Should this part, called &#8220;Postfix&#8221;, include all the Postfix-related instructions, which will produce a [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-3-postfix/" data-text="An Anti-Spam gateway #3: Postfix" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-3-postfix/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p><i>(NOTE: this is part of the <a href="http://www.thetlog.net/an-anti-spam-gateway/">&#8220;An Anti-Spam gateway&#8221; series</a>)</i></p>
<p>So, at last, we&#8217;re getting our hands dirty. It&#8217;s time to separate the boys from the men, or something. <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Now, as I was writing this, I had a decision to make. Should this part, called &#8220;Postfix&#8221;, include <b>all</b> the Postfix-related instructions, which will produce a non-working, non-testable mail server until the rest of the stuff is installed? Or should this part have enough to create a standard gateway, not depending (yet) on SpamAssassin, ClamAV and the rest &#8211; and, only in THOSE parts, will the instructions for configuring Postfix to use them appear?</p>
<p>I&#8217;ve decided to do it the latter way. It&#8217;s important to be able to test each part of the gateway as you install it, instead of doing everything and only &#8220;turning it on&#8221; at the end, with a myriad possible points of failure.</p>
<p>So, to install Postfix: go to <a href="http://www.postfix.org/download.html">http://www.postfix.org/download.html</a>, choose the closest mirror, and download the most recent <i>stable</i> version of Postfix (at this time, it&#8217;s 2.2 patchlevel 5, or 2.2.5). Uncompress it, enter its directory, and then&#8230;</p>
<p><code>AUXLIBS='-ldb' CCARGS='-DHAS_DB' OPT='-O2' DEBUG='' make</code><br />
<code>AUXLIBS='-ldb' CCARGS='-DHAS_DB' OPT='-O2' DEBUG='' make install</code></p>
<p>There, an installed Postfix. (accept the defaults at the end.) The configuration files are at <code>/etc/postfix</code>, so let&#8217;s go there and make a few changes to <code>main.cf</code>&#8230; in the next part, since this one is becoming too long.</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-3-postfix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Anti-Spam gateway #2: A note about compiling on Linux</title>
		<link>http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-2-a-note-about-compiling-on-linux/</link>
		<comments>http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-2-a-note-about-compiling-on-linux/#comments</comments>
		<pubDate>Tue, 11 Oct 2005 15:16:33 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Unix / Linux / *BSD]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/?p=113</guid>
		<description><![CDATA[(NOTE: this is part of the &#8220;An Anti-Spam gateway&#8221; series) These days, most Linux distributions, especially the RPM-based ones like Fedora, Red Hat or SUSE, increasingly assume that &#8220;nobody compiles stuff anymore&#8221;. Due to that, they don&#8217;t install, by default, the development parts of most libraries and applications. An example: by default, a distro will [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-2-a-note-about-compiling-on-linux/" data-text="An Anti-Spam gateway #2: A note about compiling on Linux" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-2-a-note-about-compiling-on-linux/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p><i>(NOTE: this is part of the <a href="http://www.thetlog.net/an-anti-spam-gateway/">&#8220;An Anti-Spam gateway&#8221; series</a>)</i></p>
<p>These days, most Linux distributions, especially the RPM-based ones like Fedora, Red Hat or SUSE, increasingly assume that <i>&#8220;nobody compiles stuff anymore&#8221;</i>. Due to that, they don&#8217;t install, by default, the development parts of most libraries and applications.</p>
<p>An example: by default, a distro will install OpenSSL, with the <code>openssl</code> package. But that&#8217;s the library files <i>only</i>. It &#8220;gives&#8221; OpenSSL to other RPMs that need it, but, when you try to compile any program to use OpenSSL, it will fail (or, possibly worse &#8211; it will compile, but <i><b>without</b></i> OpenSSL support, and you may fail to notice it), because you are missing the header files. </p>
<p>They&#8217;re in the <code>openssl-devel</code> package.</p>
<p>So, from now on, through the rest of this series, pay attention when compiling (mostly in the <code>./configure</code> part). If it fails, or if it passes but says that you are missing an important library, the thing to do is probably to look for the missing <code>*-devel</code> package, and install it.</p>
<p>Incidentally, this is not a problem in the BSDs.</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-2-a-note-about-compiling-on-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>An Anti-Spam gateway #1: Initial stuff</title>
		<link>http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-1-initial-stuff/</link>
		<comments>http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-1-initial-stuff/#comments</comments>
		<pubDate>Tue, 11 Oct 2005 14:47:47 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/?p=112</guid>
		<description><![CDATA[(NOTE: this is part of the &#8220;An Anti-Spam gateway&#8221; series) Before we begin to actually get our hands dirty , here are a few things to note: As I said in the introduction, this is a recipe, not a reference manual. There are certainly many other ways to do something like this, but I won&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-1-initial-stuff/" data-text="An Anti-Spam gateway #1: Initial stuff" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-1-initial-stuff/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p><i>(NOTE: this is part of the <a href="http://www.thetlog.net/an-anti-spam-gateway/">&#8220;An Anti-Spam gateway&#8221; series</a>)</i></p>
<p>Before we begin to actually get our hands dirty <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , here are a few things to note:</p>
<ul>
<li>As I said in the introduction, this is a recipe, not a reference manual. There are certainly many other ways to do something like this, but I won&#8217;t be exploring them.</li>
<li>I&#8217;m not explaining basic stuff like <i>&#8220;to uncompress a .tar.gz file, type <code>tar xzf filename</code>&#8220;</i>. If you don&#8217;t know things like that, this series really isn&#8217;t for you. Sorry about that.</li>
<li>The required hardware depends on the company / organization size, and on how much mail you receive. A Pentium III with 128 MB of RAM is more than enough for a company with 1000 employees. No, that&#8217;s not a typo &#8211; if you&#8217;re not using Windows or Oracle (yuck), you don&#8217;t need 64-CPU supercomputers with terabytes of RAM. <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>The operating system should be a Unix-like system with a C compiler such as <a href="http://gcc.gnu.org">gcc</a>. Most Linux distributions include everything you need, although you may have to manually select the &#8220;Development&#8221; packages during installation, or add them later. Other alternatives include <a href="http://www.openbsd.org">OpenBSD</a> (my personal favorite, and the server this blog runs on), <a href="http://www.freebsd.org">FreeBSD</a>, <a href="http://www.netbsd.org">NetBSD</a>, <a href="http://www.sun.com/software/solaris/">Solaris</a>, etc.. Anything but Windows or SCO. <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>I will be compiling most of the software manually. Using packages (such as RPMs, or BSD ports) is possible, but they may not activate some needed option by default. It&#8217;s up to you.</li>
<li>This machine will be a gateway &#8212; that is, it won&#8217;t have mailboxes, it will just receive mail from the Internet, refuse messages from known open relays, tag spam messages by prepending &#8220;*** SPAM ***&#8221; to the message subjects, and stop emails with viruses, warning the recipient that someone tried to send them a virus. Then, if the mail wasn&#8217;t stopped, it delivers it (or the virus warning message) to the &#8220;real&#8221; email server, which has the actual mailboxes.</li>
<li>For simplification, I&#8217;m assuming that the machine has only one network card, and has the IP adress <code>10.0.0.1</code> (supposedly, some firewall is redirecting port 25 from the outside to this address). The &#8220;real&#8221; mail server has the address <code>10.0.0.2</code>. More complex configurations are possible, but, again, I&#8217;m not exploring them here.</li>
<li>I&#8217;m also assuming that the gateway has unrestricted <b><i>outbound</i></b> Internet access. (it only needs <i>inbound</i> access to port 25). After it&#8217;s working, you may possibly want to restrict it somewhat (though I think it it&#8217;s a bit useless), but it&#8217;ll always need to do DNS queries, access some spam databases like Razor, and update ClamAV.</li>
</ul>
<p>So, before you go to part 2, you should have a box with one network card configured as 10.0.0.1,  running an Unix-like OS with a C compiler.</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2005/10/11/an-anti-spam-gateway-1-initial-stuff/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Anti-Spam gateway #0: Introduction</title>
		<link>http://www.thetlog.net/2005/10/10/an-anti-spam-gateway-0-introduction/</link>
		<comments>http://www.thetlog.net/2005/10/10/an-anti-spam-gateway-0-introduction/#comments</comments>
		<pubDate>Mon, 10 Oct 2005 10:23:08 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/?p=109</guid>
		<description><![CDATA[(NOTE: this is part of the &#8220;An Anti-Spam gateway&#8221; series) &#8220;An Anti-Spam gateway&#8221; is the Tlog&#8217;s third series. In it, I will write about how to use a Unix-like free operating system such as Linux or OpenBSD, using Postfix, amavisd-new, SpamAssassin with MySQL, and ClamAV to create a free, open source, efficient mail gateway, for [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2005/10/10/an-anti-spam-gateway-0-introduction/" data-text="An Anti-Spam gateway #0: Introduction" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2005/10/10/an-anti-spam-gateway-0-introduction/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p><i>(NOTE: this is part of the <a href="http://www.thetlog.net/an-anti-spam-gateway/">&#8220;An Anti-Spam gateway&#8221; series</a>)</i></p>
<p><b>&#8220;An Anti-Spam gateway&#8221;</b> is the Tlog&#8217;s third series.</p>
<p>In it, I will write about how to use a Unix-like free operating system such as Linux or <a href="http://www.openbsd.org">OpenBSD</a>, using <a href="http://www.postfix.org">Postfix</a>, <a href="http://www.ijs.si/software/amavisd/">amavisd-new</a>, <a href="http://www.spamassassin.org">SpamAssassin</a> with <a href="http://www.mysql.com">MySQL</a>, and <a href="http://www.clamav.net">ClamAV</a> to create a free, open source, efficient mail gateway, for tagging spam (I don&#8217;t believe in deleting it automatically, that should be up to the users themselves) and stopping email viruses.</p>
<p>While I plan to make this not too advanced, I won&#8217;t deal with the basics here, like the installation of the OS, or uncompressing files, and so on. </p>
<p>Also, I won&#8217;t explore all the alternatives. This is a HOWTO, not a reference manual. Think of it as a recipe: while a cook is free to change some of the ingredients or procedures, the recipe doesn&#8217;t usually say &#8220;if you do this instead, that will be the result&#8221;. For instance, you may not require an anti-virus, or may want to use a different one, or may want to delete spam messages above a certain score, or may not use MySQL for the Bayes database&#8230; all of those possibilities are perfectly fine. I just won&#8217;t explore them here.</p>
<p>I hope this series is useful. Few companies, except perhaps multinationals, have gateways as good as this one will be. Trust me. <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  I may be missing out the money I could make by selling &#8220;consulting&#8221; to companies to do this, instead of just posting the information on the net; however, I don&#8217;t want to make a living of installing and configuring email gateways <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , and, also, if the majority of companies (and possibly even ISPs) adopt something like this, then there may be, in the future, less spam out there. Making the world a better place, and all that stuff. A guy can dream.</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2005/10/10/an-anti-spam-gateway-0-introduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thunderbird 1.5b2</title>
		<link>http://www.thetlog.net/2005/10/08/thunderbird-15b2/</link>
		<comments>http://www.thetlog.net/2005/10/08/thunderbird-15b2/#comments</comments>
		<pubDate>Sat, 08 Oct 2005 17:21:17 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Unix / Linux / *BSD software]]></category>
		<category><![CDATA[Windows software]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/?p=101</guid>
		<description><![CDATA[Mozilla Thunderbird 1.5b2 is out (saw it on Ricardo Saramago&#8217;s blog). Note: the &#8220;what&#8217;s new&#8221; list in the 1.5b2 page lists what&#8217;s new since 1.0.x, not since 1.5b1, contrarily to what it looks like. As I don&#8217;t use an email client at home anymore, I&#8217;ll only test this version when I get back from holidays&#8230; [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2005/10/08/thunderbird-15b2/" data-text="Thunderbird 1.5b2" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2005/10/08/thunderbird-15b2/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p><b>Mozilla Thunderbird 1.5b2</b> is <a href="http://www.mozilla.org/products/thunderbird/releases/1.5beta2.html">out</a> (saw it on <a href="http://www.odrakir.com/blog/?p=111">Ricardo Saramago&#8217;s blog</a>). </p>
<p>Note: the <i>&#8220;what&#8217;s new&#8221;</i> list in the 1.5b2 page lists what&#8217;s new since <b>1.0.x</b>, not since 1.5b1, contrarily to what it looks like.</p>
<p>As I don&#8217;t use an email client at home anymore, I&#8217;ll only test this version when I get back from holidays&#8230;</p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2005/10/08/thunderbird-15b2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yahoo! Mail beta</title>
		<link>http://www.thetlog.net/2005/09/14/yahoo-mail-beta/</link>
		<comments>http://www.thetlog.net/2005/09/14/yahoo-mail-beta/#comments</comments>
		<pubDate>Wed, 14 Sep 2005 20:57:41 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[World Wide Web]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/?p=61</guid>
		<description><![CDATA[Does GMail have competition? From what I can see, it looks like a &#8220;normal&#8221; email program&#8230; but in the browser. And they say it&#8217;s responsive like an email program. I have 2 Yahoo! Mail accounts, though I don&#8217;t use them these days &#8211; I use fetchyahoo to redirect them to my GMail account. But if [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2005/09/14/yahoo-mail-beta/" data-text="Yahoo! Mail beta" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2005/09/14/yahoo-mail-beta/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p>Does <a href="http://www.gmail.com">GMail</a> have <a href="http://patcavit.com/2005/09/14/y-mail-beta-impressions/">competition</a>?</p>
<p>From what I can see, it looks like a &#8220;normal&#8221; email program&#8230; but in the browser. And they say it&#8217;s responsive like an email program.</p>
<p>I have 2 Yahoo! Mail accounts, though I don&#8217;t use them these days &#8211; I use <a href="http://fetchyahoo.sourceforge.net/">fetchyahoo</a> to redirect them to my GMail account. But if I get into the beta&#8230; I may say something more here. <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2005/09/14/yahoo-mail-beta/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Thunderbird 1.5b1</title>
		<link>http://www.thetlog.net/2005/09/12/thunderbird-15b1/</link>
		<comments>http://www.thetlog.net/2005/09/12/thunderbird-15b1/#comments</comments>
		<pubDate>Mon, 12 Sep 2005 09:47:28 +0000</pubDate>
		<dc:creator>Pedro Timóteo</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Unix / Linux / *BSD]]></category>
		<category><![CDATA[Windows software]]></category>

		<guid isPermaLink="false">http://www.thetlog.net/?p=55</guid>
		<description><![CDATA[Shortly after Firefox 1.5b1, the new beta of Mozilla Thunderbird is also out. I don&#8217;t use an email client at home (I use GMail), but I&#8217;ve just updated Thunderbird from 1.0.6 to 1.5b1 at work (Linux). So far, so good. No crashes (these betas have been at least as stable as the latest stable versions, [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.thetlog.net/2005/09/12/thunderbird-15b1/" data-text="Thunderbird 1.5b1" data-count="" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://www.thetlog.net/2005/09/12/thunderbird-15b1/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div></div><p>Shortly after <a href="http://www.thetlog.net/2005/09/09/firefox-15-beta-1/">Firefox 1.5b1</a>, the new beta of <a href="http://www.mozilla.org/products/thunderbird/">Mozilla Thunderbird</a> is also out.</p>
<p>I don&#8217;t use an email client at home (I use GMail), but I&#8217;ve just updated Thunderbird from 1.0.6 to 1.5b1 at work (Linux). So far, so good. No crashes (these betas have been at least as stable as the latest stable versions, which is impressive). New preferences look, just like Firefox. Spell checking as you type (may be of interest to many people, but I turned it off in less than a minute <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ).</p>
<p>Not a lot of &#8220;wow&#8221; stuff here, but then again, it&#8217;s a mail client. <img src='http://www.thetlog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<hr/>Copyright &copy; 2012 <strong><a href="http://www.thetlog.net">The Tlog - a technology blog</a></strong> ]]></content:encoded>
			<wfw:commentRss>http://www.thetlog.net/2005/09/12/thunderbird-15b1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

