
HOWTO for setting up a KMail antispam wizard configuration entry
================================================================

This is a HOWTO for setting up a KMail antispam wizard configuration
entry. Since this possibly is more developer related, I put this as
text file into the source SVN. Possibly some of this should go to the
user documentation.

I gathered the information from several mails and comments by Andreas
Gungl, the original developer of the antispam wizard for KMail, and
Ingo Kloecker.

When you have questions do not hesitate to ask me, Martin Steigerwald, 
Andreas or Ingo.


Basics
------

The configuration file for the KMail antispam wizard "kmail.antispamrc"
consists of one entry for each spamfilter that the antispam wizard
shall support.

At the beginning of the file in the section "General" the option "tools" 
specifies the count of configured spam filters. Increase that by one 
when you add a new entry:

[General]
tools=11


A spam filter configuration entry starts with a header like this:

[Spamtool #11]


After this you place all the options for the spam filter. Please use
an ordering that is similar to the other entries in the configuration
file so that things are unified a bit.


General options
---------------

- Ident: Specifies the internal identifier for the entry

- Version: Specifies the version of the entry (FIXME what is this for?)

- Priority: Specifies the priority of the filter. This value is used to
  place faster filters before the slower ones in the selection list. If the
  user chooses the top item, he gets the fastest filter. Provider sided
  "filters" (which produce headers tough) like the GMX filter have a prio
  at about 70, they are very fast as they don't consume time on the client
  side. Since CRM114 is almost as fast it gets 65 ;-).

- VisibleName: This is the name that is presented to the user

Or:

- HeadersOnly=yes: This is used for entries where KMail should just parse
  the mail headers for the spam score display (see Razor filter and below
  for spam score display details).


Spam filter options
-------------------

These specify details about the spamfilter.

- Executable: Specifies a test whether the executable of the spamfilter
  can be started. You should provide something which can be run on the
  command line and returns [ $? -eq 0 ], i.e. it doesn't wait for any input 
  etc. It usually make sense to assume the program in the $PATH, so you
  should better avoid /usr/bin. Set executable to "echo" for provider based 
  filters.
  Example: Executable=crm -v | grep "CRM114"

- URL: URL to the homepage of the filter

- PipeFilterName: Name of the pipe-through filter used to send mails to the
  spamfilter and get them back with added spam filter headers.

- PipeCmdDetect: Command used to pipe the mail into.

- ExecCmdSpam: Command used to mark a mail as spam.

- ExecCmdHam: Command used to mark a mail as ham.

- SupportsBayes: Set to 1 if you have a spam filter that can learn. Only
  in this case KMail uses ExecCmdSpam and ExecCmdHam to let the user mark
  mail as ham or spam.


Spam detection options
----------------------

These specify how KMail shall detect whether a mail is spam, unsure or good.

- DetectionHeader: The name of the header where the spam filter puts the spam
  status of a mail into.

- DetectionPattern: The pattern the spam filter uses for marking a mail as
  spam.

- DetectionPattern2: The pattern the spam filter uses for marking a mail as
  unsure. Set "SupportsUnsure=1" when you use this.

- DetectionOnly: Don't pipe mails through the spam filter, but just use headers
  from outside, e.g. a provider based spam filter (See GMX).

- UseRegExp: Set to 1 if you need to use regular expressions in the detection
  patterns. KMail can operate faster when they are not required.

- SupportsUnsure: Set to 1 if you have a spam filter that supports
  classying mails as unsure to tell the user to train those.


Spam score display
------------------

Those regular expressions are used to extract the actual "spamicity" 
score and the threshold (i.e. the upper bound for non-spam) from 
SpamAssassin's ScoreHeader. The score and the threshold are then used 
for showing the spam status in the message header, i.e. the small 
colorbar.

You need to specify the following values:

- ScoreName: The name that will be shown in the message header.

- ScoreHeader: The message header containing the score value.

- ScoreType: The type of the score, cf. below.

- ScoreValueRegexp: A regular expression for extracting the score from 
  the ScoreHeader.

- ScoreThresholdRegexp: A regular expression for extracting the threshold 
  from the ScoreHeader; only needed for Adjusted type. Please set to 
  nothing (ScoreThresholdRegexp=) if not needed.


KMail supports the following ScoreType values:

- Bool: Simple Yes or No (Razor)

- Decimal: For probability between 0.0 and 1.0 (BogoFilter)

- Percentage: For straight percentages between 0.0 and 100.0

- Adjusted: Use this when we need to compare against a threshold
  (SpamAssasssin)

