Open Bug 179162 Opened 22 years ago Updated 2 years ago

better UI for marking junk mail & running junk mail controls

Categories

(MailNews Core :: Filters, defect)

defect

Tracking

(Not tracked)

People

(Reporter: jud, Unassigned)

References

(Blocks 2 open bugs)

Details

Attachments

(7 files, 1 obsolete file)

I selected 1500 msgs, then said "run junk mail controls on selected msgs" (apart
from a handful of stalls/starts) I couldn't actually get it to stop categorizing
when I realized it was mis categorizing more often that correct.
QA Contact: gayatri → laurel
Status: NEW → ASSIGNED
OS: Windows XP → All
Hardware: PC → All
Looks like this is generally the same issue as reported in bug 179503 and bug 179504.
The lack of UI to indicate progress is causing confusion about state, and
inability to halt execution of categorization.
*** Bug 179997 has been marked as a duplicate of this bug. ***
*** Bug 179503 has been marked as a duplicate of this bug. ***
We need to do a better job of showing progress (at least for marking), and make
any of these operations interruptible.  Additionally, shutdown of the app while
any of these things are going on needs to be dealt with.
Summary: can't stop junk categorization → better UI for marking junk mail & running junk mail controls
We could use the status bar and progress meter to indicate what is happening. 
Cc'ing robin for wording suggestions. Would enabling the Stop button during this 
action make sense?
So, as I understand it, it should be possible to start a "mark" session running,
and then continue doing other stuff with mail, including possibly switching
folders.  This would seem to have some UI implications.  David/Seth can you
confirm that this should work?
you can't read other messages in the same folder since we don't allow multiple
simultaneous connections to the same folder. You could switch folders, however.
Pressing stop should stop any running url, however. If the scoring code would
chain the urls instead of firing them off all at once, and check if the stop
button had been pressed before running each url, then we could make the stop
button work. It might even stop all running urls if we attached the urls to the
right msg window and load group, I'm not sure.
So, in particular, the ability to switch folders would seem to make the
suggested UI a bit confusing, assuming that the throbber continues to cycle as
URLs are being in the background.  Enabling the stop button would be an
excellent thing, however.
Perhaps a variation on the File Download box could be used? This would be handy
for showing multiple operations running simultaneously (large folder copies from
one IMAP server to another, Junk training, etc). This would also eliminate the
need for the Mail window to remain open while these long-running operations proceed.
I am having trouble with this (or a similar) issue.

I have some folders where I know all the messages are not junk, or are junk. I
would like to be able to mark them as such, but the only controls I have are :

1) the 'junk' button, which toggles between junk and not junk - if you want to
mark lots of messages not junk, you first have to mark them as junk, which takes
twice as long as necessary.

2) clicking on the 'junk' icon for each message - again, you have to click twice
to make it not junk and this method doesn't work for lots of messages.

IMO, what we need is a little side menu on the 'junk' button, like with the
'Mark' button, which has the options, 'Mark Junk', 'Mark Not Junk', or something
similar. Also, these options should be on the Message menu.

As a side note, IMO the 'Mark' button should also have options for 'unread' - it
has a way to mark messages are read, but not as unread, which can be a pain
since it takes twice as long as necessary.

Comments?

Max.
Another point. I don't much like the Apple Mac 10.2.2 Mail application (commonly
referred to as mail.app), but it does have a few nice features, one of which is
applicable to this discussion. It has an 'activity viewer', which shows what
activities are being performed and the progress with each - and also a 'stop'
button for each.

Just thought it would be great if mozilla had such a feature. It's worth taking
a look.

Max.
this patch changes the filter plugin api to pass in a msg window so that we can
get progress and feedback when fetching messages to score them. This makes it
much more obvious that we're fetching messages. I still need to make the urls
chained instead of simultaneous.
Can we spin http://bugzilla.mozilla.org/show_bug.cgi?id=179162#c10 as a separate
bug report or is this bug covering all the UI for junk controls?

I just downloaded the trunk for the first time (had been using branch) and my
first experience was trying to select all of my msgs (over 1000) in my Inbox
(and other folders) and toggling them to show "not junk mail" in the thread pane.  

I also would like a UI to be able to do these two actions at once:  Mark as Junk
Mail and Delete.  I find that I have to do two actions now to my junk mail which
comes into my Inbox.

There was considerable lapse time where the cursor was busy and then I had to
toggle first to junk and then not junk mail.  (The cursor busy is probably what
David is fixing in his previous comment.)

