5

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

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

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

  • ユーザーのmaildirを繰り返し、新しいメッセージがあるかどうかを確認しますが、多数のユーザーには効果がありません。
  • dbmailを使用して、データベースに新しいメッセージがあるかどうかを確認します(これはより高速ですが、すべてを最初から構成する必要があります)。また、既存のユーザーデータテーブルは使用できません。
  • maildrop / virtualのラッパーを作成して、メッセージをdbとmaildirにも保存しますが、受信したメッセージが有効であり、実際のMDAによって正常に保存されているかどうかを確認する方法が必要です。

どんな提案もありがたいです!

4

2 に答える 2

8

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

于 2009-11-22T12:26:42.203 に答える
5

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

于 2009-11-22T15:12:04.897 に答える