4

受信 SMTP メッセージのガッドを取得し、それらを AMQP ブローカーにドロップして、さらにルーティングおよび処理する方法を探しています。メッセージは実際にはメールボックスには入りませんが、代わりに SMTP がメッセージ ゲートウェイとして使用されます。

インバウンド SMTP メッセージを RabbitMQ ブローカーにドロップする Postfix After-Queue Content Filter を Python で作成しました。それはうまくいきます - 私はキューを介して生のメッセージを取得し、それは消費者によってうまく拾われます。問題は、メッセージごとに AMQP 接続が作成され、切断されることです...コンテンツ フィルター スクリプトが毎回ゼロから再実行されます。それがパフォーマンスの問題になると思います。

再入可能なものを活用できれば、接続を再利用できます。それとも、私が全体に間違ってアプローチしているだけなのかもしれません...

4

3 に答える 3

1

通常の TCP 経由で AMQP 接続を確立するのは非常に高速です。おそらく SSL を使用している場合は別の話ですが、未加工のメッセージを AMQP 交換のキューに入れることがボトルネックになると確信していますか? 私の推測では、実際に SMTP 経由でメッセージを配信するのはかなり遅くなるので、どれだけ速くキューに入れてもシステムのスループットには影響しません。

この部分がボトルネックであることが判明した場合、Sinatra または Rack を使用して小さな Web サーバーを作成するのが好きですが、Python ベースのソリューションを好むようです。AMQP サーバーへの永続的な接続を維持する Web サーバーに対して、curl を使用して postfix コンテンツ フィルターに HTTP POST を実行させます。

もちろん、監視、エラー処理、およびセキュリティについて考える必要がある追加の可動部分があります。

于 2012-08-13T02:18:19.750 に答える
0

Postfix にメールのすべてまたは一部を外部プログラムに配信させることができ、そこで好きな場所に配信できます。いくつかの例をここで見つけることができます。

于 2014-09-08T13:11:03.577 に答える
0

SwiftMQ を使用します。IMAP または POP3 アカウントから電子メールを受信し、 AMQP 0.9.1 および/または AMQP 1.0、そしてもちろん JMS クライアントで消費できる JMS メッセージに変換するJavaMail ブリッジがあります。

于 2012-08-13T11:02:00.203 に答える