サーバー側でメール振り分け、sieveで振り分け処理記述してdovecotでLDA
すでにPostfixとdovecotでメール送受信できてる状態から、サーバー側でメールのFromなどを参照してフォルダに振り分ける措置を実施したメモ
Postfix関連でやったこと
/etc/postfix/main.cf
mailbox_command = /usr/libexec/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT"
Devocot関連でやったこと
# yum install dovecot-pigeonhole
/etc/dovecot/conf.d/
protocol lda { mail_plugins = $mail_plugins sieve }
> mkdir ~/sieve/ > touch ~/sieve/master.sieve > ln -s ~/sieve/master.sieve ~/.dovecot.sieve
問題
最初全く動作しなかった、試しにメール送ってみても届かなかった。
ログを見ると/var/log/dovecot/dovecot.log
にアクセス権限が無い、というエラーがあった。
postfix
が/usr/libexec/dovecot/dovecot-lda
を起動してその際にログを残そうとこのファイルに書き込みに行くが権限がなくて失敗してるということだろう。
ということでこのファイルの権限を0777に変更したら動いてくれた。(よろしくなさげ)
すでに受信済のメールを振り分ける方法
~/.dovecot.sieve
を書き換えれば今後受信するメールは振り分けられるけどすでに受信済のメールの扱いを振り分けたいと思い以下の手順で実施したらうまくいった。
> mkdir ~/tmp > mv ~/Maildir/cur/* ~/tmp > for x in ~/tmp/* do /usr/libexec/dovecot/dovecot-lda < $x; echo -n . done
これで一旦受信済フォルダ(~/Maildir/cur
)から~/tmp
に移動させた後にローカル配送させることで
新しいメールとして~/Maildir/cur
の中に配送される。 (echo -n .
はただの経過表示)
もっと簡単でいいやり方がありそうな気がする。