The Pigeonhole project <http://pigeonhole.dovecot.org> adds support for the Sieve language (RFC 5228) and the ManageSieve protocol (RFC 5804) to the Dovecot Secure IMAP and POP3 Server (dovecot(1)). In the literal sense, a pigeonhole is a a hole or recess inside a dovecot for pigeons to nest in. It is, however, also the name for one of a series of small, open compartments in a cabinet used for filing or sorting mail. As a verb, it describes the act of putting an item into one of those pigeonholes. The name "Pigeonhole" therefore well describes an important part of the functionality that this project adds to Dovecot: sorting and filing e-mail messages.
The Sieve language is used to specify how e-mail needs to be processed. By writing Sieve scripts, users can customize how messages are delivered, e.g. whether they are forwarded or stored in special folders. Unwanted messages can be discarded or rejected, and, when the user is not available, the Sieve interpreter can send an automated reply. Above all, the Sieve language is meant to be simple, extensible and system independent. And, unlike most other mail filtering script languages, it does not allow users to execute arbitrary programs. This is particularly useful to prevent virtual users from having full access to the mail store. The intention of the language is to make it impossible for users to do anything more complex (and dangerous) than write simple mail filters.
Using the ManageSieve protocol, users can upload their Sieve scripts remotely, without needing direct filesystem access through FTP or SCP. Additionally, a ManageSieve server always makes sure that uploaded scripts are valid, preventing compile failures at mail delivery.
The Pigeonhole project provides the following items:
- The LDA Sieve plugin for Dovecot's Local Delivery Agent (LDA) (dovecot-lda(1)) that facilitates the actual Sieve filtering upon delivery.
- The ManageSieve service that implements the ManageSieve protocol through which users can remotely manage Sieve scripts on the server.
- A plugin for Dovecot's doveadm(1) command line tool that adds new the new doveadm-sieve(1) commands for management of Sieve filtering.
The functionality and configuration of the LDA Sieve plugin and the ManageSieve service is described in detail in the README and INSTALL files contained in the Pigeonhole package and in the Dovecot Wiki <http://wiki2.dovecot.org/Pigeonhole>.
The following command line tools are available outside of doveadm:
- Compiles Sieve scripts into a binary representation for later execution.
- The universal Sieve test tool for testing the effect of a Sieve script on a particular message.
- Filters all messages in a particular source mailbox through a Sieve script.
- Dumps the content of a Sieve binary file for (development) debugging purposes.