Postfix はメールがキューに入る前に同時に1行だけをスキャンする軽い ものからメールがキューに入った後の洗練されたコンテンツ分析をおこなう 負荷の高い機構まで、3つのコンテンツ検査方法をサポートしています。 それぞれの方法は異なる目的を果たします。
この方法はキューに入る「前に」メールを検査し、Postfix のビルトイン メッセージヘッダおよびメッセージ本体検査を使います。主な目的はワームや ウィルスからのメールの氾濫を止めることですが、バウンスされたジャンクメールや ウィルス検知システムからの通知の氾濫をブロックするのにも便利です。 ビルトイン正規表現は一般的な SPAM やウィルス検知を実装することは意図して いません。そのためには以下に記述するコンテンツ検査方法のいずれかを 使うべきです。詳細は BUILTIN_FILTER_README および BACKSCATTER_README ドキュメントに 書かれています。
この方法はキューに入った「後で」メールを検査し、SMTP や "コマンドへ pipe で渡して終了ステータスを待つ" ような標準的なプロトコルを使います。 キューの後の検査ではメール受信中のタイムアウトや負荷がピークの時にメモリを 使い果たすことなく、任意の複雑さのコンテンツフィルタを使うことができます。 この方法の詳細はFILTER_README ドキュメントにあります。
次の2つの方法でキューに入る「前に」メールを検査します。
最初の方法はSMTPプロトコルを使うもので、これは SMTPD_PROXY_README ドキュメントに 記述されています。このアプローチはPostfix 2.1以降で使えます。
2つ目の方法は Sendmail 8 Milter プロトコルを使うもので、これは MILTER_README ドキュメントに記述 されています。このアプローチはPostfix 2.3以降で使えます。
これらの方法は魅力的なものに見えますが、知っておくべき重要な制限が いくつかあります。はじめに、コンテンツ検査ソフトウェアは限られた時間内に 終了しなければいけません; コンテンツ検査に時間がかかりすぎると、 入ってくるメールの配送がタイムアウトしてしまいます。次に、コンテンツ検査 ソフトウェアは限られた量のメモリで動かなければいけません; コンテンツ 検査に大量のメモリが必要な場合、ピーク負荷でソフトウェアがクラッシュして しまいます。キュー投入前の検査はシステムが扱えるピーク負荷を制限し、 また使用するコンテンツフィルタの洗練度も制限します。
より洗練されたコンテンツフィルタリングソフトウェアは相応な理由によって Postfix には組み込まれていません: MTA を書くのには SPAM およびウィルスキラーを 書くのとは違ったスキルが必要です。あなたの目的に最適な MTA と最適なコンテンツ 検査ソフトウェアを選べるようにするため、Postfix は外部フィルタや標準的な プロトコルの利用を奨励します。外部コンテンツ検査ソフトウェアに関する情報は Postfix のウェブサイト http://www.postfix.org/ や postfix-users@postfix.org メーリングリストで見つかるかもしれません。