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

<channel>
	<title>DailyStuff &#187; SpamAssassin</title>
	<atom:link href="http://blog.dailystuff.nl/tag/spamassassin/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dailystuff.nl</link>
	<description>toen Internet stil stond en weer doorging</description>
	<lastBuildDate>Sat, 04 Feb 2012 07:46:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="search"
           href="http://blog.dailystuff.nl/opensearch"
           type="application/opensearchdescription+xml"
           title="Content Search" /><atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>SpamAssassin regels voor ING phishing</title>
		<link>http://blog.dailystuff.nl/2011/06/spamassassin-regels-voor-ing-phishing/</link>
		<comments>http://blog.dailystuff.nl/2011/06/spamassassin-regels-voor-ing-phishing/#comments</comments>
		<pubDate>Mon, 13 Jun 2011 09:32:44 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Internet, Unix en security]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[DKIM]]></category>
		<category><![CDATA[ING]]></category>
		<category><![CDATA[phishing]]></category>
		<category><![CDATA[Postbank]]></category>
		<category><![CDATA[SpamAssassin]]></category>
		<category><![CDATA[SPF]]></category>

		<guid isPermaLink="false">http://blog.dailystuff.nl/?p=1098</guid>
		<description><![CDATA[Was vroeger postbank.nl populair om bij gebruikers naar gegevens te hengelen, maar sinds de definitieve uitfasering in 2010 van het merk Postbank is de plaats ingenomen door ING. Heel toepasselijk waar alle klanten en diensten in zijn opgegaan en waar vroeger alleen postbank.nl een SPF-record in DNS had is dat nu ook zo voor oa [...]]]></description>
			<content:encoded><![CDATA[<p>Was vroeger postbank.nl populair om bij gebruikers naar gegevens te hengelen, maar sinds de definitieve uitfasering in 2010 van het merk Postbank is de plaats ingenomen door ING. Heel toepasselijk waar alle klanten en diensten in zijn opgegaan en waar vroeger alleen postbank.nl een <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Sender_Policy_Framework">SPF</a>-record in DNS had is dat nu ook zo voor oa ing.nl. En gelukkig worden veel berichten automatisch al als spam-gemarkeerd, maar niet alles helaas.</p>
<p>Om de laatste paar phishing e-mails voor ING als spam te laten markeren zijn voorlopig wat <a href="http://code.dailystuff.nl/view/sa-rules/trunk/80_phish_bank.cf?view=markup&amp;root=svn&amp;pathrev=8">custom regels</a> nodig voor SpamAssassin. Gelukkig is dat redelijk goed te doen met behulp van SPF en na al die jaren wordt toch langzaam duidelijk waar SPF en <a href="https://secure.wikimedia.org/wikipedia/en/wiki/DKIM">DKIM</a> goed voor zijn. Wat wel opvallend is dat andere Nederlandse banken geen SPF-records publiceren in DNS zover te achter halen is. Dit terwijl de <a href="http://code.dailystuff.nl/view/sa-rules/trunk/71_whitelist.cf?view=markup&amp;root=svn">belastingdienst</a> dit wel doet heel toepasselijk.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2011/06/spamassassin-regels-voor-ing-phishing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bayesian database na ruim een jaar</title>
		<link>http://blog.dailystuff.nl/2011/03/bayesian-database-na-ruim-een-jaar/</link>
		<comments>http://blog.dailystuff.nl/2011/03/bayesian-database-na-ruim-een-jaar/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 22:55:23 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Internet, Unix en security]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[Bayesian]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[SpamAssassin]]></category>

		<guid isPermaLink="false">http://blog.dailystuff.nl/?p=999</guid>
		<description><![CDATA[Na meer dan een jaar na het op de automatische piloot zetten van een bayesian filtering oplossing voor alle inkomende e-mail begint het langzaam aan tijd te worden om de balans op te maken. Dus eerst even wat grafiekjes en eerste laat de hoeveelheid tokens in de database. De tweede grafiek laat het aantal geleerde [...]]]></description>
			<content:encoded><![CDATA[<p>Na meer dan een jaar na het op de <a title="SpamAssassin op automatische piloot" href="http://blog.dailystuff.nl/2010/01/spamassassin-op-automatische-piloot/">automatische piloot zetten</a> van een bayesian filtering oplossing voor alle inkomende e-mail begint het langzaam aan tijd te worden om de balans op te maken. Dus eerst even wat grafiekjes en eerste laat de hoeveelheid tokens in de database.<br />
<img class="aligncenter size-full wp-image-1075" title="bayesian-tokens-20110318-year" src="/wp-content/uploads//2011/03/bayesian-tokens-20110318-year.png" alt="" width="637" height="237" /> De tweede grafiek laat het aantal geleerde berichten zien en dit zijn zowel berichten die via spamtraps en hamtraps binnen zijn gekomen.<br />
<img class="aligncenter size-full wp-image-1076" title="bayesian-msgs-20110318-year" src="/wp-content/uploads//2011/03/bayesian-msgs-20110318-year.png" alt="" width="637" height="187" />Hier komt ook gelijk het opvallende punt. Het aantal berichten blijft gelijkmatig oplopen op de kleine sprong in april na, want toen waren de spamtraps als test niet voorzien van <a href="https://secure.wikimedia.org/wikipedia/en/wiki/DNSBL">DNSBL</a>-filtering. Voorlopig lijkt hiermee opzet redelijk stabiel te zijn en met een plugin voor <a href="http://roundcube.net/">Roundcube</a> kunnen gebruikers nu ook fouten netjes zelf melden en worden die verwerkt in de database.</p>
<p>Over de effectiviteit zijn op dit moment geen harde cijfers en de vraag is dan ook hoe die te meten zijn. Dus wat is er nog te verbeteren aan de opstelling? Op dit moment worden performance gegevens over hoeveelheid berichten die worden geweigerd of aangenomen nog niet verwerkt, maar ook niet hoeveel berichten als spam worden gemarkeerd en wat de gemiddelde doorloop tijd is om een bericht te verwerken. Binnenkort dus maar eens een blik werpen op een aantal logfiles om te kijken of dit mogelijk is om zo beter inzicht te krijgen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2011/03/bayesian-database-na-ruim-een-jaar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bayesian database na enkele maanden</title>
		<link>http://blog.dailystuff.nl/2010/07/bayesian-database-na-enkele-maanden/</link>
		<comments>http://blog.dailystuff.nl/2010/07/bayesian-database-na-enkele-maanden/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 21:34:47 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Internet, Unix en security]]></category>
		<category><![CDATA[Bayesian]]></category>
		<category><![CDATA[SpamAssassin]]></category>

		<guid isPermaLink="false">http://blog.dailystuff.nl/?p=1050</guid>
		<description><![CDATA[Al geruime tijd gebruik ik een Bayesian-filter om e-mail te beoordelen of het ham of spam is, maar wat is de stand nu na enkele maanden? Gelukkig loopt rrdtool mee te bepalen wat de vullingsgraad van de database is. Op de maandgrafiek lijkt niet echt mis en dat terwijl het langzaam lijkt af te nemen. Als [...]]]></description>
			<content:encoded><![CDATA[<p>Al geruime tijd gebruik ik een <a href="/tag/bayesian/">Bayesian</a>-filter om e-mail te beoordelen of het ham of spam is, maar wat is de stand nu na enkele maanden? Gelukkig loopt rrdtool mee te bepalen wat de vullingsgraad van de database is. Op de maandgrafiek lijkt niet echt mis en dat terwijl het langzaam lijkt af te nemen.<br />
<img class="aligncenter size-full wp-image-1051" title="bayesian-tokens-20100727-month" src="/wp-content/uploads//2010/07/bayesian-tokens-20100727-month.png" alt="" width="637" height="237" /> Als we naar de jaargrafiek kijken dan ziet het er iets heftiger uit, maar na de eerste dip in mei is de database aangepast om nog maar 500.000 tokens te bewaren maximaal. Dit omdat het verschil tussen de top en de bodem te groot was. Deze nieuwe top is dan ook zeker te zien bij de twee pieken erna, maar hierna lijkt de database zoveel spreiding in tokens van verschillende data te hebben dat er eens stabiele vullingsgraad komt.<br />
<img class="aligncenter size-full wp-image-1052" title="bayesian-tokens-20100727-year" src="/wp-content/uploads//2010/07/bayesian-tokens-20100727-year.png" alt="" width="637" height="237" /> Als we naar de huidige afname kijken dan zou die nooit onder de 375.000 moeten komen, want dat is de magische grens van 75 procent van 500.000 die in de database zou moeten blijven zitten bij een opschoning. Mocht dat wel gebeuren dan komen er niet snel genoeg verse tokens bij, maar dat zal duidelijk moeten worden in de komende maanden. Voorlopig lijkt de stroom van spam en ham berichten stabiel genoeg om dit voor elkaar te krijgen, maar het is even afwachten.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2010/07/bayesian-database-na-enkele-maanden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SpamAssassin verplaatsen</title>
		<link>http://blog.dailystuff.nl/2010/04/spamassassin-verplaatsen/</link>
		<comments>http://blog.dailystuff.nl/2010/04/spamassassin-verplaatsen/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 06:07:18 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Internet, Unix en security]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[restore]]></category>
		<category><![CDATA[SpamAssassin]]></category>

		<guid isPermaLink="false">http://blog.dailystuff.nl/?p=1011</guid>
		<description><![CDATA[Soms moet je een databaseschema verplaatsen van de ene machine naar de andere. In veel gevallen is een export en import de meest slimme oplossingen, maar waar zou je het de applicatie niet laten doen. Zo ook met SpamAssassin waarbij alle voorzieningen in de applicatie zitten en wat wel zo veilig is als je dit [...]]]></description>
			<content:encoded><![CDATA[<p>Soms moet je een databaseschema verplaatsen van de ene machine naar de andere. In veel gevallen is een export en import de meest slimme oplossingen, maar waar zou je het de applicatie niet laten doen. Zo ook met <a href="http://www.spamassassin.org/">SpamAssassin</a> waarbij alle voorzieningen in de applicatie zitten en wat wel zo veilig is als je dit op een draaiende omgeving wilt doen.</p>
<p>De eerste stap is om een data te exporteren en dan te verplaatsen naar de juiste machine:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$ sa-learn --backup &amp;gt; sa-learn.dump</pre></div></div>

<p>Op de nieuwe machine is het lege schema al geladen en kan een import worden gedaan:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$ sa-learn --restore sa-learn.dump
$ sa-learn --force-expire</pre></div></div>

<p>Als laatste stap wordt ook door SpamAssassin gekeken of en wanneer er een expire moet plaats vinden. Dit zorgt ervoor dat als je auto-expire aan hebt staan je database niet bij de eerste e-mail al direct wordt gecontroleerd. De kans op vertraging wordt hiermee beperkt en het is duidelijk dat SpamAssassin met de nieuwe dataset goed kan werken.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2010/04/spamassassin-verplaatsen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bayesian database opschonen</title>
		<link>http://blog.dailystuff.nl/2010/03/bayesian-database-opschonen/</link>
		<comments>http://blog.dailystuff.nl/2010/03/bayesian-database-opschonen/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 22:02:42 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Internet, Unix en security]]></category>
		<category><![CDATA[Bayesian]]></category>
		<category><![CDATA[SpamAssassin]]></category>

		<guid isPermaLink="false">http://blog.dailystuff.nl/?p=1002</guid>
		<description><![CDATA[Nu SpamAssassin op automatische piloot staat en op versie 3.3 zit werd het tijd voor grafiekjes. Zeker om het gedrag te kunnen monitoren en een van de eerste onderdelen is was het Bayesian-filter. Met wat Perl-code en rrdtool kom je al redelijk vlot tot grafiekjes en hoef je alleen nog maar tijd te hebben. Gelukkig [...]]]></description>
			<content:encoded><![CDATA[<p>Nu <a href="http://blog.dailystuff.nl/2010/01/spamassassin-op-automatische-piloot/">SpamAssassin op automatische piloot</a> staat en op versie 3.3 zit werd het tijd voor grafiekjes. Zeker om het gedrag te kunnen monitoren en een van de eerste onderdelen is was het Bayesian-filter. Met wat Perl-code en rrdtool kom je al redelijk vlot tot grafiekjes en hoef je alleen nog maar tijd te hebben.</p>
<p>Gelukkig hebben de grafiekjes voldoende tijd gehad, want recentelijk besloot de software dat de maximale vulgraad was bereikt en werd er opgeschoond, maar of dit nu geheel wenselijk was. Met <em>bayes_expiry_max_db_size</em> verhoogt naar 1.000.000 tokens zou de database even vooruit moeten en de performance bleek ook goed te zijn, maar waarom dan die grote afname in tokens? Zeker omdat het doel is om 75% van <em>bayes_expiry_max_db_size</em> te behouden of minimaal 100.000 tokens.<br />
<img class="aligncenter size-full wp-image-1000" title="bayesian-tokens-20100324" src="/wp-content/uploads//2010/03/bayesian-tokens-20100324.png" alt="" width="637" height="237" /><br />
<img class="aligncenter size-full wp-image-1001" title="bayesian-msgs-20100324" src="/wp-content/uploads//2010/03/bayesian-msgs-20100324.png" alt="" width="637" height="187" /></p>
<p>Een ander onderdeel van de expire is de leeftijd van de tokens en hoe vaak er een daadwerkelijke expire wordt uitgevoerd. Hieruit vallen twee dingen te herleiden. De daadwerkelijke opruimactie op de database wordt niet vaak genoeg getriggerd en hiervoor moet of de omvang van de database omlaag of moeten we sneller nieuwe tokens de database in. Een tweede wat te herleiden is dat er wel genoeg nieuwe tokens de database inkomen om oudere tokens op te ruimen.</p>
<p>Wat de oplossing gaat zijn ben ik nog niet geheel uit, maar wat wel interessant is om te zien of er een relatie is tussen de vulgraad van de database en de scores die worden uitgedeeld. Een ander feit is of de extra spam van week 10 invloed heeft gehad, maar dit zal moeten blijken met de volgende iteratie. Het is dus nog even wachten of dit eenmalig was of niet, want voorlopig blijkt het Bayesian-filter wel goed te werken.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2010/03/bayesian-database-opschonen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SpamAssassin op automatische piloot</title>
		<link>http://blog.dailystuff.nl/2010/01/spamassassin-op-automatische-piloot/</link>
		<comments>http://blog.dailystuff.nl/2010/01/spamassassin-op-automatische-piloot/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 07:43:35 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Internet, Unix en security]]></category>
		<category><![CDATA[automatiseren]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[SpamAssassin]]></category>

		<guid isPermaLink="false">http://blog.dailystuff.nl/?p=976</guid>
		<description><![CDATA[In de afgelopen periode is SpamAssassin al meerdere malen aanbod gekomen en vooral in de context met Bayesian-filtering, maar er is nog veel meer. Zeker nu recentelijk release 3.3 het daglicht heeft gezien wordt het tijd om eens wat dieper in SpamAssassin te duiken. Een van de grootste probleempunten met SpamAssassin was altijd de ruleset [...]]]></description>
			<content:encoded><![CDATA[<p>In de afgelopen periode is SpamAssassin al meerdere malen aanbod gekomen en vooral in de context met Bayesian-filtering, maar er is nog veel meer. Zeker nu recentelijk release 3.3 het daglicht heeft gezien wordt het tijd om eens wat dieper in SpamAssassin te duiken.</p>
<p>Een van de grootste probleempunten met SpamAssassin was altijd de ruleset en de strijd met de spammers om die rules net te omzeilen. Bayesian-filtering lost een deel van dit probleem op, maar het andere probleem is de ruleset zelf. Voorheen werden rules met SpamAssassin meegeleverd en werden ze pas bijgewerkt als je een nieuwe versie van SpamAssassin installeerde. Het mag duidelijk zijn dat dit een onbegonnen strijd is, maar ook een gevaarlijke strijd. Zeker voor installaties die afhankelijk waren van DNS blacklists cq whitelists en waarbij de beheerder van de lijst besloot om zijn lijst op te heffen bijvoorbeeld.</p>
<p>De SARE-regels zijn een hele tijd populair geweest en zijn dat helaas nog steeds. Dit terwijl ze stelselmatig worden opgenomen in de ruleset van SpamAssassin zelf. Gelukkig heeft oa SARE er wel voor gezorgd dat er een update methode kwam die met de 3.3 release verplicht is geworden. Hiermee volgt SpamAssassin eigenlijk ClamAV in de voetsporen en is het verspreiden van een vaste ruleset overbodig geworden.</p>
<p>De eerste stap is eigenlijk heel simpel met het draaien van het commando <strong>sa-update</strong> als de gebruiker root op Debian. Als we nu in <strong>/var/lib/spamassassin/</strong> kijken dan zien we het volgende:<br />
<code><br />
$ ls -l /var/lib/spamassassin/ /var/lib/spamassassin/*/<br />
/var/lib/spamassassin/:<br />
total 8<br />
drwxr-xr-x 3 root root 4096 2010-01-02 14:46 3.002005</p>
<p>/var/lib/spamassassin/3.002005/:<br />
total 8<br />
drwxr-xr-x 2 root root 4096 2010-01-02 14:46 updates_spamassassin_org<br />
-rw-r--r-- 1 root root 2431 2010-01-02 14:46 updates_spamassassin_org.cf<br />
</code><br />
We zien netjes de betreffende versie van SpamAssassin en in die directory de ruleset zoals die nu voor versie 3.2.5 wordt aanbevolen door SpamAssassin. Deze regels worden automatisch meegenomen als SpamAssassin de volgende keer start. Nu kan je zelf een paar regels in de crontab van de gebruiker root zetten, maar in Debian zijn al voorzieningen getroffen. Door het onderstaande aan te passen in het bestand <strong>/etc/dedault/spamassassin</strong> zal automatisch de sa-update worden gedaan en wanneer nodig SpamAssassin worden geherstart.<br />
<code><br />
CRON=1<br />
</code><br />
Helaas stopt hier het verhaal niet, want op dit moment worden services zoals Amavisd-new, die ook de SpamAssassin ruleset kan gebruiken, niet herstart. Op moment van schrijven staan bugs <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=315961">315961</a> en <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=567205">567205</a> hier nog over open. Totdat die zijn opgelost kan de volgende extra code geen kwaad aan het einde van <strong>/etc/cron.daily/spamassassin</strong><br />
<code><br />
test -f /var/run/amavis/amavisd.pid &#038;&#038; /etc/init.d/amavis force-reload<br />
</code><br />
Dit laatste is natuurlijk op eigen risico, maar het lost de bug voor mij al een redelijke tijd op.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2010/01/spamassassin-op-automatische-piloot/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fetchmail gebruiken om sa-learn aan te sturen</title>
		<link>http://blog.dailystuff.nl/2010/01/fetchmail-gebruiken-om-sa-learn-aan-te-sturen/</link>
		<comments>http://blog.dailystuff.nl/2010/01/fetchmail-gebruiken-om-sa-learn-aan-te-sturen/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 07:54:25 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Internet, Unix en security]]></category>
		<category><![CDATA[fetchmail]]></category>
		<category><![CDATA[IMAP]]></category>
		<category><![CDATA[SpamAssassin]]></category>

		<guid isPermaLink="false">http://blog.dailystuff.nl/?p=954</guid>
		<description><![CDATA[Nu zijn er al flink wat postings geweest over hoe SpamAssassin en Bayesian-filtering in te zetten, maar wat gebeurt er nog meer achter de schermen. In een van de eerste postings was al naar voren gekomen hoe vanaf de commandline de database gevuld kan worden, maar wat als de data op een IMAP-server staat? Gelukkig [...]]]></description>
			<content:encoded><![CDATA[<p>Nu zijn er al flink wat postings geweest over hoe <a href="http://blog.dailystuff.nl/tag/spamassassin/">SpamAssassin</a> en <a href="http://blog.dailystuff.nl/tag/bayesian/">Bayesian</a>-filtering in te zetten, maar wat gebeurt er nog meer achter de schermen. In een van de eerste postings was al naar voren gekomen hoe vanaf de commandline de database gevuld kan worden, maar wat als de data op een IMAP-server staat?</p>
<p>Gelukkig zijn er op Unix duizend en één tooltjes beschikbaar en zo ook om berichte van een IMAP- of een POP3-server te halen. We beginnen dus met het installeren van <a href="http://fetchmail.berlios.de/">fetchmail</a>, wat dit al jaren kan en nog steeds regelmatig updates krijgt.<br />
<code><br />
$ sudo apt-get install fetchmail<br />
</code><br />
De tweede stap is om het bestand <em>/etc/fetchmailrc</em> te voorzien van de juiste informatie zoals in het voorbeeld hieronder. Wat al gelijk opvalt zijn de twee entries voor de spamuser en ook twee voor de hamuser. De mailserver plaatst berichten met een spam-label automatisch in de Junk-folder en hierdoor moet fetchmail twee folders leeghalen. Dit kan verschillen per mailserver configuratie uiteraard.</p>
<p>Een tweede kenmerk is dat tegen fetchmail wordt vertelt om een alternatieve Mail Delivery Agent te gebruiken en dat is <em>/usr/bin/sa-learn</em> in dit geval. <a href="http://blog.dailystuff.nl/2009/05/een-bayesian-filter-vullen-met-data/">Oplettende lezers</a> zullen ook merken dat <em>&#8220;-u amavis&#8221;</em> ontbreekt, maar dat komt omdat in de SpamAssassin configuratie wordt afgedwongen om alles te leren onder de gebruiker amavis.<br />
<code><br />
poll imap.example.org proto imap:<br />
user "spamuser" password "password" ssl mda '/usr/bin/sa-learn --spam' folder 'INBOX' fetchall no rewrite<br />
user "spamuser" password "password" ssl mda '/usr/bin/sa-learn --spam' folder 'Junk' fetchall no rewrite<br />
user "hamuser" password "password" ssl mda '/usr/bin/sa-learn --ham' folder 'INBOX' fetchall no rewrite<br />
user "hamuser" password "password" ssl mda '/usr/bin/sa-learn --ham' folder 'Junk' fetchall no rewrite<br />
</code><br />
De derde stap is om het bestand <em>/etc/default/fetchmail</em> aan te passen met volgende opties. Het vertelt fetchmail om als daemon te draaien en 15 minuten na het beëindigen van een poll opnieuw te controleren of er nieuwe berichten zijn. Tevens wordt ook duidelijk gemaakt aan fetchmail dat hij onder geen beding bounce-berichten de wereld mag insturen.<br />
<code><br />
OPTIONS="-d 900 --nobounce"<br />
START_DAEMON=yes<br />
</code><br />
Als laatste stap is het nu om fetchmail te starten en doordat de START_DAEMON op yes is gezet zal fetchmail ook automatisch starten als de machine herstart.<br />
<code><br />
$ sudo invoke-rc.d fetchmail start<br />
</code><br />
Zoals al gezegd is fetchmail redelijk lang op de markt en kent ook vele opties om sommige dingen nog verder te tunen. Een nadeel van de huidige opzet is dat voor elke nieuw bericht een sa-learn proces wordt opgestart. Het is dus wel verstandig om te kijken wat de impact is als je veel berichten per dag moet verwerken. Tevens valt er nog wat te spelen met <a href="http://manpages.debian.net/cgi-bin/man.cgi?query=fetchmail&#038;apropos=0&#038;sektion=0&#038;manpath=Debian+Sid&#038;format=html&#038;locale=en">fetchmail opties</a> zoals expunge, limit en limitflush bijvoorbeeld.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2010/01/fetchmail-gebruiken-om-sa-learn-aan-te-sturen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AWL vervuiling opschonen</title>
		<link>http://blog.dailystuff.nl/2010/01/awl-vervuiling-opschonen/</link>
		<comments>http://blog.dailystuff.nl/2010/01/awl-vervuiling-opschonen/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 07:51:30 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Internet, Unix en security]]></category>
		<category><![CDATA[AWL]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[SpamAssassin]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://blog.dailystuff.nl/?p=952</guid>
		<description><![CDATA[SpamAssassin heeft de optie om te leren en te scoren op basis van een combinatie van e-mail en IP-adres. Nu lijkt deze optie zinvol en het lijkt te werken, maar hoever het schaalt is nog de vraag. Wat het schalen gaat beïnvloeden is de hoeveelheid combinaties die in de database staan en hoe snel deze [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.dailystuff.nl/tag/spamassassin/">SpamAssassin</a> heeft de optie om te leren en te scoren op basis van een combinatie van e-mail en IP-adres. Nu lijkt deze optie zinvol en het lijkt te werken, maar hoever het schaalt is nog de vraag. Wat het schalen gaat beïnvloeden is de hoeveelheid combinaties die in de database staan en hoe snel deze combinaties te doorzoeken zijn. Helaas is er geen standaardoplossing in SpamAssassin om de AWL-tabel op te schonen, maar gelukkig zijn er opties binnen <a href="http://blog.dailystuff.nl/tag/postgresql/">PostgreSQL</a> om dit te regelen.</p>
<p>De eerste stap is om de AWL-tabel aan te passen door een attribuut toe te voegen met het volgende SQL-commando:<br />
<code><br />
alter table awl add lastupdate timestamp with time zone default now();<br />
</code><br />
De tweede stap is om een trigger te definiëren en aan de tabel te koppelen met het volgende SQL-commando:<br />
<code><br />
CREATE OR REPLACE FUNCTION trg_handle_awl_lastupdate() RETURNS TRIGGER AS $BODY$<br />
BEGIN<br />
IF NEW.lastupdate = OLD.lastupdate THEN NEW.lastupdate := now(); END IF;<br />
RETURN NEW;<br />
END;<br />
$BODY$ LANGUAGE 'plpgsql';<br />
CREATE TRIGGER trg_handle_timestamp BEFORE UPDATE ON awl FOR EACH ROW EXECUTE PROCEDURE trg_handle_awl_lastupdate();<br />
</code><br />
Vanaf dit moment zal het attribuut <em>lastupdate</em> elke keer worden bijgewerkt wanneer de combinatie door SpamAssassin wordt gezien en daardoor ook de tabel bijwerkt. Door nu wekelijks of dagelijks een SQL-script te draaien die bijvoorbeeld elke combinatie die te lang onaangeraakt is te verwijderen. Zoals de voorbeeld code hieronder.<br />
<code><br />
delete from awl<br />
where ( lastupdate < = now() - interval '4 months' and count > 1 )<br />
   or ( lastupdate < = now() - interval '3 months' and count = 1 );<br />
</code><br />
Belangrijk om mee te nemen dat het soms even kan duren voordat bepaalde combinaties weer worden gezien. Veel mailinglisten komen meestal wel eens per maand voor. De interval van 3 maanden zou deze lijsten dus voldoende tijd moeten geven om een score te vormen.</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2010/01/awl-vervuiling-opschonen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bayesian-filtering en (bijna) geen backups</title>
		<link>http://blog.dailystuff.nl/2010/01/bayesian-filtering-en-bijna-geen-backups/</link>
		<comments>http://blog.dailystuff.nl/2010/01/bayesian-filtering-en-bijna-geen-backups/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 07:08:07 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Internet, Unix en security]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[Bayesian]]></category>
		<category><![CDATA[SpamAssassin]]></category>

		<guid isPermaLink="false">http://blog.dailystuff.nl/?p=950</guid>
		<description><![CDATA[Elk bestand en database moet op tape worden gezet is het motto bij veel sysadmins, maar is dat wel zo. En in veel gevallen hebben ze gelijk, maar helaas niet als het een database betreft die wordt gebruikt voor Bayesian-filtering. Maar waarom maak je backups? Om data die waarde heeft veilig te stellen is eigenlijk [...]]]></description>
			<content:encoded><![CDATA[<p>Elk bestand en database moet op tape worden gezet is het motto bij veel sysadmins, maar is dat wel zo. En in veel gevallen hebben ze gelijk, maar helaas niet als het een database betreft die wordt gebruikt voor Bayesian-filtering. Maar waarom maak je backups? Om data die waarde heeft veilig te stellen is eigenlijk de stelregel.</p>
<p>Maar wat maakt Bayesian-filtering nu zo anders? Laten we eens kijken op een testnode.<br />
<code><br />
$ sudo sa-learn --dump magic<br />
0.000          0          3          0  non-token data: bayes db version<br />
0.000          0      25556          0  non-token data: nspam<br />
0.000          0      11331          0  non-token data: nham<br />
0.000          0     204764          0  non-token data: ntokens<br />
0.000          0 1262669327          0  non-token data: oldest atime<br />
0.000          0 1263329413          0  non-token data: newest atime<br />
0.000          0          0          0  non-token data: last journal sync atime<br />
0.000          0 1263273928          0  non-token data: last expiry atime<br />
0.000          0     345600          0  non-token data: last expire atime delta<br />
0.000          0      21267          0  non-token data: last expire reduction count<br />
</code><br />
Wat we zien is dat de database is gevuld met z&#8217;n dikke 25000 spamberichten en 11000 hamberichten, maar ook dat de database ruim 204000 kenmerken bevat om zijn berekeningen op laten plaats vinden. Twee leuke kenmerken van dit overzicht zijn dat er een data in de journal zit omdat dit direct in echte database zit ipv in de standaard BerkelyDB en de tweede is de hoeveelheid tokens. In een standaard database zitten maximaal 150000 tokens en welke bij een expire automatisch worden opgeschoond naar 75% van die 150000 tokens. Deze installatie heeft auto-expire uitstaan waardoor dit extern moet worden geregeld, maar ook dat de database meer dan een normaal aantal tokens mag bevatten.</p>
<p>Maar wat heeft dit met backups te maken? Waarom zou je data in veiligheid brengen als er elke uur een nieuwe tokens worden toegevoegd en elke dag een expire wordt gedaan? Een constante stroom aan nieuwe data zorgt ervoor dat de database altijd in flux is zoals het hoort en in het slechtste geval is je database een paar uur aan het bijleren. Om dit laatste te overkomen zou je spam- en hamberichten bijvoorbeeld in de Trash-folder van de IMAP-server kunnen laten staan die na een paar dagen deze automatisch verwijdert uit standaard policy. Het verplaatsen van alle berichten van de Trash-folder naar de INBOX en bij de volgende ronde komt alles weer vanzelf in de database. Deze methode werkt ook vrij goed als de layout van de database wordt aanpast bij een upgrade en de database moet opnieuw worden opgebouwd.</p>
<p>De vraag die sysadmins misschien wat meer moeten vragen of de data echt naar tape moet, want we leven steeds meer in een tijdperk dat backups onmogelijk(er) beginnen te worden. Er zullen dus andere oplossingen moeten worden gezocht om data veilig te houden voor gebruikers. De eerste stap is het niet op tape zetten van data die je kan reproduceren.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2010/01/bayesian-filtering-en-bijna-geen-backups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RFC 4408, vaarwel</title>
		<link>http://blog.dailystuff.nl/2010/01/rfc-4408-vaarwel/</link>
		<comments>http://blog.dailystuff.nl/2010/01/rfc-4408-vaarwel/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 07:58:34 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Internet, Unix en security]]></category>
		<category><![CDATA[2006]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[RFC4406]]></category>
		<category><![CDATA[RFC4408]]></category>
		<category><![CDATA[SpamAssassin]]></category>
		<category><![CDATA[SPF]]></category>
		<category><![CDATA[TXT]]></category>

		<guid isPermaLink="false">http://blog.dailystuff.nl/?p=942</guid>
		<description><![CDATA[RFC 4408, gaat over Sender Policy Framework voor wie hem niet direct herkende, is redelijk onmogelijk aan het worden. In de afgelopen jaren zijn veel records in DNS gezet als TXT resource record en later is er zelfs een eigen SPF resource record gekomen. Helaas gebruiken nog veel mensen de TXT variant, omdat mensen de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://tools.ietf.org/html/rfc4408">RFC 4408</a>, gaat over <a href="http://en.wikipedia.org/wiki/Sender_Policy_Framework">Sender Policy Framework</a> voor wie hem niet direct herkende, is redelijk onmogelijk aan het worden. In de afgelopen jaren zijn veel records in DNS gezet als TXT resource record en later is er zelfs een eigen <a href="http://tools.ietf.org/html/rfc4406">SPF</a> resource record gekomen. Helaas gebruiken nog veel mensen de TXT variant, omdat mensen de records in DNS hebben gezet zonder te beseffen wat ze doen en ze ook niet te onderhouden.</p>
<p>Daarbij zijn er maar echt weinig partijen die ook daadwerkelijk zeggen dat hun record een <strong>-all</strong> geven om zo aan te geven dat de ontvanger de e-mail kan weigeren als het het niet matched tegen de regels in DNS. Misschien de bekendste partijen in Nederland zijn wel Postbank die door phishing aanvallen is gedwongen tot deze actie en de Belastingdienst. Buiten Nederlands blijven er alleen een paar open source communities over en het Duitse GMX, maar grotere partijen zoals Google en Microsoft blijven het alleen afdwingen voor inkomende berichten.</p>
<p>Sinds gisteravond 00h00 is er dus een einde gekomen aan een experiment dat sinds november 2006 liep. Er zal geen Received-SPF header meer worden toegevoegd door de mailservers. Hierdoor zullen e-mails gemiddeld 160 bytes kleiner worden en er zal per server een policy-server minder draaien. Alleen SpamAssassin blijft nog controleren wat ook zonder deze header kan en hiermee staan de SPF-checks bijna geheel op de automatisch-pilot door hun status binnen het <a href="http://www.spamassassin.org/">SpamAssassin</a>-project. Kortom, vaarwel RFC 4408 en gerelateerde RFCs.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2010/01/rfc-4408-vaarwel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

