Module of the month: Ingo

This should be the start of a regular, monthly column to present some of the less known Horde applications. A lot of people know IMP, Chora, or Kronolith, but who heard of Occam, Goops, and Luxor, or knows that Horde offers a full fledged gallery application and a support chat tool? I start with Ingo, the just released filter frontend.

Main Rule View
Ingo, that has been released right before christmas as version 1.0 together with Horde 3.0 and IMP 4.0, is being described as an "Email Filter Rules Manager". The main reason that it was released with the webmail client IMP 4.0 was the fact that it replaced IMP's filter capabilities completely.

Ingo started 28 month ago as a frontend for the Sieve filter language, written by Mike Cochrane. It then evolved over the years and is now a generic and complete filter rule frontend that currently is able to create Sieve, procmail, and IMAP filter rules. The IMAP filter driver that translates the filter rules on demand to IMAP commands, executed via PHP's IMAP extension, was the last necessary piece to obsolete IMP's existing filter code.

Generated Sieve Script
The fact that Ingo has Sieve and IMAP drivers demonstrates that it is able to create and eventually run server as well as client filter scripts. The filter script API is flexible enough that any number of filter drivers can be written and "plugged in". A maildrop driver for example would be a nice addition. Each filter driver exposes it's capabilities to Ingo, that in return adapts its UI to display only those rules and features that the driver can actually handle.

Vacation Rule View
Ingo supports a set of "special" rules that are either translated to their native counterparts of the filter script backend or emulated through filter script commands. These rules are Blacklist, Whitelist, Forwards, and Vacation. Maybe they will replace the existing Horde modules Vacation and Forwards of the Sork suite in the future. These are much older than Ingo and currently support dot-forward, LDAP, SQL, qmail, Mdaemon, and SOAP backends.

Generated Procmail Script

The application abstracts storage, script, and transport backends. That means that the filter rules in Ingo's internal format can be stored in several places. Currently only Horde's preferences are supported, but SQL or LDAP storage drivers would be easy to write. The transport backends are responsible for uploading the generated filter scripts to the filter backends, for example to Cyrus' timsieved daemon or through Horde's VFS (Virtual File Storage) API via FTP to the users' home directories or into a SQL database.

Single Rule
System administrators are able to switch to a different filter system or script storage at any time and the users' filter rules will persist.

Ingo's name has been created by Ryan Gallagher during the quest for a nice, "hordish" name for the new born code, and is short for "Mail comes 'in'...Where does it 'go'?".