<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://thomasfreudenberg.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Thomas Freudenberg : Akismet</title><link>http://thomasfreudenberg.com/blog/archive/tags/Akismet/default.aspx</link><description>Tags: Akismet</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>CommunityServer MVPs CSModules Pack for CS2007 released</title><link>http://thomasfreudenberg.com/blog/archive/2007/05/14/communityserver-mvps-csmodules-pack-for-cs2007-released.aspx</link><pubDate>Mon, 14 May 2007 15:56:00 GMT</pubDate><guid isPermaLink="false">483d7ed9-aa38-4432-af18-89f61e4445bf:29098</guid><dc:creator>Thomas Freudenberg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://thomasfreudenberg.com/blog/rsscomments.aspx?PostID=29098</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://thomasfreudenberg.com/blog/commentapi.aspx?PostID=29098</wfw:comment><comments>http://thomasfreudenberg.com/blog/archive/2007/05/14/communityserver-mvps-csmodules-pack-for-cs2007-released.aspx#comments</comments><description>&lt;p&gt;Yesterday a new version of the CSMVPs CSModules package was released. Except the new LinkManager (which enables you to add customizable attributes to links in your posts automatically) it´s mainly a technical refresh targeting CommunityServer 2007 (SP1).&lt;/p&gt;&lt;p&gt;Read the full announcement is available on the &lt;a href="http://csmvps.com/blogs/news/archive/2007/05/13/community-server-mvps-cinnabar-csmodule-package.aspx"&gt;CS MVP site&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://thomasfreudenberg.com/aggbug.aspx?PostID=29098" width="1" height="1"&gt;</description><category domain="http://thomasfreudenberg.com/blog/archive/tags/Community+Server/default.aspx">Community Server</category><category domain="http://thomasfreudenberg.com/blog/archive/tags/Akismet/default.aspx">Akismet</category><category domain="http://thomasfreudenberg.com/blog/archive/tags/CSMVPs/default.aspx">CSMVPs</category></item><item><title>Another release of Akismet spam rule</title><link>http://thomasfreudenberg.com/blog/archive/2006/08/31/Another-release-of-Akismet-spam-rule.aspx</link><pubDate>Thu, 31 Aug 2006 18:25:43 GMT</pubDate><guid isPermaLink="false">483d7ed9-aa38-4432-af18-89f61e4445bf:17690</guid><dc:creator>Thomas Freudenberg</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://thomasfreudenberg.com/blog/rsscomments.aspx?PostID=17690</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://thomasfreudenberg.com/blog/commentapi.aspx?PostID=17690</wfw:comment><comments>http://thomasfreudenberg.com/blog/archive/2006/08/31/Another-release-of-Akismet-spam-rule.aspx#comments</comments><description>&lt;p&gt;My &lt;a href="http://thomasfreudenberg.com/blog/archive/2006/08/22/The-Akismet-Spam-Rule-included-in-Alabaster.aspx"&gt;Akismet spam rule&lt;/a&gt; has a second home. Originally I contributed it to CSMVP's CSModules package aka &lt;a href="http://csmvps.com/blogs/news/archive/2006/08/14/Community-Server-MVP_2700_s-Alabaster-CSModule-Package.aspx"&gt;Alabaster&lt;/a&gt;. A couple of days ago &lt;a href="http://www.tankete.com/core/blogs/jose_lema/"&gt;José Lema&lt;/a&gt; informed me that Telligent wants to release a free dedicated spam rule package, and they would like to include my rule&amp;nbsp;as well. First I hesitated relinquishing my baby, but hey,&amp;nbsp;the more&amp;nbsp;users get easier access to that rule, the less spam they'll get. So finally I agreed José to include my rule in their package.&lt;/p&gt; &lt;p&gt;Yesterday José &lt;a href="http://communityserver.org/forums/thread/546533.aspx"&gt;announced&lt;/a&gt; the&amp;nbsp;availability of&amp;nbsp;that spam rule package, and indeed my spam rule is not included in it, but available &lt;a href="http://communityserver.org/files/folders/community_spam_rules/default.aspx"&gt;on its own&lt;/a&gt;. That means I still have full control over it &lt;strong&gt;and&lt;/strong&gt; more people&amp;nbsp;will use it. So if you don't want to use Alabaster (though you might miss other great CSModules) you can get the &lt;a href="http://communityserver.org/files/folders/community_spam_rules/default.aspx"&gt;Akismet spam rule as a stand-alone component&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Happy spam-fighting.&lt;/p&gt;&lt;img src="http://thomasfreudenberg.com/aggbug.aspx?PostID=17690" width="1" height="1"&gt;</description><category domain="http://thomasfreudenberg.com/blog/archive/tags/Community+Server/default.aspx">Community Server</category><category domain="http://thomasfreudenberg.com/blog/archive/tags/Akismet/default.aspx">Akismet</category><category domain="http://thomasfreudenberg.com/blog/archive/tags/CSMVPs/default.aspx">CSMVPs</category></item><item><title>The Akismet Spam Rule included in Alabaster</title><link>http://thomasfreudenberg.com/blog/archive/2006/08/22/The-Akismet-Spam-Rule-included-in-Alabaster.aspx</link><pubDate>Tue, 22 Aug 2006 18:57:00 GMT</pubDate><guid isPermaLink="false">483d7ed9-aa38-4432-af18-89f61e4445bf:17598</guid><dc:creator>Thomas Freudenberg</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://thomasfreudenberg.com/blog/rsscomments.aspx?PostID=17598</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://thomasfreudenberg.com/blog/commentapi.aspx?PostID=17598</wfw:comment><comments>http://thomasfreudenberg.com/blog/archive/2006/08/22/The-Akismet-Spam-Rule-included-in-Alabaster.aspx#comments</comments><description>&lt;div style="-moz-column-count:2;-moz-column-gap:2em;"&gt;&lt;p&gt;Though I spoke about my Akismet spam rule &lt;a href="http://thomasfreudenberg.com/blog/archive/2006/07/22/Whats-next.aspx"&gt;a couple of weeks ago&lt;/a&gt;, I didn&amp;#39;t draw that much attention to it. However, now that the first version of CSMVP&amp;#39;s CSModules package, code name &lt;a href="http://csmvps.com/blogs/news/archive/2006/08/14/Community-Server-MVP_2700_s-Alabaster-CSModule-Package.aspx"&gt;Alabaster&lt;/a&gt;, is released for more than a week, I&amp;#39;d like to spent some words on it, though Jayson mentioned it in his &lt;a href="http://jaysonknight.com/blog/archive/2006/08/20/CS-Tidbits-_2300_21_3A00_-Exploring-The-CS-Spam-Blocker.aspx"&gt;CS Tidbits: Exploring The CS Spam Blocker&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href="http://akismet.com/"&gt;Akismet&lt;/a&gt; provides a web service, which evaluates a comment or trackback based on several tests and returns a thumb up or thumb down. (Additionally, it can be trained, but that&amp;#39;s not supported by my spam rule.)&lt;/p&gt;&lt;p&gt;The spam rule I wrote and contributed to Alabaster calls this Akismet web service. The implementation is straight forward, for a general spam rule implementation see &lt;a href="http://communityserver.org/forums/permalink/526847/526847/ShowThread.aspx#526847"&gt;Jose Lema&amp;#39;s instructions on the CS Forum&lt;/a&gt;. Well, there some tips missing, but &lt;a href="http://nayyeri.net/"&gt;Keyvan&lt;/a&gt; forwarded me an advice from Jose: if&amp;nbsp;you use a web service in my spam rule, make that external call only if absolutely necessary. If the &amp;quot;cheaper&amp;quot; spam rules such as link count already identifies a comment as spam, an &amp;quot;expensive&amp;quot; call&amp;nbsp;to an external service would be redundant.&lt;/p&gt;&lt;p&gt;The spam rule engine in Community Server evaluates comments three-stage. In the implementation of your spam rule you can specify at which stage your rule should be visited. Additionally, you&amp;nbsp;can restrict your rule based on the result of previously&amp;nbsp;visited spam rules. In the case of the Akismet spam rule, I specified that the rule should be visited in the third stage, and only if the comment is not considered spam yet:&lt;/p&gt;&lt;/div&gt;&lt;div class="wlWriterSmartContent" id="C411E4BC-FA5A-4068-9F25-1AA2B5A98D76:e2d84ef4-3eb3-4252-a87a-d880c4b49c61" style="display:inline;float:none;margin:0px;padding:0px;"&gt;&lt;div style="display:block;background-color:#f7f7ff;"&gt;&lt;pre&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#808080;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#808080;"&gt;/// Gets the pass criteria.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#808080;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#808080;"&gt;/// &amp;lt;value&amp;gt;The pass criteria.&amp;lt;/value&amp;gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; PassCriteria PassCriteria&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; PassCriteria.ThirdPass; }&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#808080;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#808080;"&gt;/// Gets the status criteria.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#808080;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#808080;"&gt;/// &amp;lt;value&amp;gt;The status criteria.&amp;lt;/value&amp;gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; StatusCriteria StatusCriteria&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; StatusCriteria.NotSpam; }&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="-moz-column-count:2;-moz-column-gap:2em;"&gt;&lt;p&gt;Ok, enough about the implementation. The installation is pretty easy. Contrary to CSModules, spam rules do not need to be registered in&amp;nbsp;any .config files. Instead, the spam rule engine finds all rules via reflection on all assemblies in CS&amp;#39; bin folder.&lt;/p&gt;&lt;p&gt;For the configuration, first of all you need a WordPress API key, because Akismet requires it. Though you can &lt;a href="http://wordpress.com/api-keys/"&gt;get&amp;nbsp;a key&amp;nbsp;for free&lt;/a&gt;, the Akismet is free only for &lt;a href="http://akismet.com/personal/"&gt;personal use&lt;/a&gt;. If you are a commercial entity or making more than $500 from your personal blog, you need a &lt;a href="http://akismet.com/commercial/"&gt;commercial key&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href='/photos/images/16855/640x413.aspx' title='Akismet Spam Blocker for CommunityServer 2.1' details='/photos/picture16855.aspx' detailsText='Gallery page' rel='lightbox'&gt;&lt;img src='/photos/images/16855/thumb.aspx' border='0' class=''&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Pretending you have your API key now, go to&amp;nbsp;&lt;em&gt;Control Panel&lt;/em&gt; -&amp;gt; &lt;em&gt;Administration&lt;/em&gt; -&amp;gt; &lt;em&gt;System Tools&lt;/em&gt; -&amp;gt; &lt;em&gt;Manage Spam Blocker&lt;/em&gt; (~/ControlPanel/Tools/ManageSpamRules.aspx). Tick the &lt;em&gt;Akismet.com&lt;/em&gt; spam rule and click on &lt;em&gt;Configure&lt;/em&gt;. In the configuration window enter your API key and your desired points for detected spam (I chose 5, so it gets moderated automatically. I trust Akismet &lt;img src="http://thomasfreudenberg.com/emoticons/emotion-5.gif" alt="Wink" /&gt;). Click &lt;em&gt;Save&lt;/em&gt; to close the configuration window and again &lt;em&gt;Save&lt;/em&gt; to accept the selected spam rules.&lt;/p&gt;&lt;/div&gt;&lt;img src="http://thomasfreudenberg.com/aggbug.aspx?PostID=17598" width="1" height="1"&gt;</description><category domain="http://thomasfreudenberg.com/blog/archive/tags/Community+Server/default.aspx">Community Server</category><category domain="http://thomasfreudenberg.com/blog/archive/tags/Akismet/default.aspx">Akismet</category><category domain="http://thomasfreudenberg.com/blog/archive/tags/CSMVPs/default.aspx">CSMVPs</category></item><item><title>What's next</title><link>http://thomasfreudenberg.com/blog/archive/2006/07/22/Whats-next.aspx</link><pubDate>Sat, 22 Jul 2006 01:06:00 GMT</pubDate><guid isPermaLink="false">483d7ed9-aa38-4432-af18-89f61e4445bf:16868</guid><dc:creator>Thomas Freudenberg</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://thomasfreudenberg.com/blog/rsscomments.aspx?PostID=16868</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://thomasfreudenberg.com/blog/commentapi.aspx?PostID=16868</wfw:comment><comments>http://thomasfreudenberg.com/blog/archive/2006/07/22/Whats-next.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://thomasfreudenberg.com/photos/images/16855/original.aspx" target="_blank"&gt;&lt;img src="http://thomasfreudenberg.com/photos/images/16855/400x258.aspx" border="0" alt="" hspace="8" vspace="4" align="right" /&gt;&lt;/a&gt;As mentioned in my &lt;a href="http://thomasfreudenberg.com/blog/archive/2006/07/22/Upgraded-to-Community-Server-2.1-beta-1.aspx"&gt;last post&lt;/a&gt;, I&amp;#39;m working on several extensions for Community Server 2.1. I used to use the &lt;a href="http://communityserver.org/files/folders/add-ons/entry499284.aspx"&gt;Intensive.CodeHighlighter library&lt;/a&gt; by &lt;a href="http://intensivedesign.co.uk/"&gt;Gary McPherson&lt;/a&gt;, but I could not find any updated version. Therefore I &amp;quot;re-engineered&amp;quot; a .NET 2.0 version and improved its configuration handling. No custom &lt;em&gt;configSection&lt;/em&gt; is required anymore.&lt;br /&gt; &lt;/p&gt;

