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 = sieveto/etc/dovecot/conf.d/15-lda.confto enable Sieve - Add
sieve_plugins = sieve_extprogramsto/etc/dovecot/conf.d/90-sieve.confto allow running external programs - Add
sieve_extensions = +vnd.dovecot.pipeto/etc/dovecot/conf.d/90-sieve.confto allow pipe to external programs - Add
sieve_pipe_bin_dir = /usr/libexec/dovecot/sieve-pipeto/etc/dovecot/conf.d/90-sieve-extprograms.confto configure directory with allowed programs - Add
mail_location = maildir:~/Maildirto/etc/dovecot/conf.d/10-mail.confto use Maildir - Run
mkdir /usr/libexec/dovecot/sieve-pipeto create the directory with allowed programs - Run
ln -s /usr/bin/notmuch /usr/libexec/dovecot/sieve-pipe/notmuchto 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.
