Version 0.85

The Pigeon Hole Filter can be used by PopOver (version 2.0). It provides filtering of all incoming messages by diverting messages to specific mailboxes. A custom inspector titled "Pigeon Hole" is added to the Preferences panel in the PopOver application. This custom inspector allows the user to easily customize what rules to use and where messages should be placed.

On the custom inspector, one finds two table views - one with four column headings and one with two. The top table view (master) represents the rules, while the lower table view (detail) lists the specific regular expressions and header keys on which they work for the selected rule in the master table view.

The master table view shows the name of the rule, the name of the mailbox for which this rule applies, whether this rule should be used, and whether the filter should continue processing a mail message if the rule succeeds in being triggered. The name of the rule is an arbitrary name, but remember that it is used to indicate what regular expressions are used for this rule. Note that one can have multiple entries in the master table view that have the same rule name. In this case each entry will use the same set of regular expressions. The mailbox name is the mailbox to which a message is sent as long as all the regular expressions for the rule are matched. If the mailbox does not exist, it is created for you. However, there is a bug in version 126 of PopOver which causes a background thread to interfere with the main thread. This problem has been fixed in version 127 of PopOver. One can specify subdirectories of mailboxes by putting a slash between mailbox names, e.g., MacOSX/Dev or MacOSX/Admin.

When a rule is triggered, the default behavior is to move the message that caused the rule to be triggered into the target mailbox and then stop processing that message. However, one can cause PigeonHole to continue processing the message through other rules if the "continue processing" (fourth) column in the master table view is set to Yes. If a message does not trigger any rule, the message will be put into the default active mailbox. Note that one must have the defaults value PigeonHoleNuke set to YES to make the PigeonHole Filter not put moved messages into the active mailbox. This default is currently not set by the PigeonHole filter and must be set manually. If this is not set, all messages that meet the requirements for a rule will be moved into the proper mailbox(es) and a copy will appear in the active mailbox.

The detail table view indicates what header keys should be examined and what regular expressions are used for the selected rule in the master table view. For a rule to be triggered, the regular expression for each header key must match the message being processed. Each of the rows in the detail view is logically ANDed together to determine whether the rule is triggered.

Messages are processed through the rules in the order they appear in the inspector. One can use the up and down buttons to move the selected rule to rearrange the order in which they are processed.

When pressing the Save button, the defaults database is updated with the contents of the inspector. When pressing the Revert button, the inspector is updated with the contents of the defaults database. Note that incoming messages will be filtered by the contents of the inspector at all times. Therefore, one can make a temporary rule or regular expression by entering it into the inspector, but not saving it. One can then revert the contents of the inspector to ensure that any changes are forgotten.

Here are some example scenarios using the following setup for rules and details. Note that the first columns are for reference only here and do not appear in the UI. Also note the only details that appear in the UI are ones that are associated with the selected rule.

The master table:

Rule Mailbox Use C
1 Rule1 MacOSX/Dev Yes No
2 Rule Steve Archive Yes Yes
3 Rule 2 Garbage Yes No
4 Rule 3 Garbage Yes No
5 Pope Stuff Catholic Yes Yes
6 Pope Stuff Religion Yes No

The detail table:

Header Regular Expression
a Originator
b From
c From
d Subject .*Microsoft.*
e From

(1) Transfer everything from the MacOSX Developer mail list at OmniGroup into my MacOSX/Dev mailbox:
This is the simplest technique of putting mail into just one mailbox. Here one uses master 1 and detail a.

(2) Archive off everything from Steve Jobs but also have it appear in my Active
We show an example of how a mail message can appear in more than one mailbox. Using master 2 and detail b we see that master 2 has a "C" value of Yes, meaning that even if detail b is satisfied let the message pass to all subsequent rules for processing.

(3) Put everything from Bill Gates or anything with Microsoft in the Subject in Garbage
Here we use two rules. Master 3 uses detail c. Master 4 uses detail d. Note that both of these master entries write data into the same mailbox - Garbage. This is a classic example of an OR rule.

(4) Archive anything from the Pope into both Catholic and Religion mailboxes
Here we use two masters that have the same detail. When master 5's detail is matched it continues to find that master's 6 detail also matches.