&lt;p&gt;Secondly, I was working on a solution for enabling &lt;a href="http://www.cocomment.com/"&gt;coComment&lt;/a&gt; in CS2.x. &lt;a href="http://www.scottelkin.com"&gt;Scott Elkin&lt;/a&gt; asked my two days ago for some hints because the coComment support in CS 2.x was broken if you give our posts names. However, after I found out about the BlogThreadQuery, I saw that Keyvan Nayyeri already &lt;a href="http://nayyeri.net/archive/2006/07/21/Adding-CoComment-support-to-Community-Server-2.1.aspx"&gt;published the same instructions&lt;/a&gt; I was preparing.&lt;/p&gt;
&lt;p&gt;Anyway, what&amp;#39;s already running on this site is my custom spam rule using &lt;a href="http://akismet.com/"&gt;Akismet&lt;/a&gt;. You can see the module&amp;#39;s settings to the right. I&amp;#39;d really like to see it in action, but up to now there was no spam knocking on my door. But I&amp;#39;m convinced that it will take only a couple of hours until the first spam will be rejected. As soon as I&amp;#39;m sure of its effectiveness I&amp;#39;ll publish it.&lt;br /&gt;&lt;/p&gt;&lt;img src="http://thomasfreudenberg.com/aggbug.aspx?PostID=16868" width="1" height="1"&gt;</description><category domain="http://thomasfreudenberg.com/blog/archive/tags/Community+Server/default.aspx">Community Server</category><category domain="http://thomasfreudenberg.com/blog/archive/tags/Development/default.aspx">Development</category><category domain="http://thomasfreudenberg.com/blog/archive/tags/coComment/default.aspx">coComment</category><category domain="http://thomasfreudenberg.com/blog/archive/tags/Akismet/default.aspx">Akismet</category></item></channel></rss>