メールスプールの容量制限をファイルシステムのquotaで行う場合、pop3やimapが作るテンポラリファイルが作れずに受信自体にトラブルが起きたり、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
> 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指定をしてあり、pop3とimapのセクションでもquotaの指定が必要なのが抜けていました。
(関連ページ)
LDA - Dovecot Wiki
LDA/Postfix - Dovecot Wiki
Quota - Dovecot Wiki
Quota/1.1 - Dovecot Wiki