summaryrefslogtreecommitdiff
path: root/postfixdovecottips.mdwn
blob: a10d4e8771b3de3775d735ecb7a762360db1ace1 (plain)
[[!img notmuch-logo.png alt="Notmuch logo" class="left"]]

Postfix can be used for delivering mail and Dovecot for making your maildir
available using IMAP.

Dovecot Pigeonhole Sieve can be used for filtering incoming mail and index it
using notmuch.

[[!toc levels=2]]

# Configuration

## Configure Postfix to use Dovecot Sieve

Set `mailbox_command` to dovecot deliver:

        postconf -e 'mailbox_command=/usr/libexec/dovecot/deliver -f "$SENDER" -a "$RECIPIENT"'

## Configure Dovecot Sieve to allow running notmuch

* Add `mail_plugins = sieve` to `/etc/dovecot/conf.d/15-lda.conf` to enable Sieve
* Add `sieve_plugins = sieve_extprograms` to `/etc/dovecot/conf.d/90-sieve.conf` to allow running external programs
* Add `sieve_extensions = +vnd.dovecot.pipe` to `/etc/dovecot/conf.d/90-sieve.conf` to allow pipe to external programs
* Add `sieve_pipe_bin_dir = /usr/libexec/dovecot/sieve-pipe` to `/etc/dovecot/conf.d/90-sieve-extprograms.conf` to configure directory with allowed programs
* Add `mail_location = maildir:~/Maildir` to `/etc/dovecot/conf.d/10-mail.conf` to use Maildir
* Run `mkdir /usr/libexec/dovecot/sieve-pipe` to create the directory with allowed programs
* Run `ln -s /usr/bin/notmuch /usr/libexec/dovecot/sieve-pipe/notmuch` to add a link to notmuch to the directory with allowed programs

## Example Sieve configuration

Create `~/.dovecot.sieve` with the following contents:

        require ["fileinto", "vnd.dovecot.pipe"];
        if header :contains "X-Spam-Flag" "YES" {
            pipe "notmuch" [ "insert", "--folder=.spam", "--create-folder", "+spam" ];
        } elsif anyof (header :matches "From" "notmuch@notmuchmail.org") {
            pipe "notmuch" [ "insert", "--folder=.mailinglist", "--create-folder", "+mailinglist" ];
        } else {
            pipe "notmuch" [ "insert", "+notmuch-insert", "+inbox" ];
        }

# Notes

## Postfix file size limit

Postfix sets a `file size` ulimit before executing the `mailbox_command`. This
also affects the notmuch index. Make sure `mailbox_size_limit` is at least the
size of your largest notmuch index files.