Debian パッケージ courier-maildrop

maildirquota

名称

maildirquota -- maildirの自発的クォータ

書式

MAILDIRQUOTA=quota,quota
to "$DEFAULT"

説明

maildropにはクォータの実験的な実装が含まれています。 これは設定時のオプションであり、無効にされているかもしれません。

ファイルシステム提供のクォータが使えるのならそれを使うべきです。 しかし仮想メールボックスなど、 ファイルシステム提供のクォータが利用できない場合があります。 この実験的な機能が有効にされている場合、maildrop プログラムや deliverquotaプログラムにより可能な範囲でクォータもどきを実現します。 クォータ機能が有効にされた場合、 maildrop は、 maildirにメッセージを配送する前に 環境変数 MAILDIRQUOTA の値を考慮に入れます。 (これはmaildir形式についてだけで、 mailbox形式のファイルへの配達に関しては影響しません。)

MAILDIRQUOTA はコンマ区切りのクォータ指定のリストです。 クォータ指定は数値、つづく文字により制限の種類を表します。 現在次の制限が使用できます: S - 最大メッセージサイズ; C - 最大メッセージ数。 もしどちらかのクォータの制限にひっかかった場合、 maildrop はエラーメッセージを出力してメッセージを拒絶します。 例えば:

MAILDIRQUOTA="5000000S,200C"

この例では総サイズ 5,000,000 バイト、 総メッセージ数 200 のクォータ指定です。

制限

このクォータ機構は maildrop (か deliverquota) がmaildirにメッセージを格納する唯一のアプリケーションであるか、 メッセージを格納するアプリケーションが 同じクォータ機構を実装している場合にのみ有効に動作します。 クォータ拡張機構については maildropのディストリビューションの方で説明されています。

クォータ機構は、 maildirにメッセージを直接書き込んだり書き換えたりするアプリケーションが あっても、一応動作します。しかしmaildirの制限を超えた直後に クォータ制限を発動できないため、 制限値を明らかに越えることが可能となってしまいます。 しかしmaildrop が大部分のメッセージの配達に用いられている限り、 クォータ制限は発動します。 また、他のアプリケーションにより格納されたメッセージは クォータの計算に手間がかかるため、 パフォーマンスが明らかに落ちてしまうかもしれません。 (maildropが生成するmaildirでのファイル名は クォータ値の再計算のために最適化されています。)

また、このクォータ機構はユーザがmaildir自体や maildrop のフィルタリング指示ファイルに直接アクセスできる場合には効果がありません。 MAILDIRQUOTAをシステム規定フィルタに設定しても、 各ユーザは独自のフィルタリング指示ファイルでそれを上書きできます。 このような状態でもクォータ機構を働かせるためには、 システム規定フィルタに次のように記述する必要があります:

MAILDIRQUOTA=quota
to "$DEFAULT"

たとえこのように設定したとしても、 ユーザは自分のmaildirにオペレーティングシステムのコマンドを使って メッセージを直接作成できることには変わりません。

最後に、如何にうまく設定したとしても、まれな状況が発生すると クォータ制限をいくらか超えてしまう可能性があります。 maildir形式はスピードを重視して設計されており、 このクォータ機構はなるべくオーバヘッドが少ないように考えられています。 正確なクォータを強制するには何らかのロック機構が必要になり、 それはmaildir全体のパフォーマンスの大幅な低下をもたらすでしょう。 そのため、 まれな状況でクォータ制限を越えてしまうという欠点があるけれど、 ロック機構は採用していません。

クォータ制限を越えるリスクを少なくしたいのなら、 メールサーバで扱える最大メールサイズに対して 合理的なクォータ値を設定することです。 もしmaildirのクォータ値を5メガバイトに設定した場合、 メールサーバで扱えるメールの最大長を3メガバイトに制限することは ばかげたことです。 maildirのクォータ値は、メールサーバの最大メッセージ長に対して 意味のある値にしてください。

フォルダ

このクォータ機構は、maildirの一般的な拡張である、 maildir内のフォルダにも対応しています。 ただし、ちゃんと動作するフォルダを作成するためには、 maildrop付属の maildirmakeコマンドに、-fオプションを使用してフォルダ名を渡さなければなりません。 maildirmakeに直接フォルダ名を指定してはいけません。 そのような場合、クォータ機構は動作しません。

仮想アカウント

MAILDIRQUOTAuserdbを設定することができ、仮想アカウントのデータベースが参照されます。 makeuserdb(1)を参照してください。

バグ

コードが汚いです。クリーンアップが必要です。

関連項目

maildrop(1), maildirmake(1), maildropfilter(5), deliverquota(8).