Closed
Bug 169638
(spamfe)
Opened 22 years ago
Closed 19 years ago
[meta] finish junk mail feature
Categories
(SeaMonkey :: MailNews: Message Display, defect)
SeaMonkey
MailNews: Message Display
Tracking
(Not tracked)
RESOLVED
FIXED
mozilla1.4beta
People
(Reporter: sspitzer, Unassigned)
References
()
Details
Attachments
(2 files, 40 obsolete files)
front end work for spam / junk mail
the patch I'm about to attach has the fixes for:
1) the control center
2) the log viewer
3) thread pane / stand alone msg window / 3 pane (I stole bienvenu work from
the MOZ_FILTER_BRANCH
Here's what's left for the front end:
1) need new icon from "junk" toolbar button (classic and modern, right now
using "mark" button)
2) need to decide how to represent score in "Junk" column. (an image? as
text?)
3) integrate with mscott's thread pane view work
For the back end
0) have the spam BE code set the score on the header
1) add the hooks so when the user sets the junk level, we poke the spam
backend code.
2) implement moving junk to folder
3) implement purging
4) implement white listing
5) have the spam BE code write to the log file. (see nsMsgFilter::LogRuleHit
(), the same tricks apply for spam. in our case, get the server, then the
spamSettings, then the logStream, and write to it. [remember to html escape])
6) on hitting the junk button, have the FE poke the BE that the user has
manually changed the score. I think that for spamassign, this is a noop. for
bayesian, this means doing work.
for the backend guys, see nsISpamSettings.idl
the BE code should not be going through prefs to determine spam level, ab for
whitelist, junk mail folder uri, purge prefs, etc.
you just have to do server.spamSettings
I'll attach my patch, attach some screen shots, and then seek reviews tomorrow.
Reporter | ||
Comment 1•22 years ago
|
||
oops, forgot the other FE todo items:
1) get junkMail.js to work for multiple servers (should be easy)
2) integrate with help (we have a help button, does nothing)
Status: NEW → ASSIGNED
Target Milestone: --- → mozilla1.2beta
Reporter | ||
Comment 2•22 years ago
|
||
other things:
1) test stand alone msg window
2) mac build changes
3) ask david about the db changes
there's some duplicated code behind nsIMsgFilterList and nsISpamSettings (and
viewLog.js/xul and junkLog.js/xul). I can refactor this, but I'd rather land
first and refactor while the backend people work on this, then refactor first
and block the BE guys.
Reporter | ||
Comment 3•22 years ago
|
||
more FE work:
1) add other UI (context menu?) for setting message a junk / not junk
2) ask jglick if she wants a link on account central to launch the spam
control dialog
new patch coming, I got it to work for multiple servers.
and some screen shots.
the one bad bug, I'm having problems when I open the dialog twice in a
session. I'll work on that tomorrow.
Reporter | ||
Comment 4•22 years ago
|
||
more FE items:
1) enable / disable UI based on check box state
2) get enable log to "stick"
3) get "Junk" button in stand alone msg window to work
Attachment #99814 -
Attachment is obsolete: true
Reporter | ||
Comment 5•22 years ago
|
||
Reporter | ||
Comment 6•22 years ago
|
||
Reporter | ||
Comment 7•22 years ago
|
||
other issue:
1) follow what I did for nsIMsgFilterList / nsIMsgIncomingServer::Shutdown()
Attachment #99817 -
Attachment is obsolete: true
Reporter | ||
Comment 8•22 years ago
|
||
Attachment #99820 -
Attachment is obsolete: true
Updated•22 years ago
|
Comment 9•22 years ago
|
||
function JunkSelectedMessages(setAsJunk)
+{
+ if (setAsJunk) {
+ gDBView.doCommand(nsMsgViewCommandType.junk);
+ }
+ else {
+ gDBView.doCommand(nsMsgViewCommandType.unjunk);
+ }
+}
+
should just be: gDBView.doCommand(setAsJunk ? nsMsgViewCommandType.junk :
nsMsgViewCommandType.unjunk);
function SelectedMessagesAreJunk()
+
this just checks if the first selected message is junk, right?, so it should
either be renamed or fixed.
Did you fix my bug where the score column was showing up as the left-most column?
The score stuff needs to be fixed a little, I believe (maybe it is fixed in
Dan's code, but I doubt it) to normalize for the real number scores that the
spam assassin backend sets (e.g., 3.4534) and the view code displays vs. the int
that the front end code sorting code treats it as (the atoi call in
nsMsgDBView). It seems to me that the easiest thing to do would be normalize it,
perhaps in the sorting code, in essence, by multiplying by 1000 before sorting.
you could use floats, or just move the decimal point 3 places to the right and
zero fill. More comments as I go.
Comment 10•22 years ago
|
||
Comment on attachment 99821 [details] [diff] [review]
diff, -uw
I don't think the prefs should be on a per server basis. Rather it should be on
per identity basis. This is how we do sent folder etc. I have written other
code that treats them as identity.
Comment 11•22 years ago
|
||
Comment on attachment 99821 [details] [diff] [review]
diff, -uw
Furthermore looks like nsISpamSettings would do exactly what nsIMsgIdentity
already does. Infact it already has JunkMailFolder attribute.
Comment 12•22 years ago
|
||
we may have different spam capabilities on different servers, and the user may
want to have different spam settings on different servers, but use the same
identity. Consider the differences between imap and pop - even though, AFAIK, we
are adding the capability to do spam analysis on imap msg bodies, it comes with
a fairly serious performance impact, whereas there's no performance impact for
pop, and a user may chose not to pay that price. Consider adding spam
capabilities to newsgroups - most of the spam settings don't apply well to news,
but it could be very useful to have news messages marked as spam.
Comment 13•22 years ago
|
||
bienvenu wrote:
> The score stuff needs to be fixed a little, I believe (maybe it is fixed in
> Dan's code, but I doubt it
No, I was focusing on other stuff and never got a chance to poke at this.
Everything I did was on MOZ_FILTER_BRANCH.
Looks like this patch is missing new files; I'm guessing "diff -uwN" is really
what's needed.
Reporter | ||
Comment 14•22 years ago
|
||
the new files are already checked in.
Reporter | ||
Comment 15•22 years ago
|
||
> I don't think the prefs should be on a per server basis.
> Rather it should be on
> per identity basis. This is how we do sent folder etc. I have written other
> code that treats them as identity.
I disagree. the spam settings are w.r.t the incoming mail, which has to do
with nsMsgIncomingServer. identities are all about sending mail.
> Furthermore looks like nsISpamSettings would do exactly what nsIMsgIdentity
> already does. Infact it already has JunkMailFolder attribute.
then it will be removed.
I'm going to work and david's comments.
my goal is to land, unblock the BE guys, and then continue working on the FE
while the BE guys work in parallel.
Reporter | ||
Comment 16•22 years ago
|
||
about the label column stuff, that's something I need to fix in tree.xml
what happens is new columns don't have an ordinal, so by default, they appear
on the left instead of on the right.
I'll work on a fix for that.
Reporter | ||
Comment 17•22 years ago
|
||
I've landed my patch, but the new UI is not visible yet.
I'll attach a patch that turns on the UI.
an update to the spec is coming, too.
instead of a simple folder picker for the junk mail folder, we need to do what
account settings does. we need to have a choice between:
( ) Junk Mail on <server>
(*) <folder>
so that we create the junk mail folder lazily.
I'll report back as I make changes for this, and as I fix things.
Reporter | ||
Comment 18•22 years ago
|
||
when I checked in, I addressed david's comments and I removed the unused spam
folder attribute on the identity. it's per server.
Attachment #99821 -
Attachment is obsolete: true
Comment 19•22 years ago
|
||
not sure if you did that already, but could you make a context menu entry for
Junk as well? I often see already from the subject that a mail is spam; so I'd
like to mark it as spam without clicking on it.
Comment 20•22 years ago
|
||
Christian: Good call, especially with bug 22994 / bug 160315 still lingering ;)
Comment 21•22 years ago
|
||
Correct me if I'm wrong, but the "junk" button doesn't appear to apply to news.
So I suggest you hide it, like you do for the "delete" button.
Reporter | ||
Comment 22•22 years ago
|
||
back from vacation, going to start the open issues, including the one that neil
pointed out.
Reporter | ||
Comment 23•22 years ago
|
||
talking with beard about spam, I don't think we're going to hide this when in
news. while we won't be moving spam messages to a junk folder, we will be able
to not show spam news messages when the view changes land.
beard agrees that this will affect the bayesian histogram, but it should be
affective in hiding spam from the user and making news usuable again.
I'll continue to work on the UI and the issues I've listed, and the changes to
the spec, from jglick.
Reporter | ||
Comment 24•22 years ago
|
||
Comment 25•22 years ago
|
||
Comment on attachment 100651 [details] [diff] [review]
add the lazy folder UI and the changes to support it.
sr=bienvenu - couple nits through AIM that Seth is going to address.
Attachment #100651 -
Flags: superreview+
Reporter | ||
Comment 26•22 years ago
|
||
ignore the bits about
Attachment #100651 -
Attachment is obsolete: true
Reporter | ||
Updated•22 years ago
|
QA Contact: olgam → laurel
Reporter | ||
Comment 27•22 years ago
|
||
"ignore the bits about" meaning ignore the changes to enable the spam UI.
Comment 28•22 years ago
|
||
Comment on attachment 100662 [details] [diff] [review]
include the pretty name stuff.
sr=bienvenu, with one comment over aim that Seth has fixed in his tree.
Attachment #100662 -
Flags: superreview+
Reporter | ||
Comment 29•22 years ago
|
||
yes, I fixed the junkFolderNAme typo. checked in.
still working on the UI, so this bug is not fixed yet.
Reporter | ||
Comment 30•22 years ago
|
||
Reporter | ||
Updated•22 years ago
|
Attachment #99819 -
Attachment is obsolete: true
Attachment #100662 -
Attachment is obsolete: true
Reporter | ||
Comment 31•22 years ago
|
||
Comment 32•22 years ago
|
||
I'm going to copy my (Bug 170555 Comment #20)
jglick: that dialog barely fits at 800x600 (into a web browser), and it has way
too many controls and way too much text for me to handle, and I spend lots of
time reading large amounts of both. I'd suggest:
1. ditch most of the documentation sentences, if people need them they can click
help.
2. change the off..highest into a select.
3. rename them. "lowest" and "highest" are useless, "tolerant" and "aggressive"
are slightly better.
4. drop "When messages are ..." (I'm not sure this comment is necessary for
seths version of the picture)
7. We could combine the two move items, it'd buy space
Move to: <junk mail on Foo |v>
|junk mail on bar |
|... |
|junk mail on local folders |
|----------------------------|
|other >|
+----------------------------+
I know we haven't in other places, but i think that's a bug (it costs us a lot
of space)
8. move always accept to the very top. (there are a few reasons, one is that
you're trapping grayspace by putting it where you did, another is that of all
the options it's one of the most important, it's also not remotely destructive
whereas move and delete are)
[x] Always accept mail from <personal address book|v>
<Aggressively|v> filter inbound mail for junkmail
...
9. The title should say Junk Mail Controls for <accountprettyname>
10. Shouldn't it be < _View_ junk mail log >?
11. Why does this have the following buttons in combination: minimize, maximize,
ok, and cancel.
(If it's a dialog, which ok and cancel imply, then it probably shouldn't be
sizable, especially given the content you have here, although it should be *much
narrower*)
--
As for deleting mail, I think it might be best if we wrote something like:
[ ] Automatically delete old junk mail after [ 9] days of continuous use.
continuous use would have to be defined, but basically if I only use mozilla
three days out of twenty then the threshold wouldn't be met. Leaving mail open
would not meet the definition either. Reading a few messages or opening multiple
folders would.
Last usage consideration. Suppose I get 1 junk message a day every day for a
month. And suppose I use mozilla for days 20..28 of that month. On day 28
junkmail identified between 1 and 19 would be deleted but junk mail received on
day 20 would not be automatically deleted until the next day I use mozilla.
Comment 33•22 years ago
|
||
The design just allows for selecting one addressbook to mark non-junk messages.
This is overly restrictive. Ideally you should be able to select multiple
addressbooks for the exclude list. I'm not sure how the UI would look.
Reporter | ||
Comment 34•22 years ago
|
||
Attachment #100695 -
Attachment is obsolete: true
Comment 35•22 years ago
|
||
I don't think these checks in the watch and ignored code are useful - the flags
are pretty much guaranteed to have changed, and if not, it doesn't matter anyway
- it's just code bloat. Everything else looks fine.
+
+ if (oldThreadFlags == threadFlags)
+ return NS_OK;
+
NotifyKeyChangeAll(threadKey, oldThreadFlags, threadFlags, instigator);
return NS_OK;
}
@@ -1858,6 +1854,10 @@
}
else
threadFlags &= ~MSG_FLAG_WATCHED;
+
+ if (oldThreadFlags == threadFlags)
+ return NS_OK;
+
Comment 36•22 years ago
|
||
Comment on attachment 100750 [details] [diff] [review]
updated db patch, after talking to bienvenu.
sr=bienvenu, modulo my last comment.
Attachment #100750 -
Flags: superreview+
Reporter | ||
Comment 37•22 years ago
|
||
I've removed the watched / ignore flag checkes, and when the tree opens, I'll
check it in. thanks david.
Reporter | ||
Comment 38•22 years ago
|
||
about news spam, according to peterv / dmose, the bayesian filter works fine on
news, which is what we expected.
so, I'm to make our UI work for news (so a link for it in account central, the
junk button doesn't disappear for news), news accounts appear in the list of
accounts.
I'll work on that while the tree is closed for wtc's landing.
Reporter | ||
Comment 39•22 years ago
|
||
Comment 40•22 years ago
|
||
Comment on attachment 100857 [details] [diff] [review]
patch to search by score
I don't think we should expose the score to the user at all like we do in this
patch for searching. The user isn't going to know what kind of a value to enter
for a score. We should instead make it look like searching by label...something
like:
"Message" "is" "Junk Mail/Good Mail/Unknown". I'm sure Jennifer or Robin can
come up with better wording for the criteria but my point is the score should
be completely hidden from the user.
Also, instead of using the word 'score' everywhere (i.e. as an enum in
nsMsgSearchAttrib) we should be more specific. JunkMailIndicator or
JunkMailScore.
Comment 41•22 years ago
|
||
or "Junk Mail Status" "is/isn't" then a combo box for "Highest", "High", "Low",
"Lowest" just like message priority.
Reporter | ||
Comment 42•22 years ago
|
||
beard, update and apply this. let me know if you have problems with any of the
things I added to the tools menu.
I'll also report back with the problems I'm seeing.
Attachment #99898 -
Attachment is obsolete: true
Reporter | ||
Comment 43•22 years ago
|
||
Attachment #101181 -
Attachment is obsolete: true
Reporter | ||
Comment 44•22 years ago
|
||
Attachment #101445 -
Attachment is obsolete: true
Comment 45•22 years ago
|
||
If we are going to do junk folder creation from JunkMail UI we might want to
change the picker design and keep it similar to filter editor dialog. Also have
a new folder button.
Reporter | ||
Comment 46•22 years ago
|
||
talking it over with jglick, she agrees with mscott about
"Junk Mail Status" "is" "Junk/Not Junk/Unknown", or something to that effect.
so I'll work on those changes.
jglick has a bunch of other updates coming to the spec, which I'll be
addressing.
navin raises a valid point about a new folder button, but there are other
places in the UI (copies and folders) where we don't allow for new folder
creation. (the junk mail UI doesn't actually create the folder, that happens
in the back end.) For now, I'll follow the spec. But jglick reads the bug
report and she can comment more.
Reporter | ||
Comment 47•22 years ago
|
||
more work coming, obsoleting old patches.
Attachment #100216 -
Attachment is obsolete: true
Attachment #100750 -
Attachment is obsolete: true
Attachment #100857 -
Attachment is obsolete: true
Attachment #101446 -
Attachment is obsolete: true
Reporter | ||
Comment 48•22 years ago
|
||
Attachment #101704 -
Attachment is obsolete: true
Comment 49•22 years ago
|
||
Comment on attachment 102079 [details] [diff] [review]
patch, for search and a bunch more
} nsMsgSearchValue;
@@ -208,7 +210,8 @@
(!(_a == nsMsgSearchAttrib::Priority || _a == nsMsgSearchAttrib::Date || \
_a == nsMsgSearchAttrib::MsgStatus || _a == nsMsgSearchAttrib::MessageKey
|| \
_a == nsMsgSearchAttrib::Size || _a == nsMsgSearchAttrib::AgeInDays || \
- _a == nsMsgSearchAttrib::FolderInfo || _a == nsMsgSearchAttrib::Location ||
_a == nsMsgSearchAttrib::Label) )
+ _a == nsMsgSearchAttrib::FolderInfo || _a == nsMsgSearchAttrib::Location ||
\
+ _a == nsMsgSearchAttrib::Label))
%}
Don't you want to be adding junk score here since junks score is internally an
int not a string?
This code turns on the baysian-spam-filter directory. Is that intentional?
Also, should it be controlled by a flag like smime? i.e. ifdef MOZ_BAYESIAN
then DIRS += bayesian-spam-filter?
sr=mscott assuming you disable the filter from the UI in nsMsgImapSearch.cpp
before checking in.
Reporter | ||
Comment 50•22 years ago
|
||
Attachment #102079 -
Attachment is obsolete: true
Reporter | ||
Comment 51•22 years ago
|
||
Reporter | ||
Comment 52•22 years ago
|
||
Attachment #102130 -
Attachment is obsolete: true
Attachment #102191 -
Attachment is obsolete: true
Reporter | ||
Comment 53•22 years ago
|
||
Attachment #102203 -
Attachment is obsolete: true
Reporter | ||
Comment 54•22 years ago
|
||
Comment 55•22 years ago
|
||
Comment on attachment 102368 [details] [diff] [review]
set score through the db so that we invalidate the row
r/sr=bienvenu
Attachment #102368 -
Flags: superreview+
Reporter | ||
Comment 57•22 years ago
|
||
Attachment #99818 -
Attachment is obsolete: true
Attachment #100696 -
Attachment is obsolete: true
Attachment #102368 -
Attachment is obsolete: true
Attachment #102413 -
Attachment is obsolete: true
Reporter | ||
Comment 58•22 years ago
|
||
Updated•22 years ago
|
Attachment #102417 -
Attachment is patch: false
Attachment #102417 -
Attachment mime type: text/plain → image/gif
Reporter | ||
Comment 59•22 years ago
|
||
Comment 60•22 years ago
|
||
Typo in "Junk Mail Controls" (seen in "screenshot")?:
[ ] Do not mark messages as junk mail if the sender is _in_ my addressbook. ["in"]
Comment 61•22 years ago
|
||
The most recent screenshots suggest that only 1 address book may serve as a
white list. I think that is suboptimal. Many of us have personal, collected, and
corporate address books, all of which should ideally be whitelisted.
Comment 62•22 years ago
|
||
Is this done in a way that would make it easy/feasable to plug in other
learning algorithms for dealing with spam? I think that is a really
wonderful feature but since there are so many ways how to deal with it
it should provide a clear interface and allow alternative algorithms.
Comment 63•22 years ago
|
||
Moshe, I disagree. I dont believe that it would be a good thing to use an LDAP
as a whitelist source, as the LDAP query would take time ... causing lag in the
processing ... It should be using LOCAL address books ONLY ... but, I do think
that the user should be able to select multiple local address books (via
checkboxes) ...
Comment 64•22 years ago
|
||
Hopefully, in the near future, online (LDAP) address books will become quite
common. Therefore, a solution to whitelist these should be sought (replication?).
Comment 65•22 years ago
|
||
Replicated LDAPs would be ok ...
Comment 66•22 years ago
|
||
yes, the filter plugin is just that - a plugin. So it should be fairly easy to
add new plugins (though we don't support that yet, since we hard-code the
contract-id for the plugin we're using now - it should be easy to make that a
pref, or something like that)
Comment 67•22 years ago
|
||
In screenshot http://bugzilla.mozilla.org/attachment.cgi?id=102417&action=view
there's a typo in the Junk Mail Log window. 2nd sentence at top is missing "to":
"Use the check box below >>to<< enable logging."
In Junk Mail Controls dialog, please add the word "mail" to this checkbox: "Move
incoming messages determined to be junk >>mail<< to:"
Great work!
Comment 68•22 years ago
|
||
And don't forget the typo mentioned in comment 60.
Comment 69•22 years ago
|
||
Currently, the Junk Mail dialog only displays content the first time it's
opened; subsequent opens display a blank dialog except for the OK/Cancel/Help
buttons. For whatever reason, using <dialog> isn't working right. Changing to
<window> fixes the problem.
Reporter | ||
Comment 70•22 years ago
|
||
Comment on attachment 102493 [details] [diff] [review]
fix dialog to always show up
marking as obsolete, since already checked in. thanks dmose!
Attachment #102493 -
Attachment is obsolete: true
Reporter | ||
Comment 71•22 years ago
|
||
spelling mistakes fixed, too.
Reporter | ||
Comment 72•22 years ago
|
||
Reporter | ||
Updated•22 years ago
|
Attachment #102419 -
Attachment is obsolete: true
Comment 73•22 years ago
|
||
um, what do the icons in the new column mean?
Comment 74•22 years ago
|
||
> um, what do the icons in the new column mean?
I think it's:
Dot - Not junk
Trash can - Junk
Trash can & ? - Might be junk
Comment 75•22 years ago
|
||
Needs something more intuitive in the way of icons. Perhaps bigger dots, Red dot
- Junk, Green dot - ok, Yellow - maybe ? (traffic light)
Or just the letter "S" for Spam (or "J" for Junk) and "?" for maybe.
There isn't much room for detailed icons.
Personally I'd like the score numbers, but that's already been discussed.
Comment 76•22 years ago
|
||
Icons are not yet finalized.
Valid mail - no icon. This column is a junk mail indicator, don't call attention
to valid msgs. Dot that is used to indicate column is a cycler is visible. User
can click on cycler to tell the system the msg Is Junk (if appropriate).
Is Junk - Junk Mail icon, match toolbar Junk Mail icon as close as possible.
Meant to call out msgs that have been identified as junk.
Unknown/Could be Junk - same icon as above with ?. User uses the cycler or Junk
Mail toolbar icon to tell system the msg Is or Isn't Junk.
Comment 77•22 years ago
|
||
>navin raises a valid point about a new folder button, but there are other
>places in the UI (copies and folders) where we don't allow for new folder
>creation.
Agree. I'd like to see us eventually go back to something similar to the 4.x
design for selecting folders (would apply to this dialog and copies & folders),
which took up less space on the actual dialog and also allowed for New folder
creation.
Comment 78•22 years ago
|
||
In response to comment 76:
Am I right in thinking that most messages will start in the unknown state?
If that is the case then the use of the dot in this case could be inconsistent
with its use in the Flag column. In the Flag column, messages start out as
nothing (dot) and can then be changed to be flagged (flag icon). In the Junk
column, most messages will start out as unknown (trash and ?) and can then be
changed to be junk (trash) or not junk (dot). So a dot in the Flag column means
not set, whereas in the Junk column it means set to not junk. Maybe it's just
me but that seems a little strange.
Perhaps it would be better to have:
Dot - Unknown
Trash can - Junk
Check mark - Not junk (message has been 'approved' by the user as not junk)
> don't call attention to valid msgs
With the amount of spam some people get, making valid messages stand out
wouldn't be a bad idea! ;-)
Comment 79•22 years ago
|
||
>Am I right in thinking that most messages will start in the unknown state?
No. Most msgs will be either Valid or Junk (hopefully valid :-). Unknown should
be less common, when the JM system just isn't certain about a particular msg.
The more the user trains the system, the more infrequent "Unknown" should
become.
Comment 80•22 years ago
|
||
i'm a bit confused. i've only started looking at cyclers (i'm trying to find out
where onclick for a cycler goes, i'd like ctrl-clicking thread cyclers to behave
sanely, they don't, but that's another bug).
i'd like to be able to train mail by manually scoring junkmail. so ...
suppose i get 100 messages and none of them are listed as junk.
i'd like to be able to (see comment 3) click the junkmail cycler (currently
empty) to mark a message as junk, and at the end of reading my messages it'd be
nice if mail would try to build rules based on my decissions (this includes all
messages in that folder which i read but did not mark as junk).
if we did that, then there should be a little dot, just like there is for unread
messages.
ok, i read the comments, jglick isn't saying no dot, just that whatever it is
for nonjunk shouldn't be prominent. clearly i agree.
--
'Enable' sounds silly, can't we just '[x] Log junkmail activity' and '[x]
Control junkmail' ?
Comment 81•22 years ago
|
||
>>Am I right in thinking that most messages will start in the unknown state?
> No. Most msgs will be either Valid or Junk (hopefully valid :-). Unknown
> should be less common, when the JM system just isn't certain about a
> particular msg.
OK. So it's more about the system alerting you when there's a message that
probably is or may be junk with valid being the 'normal' state. Ignore the rest
of my comments, then.
Reporter | ||
Comment 82•22 years ago
|
||
Reporter | ||
Comment 83•22 years ago
|
||
notes for dmose, in order:
1) fix the 5 (not 3) state problem. (start with this patch:
http://bugzilla.mozilla.org/attachment.cgi?id=102656&action=view)
2) fix the regression in tree.xml (varga might be able to help). new columns
(with no ordinal, like junkStatus will be for users once we land) should be on
the far right, not the far left. (you said it's on the left for Mail.app, can
you screen shot?) we still want the regression fixed.
3) don't allow the user to use move for news accounts (in junkMail.js, use get
the root folder from the incoming server, and check
rootFolder.canDeleteMessages)
4) add code to classify incoming news messages
if we decide #3 and #4 should wait, we should just stop showing news accounts
in junkMail.xul. (it's a one liner to hide them)
Reporter | ||
Comment 84•22 years ago
|
||
note to dmose / beard / bienvenu: if you apply that patch, remove your .msf
files. the string property is still "junkscore" but the values are no
longer "", "0" and "100"
Reporter | ||
Comment 85•22 years ago
|
||
Comment on attachment 102656 [details] [diff] [review]
patch for dmose, to fix the 3 state (need 5) problem beard pointed out.
dmose has suggested (and I agree) that we want to add a new attribute to keep
track of the origin of the score setting, instead of using the junkscore
attribute.
one reason is not all plugins will be yes/no like bayesian.
he's working on a different approach.
Attachment #102656 -
Attachment is obsolete: true
Comment 86•22 years ago
|
||
> For whatever reason, using <dialog> isn't working right.
The change to a <window> is not permanent, I hope? You should be working on
converting <window>s to <dialog>s, not the other way around!
> fix the regression in tree.xml
Does (in xul.css)
treecols {
-moz-binding: url("chrome://global/content/bindings/tree.xml#treecols");
+ -moz-box-ordinal-group: 2147483637;
}
work? Or, add ordinal="25" (?) on the new column.
P.S. You don't have enough splitters; if you show all the columns you can't
resize the last one.
Reporter | ||
Comment 87•22 years ago
|
||
There's a problem in the spam code that dmose is trying to fix.
When you toggle the spam status of a message (using the cycler in the thread
pane) we don't run the message through the filter plugin (and tokenize it and
add it to the spam db).
To fix this problem, dmose is working to move the code from mailCommands.js to
the db view.
This way, the junk toolbar button, the spam related menu items, and now the
thread pane cycler will go through the view. We'll do the right thing on the
selected messages (or for the cycler, the clicked message).
Perhaps for junk status, instead of moving all the code from mailCommands.js to
nsMsgDBView.cpp, we should move some of it to the msg folder base class (since
imap, local and news will need it).
Or should we leave this in the view? Something needs to implement the listener
interface.
We need to do this:
get the uri for the message, determine the current state of the message (junk /
notjunk / undecided), determine the origin of the junk state (user set / auto
set from the plugin when the message arrived), call
mJunkMailService->SetMessageClassification(messageURI, oldClassification,
newClassification, origin, listener);
If we make the folder the listener, it can get the junk mail service from the
incoming server.
the listener would then set the new junk status on the message (by going through
the database, so that the view will get updated), and mark that this message
junk status originated from the user.
For reference, here's how the flag code works, from nsMsgDBView.cpp
if (flags != kNoImapMsgFlag || commandIsLabelSet) // can't get here
without thisIsImapThreadPane == TRUE
imapFolder->StoreImapFlags(flags, addFlags, imapUids.GetArray(),
imapUids.GetSize());
Note, dmose will also be fixing it so that when we set the junk status on
incoming mail, we'll set the junk status origin to be "auto".
Comments?
Comment 88•22 years ago
|
||
the folder already implements the junkmail listener interface. Is that the
listener you were talking about? However, it does a move if the message is spam
and the user has their prefs configured that way...I'm more inclined to put this
in the view, I guess.
Comment 89•22 years ago
|
||
sspitzer wrote:
> Perhaps for junk status, instead of moving all the code from mailCommands.js
> to nsMsgDBView.cpp, we should move some of it to the msg folder base
> class(since imap, local and news will need it).
>
> Or should we leave this in the view? Something needs to implement the
> listener interface.
The one benefit to putting part of it in the folder that I see is that only the
folder has to implement the listener, instead of both the folder and view. I'm
not sure that this is a real big deal, however. Is this why you're proposing
it, or are there other reasons as well?
> If we make the folder the listener, it can get the junk mail service from the
> incoming server.
I assume the reasoning for this is so that once we support more than just
bayesian plugin, we'll have some central place to decide what plugin(s) to use
and won't be able to just call do_GetService() everywhere. Is that correct?
Comment 90•22 years ago
|
||
the listener on the folder will do a move if the user has their prefs configured
to move spam. I don't know how you're going to distinguish a spam score from
auto-classification, which would require the move, from a spam score from the
user bonking the junk button or the thread pane cycler (remember mail can come
in from biff, asynchronously). That's why I'm arguing for putting it in the view
- there won't be any confusion as to what to do with the classified mail.
Comment 91•22 years ago
|
||
neil wrote:
> > For whatever reason, using <dialog> isn't working right.
>
> The change to a <window> is not permanent, I hope? You should be working on
> converting <window>s to <dialog>s, not the other way around!
We could certainly file another bug to get the <dialog> issue fixed, and then
switch back to dialog. What is the advantage to using <dialog> instead of <window>?
>> fix the regression in tree.xml
>
> Does (in xul.css)
>
> treecols {
> -moz-binding: url("chrome://global/content/bindings/tree.xml#treecols");
> + -moz-box-ordinal-group: 2147483637;
> }
>
> work? Or, add ordinal="25" (?) on the new column.
>
> P.S. You don't have enough splitters; if you show all the columns you can't
> resize the last one.
Thanks for the suggestions; I ran into the splitter issue today in fact. I'll
poke at these once I get done fixing the multi-state problem.
Reporter | ||
Comment 92•22 years ago
|
||
I've updated and move the private todo list to mozilla.org
http://www.mozilla.org/mailnews/spamtodo.html (not there yet)
Comment 93•22 years ago
|
||
This is probably (hopefully) already addressed, but to be sure:
Please make sure SpamFilter's delete or move operations respect the IMAP pref:
*Mark as Deleted*.
Reporter | ||
Comment 94•22 years ago
|
||
moving out to 1.3 beta
Target Milestone: mozilla1.2beta → mozilla1.3beta
Comment 95•22 years ago
|
||
First cut at fixing the 3/5 state problem. Still needs a bit of cleanup, and
the stuff in mailCommands.js still needs to be converted to using it.
Updated•22 years ago
|
Alias: spamfe
Comment 96•22 years ago
|
||
Comment on attachment 103269 [details] [diff] [review]
3/5 state fix, v1
Let's NOT add the new nsMsgJunkStatusOrigin type to nsIMsgFilterPlugin.idl, as
it's simpler to just pass UNKNOWN as the classification when it is
automatically classified. Makes the implementation of observeMessage
asymmetric, yada, yada...
Attachment #103269 -
Flags: needs-work+
Comment 97•22 years ago
|
||
So it sounds like you want to change the semantics of oldClassification. Would
renaming it to oldUserClassification, and renaming the UNKNOWN state to NONE
work for you?
Reporter | ||
Comment 98•22 years ago
|
||
beard, I'm confused by your comments.
I thought we needed to the the plugin (somehow) about the state transformation:
unknown -> [ junk auto | junk user | not junk auto | not junk user]
junk auto -> not junk user
junk user -> not junk user
not junk user -> junk user
not junk auto -> junk user
I don't see how we can pass that information through to the plugin without
modifying the interface?
(for others on the cc list, the bayesian plugin needs to know the message
origin, so it knows if has to update the good [or bad] list)
Comment 99•22 years ago
|
||
Here's what I'm saying, hopefully in a less cryptic fashion:
As far as the bayesian junk mail filter is concerned, a message can only be in one of 3 states: UNKNOWN,
JUNK, or GOOD. Here's what is implied by these states:
UNKNOWN => nothing has been asserted to be true about the message, therefore it isn't part of the training
set, and is eligible for classification by the filter.
JUNK => the message is asserted to be spam, so its tokens should be part of the spam corpus.
GOOD => the message is asserted to not be spam, so its tokens should be part of the good corpus.
The fact that classification may be have been performed on a message already is of no concern to the filter. It
is the business of the mail infrastructure to know about whether a message was classified automatically, or
manually classified by the user. Here are the state transitions that should be presented to the filter:
UNKNOWN -> JUNK : this should happen when the user manually classifies the message as spam.
Whether or not the message was already classified as GOOD or JUNK by the filter, this is the state transition
to use.
UNKNOWN -> GOOD : this should happen when the user manually classifies the message as good.
Whether or not the message was already classified as GOOD or JUNK by the filter, this is the state transition
to use.
GOOD -> JUNK : this should be presented if the user has made a mistake in classification, and wants to
move the message from the good corpus to the spam corpus.
JUNK -> GOOD : this should be presented if the user has made a mistake in classification, and wants to
move the message from the spam corpus to the good corpus.
GOOD -> UNKNOWN : this should happen if for some reason the user wants to reset the state of the
message and it should be taken out of the good corpus.
JUNK -> UNKNOWN : this should happen if for some reason the user wants to reset the state of the
message and it should be taken out of the spam corpus.
This should be sufficient to drive the bayesian filter's state machine. Now, the mail system will need to keep
track of the fact that a message has been auto-classified by the filter as GOOD or JUNK. In fact, it would be
sufficient to keep track of this by NOT adding an extra message attribute in this case, and only add an attribute
if the user manually classifies the message. This is essentially 1 bit of information. At one point, I suggested
treating the score as a bit field rather than a value from 0 to 100. Then, you could simply represent this as a
binary string:
"01" => automatic, junk
"00" => automatic, good
"11" => manual, junk
"10" => manual, good
Now, we can interpret the high order bit to mean that the message is in the UNKNOWN state as far as the
filter's training set is concerned. You can also simply interpret this bit as a boolean that represents whether or
not the message is in the training set.
Reporter | ||
Comment 100•22 years ago
|
||
talked it over with dmose and beard.
here's the plan:
the UI will keep track of junkscore and origin, and will do the morphing from
those two attributes to the right states.
(if original state is junk auto, or not junk auto, pass in unknown).
this will allow the bayesian stuff to remain as is, and we'll just heavily
comment the interface and the mailnews code, so that the assumptions are clear.
something that beard, dmose and I agree on is that these interfaces are not
frozen. the only thing we 100% agree on is that if we add support multiple
plugins, or another implement an alternative plugin (not bayesian), the
interfaces and UI will have to evolve.
but we'd all rather get something reasonable working (and I think this approach
is reasonable), then to delay this feature while we try to come up with the
perfect interface.
dmose is working on a new patch.
Comment 101•22 years ago
|
||
This patch does several things:
* cleans up unnecessary (and partially working) UI items
* moves some interaction with the plugin from the UI javascript to
nsMsgDBView.cpp
* fixes the 3/5 state problem by adding a "junkscoreorigin" property
* fixes several gcc warnings
Still to do:
* need to add back a few debugging dump()s
* fix a race condition related to multiple uses of the Junk button or menu
items
Attachment #103269 -
Attachment is obsolete: true
Comment 102•22 years ago
|
||
Batching race condition mostly cleaned up. Still need to revisit this because
there is a minor issues where a few unneccessary writes happen since the IMAP
URLs don't usually finish exactly in order; I'll add that to the todo list.
Otherwise, I think we're ready for reviews...
Attachment #103420 -
Attachment is obsolete: true
Reporter | ||
Comment 103•22 years ago
|
||
looks good. r=sspitzer, with just a few nits / questions:
1)
should we #define "junkscore" and "junkscoreorigin"? (for code maintainability)
2)
oldOriginStr.get()[0]
will that be '\0' when the string is empty?
3)
atoi(junkScoreStr) == 100
should this be > 50, to be consistent the other places?
4)
why prefix? (the prevailing style is postfix)
++mOutstandingJunkBatches;
for ( ; mOutstandingJunkBatches > 0 ; --mOutstandingJunkBatches ) {
+ --mBatchLevel;
5)
- (void)filterPlugin->SetBatchUpdate(PR_TRUE);
+ filterPlugin->StartBatch();
since StartBatch() and EndBatch() have a return type, we should either cast to
void or check it, right?
Reporter | ||
Comment 104•22 years ago
|
||
1) should we #define "junkscore" and "junkscoreorigin"? (for code
maintainability)
over aim, dmose and I decided to leave it as is.
if (when) we add support for other filter plugins, or for multiple plugins,
we'll probably need to fix all this, so just leave it be (and not rathole) on
this right now.
Comment 105•22 years ago
|
||
> 1) should we #define "junkscore" and "junkscoreorigin"? (for code
> maintainability)
Discussed with sspitzer on AIM; decided to leave as is for the moment.
> 2) oldOriginStr.get()[0]
> will that be '\0' when the string is empty?
Yes.
> 3) atoi(junkScoreStr) == 100
>
> should this be > 50, to be consistent the other places?
Fixed.
> 4) why prefix? (the prevailing style is postfix)
>
> ++mOutstandingJunkBatches;
>
> for ( ; mOutstandingJunkBatches > 0 ; --mOutstandingJunkBatches ) {
>
> + --mBatchLevel;
Channelling scc/bbaetz here, prefix is preferred to postfix in part because
because it more precisely expresses what is being done:
++a means this:
a = a + 1;
return a;
a++ means this:
SomeType b = a;
a = a + 1;
return b;
This doesn't actually matter in the integer cases being used here, but in more
complex types and expressions, it can cause an extra constructor call, which is
why it's a good habit to get into.
> 5)
>
> - (void)filterPlugin->SetBatchUpdate(PR_TRUE);
> + filterPlugin->StartBatch();
>
> since StartBatch() and EndBatch() have a return type, we should either cast to
> void or check it, right?
>
OK, in debug builds, these will now spit out warnings if there is a problem.
In addition to addressing the above comments, I made the following tiny changes:
a) applied a tiny patch from bienvenu to nsImapMailFolder.cpp
b) converted the analyze() code in nsMailCommands.js to use the new
StartBatch/EndBatch methods (I had forgotten this in the last pass)
c) fixed nsMsgIncomingServer::GetSpamFilterPlugin to not NS_ERROR just because
the plugin wasn't found, especially important since the plugin is currently not
built on the trunk by default.
New patch forthcoming.
Comment 106•22 years ago
|
||
More correctly, I should have typed this:
++a means this:
++a;
return a;
a++ means this:
SomeType b = a;
++a;
return b;
Comment 107•22 years ago
|
||
With modifications as noted in previous comment.
Attachment #103788 -
Attachment is obsolete: true
Comment 108•22 years ago
|
||
Comment on attachment 103925 [details] [diff] [review]
dbview patch, v4
Carrying forward r=sspitzer.
Attachment #103925 -
Flags: review+
Comment 109•22 years ago
|
||
Updated to correctly match the latest dbview patch. Even though they were in
the last rev of this patch, I'm not convinced that the removal of the vbox ids
is really supposed to be here, however.
Updated•22 years ago
|
Attachment #102416 -
Attachment is obsolete: true
Comment 110•22 years ago
|
||
some ? nits:
+ if ( atoi(aJunkScore) > 50 ) {
+ junkStatus = nsIJunkMailPlugin::JUNK;
+ } else {
+ junkStatus = nsIJunkMailPlugin::GOOD;
+ }
js has the ? operator, so:
junkStatus = (atoi(aJunkStore) > 50) ? nsIJunkMailPlugin::Junk :
nsIJunkMailPlugin::Good;
+ } else if (atoi(junkScoreStr) > 50) {
+ oldUserClassification = nsIJunkMailPlugin::JUNK;
+ } else {
+ oldUserClassification = nsIJunkMailPlugin::GOOD;
+ }
same thing, ? operator.
re this question, if we can score from the search window, then you can NOT
assume that m_folder is set. Otherwise, it should be OK.
+ // XXX are we allowed to assume m_folder exists here?
+ //
+ nsCOMPtr<nsIMsgIncomingServer> server;
live a little! :-) You could make it a PRUint32 (and move it out of between the
PRBackedBools) - there's only one of these objects ever and it will make the
generated code more efficient and I believe, compact. Up to you.
+ PRUint8 mBatchLevel; // allow for nested batches to happen
Comment 111•22 years ago
|
||
Comment on attachment 103927 [details] [diff] [review]
feature enabling patch, v5
sr=bienvenu
Attachment #103927 -
Flags: superreview+
Comment 112•22 years ago
|
||
> some ? nits:
>
> + if ( atoi(aJunkScore) > 50 ) {
> + junkStatus = nsIJunkMailPlugin::JUNK;
> + } else {
> + junkStatus = nsIJunkMailPlugin::GOOD;
> + }
>
> js has the ? operator, so:
> junkStatus = (atoi(aJunkStore) > 50) ? nsIJunkMailPlugin::Junk :
> nsIJunkMailPlugin::Good;
>
> + } else if (atoi(junkScoreStr) > 50) {
> + oldUserClassification = nsIJunkMailPlugin::JUNK;
> + } else {
> + oldUserClassification = nsIJunkMailPlugin::GOOD;
> + }
> same thing, ? operator.
Both are actually in C++ code; the reason I'm not using ? : there is because gcc
(correctly) issues a warning that the operators on either side of the : are from
different enums. This is true because XPIDL generates each constant as part of
its own anonymous enum. Why XPIDL does this, I'm not sure.
> re this question, if we can score from the search window, then you can NOT
> assume that m_folder is set. Otherwise, it should be OK.
>
> + // XXX are we allowed to assume m_folder exists here?
> + //
> + nsCOMPtr<nsIMsgIncomingServer> server;
OK, added this code:
// if numIndices == 0, return quietly, just in case
//
if (numIndices == 0) {
return NS_OK;
}
NS_ASSERTION(numIndices >= 0, "nsMsgDBView::ApplyCommandToIndices(): "
"numIndices is negative!");
and switched to using:
// get the folder from the first item (if it's the search view,
// only one item can be touched at a time; if a regular folder view,
// all items will have the same folder).
//
nsCOMPtr<nsIMsgFolder> folder;
rv = GetFolderForViewIndex(GetAt(indices[0], getter_AddRefs(folder));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIMsgIncomingServer> server;
rv = folder->GetServer(getter_AddRefs(server));
NS_ENSURE_SUCCESS(rv, rv);
> live a little! :-) You could make it a PRUint32 (and move it out of between
> the PRBackedBools) - there's only one of these objects ever and it will make
> the generated code more efficient and I believe, compact. Up to you.
> + PRUint8 mBatchLevel; // allow for nested batches to happen
Fixed.
Comment 113•22 years ago
|
||
Comment on attachment 103925 [details] [diff] [review]
dbview patch, v4
sr=bienvenu, thx.
Attachment #103925 -
Flags: superreview+
Comment 114•22 years ago
|
||
Addresses bienvenu's sr comments.
Attachment #103925 -
Attachment is obsolete: true
Reporter | ||
Comment 115•22 years ago
|
||
Comment on attachment 103932 [details] [diff] [review]
dbview patch, v5
r=sspitzer,sr=bienvenu
Attachment #103932 -
Flags: superreview+
Attachment #103932 -
Flags: review+
Comment 116•22 years ago
|
||
Comment on attachment 103932 [details] [diff] [review]
dbview patch, v5
dbview patch has been checked into the trunk.
Attachment #103932 -
Attachment is obsolete: true
Comment 117•22 years ago
|
||
Taking; seth is focussing on other stuff at the moment.
Assignee: sspitzer → dmose
Status: ASSIGNED → NEW
Updated•22 years ago
|
Status: NEW → ASSIGNED
Hardware: PC → All
Reporter | ||
Updated•22 years ago
|
Comment 118•22 years ago
|
||
Updated the "analyze messages" verbiage as discussed with the UI folks. I
chose "u" as the accesskey, since "R" was already taken.
Reporter | ||
Comment 119•22 years ago
|
||
Comment on attachment 104591 [details] [diff] [review]
analyze-messages patch, v1
r/sr=sspitzer
Attachment #104591 -
Flags: superreview+
Comment 120•22 years ago
|
||
When will it be ready for testing?
I'm willing to stress-test that feature.
Comment 121•22 years ago
|
||
Get the source, apply the patch and try it out! I'm testing this on my custom
build and boy does it rock! Its learning quite fast and marking a lot of spam
quite correctly. No major problems so far. But some stuff is still not
implemented e.g. selecting a folder other than Junk doesn't work and there are
no icons for Classic theme.
Comment 122•22 years ago
|
||
Hmm, I'm building it now but it takes ages every time... :(
Any chance for a branch of test builds on ftp.mozilla.org ?
Comment 123•22 years ago
|
||
Comment on attachment 104591 [details] [diff] [review]
analyze-messages patch, v1
Checked in.
Attachment #104591 -
Attachment is obsolete: true
Comment 124•22 years ago
|
||
This stuff will be landing in 1.3 alpha, which isn't far now, but I don't
anticipate test-builds before that.
Updated•22 years ago
|
Target Milestone: mozilla1.3beta → mozilla1.3alpha
Comment 125•22 years ago
|
||
OK, to make the life of testers easier (and to verify if I'm doing this
correctly :) ) here's what I do to test this feature on Linux:
1. Test whether the tinderbox sidebar is all green so that I can pull the
sources that would compile
2. Pull the sources:
mkdir ~/mozilla_CVS
cd ~/mozilla_CVS
export CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
cvs login
# input "anonymous" as password
cvs co mozilla/client.mk
cd mozilla
gmake -f client.mk checkout
3. Apply version 5 of feature-enabling patch:
wget http://bugzilla.mozilla.org/attachment.cgi?id=103927&action=view
mv attachment.cgi\?id\=103927 ../mozilla_spam_feature_v5.patch
patch -p0 < ../mozilla_spam_feature_v5.patch
4. Build the default, debug version of Mozilla:
gmake -f client.mk build
5. Wait about 2.5 hours on a PIII 666 MHz with 512 MB RAM
6. run mozilla:
cd ~/mozilla_CVS/mozilla/dist/bin
./mozilla
Are those steps correct?
Comment 126•22 years ago
|
||
Placeholder icons for classic theme (copies of the modern ones); to be replaced
when the real ones are ready.
Updated•22 years ago
|
Attachment #105305 -
Attachment is obsolete: true
Updated•22 years ago
|
Attachment #105305 -
Flags: superreview+
Comment 127•22 years ago
|
||
Comment on attachment 105305 [details] [diff] [review]
Placeholder icons patch, v1
Checked in.
Comment 128•22 years ago
|
||
New feature-enabling patch. Changes:
* merged to tip
* got rid of unnecessary ifdefs
* temporarily disabled moving UI until we get more issues sorted out
Attachment #103927 -
Attachment is obsolete: true
Reporter | ||
Comment 129•22 years ago
|
||
Comment on attachment 105308 [details] [diff] [review]
feature enabling patch, v6
sr=sspitzer
Attachment #105308 -
Flags: superreview+
Comment 130•22 years ago
|
||
Regarding attachment 105305 [details] [diff] [review]
+treechildren:-moz-tree-image(junkStatusCol, notjunk) {
+ list-style-image: url("chrome://messenger/skin/icons/readcol-read.gif");
+ padding-left: 0px;
+ padding-right: 4px;
+}
Classic does not have readcol-read.gif icon; the name of its icon is readmail.gif.
Comment 131•22 years ago
|
||
The whitelist addressbook(s) is probably the most important setting to avoid
false positives. Since *all* my addressees are spread out in 5+ addressbooks
(family, friends, clients, employees, subcontractors,...), being able to
whitelist *multiple* AB's is esential. € 0.02
PS. This shouldn't affect the necessary absence of LDAP AB's since they are now
also hidden.
Comment 132•22 years ago
|
||
Comment on attachment 105308 [details] [diff] [review]
feature enabling patch, v6
r=bienvenu
Attachment #105308 -
Flags: review+
Reporter | ||
Comment 133•22 years ago
|
||
> The whitelist addressbook(s) is probably the most important setting to avoid
> false positives. Since *all* my addressees are spread out in 5+ addressbooks
> (family, friends, clients, employees, subcontractors,...), being able to
> whitelist *multiple* AB's is esential. € 0.02
>
>PS. This shouldn't affect the necessary absence of LDAP AB's since they are now
>also hidden.
whitelisting is an interesting topic that we should discuss more in the
newsgroups.
one thing to consider are viruses like klez (?) which make it appear that you
are getting mail from someone you know.
I've found bayesian works great, with whitelisting disabled, after it's well
trained.
let's take this to the newsgroup, but feel free to also log an RFE bug about
whitelisting against multiple addressbooks. (no guarantees it will make it in,
of course)
Comment 134•22 years ago
|
||
Comment on attachment 105308 [details] [diff] [review]
feature enabling patch, v6
Patch checked in; still need to check in mac build food; that will happen later
today (the builds shouldn't break without it).
Attachment #105308 -
Attachment is obsolete: true
Comment 135•22 years ago
|
||
Pratik: good catch on the classic skin icon. Fix for that has just been checked in.
Comment 136•22 years ago
|
||
Dan, If the icons are checked in, shouldnt someone make note of that in Bug
#178566 ?
Comment 137•22 years ago
|
||
Andrew: no, the icons that are currently checked in are just placeholders until
the ones mentioned in that bug are finished.
Comment 138•22 years ago
|
||
Comment 139•22 years ago
|
||
Comment on attachment 105528 [details] [diff] [review]
xpinstall packager file changes
Packager fix checked in, modulo CVS conflict merge changes.
Attachment #105528 -
Attachment is obsolete: true
Comment 140•22 years ago
|
||
Lots of junk mail work left to do. Tommorrow, I'll spin up new bugs on issues
still to be looked at, point to them from here, make a tracking bug, and then
close this one.
Comment 141•22 years ago
|
||
Classification works great, but is it intended that the settings for moving
messages are greyed out (e.g. because this feature needs work)?
Or am I doing something wrong?
Comment 142•22 years ago
|
||
Aleksander:
The checkin comment for this says:
"Turn on basic junk-mail detection functionality in mail. Parts (such as moving
to other folders) are still disabled as there is work to do there yet."
I think that should be a good answer for you :)
Comment 143•22 years ago
|
||
urg... in my cvs build on linux the junk mail window controls window is
_extremely_ wide, that is at least 1200 pixels or so. it doesn't fit on my
screen completely.
should I file a new bug for that?
Comment 144•22 years ago
|
||
Same here, running trunk build 2002110808. Fortunately it can be resized,
although a minimum size might be a good idea..
Comment 145•22 years ago
|
||
This feature hates me :( In trunk build 2002110808 on WinXP (installed using
full installer) I just get exceptions in JavaScript console. For example
pressing the Junk button causes
Error: [Exception... "Component returned failure code: 0x80040154
(NS_ERROR_FACTORY_NOT_REGISTERED) [nsIMsgDBView.doCommand]" nsresult:
"0x80040154 (NS_ERROR_FACTORY_NOT_REGISTERED)" location: "JS frame ::
chrome://messenger/content/mailCommands.js :: JunkSelectedMessages :: line 503"
data: no]
Source File: chrome://messenger/content/mailCommands.js
Line: 503
Did I miss something? Tried also deleting compreg.dat to no avail.
Comment 146•22 years ago
|
||
Looks like at least bayesflt.dll is missing from the installer..
Comment 147•22 years ago
|
||
the js error has been reported as bug 179150
Comment 148•22 years ago
|
||
Was it already mentioned that there is a spelling error in the description text
in Junk Mail Controls dialog (unsolicted)? The sentence "An unknown icon is
displayed if the message might be junk mail." could be interpreted quite
hilariously :) How about removing "by" from "..can be fine-tuned by using.."?
Comment 149•22 years ago
|
||
My preliminary work with the new junk mail controls shows that it does not APPLY
any controls if the mail was alread filtered by one of my OWN filters (example:
I created a filter to move any email that does not contain MY email address in
the To or CC filed to a "SPAM" folder ... any email that goes into that folder
has been showing up as JUNK MAIL Status: UNKNOWN .... Ive seen this same event
on other PCs with different filtering setups.)
One other note: Although the Junk Mail controls for Newsgroups were supposed to
be disabled, they are only partially disabled, currently a user can set them up
(select checkboxes, whatnot), but none of the junkmail controls actually work.
They can also mark messages as Junk/Not Junk in newsgroups.
Comment 150•22 years ago
|
||
Might I suggest a UI change: Instead of a drop-down selection for AddressBook
(virtual Whitelist), why not allow the users to select multiple addressbooks
(via dropdown checkboxes)...
(I would like to use both Personal Addressbook & Collected Addresses as a minimum)
Comment 151•22 years ago
|
||
Collected addresses? Wouldn't the spammer's address be collected?
Comment 152•22 years ago
|
||
Ere, No, Collected Addresses only collects email addresses on SENT mail -- So,
unless you are responding to a spammer (which is not a good idea), using the
COLLECTED ADDRESSES should be just fine.
Comment 153•22 years ago
|
||
I have enabled the junk mail controls on all my four emails accounts, but
nothing happens, neither on pre-filtered mails nor on accounts with no filters
at all. The icon stay on unknown, even when i mark the messages as junk.
The logs stays empty.
Comment 154•22 years ago
|
||
Vincent, see bug 179150
Comment 155•22 years ago
|
||
Now that this is turned on in the trunk, please file new bugs for issues related
to junk mail problems. I'll be closing this bug soon.
Comment 156•22 years ago
|
||
Junk mail probably needs its own Component, no?
Comment 157•22 years ago
|
||
Dan,
When is --document.getElementById("moveOnSpam").disabled = false;-- from
junkmail.js going to be implemented in trunk builds ??? Is this open on another
bug already (cant find it)?
Can you tell me what Bug# it is with the problem(s) preventing the feature from
being turned on ... None of the current dependencies seem to relate to this
feature. I imagine you guys are having problems with moving the files to a
"JUNK" directory if that directory does not exist yet ???
Comment 158•22 years ago
|
||
The problem with the junk mail dialog is the js, not the xul:
var gMessengerBundle = document.getElementById("bundle_messenger");
doesn't work at the top level, you need to move it to the load handler.
Is it worth hiding the junk mail column/button for those accounts where junk
mail is disabled?
Updated•22 years ago
|
Attachment #105964 -
Flags: superreview?(sspitzer)
Attachment #105964 -
Flags: review?(dmose)
Comment 159•22 years ago
|
||
I noticed that the junk mail column/button was also listed in the Sent folder. I
thought that was kind of ironic. ;)
Shouldn't this filter only be applied on the incoming mail/newsgroups?
Comment 160•22 years ago
|
||
Ryan: I frequently test my Junk Mail training data by running Junk Controls on
my "Sent" folders (because I've got lots of legitimate messages there, and can
spot any false positives immediately).
Reporter | ||
Comment 161•22 years ago
|
||
> Is it worth hiding the junk mail column/button for those accounts where junk
> mail is disabled?
that's being discussed in another bug.
see http://bugzilla.mozilla.org/show_bug.cgi?id=179012
Reporter | ||
Comment 162•22 years ago
|
||
dmose plans on marking this fixed and spinning off any open issues to new bugs.
so let's take any new issues or comments to new bugs, but first check
http://bugzilla.mozilla.org/showdependencytree.cgi?id=11035 for existing issues.
Reporter | ||
Comment 163•22 years ago
|
||
Comment on attachment 105964 [details] [diff] [review]
Fix junk mail <dialog>
this has been moved to bug 180215
Attachment #105964 -
Attachment is obsolete: true
Reporter | ||
Comment 164•22 years ago
|
||
Comment on attachment 105964 [details] [diff] [review]
Fix junk mail <dialog>
moved to another bug, getting of the request radar
Attachment #105964 -
Flags: superreview?(sspitzer)
Attachment #105964 -
Flags: superreview-
Attachment #105964 -
Flags: review?(dmose)
Attachment #105964 -
Flags: review-
Comment 165•22 years ago
|
||
*** Bug 182443 has been marked as a duplicate of this bug. ***
Comment 166•22 years ago
|
||
Just wnat to make the observation that the icon in the toolbar is still set to
the same as 'mark', which makes it awkward for those of us who like to have the
toolbar as 'icon only - no text'.
I know you have your hands full though, so this has to be low priority...
Max.
Comment 167•22 years ago
|
||
I've been using this feature for about a week now, and I'm finding that I have
one huge irritation with the way it's currently implemented, which is that every
time I find a new bit of junk mail that the filters missed, I have to select the
message, mark it as junk, and then (of course) delete it.
I think the default behavior for the "junk button" should be to delete it (but
not for toggling the icon in the message list or selecting "mark as junk" in the
tools menu :-).
Somehow, that's just what my brain "expects" to happen when I press a big button
labelled "junk". It sound like a much more "active" verb than "Mark". Also, it
would save the user a huge amount of effort during training.
If need be, this could be a junk controls option for those rare people who want
to collect their trash and preserve it in a shrine. Perhaps a way to do this is
to have an "action when clicking Junk" preference that has 3 choices: do
nothing, apply above filter action, and delete (with delete the default). I
don't like arbitrary preferences in general, but since I'm asking for a feature
with slightly inconsistent behavior, it seems only polite.
I'm also confused about what the point is of having a separate "junk mail
controls" dialog. Shouldn't that just be a tree item in the normal preferences?
If evangelizing the feature (a good idea, IMHO) is the goal, a menu item that
jumps directly to the tree item would be the way to go.
Comment 168•22 years ago
|
||
Yes, Yahoo free webmail has gone through this already.
Initially you had (when logging into your mailbox) to select all
non-already-identified as junk messsages,
click on "This is Spam..." ...
then go again and delete everything.
Now it's a one-step and much easier... Selecting "This is Spam"
does both "Mark as Junk", report it, and delete the emails.
PS: I believe that Paul Graham initial document also specified this
behavior, that User-Agents should have two delete buttons,
"Delete" and "Delete as Junk", the last one doing being equivalent to
"Mark as Junk" + "Delete" of course.
Reporter | ||
Comment 169•22 years ago
|
||
taking, I'll be trying to finish up the feature for 1.3 beta.
about some of the comments people have made, jglick has an update spec that
should address some of the common complaints, like automatically deleting
messages when they are marked as junk.
once it's public, I'll link to it.
for now, I'm starting with finishing the code so that we can enable the "move to
junk folder" UI. (see bug #181397)
Assignee: dmose → sspitzer
Status: ASSIGNED → NEW
Depends on: 181397
Target Milestone: mozilla1.3alpha → mozilla1.3beta
Comment 170•22 years ago
|
||
Spec updated:
http://www.mozilla.org/mailnews/specs/spam/
Comment 171•22 years ago
|
||
This looks great.. here are a few additional comments to make this as simple
as possible for new users of this feature.
Going back to what I've experienced with the Yahoo.com webmail "This is spam"
feature, basically when you log into your mail every day, you get to see
a few Junk mail messages that the built-in filter has not properly moved into
the "Spam" folder by itself.
So the first action is to select every message that has not been properly
classified as Junk, and click on "This is spam", which should both
flag it as spam and make it disappear from your life,
either moving it into the "Spam" folder, or deleting it.
So it should be a one-step, no-brainer, and as the accuracy of the scoring
system improves with training, the user should have to do the manual step
above less and less frequently.
For these reasons, I suggest that:
the checkbox "Automatically delete messages when I manually mark them as junk"
should be checked by default for new users,
to accomplish everything in a single step.
Additionally, I have a nitpicking question about the Mark as Junk/Not Junk
button, whose status depends on whether the messages you have selected
is or is not junk.
If we select multiple messages (inc ones that are labeled Junk and others
Not Junk) can we explicitely specify the status of this button in the spec?
I would suggest that the user is doing a bulk-select of these messages to
either
a) mark them as junk and delete them, or
b) mark them as not junk
b) doesn't make sense, because if you want to "unmark" as junk, you do
not need to select messages that are not marked as junk
so only case a) makes sense to me...
-> in case of multiple selection of messages with junk/not junk ones,
the button should read "Mark as Junk" and delete/move the messages
if the corresponding pref is set.
PS: one has to ensure that "marking as junk" a message within the selection
that is already "marked as junk" is a no-operation and does not cause
weird side effects.
Hope this helps -- Nicolas
Comment 172•22 years ago
|
||
I think Nicolas' comment 171 implies this, but it should be possible to
configure things so that manually marking a message as junk moves it to the junk
folder. The current UI spec. seems to only support deleting/moving to the Trash.
Why do I want this? Maybe I am strange, but I keep a folder named SPAM that
holds thousands of junk messages I have received recently so that I can use it
to re-train filtering such as that now built into Mozilla. Very useful.
Comment 173•22 years ago
|
||
Yes, sorry for not being very clear...
The bottom line is that Spam is awfully annoying, and all it should take
to make it disappear is multiple select of mis-classified messages
and *one click* (button, whatever) to do everything that needs to be done.
That's almost the Yahoo.com UI (it's actually 2-click, you select all messages,
"This is Spam" in the drop-down, click on OK, and it takes you to an intermediate
webpage where you can choose between
[X] reporting spam ("more effective")
[ ] block senders
Comment 174•22 years ago
|
||
Thinking about the above again...
If you want to keep a "Junk archive" folder with all the confirmed/verified
Spam you have ever received, doesn't that mean that we need 3 folders in fact?
- Inbox, getting new messages scored as "probably not junk"
- Junk, getting new messages scored as "probably junk"
- Junk Archive (or Trash, depending on whether you want to keep or delete
confirmed Junk) that keeps mails you have confirmed as Junk
The reason for the above is that there are ALWAYS false positives and false
negatives, even if the system aims at reducing this possibility as much as
possible. Even a 99% correct scoring system will have 1 mail every 100
go into the wrong folder.
So you will need to monitor your Inbox to manually "junkify" messages that
were incorrectly scored, but you also need to monitor the "Junk" folder
to "de-junkify" messages that were invalid scored as junk!
If you keep all your junk archive (like 2000 messages) into the Junk folder,
it is not going to be easy to go and check every day in there if any new
message was deposited there due to an invalid scoring.
Here's what Yahoo.com webmail currently uses:
Incoming messages end up in either
- Inbox
- Junk
next to the "Junk" and "Trash" folder is a special button, [EMPTY]
that empties/deletes irremediably everything into the Junk folder or the Trash.
So the work cycle of a user, when checking mail, is to:
- open the Inbox, mass select stuff that wasn't scored as Junk correctly,
click on "This is Spam" and have it disappear
- open the Junk folder, verify nothing was incorrectly placed here,
click on the "EMPTY" button
that's it.
If you have 2000 messages in the Junk folder, it is not going to be easy to
spot individual messages that were not classified here correctly.
I believe the Inbox / JUNK / Trash paradigm will correspond to the majority
of users who do not want to archive JUNK mails.
If you want to archive JUNK mails, then my suggestion is a 3-folder model:
incoming email is scored and dispatched into Inbox or Junk,
and once manually verified as JUNK, these emails are archived into a special
folder called "JUNK Archive" or "Verified Junk" or whatever.
This will keep the "Junk" inbox manageable and verify-able on a daily basis...
What do you think Mark ?
Comment 175•22 years ago
|
||
Why not give the user access to the raw scores and to the thresholds defined for
junk / nojunk (and unknown, see below)?
As with each binary classifier, the crucial issue is false positives vs false
negatives. Different users might have very different preferences which rates
they find acceptable. Different thresholds for the junk class will give very
different behavior of these rates, and the optimal threshold will largely depend
on the importance a user assigns to the balance between them.
Also, I do not see why classification uncertainty (i.e. scores which are not
very close to 1.0 or 0.0) is not communicated to the user. These are the emails
where manual inspections will probably be most important.
Access to the raw score will also make it easier to define filter actions that
are more adapted to personal preferences.
This does not need to be enabled by default, but the score could be an
additional column in the mail list and the thresholds could be set in a tab of
the junk mail control dialog.
Comment 176•22 years ago
|
||
I am sure that having 2 junk related folders is overkill and too complex for
most people. We should optimize the interface for what 80% of the users out
there want. My guess is that the scenario describe in comment 174 probably meets
most people's needs, but I don't have any real data.
Just thinking about myself, I am very paranoid about false positives so I do not
intend to enable automatic refiling of potential junk. My own work pattern looks
like this:
1) Let the automatic junk classification do its thing on incoming messages. Now
my Inbox contains some messages that are marked as junk.
2) Switch the Inbox view to "Junk" (I added this as a custom view). Select all
and move the messages to my Junk folder. For this step it would be very
convenient if I could just click on the Junk icon in the toolbar and have the
refiling occur.
3) Switch the Inbox view back to "All" and manually mark and refile the
remaining (undetected) junk messages as I read the non-junk messages. For this
step it would again be very convenient if I could just click on the Junk icon in
the toolbar and have the refiling occur.
So I only need Mozilla to know about one Junk folder, but I do want separate
options to control whether refiling occurs during automatic junk detection (I
would leave that off) and whether refiling occurs when a message is manually
marked as junk (I would turn that on).
Comment 177•22 years ago
|
||
Granted, people who want a 3 folder model can manually create
a normal folder called "Junk Archive", and when they verify daily the
"Junk Inbox" and spot nothing wrong, can mass select (Ctrl-A) all messages
and move them manually into the "Junk Archive" folder.
so this is doable manually and doesn't need custom code -- the Junk folder can
be made small so that it's manageable on a daily basis.
People who want to delete the Junk contents can also mass-select (Ctrl-A) and
Shift-Delete to purge these emails once a day, although an "Empty Junk"
menu next to "Empty Trash" could also be a one-step more convenient feature.
Comment 178•22 years ago
|
||
I'm a little confused on how far the implementation had gone. I'm using
2003010904 build and my Junk Mail Controls screen has the bottom section (the
main part) greyed out, as if it was an incomplete feature. What's the real
status of this? Is it really implemented in the beta, or is this a bug I should
report? I'd like to beta test this feature if I could.
Comment 179•22 years ago
|
||
Brendan: see bug 181394 for the move functionality.
Reporter | ||
Comment 180•22 years ago
|
||
accepting.
turning this into the meta bug for this feature.
jglick is working on updating the spec, and I'm working on some of the backend
and fe changes.
the goal is still 1.3 beta
Status: NEW → ASSIGNED
Summary: front end work for spam / junk mail → [meta] finish junk mail feature
Comment 181•22 years ago
|
||
I'm not sure if this has been mentioned yet or not, but what happens if I don't
want to keep a "junk archive"? For example, if I CTRL-A Select All a whole
bunch of spam messages, and then subsequently delete them, will they still be
remembered by the system? Or does it always need some sample spam to go by.
The same goes for non-spam messages. I don't keep many "non-spam" messages
around in my mail folders. Just the bare minimum, and the rest I just delete.
Will MozMail remember these as being non-spam? Or once things are deleted, does
MozMail act as if it never received those messages in the first place?
Sorry if this question has already been addressed.
Comment 182•22 years ago
|
||
By the way, those who are interested in this bug/feature
may also want to take a peek at bug 187044
which requests support for a challenge/response system.
In challenge/response, you accept email only from users in your whitelist
or if the sender sends you a password... otherwise, you reply with a message
explaining how to figure out the password (and send it in the subject line).
Sending a message to that address, or receiving the password from that
address, adds that address to the whitelist, so the password is only
needed to start conversations.
Bug 169638 and bug 187044 are complementary - both are techniques for
getting rid of junk aka spam, and hopefully they're different enough that the
combination would be very effective.
Comment 183•22 years ago
|
||
Bug 188232 may be a candidate to be part of this [meta] bug.
Reporter | ||
Comment 184•22 years ago
|
||
this won't be complete until 1.4, so moving out.
Target Milestone: mozilla1.3beta → mozilla1.4beta
Comment 185•22 years ago
|
||
nominating bug 194762 and bug 194779 for dependency
Comment 186•22 years ago
|
||
Nominating bug 193625
Comment 187•22 years ago
|
||
Adding two bugs which cause messages to be classified as SPAM even though the
addresses are listed in the Personal Address Book
Comment 188•22 years ago
|
||
Loosely related to junk mail front-end:
Switching to Daylight Savings Time loses all junk mail status on messages
apparently, according to bug 136049 comment 4,
due to .msf files being invalidated and rebuilt by the DST switch.
Comment 189•22 years ago
|
||
When you mark a message as "Junk", the junk mail controls don't get executed.
i.e. the message doesn't get moved into the Junk folder automatically. 5/15
nightly build.
Comment 190•22 years ago
|
||
What about delayed moving to junk folder
If i set manualy junk status then is moved to junk
this 3-5sec will be nice if i made mistake
Comment 191•22 years ago
|
||
How about using Edit | Undo Move/Junkify
if you realize you made a mistake ? :-)
Updated•20 years ago
|
Product: Browser → Seamonkey
Updated•20 years ago
|
Assignee: sspitzer → mail
Status: ASSIGNED → NEW
Updated•19 years ago
|
Flags: blocking-seamonkey1.0b?
Comment 192•19 years ago
|
||
err. junk mail is "finished". any remaining issues should live in other bugs.
Status: NEW → RESOLVED
Closed: 19 years ago
Flags: blocking-seamonkey1.0b?
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•