Comment on attachment 107377 [details] [diff] [review]
patch to add msgWindow to spam score urls

r=dmose
Attachment #107377 - Flags: review+
Comment on attachment 107377 [details] [diff] [review]
patch to add msgWindow to spam score urls

sr=sspitzer
Attachment #107377 - Flags: superreview+
this is work in progress to chain message fetches in the bayesian spam filter
plugin, and to call classifyMessages for imap code. I still need to implement
streamMessage for mailbox and news, and to convert the mailbox code to call
classifyMessages. I've made streamMessage a message service method so that the
plugin code doesn't need to know how to set up the converter and set up the
special header, etc...

I had to reorganize the spam filter plugin a little to enable it to do multiple
messages, though the actual chaining is only a few lines of code.
Attached patch proposed fix (deleted) — Splinter Review
This fix chains message fetches when calling ClassifyMessages in the bayesian
filter plugin. I added a StreamMessage method to the message service and
implemented it in each of our three message services (this method can be used
by other components besides the filter plugins). It optionally allows you to
convert the data, and allows you to attach an arbitrary header. Using the
message service also makes it so we will automatically download the spam
messages for offline use if the folder is configured for that. I also cleaned
up a leak in the mailbox protocol channel handling, and cleaned up some code.
Dan and Seth, can I get some reviews? Thx.
Comment on attachment 107946 [details] [diff] [review]
proposed fix

Looks good.  Pretty much all of my comments are minor things.  r=dmose once
they've been addressed.

Some of the new lines you've added in your patch have raw tabs rather than
spaces.

+	 // this method streams a message to the passed in consumer. If
aConvertData is true, it
+	 // will create a stream converter from message rfc822 to star/star. It
will also tack
+	 // aAdditionalHeader onto the url (e.g., "header=filter").

Can you use doxygen style comments here (including @param or @arg for
each parameter), so that stuff like
http://unstable.elemental.com/mozilla/ will pick up this info
automagically?

+	 void streamMessage(in string aMessageURI, in nsISupports aConsumer, 
+			   in nsIMsgWindow aMsgWindow,
+			   in nsIUrlListener aUrlListener, 
+			   in boolean aConvertData,
+			   in string aAdditionalHeader,
+			  out nsIURI aURL);

How about using |ACString| instead of |string|?  This allows us to
conceivably avoid unnecessary allocations now, and, in the future, it
should allow us to use nsSharableCString which will avoid copying
entirely by having refcounted buffers.	This comment also applies to
the new |string|s in nsIImapService.idl.


+      for ( PRUint32 freeIndex=0 ; freeIndex < numMessagesToClassify ;
++freeIndex ) 
+	 PR_Free(messageURIs[freeIndex]);

Since the strings in messageURIs came from an XPCOM getter, they
should be freed using the XPCOM shared allocator (ie nsMemory::Free).

+      PR_Free(messageURIs);

If you changed the array itself to be allocated with nsMemory::Alloc
instead of PR_MALLOC, you could replace all three of the above lines
with a single call to the NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY() macro from
nsMemory.h.

+      for (PRInt32 i = 0; i < aNumMessagesToClassify; i++)
+	 mMessageURIs[i] = strdup(aMessageURIs[i]);

Sadly, we still need to use PL_strdup at the moment since Mac CFM
builds don't supply strdup by default.	Thankfully, CFM builds are
moving to ports status soon.

+      imapUrl->SetFetchPartsOnDemand(PR_FALSE);

This isn't going to cause non-text parts to be fetched, is it?

+	   nsCOMPtr<nsIChannel> channel;
+	   QueryInterface(NS_GET_IID(nsIChannel), getter_AddRefs(channel));

Using do_QueryInterface here is preferred these days because it's
type-safe.  This also applies to the NNTP changes.

+      aURIString.FindChar('?') == kNotFound ? aURIString += "?" : aURIString
+= "&";

It's probably a little faster to use character constants than string constants
here.
This also applies to the NNTP changes.

+      aURIString += "header=";
+      aURIString += aAdditionalHeader;;

Condensing these into a single line (ie |aURIString += "header=" +
aAdditionalHeader|) may avoid an unnecessary allocation.  This also
applies to the NNTP changes.
Attachment #107946 - Flags: review+
>+	   nsCOMPtr<nsIChannel> channel;
>+	   QueryInterface(NS_GET_IID(nsIChannel), getter_AddRefs(channel));

>Using do_QueryInterface here is preferred these days because it's
>type-safe.  This also applies to the NNTP changes.


