<?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>MesQuilla &#187; JunQuilla</title>
	<atom:link href="http://mesquilla.com/category/extensions/junquilla/feed/" rel="self" type="application/rss+xml" />
	<link>http://mesquilla.com</link>
	<description>Messaging with Mozilla by rkent</description>
	<lastBuildDate>Wed, 21 Jul 2010 16:14:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Junk management for newsgroups in Thunderbird 3</title>
		<link>http://mesquilla.com/2010/07/21/junk-management-for-newsgroups-in-thunderbird-3/</link>
		<comments>http://mesquilla.com/2010/07/21/junk-management-for-newsgroups-in-thunderbird-3/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 16:14:13 +0000</pubDate>
		<dc:creator>rkent</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[JunQuilla]]></category>
		<category><![CDATA[Mailnews development]]></category>
		<category><![CDATA[Planet MozillaMessaging]]></category>

		<guid isPermaLink="false">http://mesquilla.com/?p=939</guid>
		<description><![CDATA[Thunderbird since version 3 has had experimental support for junk filtering in newsgroups. The feature basically works fine, but the user interface mostly fights against your attempts to use it. I&#8217;d like to give brief instructions here for anyone who wants to try it. You&#8217;ll need to install my addon JunQuilla to enable one critical [...]]]></description>
			<content:encoded><![CDATA[<p>Thunderbird since version 3 has had experimental support for junk filtering in newsgroups. The feature basically works fine, but the user interface mostly fights against your attempts to use it. I&#8217;d like to give brief instructions here for anyone who wants to try it.</p>
<p>You&#8217;ll need to install my addon <a href="https://addons.mozilla.org/en-US/thunderbird/addon/9886">JunQuilla</a> to enable one critical piece of user interface. JunQuilla supports a folder property that lets you selectively enable or disable junk processing for a tree of folders. So after you&#8217;ve installed JunQuilla, enable processing of junk for a newsgroup:</p>
<p style="text-align: center;"><a href="http://mesquilla.com/wp-content/uploads/2010/07/EnableJunk.jpg"><img class="aligncenter size-full wp-image-940" style="border: 0pt none;" title="Enable Junk" src="http://mesquilla.com/wp-content/uploads/2010/07/EnableJunk.jpg" alt="" width="624" height="379" /></a></p>
<p>This will run future posts sent to the newsgroup m.d.a.thunderbird through the bayes junk filter in Thunderbird. After this is enabled, some of the junk management controls on the folder should be enabled. Try &#8220;Run Junk Controls on Folder&#8221; to process existing posts for junk.</p>
<p>But nothing will appear to happen when you do, because there is no functionality to delete or hide the junk messages for newsgroups built in. Still, you can see the results using JunQuilla&#8217;s &#8220;junk percent&#8221; and &#8220;junk status +&#8221; columns:</p>
<p style="text-align: center;"><a href="http://mesquilla.com/wp-content/uploads/2010/07/JunkMessagesInNewsgoup.jpg"><img class="aligncenter size-full wp-image-943" style="border: 0pt none;" title="Junk Messages In Newsgoup" src="http://mesquilla.com/wp-content/uploads/2010/07/JunkMessagesInNewsgoup.jpg" alt="" width="566" height="346" /></a></p>
<p style="text-align: left;">The next step is to remove those junk messages from your view. The easiest thing to do is to create a virtual folder that shows the messages in the newsgroup without the junk messages. This is where the user interface fights against you. But you can trick it in the following manner.</p>
<p style="text-align: left;">Create a virtual folder on a message folder with search criteria &#8220;Junk Percent &lt; 80&#8243;. Save the folder as a subfolder of a local mail folder. Now open the virtual folder and change the folders that it scans, removing the original folder and replacing it with the newsgroup folder:</p>
<p style="text-align: left;"><a href="http://mesquilla.com/wp-content/uploads/2010/07/Change-Searched-Folder.jpg"><img class="aligncenter size-full wp-image-945" style="border: 0pt none;" title="Change Searched Folder" src="http://mesquilla.com/wp-content/uploads/2010/07/Change-Searched-Folder.jpg" alt="" width="614" height="576" /></a></p>
<p style="text-align: left;">Now the spam posts are hidden from this virtual folder:</p>
<p style="text-align: center;"><a href="http://mesquilla.com/wp-content/uploads/2010/07/View-without-Spam.jpg"><img class="aligncenter size-full wp-image-947" style="border: 0pt none;" title="View without Spam" src="http://mesquilla.com/wp-content/uploads/2010/07/View-without-Spam.jpg" alt="" width="637" height="437" /></a></p>
<p style="text-align: left;">You may need to specifically train the junk filter using a few junk and good messages in news. But the good news is that newsgroup spammers are not really optimizing against bayes filters, so it seems to be a lot easier to detect newsgroup spam than mail spam.</p>
]]></content:encoded>
			<wfw:commentRss>http://mesquilla.com/2010/07/21/junk-management-for-newsgroups-in-thunderbird-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Combining Thunderbird with SpamAssassin</title>
		<link>http://mesquilla.com/2010/02/12/combining-thunderbird-with-spamassassin/</link>
		<comments>http://mesquilla.com/2010/02/12/combining-thunderbird-with-spamassassin/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 01:22:53 +0000</pubDate>
		<dc:creator>rkent</dc:creator>
				<category><![CDATA[JunQuilla]]></category>
		<category><![CDATA[Mailnews development]]></category>
		<category><![CDATA[Planet MozillaMessaging]]></category>

		<guid isPermaLink="false">http://mesquilla.com/?p=607</guid>
		<description><![CDATA[For anyone who gets lots of spam mail, I typically recommend that their anti-spam management plan must consist of a multi-stage process. A common open source solution to that (and the one that I use personally) is a server-based SpamAssassin (SA) front end, followed by a client-based bayes filter, in this case the Thunderbird (TB) [...]]]></description>
			<content:encoded><![CDATA[<p>For anyone who gets lots of spam mail, I typically recommend that their anti-spam management plan must consist of a multi-stage process. A common open source solution to that (and the one that I use personally) is a server-based SpamAssassin (SA) front end, followed by a client-based bayes filter, in this case the Thunderbird (TB) default filter. Both filters are tuned to never give false positives, with Uncertain emails show in an Uncertain folder that I regularly watch.</p>
<p>In the Thunderbird 3.0 / SeaMonkey 2.0 series, I snuck in a little hidden preference to allow modifications to the way that the TB bayes filter does it tokenization. The main point of this was to allow better transfer of information between SA and TB. I&#8217;d like to describe here how to use that feature.</p>
<p>SA&#8217;s decision process involves two key steps. First, they evaluate the message with zillions of rules, and tag the message with each rule that the message hits. Second, they have a method of combining all of those tags into a final junk score for the message, which is used to decide whether to tag the overall message as spam.</p>
<p>SA&#8217;s rules include many tests that are not done by TB (score one point for SA). Yet when they take all of their rules and combine them together, in most cases they are using broad measures of goodness and spaminess that apply to some concept of a universal email. In contrast, TB&#8217;s bayes algorithm will precisely tune the junk analysis to the particular set of emails that a user gets. So if you are in the Viagra business, you can tune your local TB filter to accept those. (score one point for TB).</p>
<p>Wouldn&#8217;t it be great if you could combine together the superior rule set of SA, with the superior decision making customization of TB? That is the point of the hidden preference.</p>
<p>SA communicates its message tags to TB in the form of a custom header, X-SPAM-STATUS. A sample value of that from a spam message that I got is:</p>
<p id="line1">X-Spam-Status: No, score=4.9 required=5.0 tests=HTML_IMAGE_ONLY_16,<br />
HTML_IMAGE_RATIO_02,HTML_MESSAGE,HTML_SHORT_LINK_IMG_2,<br />
MIME_HTML_ONLY,	SPF_PASS shortcircuit=no autolearn=disabled version=3.2.5</p>
<p>This message was not marked as spam by SA, as it just barely missed the score=5.0 cutoff point, so arrives in TB as a suspicious but nevertheless good message. Yet there is lots of information about the tests that SA did in that header. TB should be able to take advantage of that information.</p>
<p>In the default TB configuration, the entire content of the X-Spam-Status header is treated as a single token. So TB will only respond to exact matches to that header. Yet those tests can appear in a variety of combinations, so that is not really taking advantage of the information effectively.</p>
<p>The answer provided in TB3 / SM2 is to provide a hidden preference that allows you to tell TB to break that particular header up into lots of separate tokens, and analyze each of those separately. That is documented in the code <a href="http://mxr.mozilla.org/comm-central/source/mailnews/extensions/bayesian-spam-filter/src/nsBayesianFilter.cpp#371">here</a>. In the preference, you specify a particular header, and give a list of delimiters for that tokenization. So to process the x-spam-status header as individual tokens including both space and comma as delimiters, you add the preference:</p>
<pre style="padding-left: 30px;">mailnews.bayesian_spam_filter.tokenizeheader.x-spam-status
</pre>
<p>and assign it the string value &#8221; ,\t\n\r\f&#8221;</p>
<p>(That can be hard to set with all of those special characters in it). That includes space, comma, tab, line feed, carriage return, and form feed as delimiters.</p>
<p>You really can&#8217;t do this to an existing training corpus without getting strange results. So you must reset the training data and retrain after you do that.</p>
<p>As a sample, the tokens used by TB to process an email with my example x-spam-status is:</p>
<p><a href="http://mesquilla.com/wp-content/uploads/2010/02/JunkAnalysisDetail1.jpg"><img class="alignnone size-full wp-image-612" title="Junk Analysis Detail" src="http://mesquilla.com/wp-content/uploads/2010/02/JunkAnalysisDetail1.jpg" alt="" width="513" height="534" /></a></p>
<p>This image uses the &#8220;Junk Analysis Detail&#8221; report from my <a href="http://mesquilla.com/extensions/junquilla/">JunQuilla extension</a>.</p>
<p>Things to notice:</p>
<ol>
<li>The tokens that TB is using to analyze this email are mostly these x-spam-status tokens, as this is a mostly-image spam message with little text for TB to analyze. So the use of the SA tokens greatly enhances the power of TB&#8217;s internal filter.</li>
<li>The final score for this, 84, ended up with the message marked as junk for me. I run a cutoff of 75, while the default cutoff is 90.</li>
<li>Many of the x-spam-status tokens are actually working against us here. For example, x-spam-status:required=5.0 has a score of 23, which moves the message toward the &#8220;good&#8221; status. Yet that token appears on every single email I receive, so should be neutral. What is going on here?
<p>This is the issue that I reported in a previous post &#8220;<a href="http://mesquilla.com/2009/12/02/bad-effects-on-junk-training-corpus-from-change/">bad effects on junk training corpus from change</a>&#8221; That is, recently I have been automatically training more messages as Good than Junk. &#8220;x-spam-status:required=5.0&#8243; must not exist in my older emails for some reason, so this bias is appearing because 1) the token changed at some point in time, and 2) there is a mismatch in the number of junk and good emails being trained recently. I really need to figure out a solution to this. What I will probably do is to add features to FiltaQuilla to allow me to precisely match the training of junk and good to remove this bias.</li>
</ol>
<p>I still need to do some tests of this to directly compare the performance of the spam filters with and without the tokenization to be sure this is really a good idea. That is quite tricky to do unfortunately.</p>
<p>In spite of these issues, I would recommend to new installations that you use this alternate tokenization when you are using a Spam Assassin front-end to Thunderbird or SeaMonkey.</p>
]]></content:encoded>
			<wfw:commentRss>http://mesquilla.com/2010/02/12/combining-thunderbird-with-spamassassin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JunQuilla version 1.0.0 released</title>
		<link>http://mesquilla.com/2009/11/16/junquilla-version-1-0-0-released/</link>
		<comments>http://mesquilla.com/2009/11/16/junquilla-version-1-0-0-released/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 21:08:27 +0000</pubDate>
		<dc:creator>rkent</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[JunQuilla]]></category>
		<category><![CDATA[Planet Mozilla]]></category>
		<category><![CDATA[Planet MozillaMessaging]]></category>

		<guid isPermaLink="false">http://mesquilla.com/?p=452</guid>
		<description><![CDATA[Today I released a version of JunQuilla that supports SeaMonkey 2.0, and the latest versions of Thunderbird including the upcoming 3.0RC1 and 3.0.0 The new version can be downloaded from the AMO site here. I&#8217;ve also submitted this version for review so that it can get out of experimental status. JunQuilla is my attempt to [...]]]></description>
			<content:encoded><![CDATA[<p>Today I released a version of <a href="http://mesquilla.com/extensions/junquilla/">JunQuilla</a> that supports SeaMonkey 2.0, and the latest versions of Thunderbird including the upcoming 3.0RC1 and 3.0.0 The new version can be downloaded from the AMO site <a href="https://addons.mozilla.org/en-US/thunderbird/addon/9886">here</a>. I&#8217;ve also submitted this version for review so that it can get out of experimental status.</p>
<p>JunQuilla is my attempt to extend the user interface in the Mozilla mailnews product to provide the information that I believe is needed to properly manage the bayesian junk filter. I suppose that most of these features should really be in the core product, but I found that support for that was not very strong, so I decided to do most of this in an extension instead. These backend features have only been added to the core code in the last couple of years, so this extension will only work on newer versions of the Mozilla email clients (Thunderbird 3.* versions, and SeaMonkey 2.* versions.)</p>
<p>Version 1.0.0 fixes some bugs that have been reported in previous releases, provides partial support for SeaMonkey (except for the &#8220;Uncertain&#8221; folders), and adds a number of new features:</p>
<h4>Junk Options</h4>
<p>You can set critical overall junk options in the standard junk options screen (previously, this was only possible in the more obscure addons/options area). In Thunderbird, select Tools/Options/Security/Junk. In SeaMonkey, select Edit/Preferences/Mail &amp; Newsgoups/JunQuilla. There you will see a display like this:</p>
<p><img class="aligncenter size-full wp-image-396" title="JunQuilla Options" src="http://mesquilla.com/wp-content/uploads/2009/11/JunQuillaOptions.jpg" alt="JunQuilla Options" width="389" height="97" /></p>
<p>&#8220;Junk threshold&#8221; is the percentage value as calculated by the bayes classifier for each message, above which a message will be classified as junk. This should be set as low as possible, though always high enough to avoid having any real messages classified as junk. The default value of 90 is much too high for a well-trained bayes classifier.</p>
<p>The &#8220;Maximum token count&#8221; is a measure of the resources that the junk classifier will use. The higher it is set, the more accurate your classifications will be. The default value of 100,000 is probably too low for good classification performance. I&#8217;ve had good results with 300,000 &#8211; and JunQuilla will set your value to this when first installed. If this value is too high, and you have trained a lot of messages, then memory usage may be excessive.</p>
<p>The other parameters are read only, and are displays of values from your training file. The &#8220;Current token count&#8221; shows how many junk training tokens (which are like words) are currently in use. You probably won&#8217;t get good performance until this number is over 10,000 &#8211; and it really should be more like 100,000.  &#8220;Good&#8221; and &#8220;Junk&#8221; messages trained shows how many messages have been used to train the junk filter. Ideally the number of junk and good messages should be more or less equal. If they are not, then pick some previously untrained messages and train them.</p>
<p>When the number of tokens exceeds the maximum value, then Mozilla mailnews will prune the training file in a large chunk, typically reducing both the number of trained messages, and the number of tokens, in about half.</p>
<h4>Disable/enable junk processing for a folder.</h4>
<p>You can set an &#8220;<a href="http://mesquilla.com/2009/11/06/inherited-folder-properties-revisited/">inherited folder property</a>&#8221; to allow you to selectively enable or disable junk processing for folders. This has two main uses.</p>
<ul>
<li>If you have server-side filters that process email in IMAP, then you may already know that certain folders contain either junk mail or good mail, and don&#8217;t want to waste time processing them locally &#8211; or take the risk that they will be processed incorrectly.</li>
</ul>
<ul>
<li>Mozilla mailnews core code now supports junk processing of RSS and News folders. You can select certain RSS or News folders, and then junk processing will run on new posts to those folders. This will also enable the standard user interface features that allow you to train messages as good or junk in those folders.</li>
</ul>
<p>To set this, right click on a folder in the folder tree, and select Properties, then the &#8220;General Information&#8221; tab. At the bottom, you will see this:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-400" title="JunQuilla Folder Properties" src="http://mesquilla.com/wp-content/uploads/2009/11/JunQuillaFolderProperties.jpg" alt="JunQuillaFolderProperties" width="189" height="114" /></p>
<p>&#8220;Analyze Junk&#8221; is an inherited folder property. What that means is that each folder can either gets its value from its parent, or can be set locally. The default value depends on the characteristics of the folder itself. So for example, this would be disabled in News by default, but enabled in IMAP. To change the value, first reset the &#8220;Inherit&#8221; checkbox, then set the value that you want in &#8220;Enabled&#8221;. If you change a value for a folder, then the value will also change for the children of that folder (assumming that they have the default &#8220;Inherit&#8221; checked.)</p>
<h4>Toolbar &#8220;Is Junk&#8221; and &#8220;Is Good&#8221; button</h4>
<p>You can add two new buttons to your toolbar &#8211; &#8220;Is Junk&#8221; and &#8220;Is Good&#8221;. Here&#8217;s what they look like, next to a standard &#8220;Junk/Not Junk&#8221; icon:</p>
<p><img class="aligncenter size-full wp-image-403" title="JunQuilla Is Good or Is Junk toolbar button" src="http://mesquilla.com/wp-content/uploads/2009/11/JunQuillaIsGoodOrJunk.jpg" alt="JunQuilla Is Good or Is Junk toolbar button" width="231" height="42" /></p>
<p>To add these buttons, right click on a toolbar, select &#8220;Customize&#8221;, then drag the buttons to the desired location.</p>
<p>The standard Junk button will always show as &#8220;Junk&#8221; when it thinks a message is good, and &#8220;Good&#8221; when it thinks that a message is junk. But that means that we can only classify a message as &#8220;Good&#8221; when it has been falsely classified as junk, and we <em>never</em> want our junk filter to do that. The &#8220;Is Good&#8221; button is meant to be used in the &#8220;Uncertain&#8221; folders to give you a means to train a message as &#8220;Good&#8221; there.</p>
<p style="padding-left: 30px;">
<span class="sfforumlink"><a href="http://mesquilla.com/forum/junquilla/junquilla-version-1-0-0-released/"><p><img src="http://mesquilla.com/wp-content/plugins/simple-forum/styles/icons/default/bloglink.png" alt="" /> Join the forum discussion on this post</p>
</a></span>]]></content:encoded>
			<wfw:commentRss>http://mesquilla.com/2009/11/16/junquilla-version-1-0-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inherited Folder Properties &#8211; revisited</title>
		<link>http://mesquilla.com/2009/11/06/inherited-folder-properties-revisited/</link>
		<comments>http://mesquilla.com/2009/11/06/inherited-folder-properties-revisited/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 19:50:52 +0000</pubDate>
		<dc:creator>rkent</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[FiltaQuilla]]></category>
		<category><![CDATA[JunQuilla]]></category>
		<category><![CDATA[Mailnews development]]></category>
		<category><![CDATA[Planet Mozilla]]></category>
		<category><![CDATA[Planet MozillaMessaging]]></category>
		<category><![CDATA[TaQuilla]]></category>

		<guid isPermaLink="false">http://mesquilla.com/?p=317</guid>
		<description><![CDATA[In a previous posting, I introduced the concept of inherited folder properties in the Mozilla mailnews products (Thunderbird and SeaMonkey). In the months since, I have incorporated these into my extensions quite significantly, so here I would like to show the UI I am currently using for this, and also discuss some of the issues [...]]]></description>
			<content:encoded><![CDATA[<p>In a <a href="http://mesquilla.com/2009/03/06/inherited-folder-properties/">previous posting</a>, I introduced the concept of inherited folder properties in the Mozilla mailnews products (Thunderbird and SeaMonkey). In the months since, I have incorporated these into my extensions quite significantly, so here I would like to show the UI I am currently using for this, and also discuss some of the issues that I face.</p>
<p>(All references to extensions in this posting refer to the 1.0.0 versions, which as of this writing have not been posted to AMO yet. But they should be available in a few weeks.)</p>
<h3>Implemented UI</h3>
<p>Briefly, inherited properties are a property that can be defined globally, at the server, or at the folder, and its characteristics will be propagated to child objects. This make it easy to specify precisely how the property is applied.</p>
<p>As an example, I have recently implemented a feature &#8220;Index in Global Database&#8221; in <a href="http://mesquilla.com/extensions/glodaquilla/">GlodaQuilla </a>which can be used to selectively suppress certain accounts or folders from being accessed by the global database indexer. In the account manager, where indexing can be disabled for an entire account, the UI looks like this:</p>
<p><img class="aligncenter size-full wp-image-320" title="Index in Global Database account settings" src="http://mesquilla.com/wp-content/uploads/2009/11/AccountIndex1.jpg" alt="Index in Global Database account settings" width="587" height="220" /></p>
<p>Each inherited property has default values which are typically set by the base code. In the case of the gloda database indexer, everything but newgroups are indexed by default. Initially each inherited property is set to just use the standard default processing, but if I clear the &#8220;default&#8221; checkbox, then I can turn off gloda indexing for this account.</p>
<p>If I do that, then go to a first-level folder in the account, I see the following under folder properties:</p>
<p><img class="aligncenter size-full wp-image-321" title="Index in Global Database by folder" src="http://mesquilla.com/wp-content/uploads/2009/11/FolderIndex.jpg" alt="Index in Global Database by folder" width="409" height="310" /></p>
<p>At the folder level, because I disabled global indexing on the account, it is now shown as disabled on the folder. I could clear the inherit box and selectively enable it on just this folder and its children if I wanted.</p>
<p>This particular UI merges naturally with the existing methods of setting properties in mailnews, but I&#8217;m not sure it is optimum for an inherited property. The inherited nature could be more clearly shown, and a particular feature more quickly configured, if I showed a tree of accounts and folders, with checkboxes next to each account to enable or inherit the feature. Maybe in a future version.</p>
<h3>Implemented properties</h3>
<p>Here are some of the implementations of inherited properties that exist in my extensions:</p>
<ol>
<li>(<a href="http://mesquilla.com/extensions/glodaquilla/">GlodaQuilla</a>) Index in Global Database &#8211; suppresses the running of the global database indexer</li>
<li>(<a href="http://mesquilla.com/extensions/filtaquilla/">FiltaQuilla</a>) Apply Filters to Folder &#8211; for Imap folders, allow incoming filters to run on that folder</li>
<li>(<a href="http://mesquilla.com/extensions/junquilla/">JunQuilla</a>) Analyze Junk &#8211; allow junk processing to be turned on or off. This also allows junk processing to run on RSS or news folders.</li>
<li>(<a href="http://mesquilla.com/extensions/taquilla/">TaQuilla</a>) Analyze particular automatic tags.</li>
</ol>
<h3>Issue:<strong> Existing mechanisms</strong></h3>
<p>Ideally, the inherited property would be the one and only way to manage a program feature. But for existing features, the existing mechanisms remain, which can lead to possible confusion. For example, with JunQuilla&#8217;s &#8220;Analyze Junk&#8221; property, there is existing UI to enable junk processing at the account level. Here the inherited property will always override the default mechanism (but that is mostly because I implemented it in core that way, and I have a little influence on how junk processing is handled in core.) For GlodaQuilla&#8217;s &#8220;Index in Global Database&#8221; the behaviour is different. Existing UI will only allow this to be enabled or disabled globally, and the inherited property does not override this. The inherited property code uses the default server preference as a global enable/disable for a property, so if gloda used that same mechanism instead of an independent preference, this issue would go away. I guess I could say the same thing about junk processing as well.</p>
<p>For FiltaQuilla&#8217;s &#8220;Apply Filters to Folder&#8221;, there is a subtle issue in the inherited nature. I did not implement in core the ability of the inherited property to override the existing default as applied to the Inbox, so incoming filters always run on the inbox. That creates 2 ui issues. First, although I show at the account level the &#8220;Apply Filters&#8221; option, it does not actually suppress application to the inbox as one would expect. Second, I currently do not show a folder property for &#8220;Apply Filters to Folder&#8221; for the IMAP inbox since it would not make sense there, so that also means there is no way to enable processing of filters for the children of the inbox. Maybe I should call this feature instead &#8220;Apply Filters to non-Inbox Folders&#8221; to solve this, or change the core code so that the feature also applied to the Inbox.</p>
<h3>Issue: My RDF-inspired property for junk management</h3>
<p>Looking ahead to a world where a number of extensions might try to define bayes filter traits, in code I recommended that properties used to manage junk processing use an RDF-inspired globally unique identifier. Then I followed my own advice and defined the identifier that controls junk processing on a folder as: &#8220;dobayes.mailnews@mozilla.org#junk&#8221; Unfortunately, the existing account manager code does not allow periods in property names, which means I could not use the account manager to manage this. I&#8217;ve filed <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=525024">bug 525024</a> on this issue, and perhaps that can be incorporated after TB 3.0 / SM 2.0.</p>
<h3>Issue: Missing inheritance levels</h3>
<p>I&#8217;ve heard others comment that often they want to set a property on a particular class of folders, say on all Trash folders, or all Sent folders. I&#8217;ve considered implementing another level in the inherited properties feature, that would be a folder type. So you would then set a property that would be inherited by any folder of a particular type, and its children &#8211; and of course also overridden by the local folder property.</p>
<h3>Issue: UI for global property</h3>
<p>All of the inherited properties could also be enabled globally using the &#8220;mail.server.default.&lt;property&gt;&#8221; preference, but I did not give any UI for that in my extensions. I thought that would be too confusing for the user to show those preferences, which would be very similar to existing mechanisms. This is not an issue for properties that use the preference system for server-level issues, but none of the existing server-level preferences are also inherited properties. Perhaps we could move that direction in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://mesquilla.com/2009/11/06/inherited-folder-properties-revisited/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Managing spam with &#8220;after classification&#8221; filters</title>
		<link>http://mesquilla.com/2009/08/28/managing-spam-with-after-classification-filters/</link>
		<comments>http://mesquilla.com/2009/08/28/managing-spam-with-after-classification-filters/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 21:12:24 +0000</pubDate>
		<dc:creator>rkent</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[JunQuilla]]></category>
		<category><![CDATA[Planet Mozilla]]></category>
		<category><![CDATA[Planet MozillaMessaging]]></category>

		<guid isPermaLink="false">http://mesquilla.com/?p=282</guid>
		<description><![CDATA[Nightly builds after 2009-08-19 of Thunderbird (or upcoming 3.0 beta 4) and SeaMonkey  (or upcoming 2.0 beta 2) include a new ability to apply message filters after the internal spam filter has classified the message. Previously, filtering was always done before spam classification, which meant that you could not use any results of the spam [...]]]></description>
			<content:encoded><![CDATA[<p>Nightly builds after 2009-08-19 of Thunderbird (or upcoming 3.0 beta 4) and SeaMonkey  (or upcoming 2.0 beta 2) include a new ability to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=198100">apply message filters after the internal spam filter</a> has classified the message. Previously, filtering was always done before spam classification, which meant that you could not use any results of the spam classification in a filter.</p>
<p>The default spam processing that is available without using filters (whitelisting, move or delete messages with a sufficiently high threshold) should be sufficient for most users. But for people with special requirements you can now implement those requirements in a filter with customizations. Let me give examples in this posting.</p>
<h3><strong>Using the &#8220;after classification&#8221; filters<br />
</strong></h3>
<p>Proper care and feeding of spam really needs to classify messages in three ways. Some messages can be easily detected as spam, and should never be looked at. Others are clearly ham, and should be treated as real. But those in the middle need some handling, which may be either training, or perhaps examined weekly to make sure no false positives are there. Default Mozilla mailnews (which is the generic term for features that are available in any of the applications created from this codebase, including Thunderbird and SeaMonkey) junk management doesn&#8217;t provide any capability to manage these uncertain emails. My <a href="http://mesquilla.com/extensions/filtaquilla/">JunQuilla</a> extension provides an Uncertain folder which is focused on the training issue, but with the new  filter features you can have more precise control of this. (Currently you can&#8217;t install JunQuilla in SeaMonkey, but I will fix that eventually).</p>
<p>First, let&#8217;s see what is new and how it can be enabled.</p>
<p>Create a new filter by selecting Tools/Message Filters &#8230; then New. Open up the search attributes menu, and you&#8217;ll see something like this:</p>
<p><img class="alignnone size-full wp-image-283" title="NoJunkOptions" src="http://mesquilla.com/wp-content/uploads/2009/08/NoJunkOptions.jpg" alt="NoJunkOptions" width="562" height="439" /></p>
<p>No junk options! To get those, you&#8217;ll need to first select one of the &#8220;after classification&#8221; contexts from &#8220;Apply Filter When&#8221;. Then you&#8217;ll see something like this:</p>
<p><img class="alignnone size-full wp-image-284" title="WithJunkOptions" src="http://mesquilla.com/wp-content/uploads/2009/08/WithJunkOptions.jpg" alt="WithJunkOptions" width="519" height="512" /></p>
<p>If &#8220;Checking mail (after classification)&#8221; is disabled, then you probably are trying to set an after-classification filter on a POP3 account that is actually sending its email to another location (the so-called deferred-to server). You need instead to set the &#8220;after classification&#8221; filter on the &#8220;deferred-to&#8221; server, which is typically Local Folders.</p>
<p>Let me explain each of these search attributes.</p>
<p><strong>Junk Percent</strong> is the score returned from the bayes filter when classifying the message, with 100 being the most likely to be junk, and 0 the least likely. The default setting in Thunderbird classifies a message as junk when this score is 90 or greater. It is sort of a probablility, but not really because too many false assumptions are made in the Naive Bayesian Classifier for this to really be a probability. Just treat it like a score. Unfortunately default installs of Thunderbird and SeaMonkey do not provide you with any way to see the value of this on typical messages. <a href="http://mesquilla.com/extensions/junquilla/">JunQuilla</a> though provides a custom column that shows this on each message so you can get a feel for what typical values are.</p>
<p><strong>Junk Status </strong>is pretty simple, it either Is or Isnt Junk. In the normal case where the internal bayes filter is used to classify the message, this means it had a junk percent of greater than 90.</p>
<p><strong>Junk Score Origin</strong> shows you who classified the message. Its values are:</p>
<p style="padding-left: 30px;"><strong>Plugin</strong>: the bayes filter.</p>
<p style="padding-left: 30px;"><strong>User</strong>: you manually classified this message as junk or good (not useful in an incoming filter, but maybe in a manual filter or search).</p>
<p style="padding-left: 30px;"><strong>Filter</strong>: a previous filter action set the junk status.</p>
<p style="padding-left: 30px;"><strong>Whitelist</strong>: the spam processing decided this message was good because it was from someone in your address book.</p>
<p style="padding-left: 30px;"><strong>IMAP Flag</strong>: this message was classified by another system, so we know it is junk or good, but don&#8217;t know why the other system classified it this way. You might see this if you access mail from more than one computer.</p>
<p>Default Thunderbird does not support any way to see the junk score origin on individual messages, though JunQuilla provides a Junk Status + column which uses different icons for each junk score origin.</p>
<h3>Classifying messages as uncertain</h3>
<p>So let&#8217;s design a filter that will move messages to an Uncertain folder if we want to examine them, but not have them clutter the inbox. That&#8217;s pretty easy, we&#8217;ll just move messages with a junk percent in a certain range to that folder:</p>
<p><img class="alignnone size-full wp-image-288" title="UncertainJunk" src="http://mesquilla.com/wp-content/uploads/2009/08/UncertainJunk.jpg" alt="UncertainJunk" width="520" height="374" /></p>
<p>The order of message processing in Mozilla mailnews is:</p>
<ol>
<li>Run normal filters (on each message as it is received)</li>
<li>Check whitelisting (on a message batch, this and subsequent steps)</li>
<li>Run bayes classifier on non-whitelisted messages, and mark messages as junk or good.</li>
<li>Apply &#8220;after classification&#8221; filters.</li>
<li>Apply junk message moves using default junk processing.</li>
</ol>
<p>So at least in theory, you can apply the &#8220;after classification&#8221; filter to the Uncertain messages, and still let the default junk processing move junk messages to a Junk folder. (Testing of this is welcomed!)</p>
<h3>Weak Whitelisting</h3>
<p>As a more complex example, spammers are starting to send out emails that have spoofed From addresses that match the domain of your email, figuring that there is a chance that you have these other addresses whitelisted, so you&#8217;ll get the spam. To fight this, we&#8217;ll setup a filter that does a whitelist that is slightly weaker than the usual all-or-nothing whitelist on those easily spoofed addresses. Because whitelisting occurs before spam processing, and no score will be assigned if the message is whitelisted, you will need to disable the default whitelisting functionality, and rely entirely on message filters for this to work.</p>
<p>We&#8217;ll add the following search terms, all of which must match to apply our weak whitelist:</p>
<ol>
<li>From address appears in an address book (this is normal whitelisting)</li>
<li>My domain appears in the address (because that is easily spoofed)</li>
<li>Junk Score Origin is Plugin (this prevents the filter from running on messages that we classified, in case we run it manually on existing folders).</li>
<li>Junk Status is Junk (we&#8217;ll only whitelist if the bayes filter thought it was junk. I only do this so that I can see that the filter decided to override the decision of the bayes processor, which needs the Junk Status + column from JunQuilla to see.)</li>
<li>Junk Percent is less than 95 (since the bayes filter only marked messages as junk with the percent &gt; 90, this means that we will override the bayes decision for messages between 90 and 95 in score).</li>
</ol>
<p>Putting this all together, you get a filter that looks like this:</p>
<p><img class="alignnone size-full wp-image-291" title="WeakWhitelist" src="http://mesquilla.com/wp-content/uploads/2009/08/WeakWhitelist.jpg" alt="WeakWhitelist" width="549" height="445" /></p>
<p>You would also need to define a filter that is applied after this one, that whitelists any messages that meet the normal whitelist criteria, but were marked as junk by the bayes filter.</p>
<p>I&#8217;m not necessarily recommending this filter, it was meant as a demonstration. But I hope you can see that the new ability to use the bayes filter in combination with other message criteria in a filter provides lots of new possibilities for more precise handling of possible spam messages.</p>
]]></content:encoded>
			<wfw:commentRss>http://mesquilla.com/2009/08/28/managing-spam-with-after-classification-filters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extension status for Thunderbird 3.0 beta 3 (and Seamonkey 2.0 beta 1)</title>
		<link>http://mesquilla.com/2009/07/19/extension-status-for-thunderbird-30-beta-3-and-seamonkey-20-beta-1/</link>
		<comments>http://mesquilla.com/2009/07/19/extension-status-for-thunderbird-30-beta-3-and-seamonkey-20-beta-1/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 06:21:34 +0000</pubDate>
		<dc:creator>rkent</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[FiltaQuilla]]></category>
		<category><![CDATA[JunQuilla]]></category>
		<category><![CDATA[TaQuilla]]></category>
		<category><![CDATA[ToneQuilla]]></category>

		<guid isPermaLink="false">http://mesquilla.com/?p=278</guid>
		<description><![CDATA[I&#8217;ve just bumped the allowable Thunderbird (and where applicable Seamonkey) version on my extensions to allow them to work with the new version numbers in the nightlies and release candidates. I had hoped to have new releases available by now, but have not yet done that. Major changes are planned for FiltaQuilla (new custom searches) [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just bumped the allowable Thunderbird (and where applicable Seamonkey) version on my extensions to allow them to work with the new version numbers in the nightlies and release candidates. I had hoped to have new releases available by now, but have not yet done that.</p>
<p>Major changes are planned for FiltaQuilla (new custom searches) and ToneQuilla (switching to ogg Vorbis as the standard format). JunQuilla should have bug fixes, TaQuilla and GlodaQuilla will be virtually unchanged.</p>
]]></content:encoded>
			<wfw:commentRss>http://mesquilla.com/2009/07/19/extension-status-for-thunderbird-30-beta-3-and-seamonkey-20-beta-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Updated ToneQuilla, FiltaQuilla, and JunQuilla posted</title>
		<link>http://mesquilla.com/2009/02/24/updated-tonequilla-filtaquilla-and-junquilla-posted/</link>
		<comments>http://mesquilla.com/2009/02/24/updated-tonequilla-filtaquilla-and-junquilla-posted/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 09:09:27 +0000</pubDate>
		<dc:creator>rkent</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[FiltaQuilla]]></category>
		<category><![CDATA[JunQuilla]]></category>
		<category><![CDATA[Planet MozillaMessaging]]></category>
		<category><![CDATA[ToneQuilla]]></category>

		<guid isPermaLink="false">http://mesquilla.com/?p=179</guid>
		<description><![CDATA[Recently I posted new versions of ToneQuilla, FiltaQuilla, and JunQuilla to mozilla&#8217;s addons site that support Thunderbird 3 beta 2, and Seamonkey 2 alpha 3 (SM is not supported in JunQuilla). In addition to version support, extensions have these changes: ToneQuilla mostly gets an important bug fix to stop playing from ending prematurely. JunQuilla gets [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I posted new versions of ToneQuilla, FiltaQuilla, and JunQuilla to <a href="https://addons.mozilla.org/en-US/thunderbird/">mozilla&#8217;s addons site</a> that support Thunderbird 3 beta 2, and Seamonkey 2 alpha 3 (SM is not supported in JunQuilla). In addition to version support, extensions have these changes:</p>
<ul>
<li><a href="http://mesquilla.com/extensions/tonequilla/">ToneQuilla</a> mostly gets an important bug fix to stop playing from ending prematurely.</li>
<li><a href="http://mesquilla.com/extensions/junquilla/">JunQuilla</a> gets the new Junk Detail Analysis view that was mentioned in a <a href="http://mesquilla.com/2009/02/03/viewing-junk-tokens/">previous post</a>.</li>
<li><a href="http://mesquilla.com/extensions/filtaquilla/">FiltaQuilla</a> gets three new filter actions: Run a Process with parameters, Train as Good, and Train as Junk.</li>
</ul>
<p>The description page for each of the extensions has updated descriptions of the extensions, including new features.</p>
]]></content:encoded>
			<wfw:commentRss>http://mesquilla.com/2009/02/24/updated-tonequilla-filtaquilla-and-junquilla-posted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extension plans for Thunderbird beta2</title>
		<link>http://mesquilla.com/2009/02/14/extension-plans-for-thunderbird-beta2/</link>
		<comments>http://mesquilla.com/2009/02/14/extension-plans-for-thunderbird-beta2/#comments</comments>
		<pubDate>Sat, 14 Feb 2009 20:18:04 +0000</pubDate>
		<dc:creator>rkent</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[FiltaQuilla]]></category>
		<category><![CDATA[JunQuilla]]></category>
		<category><![CDATA[Planet MozillaMessaging]]></category>
		<category><![CDATA[TaQuilla]]></category>
		<category><![CDATA[ToneQuilla]]></category>

		<guid isPermaLink="false">http://mesquilla.com/?p=169</guid>
		<description><![CDATA[Now that Thunderbird beta2 has entered slushy code freeze, it&#8217;s time to update my extensions to match. Here&#8217;s my plans, which I will try to accomplish near the time that beta 2 releases (currrently scheduled for 2009-02-24): ToneQuilla The published version has a bug that interrupts the playing in some cases. I&#8217;ll fix that, but [...]]]></description>
			<content:encoded><![CDATA[<p>Now that Thunderbird beta2 has entered slushy code freeze, it&#8217;s time to update my extensions to match. Here&#8217;s my plans, which I will try to accomplish near the time that beta 2 releases (currrently scheduled for 2009-02-24):</p>
<h3>ToneQuilla</h3>
<p>The published version has a bug that interrupts the playing in some cases. I&#8217;ll fix that, but otherwise no changes. Prior to TB3 though I would like to implement support for Ogg Vorbis files in TB core, and add that to ToneQuilla as well. I&#8217;ll try to add some more tones at the same time &#8211; though possibly in a separate extension so that the main download does not get bloated.</p>
<h3>JunQuilla</h3>
<p>Changes in the backend to the database interface have made portions of JunQuilla quit working with recent Thunderbird builds. I&#8217;ll fix that. Also, I will be able to add the junk detail views shown in my <a href="http://mesquilla.com/2009/02/03/viewing-junk-tokens/">recent post</a> since the <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=451405">required backend code</a> has now landed. There&#8217;s also a small error that appears in the console on startup that I hope to find and eliminate.</p>
<p>There will also be a <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=472005">bug fix</a> in beta2 in the backend bayes filter code that could make a big difference in the effectiveness of the filter. Previously, the mozilla-added header that indicated whether a message was read or unread was used as a bayes token. But that makes no sense, since marking as read is a post-receipt action, all incoming messages are unread. So depending on how you trained your messages, there could be an unexpected biasing of unread messages either toward good or junk. In my case, unread messages were biased toward good, tending to lower the junk score by about 7 percentage points &#8211; which is a lot.</p>
<h3>FiltaQuilla</h3>
<p>As with JunQuilla, some functions quit working in recent builds (at least Do Not Notify, possibly others). I&#8217;ll need to fix those. I don&#8217;t know yet if I will have time to add additional requested features. I see that the Penelope team (Mozilla-based Eudora client) is hoping to add the detach attachments action to the core, so I probably will not do that here. I&#8217;ll try to get a preliminary version of the nsIProcess interface up so that you could launch a program with parameters.</p>
<h3>TaQuilla</h3>
<p>The backend changes that I needed to allow this to work have now landed, so I should be able to release a preliminary version of this soft tagging extension.</p>
]]></content:encoded>
			<wfw:commentRss>http://mesquilla.com/2009/02/14/extension-plans-for-thunderbird-beta2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Viewing junk tokens</title>
		<link>http://mesquilla.com/2009/02/03/viewing-junk-tokens/</link>
		<comments>http://mesquilla.com/2009/02/03/viewing-junk-tokens/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 23:15:39 +0000</pubDate>
		<dc:creator>rkent</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[JunQuilla]]></category>

		<guid isPermaLink="false">http://mesquilla.com/?p=166</guid>
		<description><![CDATA[I implemented this week an interface to view the details of the bayesian filter calculation (bug 451405). It will be part of JunQuilla and TaQuilla eventually. Although I was mostly motivated to add it because of the interest users might have in understanding the categorization that TaQuilla will do, I&#8217;ve found the viewing of junk [...]]]></description>
			<content:encoded><![CDATA[<p>I implemented this week an interface to view the details of the bayesian filter calculation (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=451405">bug 451405</a>). It will be part of JunQuilla and TaQuilla eventually. Although I was mostly motivated to add it because of the interest users might have in understanding the categorization that TaQuilla will do, I&#8217;ve found the viewing of junk tokens also very interesting.</p>
<p>Here&#8217;s a typical result for a spam email, using a modified version of JunQuilla:</p>
<a href="http://mesquilla.com/wp-content/uploads/2009/02/junkanalysis.png"><img class="size-full wp-image-167" title="Junk Analysis" src="http://mesquilla.com/wp-content/uploads/2009/02/junkanalysis.png" alt="Analysis of a junk email" width="500" height="371" /></a>
<p>The columns may need a little explaining. &#8220;Token&#8221; is the string that was detected as a token. If it is shown as a word followed by a colon (&#8220;subject:melissa,&#8221;) then it was found in the header field  shown to the left of the colon. &#8220;skip&#8221; is an exception, it means that a large token was found of the length given by the number.</p>
<p>&#8220;Token %&#8221; is the percent likelihood that the particular token is found in a spam email. &#8220;Total %&#8221; is a running calculation of the likelihood that the entire message is junk, using only the shown token and those stronger. The entire list is sorted in order of decreasing token strength, so that you can see the importance of each of the tokens to the overall calculation.</p>
<p>Just in this one email, several interesting things come out. First, the strongest token was &#8220;skip:* 40&#8243; which meant that a long token was found in the body of length 40. Instead of storing such long tokens, TB creates an artificial token that just shows the length. This was an incorrect indicator, as that token was a strong measure of &#8220;goodness&#8221;.</p>
<p>The next three indicators include &#8220;Melissa&#8221;. For some strange reason, I get lots of spam email bound for someone named Melissa Barnes, that I think lives in Florida, but that email is directed at my main caspia.com email address. So you can see the effect of lots of training that &#8220;Melissa Barnes&#8221; is junk.</p>
<p>Looking down some more, there is a token for the &#8220;x-spam-status&#8221; header, which is given by an upstream Spam Assassin provider. The x-spam-status header often has a lot of interesting information in it, representing tests done by Spam Assassin in its attempts to categorize the email. But those separate tests are not listed as tokens that can be analyzed separately by TB&#8217;s bayes filter. Currently, only the &#8220;subject&#8221; header is broken up into separate tokens, all other headers are listed as a single complete token. I have a bug pending (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=476389">bug 476389</a>) which will allow me to break specific headers into separate tokens, with a custom set of delimiters, which should allow me to get at that valuable information.</p>
<p>I&#8217;ve also learned some things about some difficulties that the bayes filter is having. The x-mozilla headers that TB adds to keep track of message information such as unread, is being added to the token list. This can have some unexpected negative results. If, for example, in the past you trained &#8220;good&#8221; messages that were read, but &#8220;junk&#8221; messages that were unread, then &#8220;unread&#8221; becomes a strong indicator of a message being spam. Yet all new emails are unread! This is not a good thing. I&#8217;m going to remove adding those headers in the future in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=472005">bug 472005</a>.</p>
<p>Another issue is how the bayes filter deals with tokens that are neutral, that is have probabilities near 50%. Although the bayes filter does not use tokens with probability &gt;40% and &lt;60%, often in a long spam email there are a lot of random words that are are in the 30s and 60s percent. These words, appearing randomly, seem to force the calculation closer to 50% &#8211; which will not be detected as spam (by default TB uses 90% as the spam detection limit. I use 75%). I need to investigate this further, as you should not be able to defeat the spam filter by filling you message with a lot of common words.</p>
]]></content:encoded>
			<wfw:commentRss>http://mesquilla.com/2009/02/03/viewing-junk-tokens/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JunQuilla available in AMO</title>
		<link>http://mesquilla.com/2008/12/08/junquilla-available-in-amo/</link>
		<comments>http://mesquilla.com/2008/12/08/junquilla-available-in-amo/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 17:56:18 +0000</pubDate>
		<dc:creator>rkent</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[JunQuilla]]></category>

		<guid isPermaLink="false">http://mesquilla.com/?p=74</guid>
		<description><![CDATA[The initial version of my extension JunQuilla, which provides improved information for training the junkmail filter, is now available here. JunQuilla gives you more information about the junk (aka spam) status of each email (its percentage match in the statistical calculations, and reasons why a message was marked junk or good). Also, an Uncertain folder [...]]]></description>
			<content:encoded><![CDATA[<p>The initial version of my extension JunQuilla, which provides improved information for training the junkmail filter, is now available <a href="https://addons.mozilla.org/en-US/thunderbird/addon/9886">here</a>. JunQuilla gives you more information about the junk (aka spam) status of each email (its percentage match in the statistical calculations, and reasons why a message was marked junk or good). Also, an Uncertain folder of messages needing training is added.</p>
<p>See <a href="http://mesquilla.com/extensions/junquilla">http://mesquilla.com/extensions/junquilla</a> for details.</p>
]]></content:encoded>
			<wfw:commentRss>http://mesquilla.com/2008/12/08/junquilla-available-in-amo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
