<?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; Extensions</title>
	<atom:link href="http://mesquilla.com/category/extensions/feed/" rel="self" type="application/rss+xml" />
	<link>http://mesquilla.com</link>
	<description>Messaging with Mozilla by rkent</description>
	<lastBuildDate>Wed, 03 Mar 2010 22:31:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>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>TaQuilla 0.3.0 released</title>
		<link>http://mesquilla.com/2009/12/22/taquilla-0-3-0-released/</link>
		<comments>http://mesquilla.com/2009/12/22/taquilla-0-3-0-released/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 19:15:30 +0000</pubDate>
		<dc:creator>rkent</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[Planet MozillaMessaging]]></category>
		<category><![CDATA[TaQuilla]]></category>

		<guid isPermaLink="false">http://mesquilla.com/?p=569</guid>
		<description><![CDATA[I&#8217;ve just uploaded a new version of TaQuilla to Mozilla&#8217;s add-on site. You can download it here. It is still listed as experimental status, so updates are not automatic. Details of the changes in this revision are available here, but briefly it mostly adds some user interface consolidations for consistency, plus support for Thunderbird 3.0 [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just uploaded a new version of <a href="http://mesquilla.com/extensions/taquilla/">TaQuilla</a> to Mozilla&#8217;s add-on site. You can download it <a href="https://addons.mozilla.org/en-US/thunderbird/addon/10905">here</a>. It is still listed as experimental status, so updates are not automatic. Details of the changes in this revision are available <a href="http://mesquilla.com/extensions/taquilla/taquilla-revisions/">here</a>, but briefly it mostly adds some user interface consolidations for consistency, plus support for Thunderbird 3.0 and SeaMonkey 2.0.</p>
<p>Frankly, I&#8217;ve struggled to find a good personal use of TaQuilla for use in my dogfooding. I&#8217;ve tried using it to <a href="http://mesquilla.com/2009/03/15/automatically-determining-interesting-rss-feed-posts/">categorize &#8220;interesting&#8221; posts</a>, but I can&#8217;t even agree myself from day-to-day what is &#8220;interesting&#8221;, and the soft tagging is even more indecisive. But I&#8217;ve finally hit on a good use for it in my workflow &#8211; rejecting of sports articles in newsfeeds!</p>
<p>I have an RSS feed that subscribes to local news for the &#8220;Seattle Times&#8221; newspaper, but I find a lot of the articles are sports related. Now I am a certified geek, and not really interested in those types of articles. So what I did is to create a tag &#8220;Sports&#8221;, then I setup TaQuilla soft tags for &#8220;Sports&#8221; on the RSS feed, create a virtual folder that filters out articles tagged with &#8220;Sports&#8221;, and voila I can read the newspaper feed without all of those annoying sports articles. It&#8217;s particularly useful since many of the same articles get updated multiple times, and the updates are very efficiently rejected with the bayes filter if I tag the original.</p>
]]></content:encoded>
			<wfw:commentRss>http://mesquilla.com/2009/12/22/taquilla-0-3-0-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FiltaQuilla 1.0.0 released, adds custom search terms</title>
		<link>http://mesquilla.com/2009/12/02/filtaquilla-1-0-0-released-adds-custom-search-terms/</link>
		<comments>http://mesquilla.com/2009/12/02/filtaquilla-1-0-0-released-adds-custom-search-terms/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 06:37:35 +0000</pubDate>
		<dc:creator>rkent</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[FiltaQuilla]]></category>
		<category><![CDATA[Planet Mozilla]]></category>
		<category><![CDATA[Planet MozillaMessaging]]></category>

		<guid isPermaLink="false">http://mesquilla.com/?p=512</guid>
		<description><![CDATA[Well I finally decided to quit adding new stuff, and just get a compatible FiltaQuilla out the door that works with Thunderbird 3.0 and SeaMonkey 2.0. You can get the new version from Mozilla&#8217;s download site here.
In addition to some new filter actions (print, add sender to address list, and save attachments to a folder) [...]]]></description>
			<content:encoded><![CDATA[<p>Well I finally decided to quit adding new stuff, and just get a compatible <a href="http://mesquilla.com/extensions/filtaquilla/">FiltaQuilla</a> out the door that works with Thunderbird 3.0 and SeaMonkey 2.0. You can get the new version from Mozilla&#8217;s download site <a href="https://addons.mozilla.org/en-US/thunderbird/addon/10052">here</a>.</p>
<p>In addition to some new filter actions (print, add sender to address list, and save attachments to a folder) this release introduces &#8220;custom search terms&#8221; for the first time. This is a new feature that has been added recently to the mailnews core code, and is part of the TB 3.0 and SM 2.0 releases.</p>
<p>The search I am talking about is the old-style Thunderbird search, not the newer global database (gloda) search that was added to Thunderbird. Gloda gets all of the press, but we&#8217;ve also taught the old style search a few tricks as well! These are particularly useful in saved searchs (also called virtual folders).</p>
<p>I think that the most interesting new capability is that you can define a search (and therefore a virtual folder) by adding a few lines of javascript code that does precisely what you want. Let me give a very simple example.</p>
<p>Let&#8217;s assume that you want a virtual  folder to contain all of the active items that you currently need to process involving projects. Incoming emails are marked with tags, either manually or by some sort of filter. You define new tags for each project, and each tag begins with &#8220;pro&#8221; and ends with some sort of project marker, say a number or word. You want to have your active folder contain messages that have a tag containing &#8220;pro&#8221;, but NOT include messages that are tagged &#8220;done&#8221;.</p>
<p>The standard mailnews tag search forces you to enter the tag name for each tag that you want. There is no way to search for tags by the characters in the tags. Plus, searching for several tags is an OR function, and saying to not include DONE messages is an AND function. But the standard mailnews search does not handle complex boolean searches.</p>
<p>The javascript custom search comes to the rescue! Go to the folder that contains the messages that you want, and select the Javascript search term:</p>
<p><img class="alignnone size-full wp-image-513" title="Search Javascript search term" src="http://mesquilla.com/wp-content/uploads/2009/12/SearchJavascript.jpg" alt="Search Javascript search term" width="577" height="194" /></p>
<p>Click on the script icon <img class="alignnone size-full wp-image-494" title="Script edit button" src="http://mesquilla.com/wp-content/uploads/2009/12/script_edit.png" alt="Script edit button" width="16" height="16" /> and you will get a small editor window, where you can enter a few lines of javascript. All that we need to do is grab the string that has the tags in it, and make sure it includes &#8220;pro&#8221; but does not include &#8220;done&#8221;. Our javacript is given a variable &#8220;message&#8221; which is the database header object that can be used to get message properties. We need to execute an expression as the last statement, whose value is either <strong>true</strong> if we want the message, or<strong> false </strong>if we do not. That&#8217;s just the following two lines of javascript:</p>
<pre style="padding-left: 30px;">let tags = message.getStringProperty('keywords');
(/pro/.test(tags) &amp;&amp; !(/done/.test(tags));</pre>
<p>So here&#8217;s what our javascript window and code looks like:</p>
<p><img class="alignnone size-full wp-image-514" title="Enter Javascript code" src="http://mesquilla.com/wp-content/uploads/2009/12/EnterJavascript.jpg" alt="Enter Javascript code" width="489" height="156" /></p>
<p>Now save this as a virtual folder, and you have the exact virtual folder that you want!</p>
<p>OK, this is just for geeks, but it is really powerful in letting you define folders that can precisely define the workflow that you want. There&#8217;s also a few other geek-friendly search terms, including the much-requested regular expression search by subject or other header. For details, see the updated <a href="http://mesquilla.com/extensions/filtaquilla/">FiltaQuilla page</a> on this site.</p>
<p>FiltaQuilla is still in experimental status, though I have now nominated it to be public. Still it may be a few weeks before it gets there. If you are an existing FiltaQuilla user, you will need to go to the <a href="https://addons.mozilla.org/en-US/thunderbird/addon/10052">download page</a> directly and download and install the new version.</p>
<p>Enjoy!</p>
<span class="sfforumlink"><a href="http://mesquilla.com/forum/filtaquilla/filtaquilla-1-0-0-released-adds-custom-search-terms/"><img src="http://mesquilla.com/wp-content/plugins/simple-forum/styles/icons/default/bloglink.png" alt="" /> Join the forum discussion on this post</a> - (1) Posts</span>]]></content:encoded>
			<wfw:commentRss>http://mesquilla.com/2009/12/02/filtaquilla-1-0-0-released-adds-custom-search-terms/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Extension driven development</title>
		<link>http://mesquilla.com/2009/11/28/extension-driven-development/</link>
		<comments>http://mesquilla.com/2009/11/28/extension-driven-development/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 07:37:49 +0000</pubDate>
		<dc:creator>rkent</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[Mailnews development]]></category>
		<category><![CDATA[Planet Mozilla]]></category>
		<category><![CDATA[Planet MozillaMessaging]]></category>

		<guid isPermaLink="false">http://mesquilla.com/?p=479</guid>
		<description><![CDATA[What then do I mean by &#8220;extension driven development&#8221;? It is the concept of changing the way that Thunderbird is developed and distributed, with a bare minimum set of core code, and the main features presented as a set of extensions, shipped with the product,  that can be enabled or disabled by users.
I don&#8217;t have [...]]]></description>
			<content:encoded><![CDATA[<p>What then do I mean by &#8220;extension driven development&#8221;? It is the concept of changing the way that Thunderbird is developed and distributed, with a bare minimum set of core code, and the main features presented as a set of extensions, shipped with the product,  that can be enabled or disabled by users.</p>
<p>I don&#8217;t have any illusions that this has a significant chance of being implemented, and I&#8217;m not even sure it&#8217;s a good idea myself. But I ask you to suspend disbelief for a minute, and imagine a change to the development culture and process.</p>
<p>An email client is different from a web client in many ways, but one significant way is that there is no real need for a fat uniform core product that developers can target (such as web developers for FireFox). So we are free to allow wide changes in our product configuration that would not make sense for FireFox. There is really no fundamental need for Thunderbird to be presented as a single, fat, feature-laden client.</p>
<p>Instead, ship Thunderbird as a minimal base with a collection of extensions. The extensions could be in a variety of statuses. At one status extreme, &#8220;Core&#8221; extensions would be enabled by default, would be fully localized, and their updates would be shipped with updates to the core product, rather than through AMO. Many existing core features would be converted into &#8220;Core&#8221; extensions that could be disabled if desired (for example bayes junk processing, or gloda.) At the other extreme, &#8220;Pilot&#8221; extensions would be shipped with the core product in a disabled state, would be updated by AMO, and not fully localized. There would also be &#8220;Standard&#8221; extensions that are shipped with the product, not maintained through AMO, but would not be enabled by default. Lightning might be one example of this. FiltaQuilla or JunQuilla could easily get added to this category in the future, or popular extensions like ThunderBrowse.</p>
<p>So why would you do such a crazy thing? For several reasons.</p>
<p>First, you would have a path to add features to the program that is not as generally disruptive as has been, for example, gloda or the new message header. By not using a new extension, an existing user would not see changes to their workflow that they did not want or appreciate. Also, new features need not delay the release of new versions of Thunderbird, as &#8220;Pilot&#8221; status extensions could be updated through AMO.</p>
<p>Second, new complex features like gloda, even though they are developed by the core team (well mostly asuth) are in a state of rapid flux, and would really benefit from allowing updates more frequently than even the accelerated release process will allow.</p>
<p>Third, you provide a natural path for outside developers to add contribution to the product without having to completely submerge themselves in the Mozilla culture, or give up complete control of their creation.</p>
<p>Fourth, this really recognizes that the use of an email client is highly personal. Basic users could be presented a basic email client. Advanced users could easily add advanced features. (Existing AMO-based extensions are also good for this, but the quality is not uniform, and they frequently are not kept up to date. And the standard product is still very fat with lots of features that are unneeded by most users.)</p>
<p>Fifth, this would solve the serious issue with Thunderbird of how hard it is for the average user to install addons (because the most popular and important addons would be shipped with the product).</p>
<p>There&#8217;s another dimension to this, and that is the developer&#8217;s relationship with his or her extension. I know that I feel a responsibility for my extensions that is beyond the responsibility I feel for any core code. You can see that in the documentation that I provide, and my reliability in responding to issues. I think that many other extension developers are like that as well. I&#8217;m guessing that they would be delighted to see a higher level of promotion of their work, without the need to cede complete control that incorporation in core might involve.</p>
<p>I suppose I could write a book on what this might look like, but for now let me leave it here.</p>
<p>rkent</p>
]]></content:encoded>
			<wfw:commentRss>http://mesquilla.com/2009/11/28/extension-driven-development/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>ToneQuilla version 1.0.1</title>
		<link>http://mesquilla.com/2009/11/28/tonequilla-version-1-0-1/</link>
		<comments>http://mesquilla.com/2009/11/28/tonequilla-version-1-0-1/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 05:00:50 +0000</pubDate>
		<dc:creator>rkent</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[ToneQuilla]]></category>

		<guid isPermaLink="false">http://mesquilla.com/?p=473</guid>
		<description><![CDATA[ToneQuilla version 1.0.1 has been posted on AMO for review (or is available on this site here.) This fixes a bug reported in the forum, where for some users .wav files were playing in the default media player, instead of using Mozilla&#8217;s internal code.
]]></description>
			<content:encoded><![CDATA[<p>ToneQuilla version 1.0.1 has been posted on AMO for review (or is available on this site <a href="http://mesquilla.com/prereleases/tonequilla.1.0.1.rc1.xpi">here</a>.) This fixes a bug <a href="http://mesquilla.com/forum/tonequilla/tone-quilla-1-0-0-starts-media-player/">reported in the forum</a>, where for some users .wav files were playing in the default media player, instead of using Mozilla&#8217;s internal code.</p>
]]></content:encoded>
			<wfw:commentRss>http://mesquilla.com/2009/11/28/tonequilla-version-1-0-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maybe I need a search extension &#8211; SearchaQuilla?</title>
		<link>http://mesquilla.com/2009/11/20/maybe-i-need-a-search-extension-searchaquilla/</link>
		<comments>http://mesquilla.com/2009/11/20/maybe-i-need-a-search-extension-searchaquilla/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 19:13:12 +0000</pubDate>
		<dc:creator>rkent</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[FiltaQuilla]]></category>
		<category><![CDATA[Mailnews development]]></category>
		<category><![CDATA[Planet MozillaMessaging]]></category>

		<guid isPermaLink="false">http://mesquilla.com/?p=461</guid>
		<description><![CDATA[The last few weeks I&#8217;ve been adding custom search terms to my FiltaQuilla extension using the new nsIMsgSearchCustomTerm interface, which can then be used in searches, virtual folders, or filters. But I keep coming up with new things that I want to do. That delays my packaging of FiltaQuilla 1.0.0 for non-experimental release. Maybe I [...]]]></description>
			<content:encoded><![CDATA[<p>The last few weeks I&#8217;ve been adding custom search terms to my <a href="http://mesquilla.com/category/extensions/filtaquilla/"></a><a href="http://mesquilla.com/extensions/filtaquilla/">FiltaQuilla</a> extension using the new <a href="http://mxr.mozilla.org/comm-central/source/mailnews/base/search/public/nsIMsgSearchCustomTerm.idl">nsIMsgSearchCustomTerm</a> interface, which can then be used in searches, virtual folders, or filters. But I keep coming up with new things that I want to do. That delays my packaging of FiltaQuilla 1.0.0 for non-experimental release. Maybe I should quit adding this stuff to FiltaQuilla (which is already pretty large with all of its filter actions) and define a new search-oriented extension, called probably SearchaQuilla?</p>
<p>So far, I have added the following new search terms:</p>
<p><strong>BCC</strong> &#8211; locate items in the BCC field</p>
<p><strong>Subject Regex</strong> &#8211; search the subject using a javascript regular expression</p>
<p><strong>Header Regex</strong> &#8211; search any specific header using a javascript regular expression</p>
<p><strong>Javascript</strong> &#8211; load javascript in a text field, and program your own search given an nsIMsgDBHdr object</p>
<p><strong>Tag of Thread Head</strong> &#8211; match a tag in the head of a message&#8217;s thread</p>
<p><strong>Tag of Thread Messages</strong> &#8211; match a tag near the message in its thread (within +/- 10 messages by default)</p>
<p><strong>Address in Thread</strong> &#8211; match an address near the message in its thread (within +/- 10 messages by default)</p>
<p>This stuff can be useful outside of filters, in fact I am mostly using them personally to define virtual folders. So I&#8217;ll probably move them to a new extension, and try to get FiltaQuilla out the door finally.</p>
<p>rkent</p>
]]></content:encoded>
			<wfw:commentRss>http://mesquilla.com/2009/11/20/maybe-i-need-a-search-extension-searchaquilla/feed/</wfw:commentRss>
		<slash:comments>1</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 extend [...]]]></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/"><img src="http://mesquilla.com/wp-content/plugins/simple-forum/styles/icons/default/bloglink.png" alt="" /> Join the forum discussion on this post</a> - (3) Posts</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>GlodaQuilla version 0.3.0 released</title>
		<link>http://mesquilla.com/2009/11/12/glodaquilla-version-0-3-0-released/</link>
		<comments>http://mesquilla.com/2009/11/12/glodaquilla-version-0-3-0-released/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 23:46:02 +0000</pubDate>
		<dc:creator>rkent</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[GlodaQuilla]]></category>

		<guid isPermaLink="false">http://mesquilla.com/?p=425</guid>
		<description><![CDATA[This release is intended to update GlodaQuilla to work with Thunderbird version 3.0 (including release candidate RC1). You can download the new version of GlodaQuilla here. (GlodaQuilla&#8217;s main function is to provide access to information about the indexing status of each Thunderbird message in the &#8220;gloda&#8221; global database.)
In addition to the gloda columns, this release [...]]]></description>
			<content:encoded><![CDATA[<p>This release is intended to update <a href="http://mesquilla.com/extensions/glodaquilla">GlodaQuilla</a> to work with Thunderbird version 3.0 (including <a href="http://ftp.mozilla.org/pub/mozilla.org/thunderbird/nightly/3.0rc1-candidates/">release candidate RC1</a>). You can download the new version of GlodaQuilla <a href="https://addons.mozilla.org/en-US/thunderbird/addon/9873">here</a>. (GlodaQuilla&#8217;s main function is to provide access to information about the indexing status of each Thunderbird message in the &#8220;gloda&#8221; global database.)</p>
<p>In addition to the gloda columns, this release adds an experimental feature to allow overriding of the default gloda configuration concerning which messages are indexed. This new inherited folder property is called &#8220;Index in Global Database&#8221;.  Access to inherited properties such as this are discussed in the post <a href="http://mesquilla.com/2009/11/06/inherited-folder-properties-revisited/">&#8220;Inherited Folder Properities (revisited)&#8221;</a></p>
<p>You can use this property to disable indexing of servers or folders that are normally allowed, or to enable indexing on folders that are normally disabled (such as trash or junk folders). In my system, for example, for testing purposes I download my email both as IMAP and as POP3, but I disable the indexing of IMAP to prevent double indexing of the same messages.</p>
<p>This new property does not make any attempt to fix existing indexing when it is changed. Minimal support for this hopefully will be added for the 1.0.0 release of GlodaQuilla.</p>
<span class="sfforumlink"><a href="http://mesquilla.com/forum/glodaquilla/glodaquilla-version-0-3-0-released/"><img src="http://mesquilla.com/wp-content/plugins/simple-forum/styles/icons/default/bloglink.png" alt="" /> Join the forum discussion on this post</a> - (1) Posts</span>]]></content:encoded>
			<wfw:commentRss>http://mesquilla.com/2009/11/12/glodaquilla-version-0-3-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ToneQuilla 1.0.0 released</title>
		<link>http://mesquilla.com/2009/11/10/tonequilla-1-0-0-released/</link>
		<comments>http://mesquilla.com/2009/11/10/tonequilla-1-0-0-released/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 20:22:16 +0000</pubDate>
		<dc:creator>rkent</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[Planet MozillaMessaging]]></category>
		<category><![CDATA[ToneQuilla]]></category>

		<guid isPermaLink="false">http://mesquilla.com/?p=419</guid>
		<description><![CDATA[I&#8217;ve now released ToneQuilla version 1.0.0 on AMO. This allows users in Thunderbird 3.0 and SeaMonkey 2.0 to play a particular sound as a filter action, so that different types of emails can play different sounds.
In this release, I&#8217;ve fixed some bugs, plus added support for some new sound formats. If your operating system will [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve now released ToneQuilla version 1.0.0 on <a href="https://addons.mozilla.org/en-US/thunderbird/addon/9956">AMO</a>. This allows users in Thunderbird 3.0 and SeaMonkey 2.0 to play a particular sound as a filter action, so that different types of emails can play different sounds.</p>
<p>In this release, I&#8217;ve fixed some bugs, plus added support for some new sound formats. If your operating system will launch a .mp3 file in a local player, you can now ask it to do that as part of the filter action. I also support .ogg files using Mozilla&#8217;s standard Ogg Vorbis player, though my experience has been that this not reliable enough yet for real usage, at least on Windows XP.</p>
<p>You can download this from <a href="https://addons.mozilla.org/en-US/thunderbird/addon/9956">AMO</a>, see a detailed description of ToneQuilla <a href="http://mesquilla.com/extensions/tonequilla/">here</a>, or see details of changes in this revision from the <a href="http://mesquilla.com/extensions/tonequilla/tonequilla-revisions/">releases page</a>.</p>
<p>I&#8217;ve also now submitted this for official review by the folks at AMO, so hopefully after a month this will be able to leave the experimental sandbox, and things like automatic updates should also work.</p>
<p>Make sure that you make a filter to play &#8220;We Are in Love&#8221; for the emails that you receive from your significant other!</p>
<p>rkent</p>
]]></content:encoded>
			<wfw:commentRss>http://mesquilla.com/2009/11/10/tonequilla-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>
	</channel>
</rss>