It doesn't compile, unfortunately, since the cast to nsISupports is ambiguous
due to multiple inheritance..

>+      imapUrl->SetFetchPartsOnDemand(PR_FALSE);

>This isn't going to cause non-text parts to be fetched, is it?

yes, it will, but we were fetching the whole message anyway - we weren't use
mime parts on demand for the spam scoring - mime itself strips out the non-text
parts. I'm not sure if the junk plugin will behave if we don't do that, but we
can experiment later. mpod also affects text parts.

I'll look at my editor settings - it might be putting tabs in idl files.

I'll try to use NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY() - I hate writing those
little loops.

as far as using strings is concerned, I think we should convert all of those at
once.
Comment on attachment 107946 [details] [diff] [review]
proposed fix

sr=sspitzer, small nits:

1)

+  nsresult rv = NS_OK;
+  nsCOMPtr<nsIMsgFolder> folder;
+  nsXPIDLCString msgKey;
+  nsXPIDLCString mimePart;
+  nsCAutoString	folderURI;
+  nsMsgKey key;
+  
+  rv = DecomposeImapURI(aMessageURI, getter_AddRefs(folder),
getter_Copies(msgKey));

do

nsresult rv = DecomposeImapURI(aMessageURI, getter_AddRefs(folder),
getter_Copies(msgKey));

2a)

+      aURIString += aAdditionalHeader;;

extra semi-colon


2b)

+      aURIString += aAdditionalHeader;;

extra semi-colon

3) 

as dmose pointed out, fix the strdup(), so that mac won't go red.
Attachment #107946 - Flags: superreview+
> as far as using strings is concerned, I think we should convert all of those at
> once.

You're right that someday we will need to do a big monster fix to retroactively
change all the stuff that's currently |string|.  But given that we still have
performance worries (and since noone that I'm aware of has any immediate plans
to do the big fix), continuing to use |string| when adding stuff to interfaces
and creating new interfaces makes life in the interim unnecessarily slow.
there aren't any extra allocations or copies of strings because of this code -
the calling code already has a const char * uri - wrapping it in an nsACString
would add more code because we'd need to construct the nsACString and destroy
it. I understand your point in general but I don't think it applies here.
Good point.  OK, ignore that and the QueryInterface comment then.
taking, though I know I'm going to regret it :-)

I'd also like to fix the progress so that it we get progress based on how many
messages we've scored.
Assignee: dmose → bienvenu
Status: ASSIGNED → NEW
Small note:

+          nsCOMPtr<nsIChannel> channel;
+          QueryInterface(NS_GET_IID(nsIChannel), getter_AddRefs(channel));

The typesafe version of that would be:

nsCOMPtr<nsIChannel> channel;
CallQueryInterface(this,
                   NS_STATIC_CAST(nsIChannel**, getter_AddRefs(channel)));
Using 2002120309 I'm unable to see evidence of "Use Junk Mail Controls on
Selected Messages" actually doing anything with IMAP (this used to work).

Is it possible that this patch has somehow broken the ability to select multiple
messages and classify them?
yes, it does seem broken, but I don't think I broke it - there's a dump
statement in there that's bogus. I'll attach a fix.
Attached patch fix run junk mail controls (deleted) — Splinter Review
the dump statement was throwing a js exception afte URL was changed to URI.
Comment on attachment 108072 [details] [diff] [review]
fix run junk mail controls

this has r/sr=sspitzer
Attachment #108072 - Flags: superreview+
Since this was checked in checking for junk mail isn't run automatically on new
messages in a folder when it's opened.  Was that intentional?  If it was using
junk mail just became a PITA.
It works for me using IMAP - aren't you using IMAP too? It also does for POP. I
don't know why it would not work for you unless it's somehow linux specific.
hmmm, after using mail for a while I've noticed that it is marking some
messages, just not nearly as many as it used to.  It's like it hits a certain
message in the list and just stops.  I'm not sure if my training database is
screwed or if there's something else going on here.
There is definitely something still busted here.  I can get new mail and watch
the junk mail filters go and mark one or two of the messages as junk.  Then it
will stop.  I can select all the new messages I just got, run the junk mail
controls on the selected messages and it will mark all the junk as junk.

I think that something is causing the junk filtering to stop too soon since it
always stops marking junk a few messages into the process.  You have to select
and re-run it to get it to finish.
Since we're discussion UI in this bug, I'll throw my two cents in as well since
I'm bothered by not being able to tell if a message has been put through the
filter or not.

