共有 glusterfs ディスクを持つ 2 台のサーバーがあり、どちらも dovecot を実行していて、この共有ディスクからメールを提供しています。ユーザーはこれらのサーバーの 1 つからのみメールを読みますが、メールは両方のサーバーに配信されます。受信トレイの maildir フォルダーにアクセスすると、時々問題が発生します。
IMAP(ユーザー): open(/home/user/Maildir/dovecot-uidlist) に失敗しました: 権限が拒否されました
ユーザーは受信トレイを開くことができません。他のフォルダーへのアクセスは正常に動作します。dovecot インデックス ファイルを削除して dovecot を再起動すると、すべて正常に動作します。
この設定をより信頼性の高いものにするにはどうすればよいでしょうか?
両方のサーバー上の私の dovecot 設定:
mmap_disable = no
dotlock_use_excl = yes
mail_nfs_storage = yes
mail_nfs_index = no
他の方法がすべて失敗した場合は、ログにエラーがある場合に dovecot インデックス ファイルをクリーンアップする bash スクリプトを作成することもできます...
答え1
いくつかのプロジェクトに glusterfs を導入していますが、IMAP/SMTP ストレージのバックエンド ストレージとしては使用していません。
しかし、経験から言えることがいくつかあります。
まず第一に、IMAP や SMTP などの高トランザクション ワークロードのストレージ バックエンドに分散ファイル システムを使用することはお勧めしません。これは、主に 2 つの理由 (高レイテンシとファイル ロックの問題) により、分散ファイル システムがこれらのワークロードでうまく機能しないためです。
次に、Gluster FreeNode チャネルでかなりの時間を費やし、Dovecot について報告している人々が、Gluster で発生する継続的なインデックス破損について不満を述べているのを見ました。そのため、他のバック ストレージ レプリケーション ソリューション、dsync レプリケーション、または同様のソリューションを利用することを強くお勧めします。
お役に立てれば。
答え2
mail_nfs_index = yes に設定し、常に同じ IP を同じバックエンド サーバーにリダイレクトするプロキシを使用するようにする必要があります。次のリンクが役立ちます: https://wiki.dovecot.org/MailLocation/SharedDisk