Filters editor

Manitou-Mail has a filtering system with rules evaluated when a message is imported into the database, and associated actions that are applied when the rule's condition is met. Typical actions are tagging the mail, giving it a priority, or discarding it.

The user interface has an editor for conditions and actions, launched by the File/Filters menu command.

Below is a screenshot with some sample rules defined:

Conditions syntax

simple:
header("header_name") operator "string"
where operator can be
eq (equality), ex: header("X-Loop") eq "lists@ml.domain.tld"
equals: synonym for eq
ne: inverse of eq
contains, ex: header("From") contains "@domain.tld"
regmatches, ex: header("Subject") regmatches "^R[eE]: \[GENERAL\]"

Conditions can be combined with NOT, AND, OR, and use the result of other conditions
Examples:

pg_gen: header("Sender") eq "pgsql-general-owner@postgresql.org"
pg_interf: header("Sender") eq "pgsql-interfaces-owner@postgresql.org"
pg: pg_gen OR pg_interf
Arbitrarily complex expressions can be written by combining conditions and operators:
(pg_gen OR pg_interf) AND NOT (header("From") contains "@mydomain.tld")

Note that the expressions are not tested for syntax or semantic validity. If an expression is incorrect, it will only be detected at the time it gets evaluated by the mail-database exchanger (manitou-mdx). This may be improved in a future version.

All the rules that have at least one action connected to them will be evaluated on any incoming mail. There's no flag in rules indicating that the evaluation should stop if a rule matches.

Actions

The action panel refers to the currently selected condition. It is disabled when no condition is selected.
To add an action, select (New action) in the actions list
To remove the currently selected action, use the <Del> key.

Actions currently supported are:
action's nameargument
tagName of the tag to assign. Child tags are expressed flattened as parent_tag->child_tag->grandchild_tag->...
statusCombination of letters 'R' for read,'A' for archive,'D' for discard,'T' for trash, all separated by + signs.
priorityEither =X to set the priority to X, or +=X to add X to the priority (so that multiple rules can add up). X is a signed integer value.