モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

ファイルシステムのquotaを利用しないでメールスプールの容量制限を掛ける

メールスプールの容量制限をファイルシステムのquotaで行う場合、pop3imapが作るテンポラリファイルが作れずに受信自体にトラブルが起きたり、Webメールでメールを消去する時にうまく消せない、などの問題が起きることがあります。
これを、ローカル配送エージェントのquota機能を使って容量制限を掛けることで、解決できます。


自分はpostfixのローカル配送をdovecotに行わせることで、maildirでもdovecotのquota機能を利用したスプール容量制限を掛けるように設定を行いました。


dovecotのバージョンは、quotaプラグインの性能的に、1.1.xベースを使うのが望ましいようです。
スプールサイズは100M、削除用のテンポラリ(Webメールでは、メール削除が削除ではなく一旦Trashフォルダに入れられて、そこから真の削除をする必要があるため)を10Mの設定する例示します。

/usr/local/etc/dovecot.conf の設定に追加

protocol pop3 {
  mail_plugins = quota
}

protocol imap {
  mail_plugins = quota imap_quota
}

protocol lda {
postmaster_address = postmaster@example.jp
mail_plugins = quota
mail_plugin_dir = /usr/local/lib/dovecot/lda
}

plugin {
quota = maildir
quota_rule = *:storage=100M
quota_rule2 = INBOX.Trash:storage=10M
}

/etc/postfix/main.cf の設定変更

mailbox_command = /usr/local/libexec/dovecot/deliver

もし、postfixの設定でmailbox_size_limitを指定している場合、悪影響出るので削除します。


dovecotにはauthの機能やdracも対応しているため、postfix+dovecotだけの構成で、postfix+courier(pop3d/imapd/authd)+quotaを完全に置き換えることが可能です。


dovecotでdrac使うには、dovecotのdrac用モジュールをダウンロードしてコンパイルする必要があります。

> wget http://www.dovecot.org/patches/drac.c

ヘッダファイルが必要になるため、dovecotも展開しconfigureしておく

> tar -zxf dovecot-1.1.5.tar.gz
> cd dovecot-1.1.5
> ./configure

コンパイル時にconfig.hが無いと怒られるのでコピーしておく

> cp config.h src/lib

ヘッダファイルのある場所にdrac.cをコピー

> cd ..
> cp drac.c dovecot-1.1.3/src/lib

dovecotのライブラリのある場所を指定してコンパイル

> export dovecot=/usr/local/lib/dovecot/
> gcc -Wall -W -shared -fPIC -DHAVE_CONFIG_H -I$dovecot -I$dovecot/src/lib  drac.c -o drac.so -ldrac

出来たモジュールをコピー

# cp drac.so /usr/local/lib/dovecot
# cd /usr/local/lib/dovecot/pop3
# ln -s  ../drac.so


(追記)

maildropやprocmailのようなメールの自動選り分け機能も、dovecotだけで可能です。
下記エントリーを参照ください。

maildrop使わずにdovecotでメール選り分け - モーグルとカバとパウダーの日記


最初に書いたとき、ldaだけquota指定をしてあり、pop3imapのセクションでもquotaの指定が必要なのが抜けていました。


(関連ページ)

LDA - Dovecot Wiki
LDA/Postfix - Dovecot Wiki
Quota - Dovecot Wiki
Quota/1.1 - Dovecot Wiki