Can we change the icon for junk to be three state?  That is we have three settings:

o Junk
o Not junk
o Unknown

I used to see the little junk icon with a question mark for new messages but
that doesn't seem to happen anymore.  I don't know if that was a change or if
it's because my training database is pretty large.

Anyway, I was thinking of possible icons for the junk/not junk  Maybe something
like a little red 'X' for spam, a little green check mark or the green dot used
to indicate new mail and a little question mark for unchecked mail?  As the mail
is filtered, you could watch the messages change from the question mark to the
check mark or the 'X'.

They are easy to see and are even color-blind friendly (green vs. red and check
vs. 'X' vs. question mark.)

As for a progress meeter we could do something like what getting new mail does.
 That is "Filtering message 3 of 25" since I'm pretty sure we know how many
messages need to be filtered for spam status.

You could also hook up the stop button to the process and if you stopped it you
would still have some of the messages marked as junk/notjunk and some of the
messages still with the little question mark indicating they are unfiltered. 
That way you could tell what messages are left to be filtered in case you want
to do it later.

What do people think?  I think that gives a pretty clear picture to the user of
what's happening, how long it's going to take to finish and how to stop it if it
is going to take too long and even what to do to complete it if they stop it.
Chris, do you have your inbox configured to download for offline all new
messages? I'm not seeing any stalling - I deleted my spam.msf and opened my spam
folder and several hundred messages got classified. I just don't know how to
recreate the problem you're seeing...all new messages in my inbox get scored w/o
any stalling.

Personally, I liked seeing the unknown state like we had before. Maybe I
wouldn't care if I wasn't trying to debug it and everything worked perfectly.
> Chris, do you have your inbox configured to download for offline all new
> messages? I'm not seeing any stalling - I deleted my spam.msf and opened my spam
> folder and several hundred messages got classified. I just don't know how to
> recreate the problem you're seeing...all new messages in my inbox get scored w/o
> any stalling.

No, I don't download for offline.

I've also tried what you're suggesting on a folder with 598 messages in it and
it only marked two of them as spam (obviously wrong.)

I then selected the first 10 messages, most of which are spam and ran the junk
controls on them.  It marked about 8 of them as spam which is good as near as I
can tell.

I've also tried removing the .msf file as well and it doesn't seem to affect things.

> 
> Personally, I liked seeing the unknown state like we had before. Maybe I
> wouldn't care if I wasn't trying to debug it and everything worked perfectly.

Me too, but I just wanted it so I could see what is classified and what isn't
and so we can possibly add a way to stop filtering for huge folders.  Who gets
to make the UI decision about this, anyway? :)
the reason we got rid of the unknown state was that it was causing people to
classify messages that they didn't need to classify - i.e., people assumed that
 "unclassified" meant "I need to classify this", whereas it means "this hasn't
been classified". In other words, not all messages need to be classified. Maybe
we could add a state - new/unread message that hasn't been classified, and then
we'd get more feedback while classification was going on. I do intend to add a
progress message - classifying 1 of XX messages, but it's going to be hard to
stop it from getting overwritten by other status messages.

Anyway, back to your problem. I don't know why the classification is stopping.
Perhaps you could attach an imap protocol log of a reproducible case, e.g., have
a folder with 10 unread junk messages, delete the .msf file and then select the
folder. Then we can see how many message get fetched to get scored, and see if
perhaps the last message we fetch isn't getting scored for some reason.

http://www.mozilla.org/quality/mailnews/mail-troubleshoot.html#imap
See http://bugzilla.mozilla.org/show_bug.cgi?id=182386 for where the unknown
state was turned off in the UI
> the reason we got rid of the unknown state was that it was causing people to
> classify messages that they didn't need to classify - i.e., people assumed that
>  "unclassified" meant "I need to classify this", whereas it means "this hasn't
> been classified". In other words, not all messages need to be classified. Maybe
> we could add a state - new/unread message that hasn't been classified, and then

I wasn't talking about unclassified, I meant that it had been run through the
spam filter at all.  After all, if you do stop classification (or there's some
sort of error), how do you know what hasn't been looked at?
running a message through the spam filter classifies the message. Maybe what you
want is  messages that should have been run through the spam filter, but haven't
yet. That's what I was trying to get at with "new/unread message that hasn't
been classified" though of course, once you'd read them or gone to another
folder and back, you'd lose that state.
Attached file imap log (deleted) —
This is the IMAP log from logging into my test folder after deleting the
test.msf file.	In this test, only one message is marked as junk, the one with
the subject "A PLEA FOR YOUR ASSISTANCE".

