web-dev-qa-db-ja.com

すべての受信メールをPythonスクリプトにリダイレクトします

すべての受信メールを*@example.com(インターネットから)にリダイレクトし、Pythonスクリプトをサーバーで実行して、さまざまなジョブを実行します。

  • 私はすでにexample.comのDNS MXレコードを作成し、サーバーに転送しました
  • Postfixとeximの両方で多くの試行錯誤を繰り返しましたが、何も機能しなかったため、apt-get remove postfixapt-get remove exim4をすべて削除しました。これで、新規インストールを開始する準備ができましたそれらのうちの1つ(この特定のタスクのための最短の解決策を可能にするのはどれですか?)

すべての受信メール*@example.comをPython script?に転送するための主な手順は何ですか(MTAに、サーバー、インターネット全体など)

2
Basj

procmailは問題があると見なされます Philip Guentherが作成しました(この場合、_.forward_ファイルまたは同等のものはプログラムに直接メールを送信できるため、この場合は役に立たない可能性があります。 procmail)の不必要な複雑さ。

エグゼクティブサマリー:procmailポートを削除します。コードは安全ではないため、今後の作業の基礎として使用しないでください。

人々が知っているように、私は1990年代後半から2001年までprocmailの上流のメンテナでした。

したがって、他の解決策が推奨される場合があります。これは、Mail Transport Agent(MTA)に依存します。別のオプションは、MTAを使用してローカルファイルまたはIMAPに配信し、プログラムにそのファイルまたはIMAPを解析させることです。これには、電子メールを受け入れ続け、どこかに保存するというボーナスがあります。プログラムにバグがあるか、実行に失敗するとどうなりますか?ライブメール配信中よりも問題が少ない...

Exim

おそらく、Sendmail _.forward_メソッドをコピーするか、Eximeseでこれを適切に行う方法を理解してください。 (Eximのドキュメントを調査するのにかなりの時間がかかっていたので、中止しました。)SMTP時のスキャンをMILTER方式で実行したい場合、 elspy があります。 。

Postfix

https://serverfault.com/questions/258469/how-to-configure-postfix-to-pipe-all-incoming-email-to-a-script#258491

長くて複雑そうです。

Sendmail

mailertableエントリを設定して、ドメイン(および必要に応じてサブドメインの場合は_.domain_)のすべてのメールをローカルユーザー(ここではjdoe)に転送します

_example.com     local:jdoe
.example.com    local:jdoe
_

次に、そのユーザーが必要なコードを実行できるように_.forward_ファイルを設定します

_$ cat ~jdoe/.forward
"|/etc/smrsh/process"
$ 
_

それは次のように簡単かもしれません

_$ cat /etc/smrsh/process
#!/bin/sh
cat >> /home/jdoe/allmails
$ 
_

電子メールは標準入力に入力されるため(このprocessの複数のインスタンスが一度に実行される場合、これは悪い可能性があります。おそらく、実際のコードがそのような競合状態を処理するか、そうでなければべき等です...)。このメソッドは、MTAですべてのメールを特定のユーザーにリダイレクトできると想定して、Sendmailの転送構文をコピーする他のMTAでも機能する可能性があります。

これは、mailertableサポートが有効で、_confFORWARD_PATH_が設定されていて、Sendmailがコードを実行できることを前提としています(smrsh(8)を参照)。ただし、一部のベンダーは、ドキュメントを更新せずにディレクトリを変更する場合があります。 (_strings /the/path/to/smrsh | fgrep /_を実行すると役立つ場合があります))、selinuxのようなものでも問題は発生しません。

Sendmailの別のオプションは、 MIMEDefang などのMILTERを使用して、そこで必要なビジネスロジックを実行することです。 (他のさまざまなMTAがMILTERをサポートしているか、またはそのようなものを持っています。)

Simple Mail Transfer Protocolデーモン(OpenBSD)

smtpd.conf(5) を見てください(OpenBSD 6.4の変更に合わせて更新)

_action "mymda" mda "/path/to/your/command" user jdoe
match from any for domain example.com action "mymda"
_
6
thrig

これは十分によくある質問のように見えました...私はこれがすでに回答されていることを発見しました。 Procmailはローカル配信エージェントです。これはI thinkが、ネットワークからメールをすでに受信し、ローカル配信用のprocmailまたはその他にそれを渡したことを意味しますフィルタリング。この場合、postfixがそのことになります。本番環境でpostfixを実行すると、それは堅固なツールであり、カスタムメール処理に非常に柔軟です。

https://serverfault.com/questions/258469/how-to-configure-postfix-to-pipe-all-incoming-email-to-a-script#258491

3
Jared W