Re: [Evolution-hackers] Junk filtering controls and logic are confusing



On Sat, 2013-11-23 at 10:48 -0600, Michael Ekstrand wrote:
The particular working of the junk filtering pane (Preferences -> Mail
Preferences -> Junk) is confusing, and the functionality it controls is
(A) hard to understand and (B) arguably incorrect.

Indeed.  You're wading into a mess here.

The junk filtering logic bounces between Camel and Evolution.  Camel's
filtering (both junk and otherwise) is highly dependent on Evolution and
at some point I'd like to move it all to Evolution and get Camel out of
the filtering business entirely.  (The relevant Camel APIs badly need an
overhaul as well, as they're ancient, error-handling is pretty much non-
existent and they block like crazy.)


1. What all does 'Check incoming messages for junk' control? Everything?
Just the junk plugin (spamassassin/bogofilter)?  Does checking or
unchecking it affect whether custom headers are scanned?
    - Potential UI fix: the options for everything that is pre-empted by
disabling junk checking should be disabled when the checkbox is cleared

I think the option should be removed entirely and be made per-account,
but that may be a bit of a project.  At the moment, only IMAP accounts
have their own junk filtering options, and I believe those options are
secondary to this master switch.

Disabling the "Check incoming messages for junk" turns off everything:
custom header checks, address book lookups, and junk filtering software.


2. What option is ignored if a match for custom junk headers is found?
    - The code suggests that the address book and and junk filter plugin
logic are both ignored if custom headers are found

Correct: headers first, then address book, then filtering software.  I
think it's meant to be in order of fastest to slowest.  As soon as any
of those tests determine the message to be junk, processing stops.


3. What happens if there is no junk plugin (bogofilter/spamassassin)
installed? UI makes it looks like the custom headers will work, and
address book checking will work.  However, the code seems to disagree:
looking at the junk_test function in camel-filter-search.c, it looks
like everything is just bypassed if there is no junk filter installed.

Yeah you're right.  Probably even my handiwork.  The header and address
book checks should run regardless.  That's a valid bug.


In my mail setup, I run SpamAssassin on the server (as a Postfix
milter).  I want Evolution to check the spam headers set by the server,
but not to mess with running bogofilter or spamassassin or anything like
that locally.  Further, since my server's SpamAssassin doesn't know
anything about my address book, I want the address book lookup to
override the custom header check.

The processing order I mentioned above would have to be changed.

I don't have any strong opinions about that since I just use Bogofilter.


The UI makes it ambiguous as to whether this is possible.  Looking
through the code, to the extent that I understand it so far, it looks
like it is not.  If I have no junk filter plugin, then Evolution will
not do any checking, including for custom headers.  If I have one, then
I'm double-scanning my mail and slowing down Evolution.  And the address
book check doesn't interact with the header check.

It would be clearer if the UI read more like a checklist:

   [ ] First check this...

   [ ] Then check this...

   [ ] Then check this...


In particular, a few things I am immediately interested in making
happen:
     1. Making address book checks preempt spam header checks
     2. (maybe) figuring out why the spam header check isn't doing
        anything
     3. Making spam header & address book checks work without a spam
        filtering plugin
     4. Making spam filtering UI disable things to show how it works

Sounds great to me!

Polishing up those options and unbreaking whatever's broken would be
much appreciated.

Matthew Barnes



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]