If you select all the messages and run the junk controls on them then 4 out of
the 5 messages are marked as junk (yay, 100% correct!)	The only legitimate
message in the folder is from Roy.
from that log, we are downloading all 5 messages, which means we are running
them through the junk mail classification (because of the way the chaining
works, we won't try to fetch another message until the previous message is given
to the classification code). And since the classification code is synchronous,
we'll finish the classification before getting the next message. (I'm assuming
you didn't manually select each message in the UI) 

So either the classification code is behaving differently in the folder load
case, or we're reporting the wrong uri's when we classify messages. But I
haven't seen either of those things happen to me, so I need to look a little deeper.

Attached file mbox file that has the problem (deleted) —
I don't know if this is helpful to you or not.	This is the mbox file I'm using
for testing and exhibits the problem.
Chris, could you turn on the spam filter logging (under tools | junk mail
controls) and try this again and see what the logging says when you do this test?
It is in fact logging nothing, even though it's obviously marking files as junk.
 wtf?  I'm 99% sure I didn't screw this up.  I did use clear log before testing
it, though.
oh, sorry, I suspect it only logs move actions, and you probably don't have it
configured to move junk to a junk mail folder (since you have to hack your
prefs.js by hand).
No, it logs finding junk mail as well.  It just doesn't seem to do so reliably.
I'm now able to reproduce basically the opposite of what Chris is seeing -
opening a folder with junk messages marks all but one of them as junk, but
selecting the same messages and classifying them marks all but three of them as
junk. I'll investigate further.
Attached patch proposed fix (obsolete) (deleted) — Splinter Review
We need to re-init the tokenizer when re-using it across multiple message
classifications - otherwise, the spam classification is really based on the sum
of all the messages, which is very bad.
Attachment #108381 - Flags: review?(dmose)
Comment on attachment 108381 [details] [diff] [review]
proposed fix

sr=sspitzer

can you ping beard for a review?
Attachment #108381 - Flags: superreview+
Comment on attachment 108381 [details] [diff] [review]
proposed fix

Pinging Patrick for a review as well.
Attachment #108381 - Flags: review?(dmose) → review?(beard)
Comment on attachment 108381 [details] [diff] [review]
proposed fix

r=dmose, but definitely wait for beard's review too
Attachment #108381 - Flags: review?(beard) → review+
Comment on attachment 108381 [details] [diff] [review]
proposed fix

This definitely needs to be in 1.3 - I'd like Patrick to look at this code, but
I wouldn't hold it for that.
Attachment #108381 - Flags: approval1.3a?
Comment on attachment 108381 [details] [diff] [review]
proposed fix

a=blizzard on behalf of drivers for 1.3a
(yay!)
Attachment #108381 - Flags: approval1.3a? → approval1.3a+
Comment on attachment 108381 [details] [diff] [review]
proposed fix

Rename ReInit() to Clear(), and you should call it AFTER analyzing each
message, instead of BEFORE, otherwise you'll retain excess memory after the
last message.
Attachment #108381 - Attachment is obsolete: true
Comment on attachment 108400 [details] [diff] [review]
patch addressing Patrick's comments

r=beard
Attachment #108400 - Flags: review+
Flags: blocking1.3a+
This is checked in now, right?  I see a checkin last night with this bug named
in it.
yes, that last patch was checked in. The bug is still open because there's still
more work to do, but the problem that Blizzard was seeing should be fixed.
Flags: blocking1.3a+
I think following case are missing :
- 'N' key (go to next unread message) donesn't need to go into the Junk folder !
- context menu of the junk folder miss a 'empty this junk mail' entry.

Except that, you made a very good job !
I was going to post this as a different bug, but is seems like it might go here.
Regarding the UI for Spam filtering, I am getting very confused. It seems like 1
or 2 buttons are responsible for 3 or 4 actions.

EX
How you do train the Junk mail controls to identify spam as apposed to running
the spam filter to mark existing messages as junk?

Also, Since the move incoming junk messages to folder Junk has been inabled,
where shouldn't their be another option in the drop down menu to 'move all
marked junk mail to folder JUNK?'

I would suggestion adding the following (in some way) to the tools menu in the
mailnews display:

1 Train Junk Mail Controller Using Current Folder/Messages
2 Run Junk Mail Classifier on Selected Folder/Messages
3 Run Junk Mail Filter on Selected Folder/Messages

