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.
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.