web-dev-qa-db-ja.com

Postfixの最適な設定とVPSでのカスタム配信スクリプトの最適化

だから私はPostfix + saslauthd + Courier-IMAPをLinode1080VPSにデプロイしています。私たちは小さな会社で、約30のアカウントを持っています(私は便宜上+ Maildirsのために物理的な* nixユーザーを使用します、後述)が、カスタムスクリプトでCourierの共有フォルダー(複数のアカウント用)機能を多用していますI Rubyで書いた。 Spamassassinを介してメールをフィルタリングし、いくつかのルールを使用してYAMLファイルを読み取り、いくつかのチェックを実行して、複雑な構造のどこにメールをファイルするかを確認します。 Maildirとphyiscalユーザーは、これに必要な柔軟性を与えてくれます。

メールが受信され、ホームディレクトリのユーザーの.forwardファイルで定義されているスクリプトに渡されます。

全体として、そのスクリプトは完了するのに約2秒かかります。現在、メールの量は比較的多くありませんが(1時間あたり約30〜50通のメールと推定)、これを高速化する方法を探しています。また、メールの負荷が高くなる(またはスパムストームが発生する)場合も確認します')、私たちのサーバーはメモリなどから突然打ち出されることはありません。私の質問は次のとおりです。

  1. スクリプトに渡される前に、spamassassin daemon(メールを受信するたびにアプリを起動するのではなく)を介してメールをフィルタリングする方法は何ですか?私が今しているようにそれをするのは悪い習慣だと思います。
  2. ポストフィックスがスクリプトに同時に渡すメールの数を制限する方法はありますか?スクリプトの10個のインスタンスを同時に実行することになりたくありません。
  3. スクリプトをデーモンにするにはどうすればよいですか?それは物事をより速くしますか?

前もって感謝します。

追伸:メール(まあ、/ home)は、noatimeでマウントされた別のXFSパーティションに保存されます。

3
KTamas

スクリプトに渡される前に(メールを受信するたびにアプリを起動するのではなく)spamassassinデーモンを介してメールをフィルタリングする方法は何ですか?私が今しているようにそれをするのは悪い習慣だと思います。

Perlで書かれている amavisd-new を見てください。それはあなたが探していることを行い、ネットワークレベルで統合し(あなたが望むなら)、アンチウイルススキャンも提供します。主要なLinuxディストリビューションのほとんどは、ビルド済みのパッケージとして提供しています。あなたが心配しなければならない唯一のことは、いくつかのディストリビューションが時折バグがある古いバージョンを使用するということです。これらのバグのほとんどは、amavisをくさびまたは終了させます。したがって、たとえば、公式サイトにあるものより3バージョン古い場合は、その1つのパッケージを手動で管理することを真剣に検討します。

postfixが同時にスクリプトに渡すメールの数を制限する方法はありますか?スクリプトの10個のインスタンスを同時に実行することになりたくありません。

あなたはレート制限について話している。サーバーの「小さい」サイズを考えると、スキャン側ではなく、後置レートリミッター自体を1分あたり3〜6通の電子メールのようなものに設定します。すべての配信を受け入れようとすると、スパムストームによってキューが詰まるだけで、とにかくバックログが発生します。

スクリプトをデーモンにするにはどうすればよいですか?それは物事を速くしますか?

トン!この点についてはお役に立てませんが、スクリプトを事前に起動しておくと、かなりのオーバーヘッドが削減されます。

2
Avery Payne