1 this trains the system
2 this marks existing messages as junk/not junk
3 this moves and messages marked junk in the selected folder to the Junk folder

Hope this helps.
I agree with comment 61 in general. 

Specifically, though, having a single big "Junk" button on the tool bar that can
either junk or unjunk a message is just wrong. 

At the very least, it should be disabled if both spam and ham messages are
selected, because the chances of intentionally wanting to toggle both some spam
and some ham at the same time are miniscule. Also, doing this by accident can
lead to serious dataloss issues if mail is accidentally miscategorized. 

Also, I don't think the ability to reclassify "spam" into "ham" is likely to be
used often enough to justify the existance of a toolbar button. If the common
wisdom disagrees, and insists that it be the same as the button that marks mail
as "spam", that button should at least not say "Junk" when "spam" is selected. 
taking this dumping ground bug, it might be a dup of another bug I already own.
Assignee: bienvenu → sspitzer
*** Bug 198145 has been marked as a duplicate of this bug. ***
Bug 201174 basically request progress bar for ALL message filters, not just junk.
Should/can these two issues be dealt with at once?
I agree with comment #34 here, in that more states are definitely needed for the
Junk Status flag.  I posted bug 209898, requesting five states, but I'd gladly
settle for three.  (The extra two states I requested were "Manually marked as
Junk" and "Manually marked as Non-Junk".  These would help ensure that the
Mozilla junk classifying engine would not accidentally override the user's
manually selected choices.)

The third state, "Unknown", is definitely a necessity.  Currently, Mozilla can't
tell the difference between a new incoming message, and a message that has
already been classified as Non-Junk!  This can confuse Mozilla and break the
spam-recognition in certain situations, especially when new unrecognized
messages appear on the server without Mozilla having downloaded their bodies
yet.  In certain odd situations that are difficult to reproduce but happen often
enough when using offline and/or IMAP mail, Mozilla assumes unrecognized
messages to be Non-Junk instead of Unknown.  Adding a third state will help to
fix this.
Even if sender is in my address book, Mozilla still marks as junk.  Need a
button/icon to say that in the future all messages from that sender will be
non-junk.  This issue of not learning makes me think of switching to another
e-mail message system.
(In reply to comment #67)
> Even if sender is in my address book, Mozilla still marks as junk.  Need a
> button/icon to say that in the future all messages from that sender will be
> non-junk.  This issue of not learning makes me think of switching to another
> e-mail message system.

Did you tell Mozilla to use your address book as a whitelist?

Tools | junk mail controls 

check the "do not mark messages as junk if the sender is in my address book"
checkbox.
Product: MailNews → Core
In SeaMonkey 1.1.1 there is no "Junk Mail Controls..." option in the Tools menu.
sorry for the spam.  making bugzilla reflect reality as I'm not working on these bugs.  filter on FOOBARCHEESE to remove these in bulk.
Assignee: sspitzer → nobody
I've lobbied for 5 visible states of junk mail marking, in the UI:

* Automatically marked as Junk
* Automatically marked as Not Junk
* Manually marked as Junk
* Manually marked as Not Junk
* Not marked yet

Mail that the user has manually marked would have a "stronger" state than mail that has been automatically marked.  It would be "sticky", and not overridden by automatic filtering.  This would help keep the filter correctly trained when the user runs filters on folders that were previously manually marked before, as their manual marking decisions wouldn't be rudely reset.  It would also make it obviously clear to the user that some feedback has indeed occurred, when they use the manual marking menu.

The manual marking menu would then have 3 choices:

* Mark as Junk
* Mark as Not Junk
* Remove Markings

The third choice would remove all markings from the message, causing it to return to the initial state of "Not marked yet".  Until junk mail filters get ran, either manually or automatically, every message would begin in this "Not marked yet" state.

The current mass confusion between "Not Junk" and "Not marked yet" is a huge source of problems.  There's no difference in the UI at all between messages considered to be "Not Junk" and messages that simply haven't been marked yet.  

I'd wager a guess that over a dozen bugs stem from this one, horribly bad, design decision.
Filter on "Nobody_NScomTLD_20080620"
QA Contact: laurel → backend
Product: Core → MailNews Core
Component: Backend → Filters
QA Contact: backend → filters
What is the state of the patches here? Two of them have superreview. Have they been merged?
Whiteboard: [filter-mgmt]
meta bug 531787 covers junk issues.
so we can exclude all junk issues as candidates for flagging with [filter-mgmt]
Blocks: junktracker
Whiteboard: [filter-mgmt]
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: