読者です 読者をやめる 読者になる 読者になる

標準出力

新しいもの、変わらないこと 自分の頭を通して考えてみました (stdout)

Sieve を書いてみた

Sieve は、メールフィルタリングのための言語です。

メールサーバー上にフィルタリングルールを定義したファイルを予め置いておき、サーバー上でメールをフィルタリングすることでクライアントの環境に依存しない点が売りです。

今回は、Sieve の Dovecot 向け実装であるPIGENHOLEをインストールしてみました。

[A] インストール

インストール自体は、メールサーバーにて

cd /usr/ports/mail/dovecot2-pgenhole/
make config-recursive
make
make install clean


で終了。

PIGENHOLE のSieve は、Dovecotプラグインとして提供されているのでこのプラグインを有効にします。この設定は、受信したメールのローカルユーザーへの配信をLDA/LMTPのどちらで行なっているかに依存するので予め確認しておく必要があります。デフォルトでは、LDAを用いているようです。

以下LDAの場合の例 /usr/local/etc/dovecot/conf.d/90-plugin.conf に以下を追加

protocol lda{
  mail_plugins = sieve
}



[B} フィルタリングルール作成

フィルタリングルールは、ルールを適用したいユーザーのホームディレクトリに「.dovecot.sieve」を作成してこのファイルの中に記述していきます。

以下はそのサンプル。

require ["fileinto"];

if address :is "from" "foo@example.jp" {
  fileinto "INBOX.spam";
}


foo@example.jp からのメールをspamフォルダーに振り分けます。そしてこの.dovecot.sieveを以下コマンドでコンパイルして「~/.dovecot.svbin」として出力します。

sievec ~/.dovecot.sieve ~/.dovecot.svbin

これで次回メール受信時から作成したルールが適用されます。ルールが適用されないようであれば~/.dovecot.sieve.log にログが出力されるので参考にします。

今回は、ここまで

今後は、スクリプトファイルのUNICODE対応やThunderbirdのsieveのスクリプトを編集できるAdd On等を試してみたい。。。