2009-11-22 28 views
5

私は、ユーザの内部電子メールアドレスへの電子メールメッセージを受信し、管理者がそれらを承認し、対応するユーザの外部メールボックスに転送する必要があるWebアプリケーションを作成しています。Postfixメッセージを受信しました

私は、メッセージ受信タスク用の接尾辞をインストールして設定しました。仮想電子メールアドレスと、ユーザーの電子メールアドレスが格納されている既存のデータベースを使用します。ローカルのメールストレージはmaildirです。私はpostfixの仮想MDAを使用しています。

基本的には、新しいメッセージを受信するたびにスクリプトを実行したいと思います(maildirメッセージIDも非常に役に立ちます)。それから私はPythonコードからメッセージを読むことができました(pythonはmaildirメッセージボックス用のモジュールを持っていました)、それをデータベースに挿入しました。 は、私がこれを行うには3つの方法を考えることができます。

  • 反復ユーザーのmaildirとそこに新しいメッセージがありますが、それは、多数のユーザのために効果がない場合 をご確認ください。
  • dbmailを使用して、データベースに新しいメッセージがあるかどうかを確認します(これは速くなりますが、すべてをゼロから構成する必要があります)。また、既存のユーザーデータテーブルは使用できません。
  • dbとmaildirにメッセージを保存するためにmaildrop/virtualのラッパーを作成しますが、受信したメッセージが有効かどうかを確認して、 MDAで実際に保存する方法が必要です。

ご了承ください。

答えて

5

私自身の質問に答えて、postfix content_filterをパイプに設定し、アドレスとメッセージを手作業で受信するXフラグを使用しました。 maildirのメッセージにアクセスする必要はなかったので、このアプローチはうまく動作します。

8

/etc/aliasesファイルでは、ユーザーがメールを受信するたびに実行されるプログラムを指定することができます。このプログラムはstdinでメールを取得します。だからあなたはポーリングする必要はありませんし、あなたのプログラムは即座に実行されます。

+0

これは素晴らしいアプローチですが、私は仮想リレーメカニズムを使用しています。 – fest

関連する問題