Postfix と NFS


この質問はしばらく前に postfix-users メーリングリストでなされたものです:

Postfix で /var/mail 配送するのに Netapp のようなものを 使う場合、ファイルロッキングやその他の潜在的な問題に対して、考慮すべき点は 何でしょうか? FreeBSD は (クライアントとサーバの両方で?) NFS ファイル ロッキングが壊れているのを知っていますが、Postfix が回避できることかどうかは わかりません。

Postfix は NFS 特有の問題を扱うためにいくつかの試練を経ています。そのため、 NFS 上での Postfix はローカルディスク上に比べて若干信頼性が落ちます。 これは Postfix の問題ではありません; 問題は NFS にあり、他の MTA も同様に 影響を受けます。

複数の Postfix インスタンス間で Postfix キューを共有できないため、 Postfix 内でのキューのロックでは、NFS は問題になりません。

NFS 越しにメールボックスをロックするには、メールボックスにアクセスするのに 全てが fcntl() を使うように設定しなければいけません (もしくはアプリケーション レベルでのロック制御が不要な maildir 形式に移行してください)。

Postfix で fcntl() メールボックスロックを有効にするには、次のように指定します:

/etc/postfix/main.cf:
    virtual_mailbox_lock = fcntl
    mailbox_delivery_lock = fcntl

言うまでもなく、このアプローチはメールボックスにアクセスする他の ソフトウェアも全て fcntl() ロックを使う場合にのみ役に立ちます。

"安全策をとって" username.lock ファイルを投げることもできます:

/etc/postfix/main.cf:
    virtual_mailbox_lock = fcntl, dotlock
    mailbox_delivery_lock = fcntl, dotlock

これは多くのアプリケーションが使うこととなる組み合わせです。