すべての受信メールを*@example.com
(インターネットから)にリダイレクトし、Pythonスクリプトをサーバーで実行して、さまざまなジョブを実行します。
example.com
のDNS MXレコードを作成し、サーバーに転送しましたapt-get remove postfix
とapt-get remove exim4
をすべて削除しました。これで、新規インストールを開始する準備ができましたそれらのうちの1つ(この特定のタスクのための最短の解決策を可能にするのはどれですか?)すべての受信メール*@example.com
をPython script?に転送するための主な手順は何ですか(MTAに、サーバー、インターネット全体など)
procmail
は問題があると見なされます Philip Guentherが作成しました(この場合、_.forward
_ファイルまたは同等のものはプログラムに直接メールを送信できるため、この場合は役に立たない可能性があります。 procmail
)の不必要な複雑さ。
エグゼクティブサマリー:procmailポートを削除します。コードは安全ではないため、今後の作業の基礎として使用しないでください。
人々が知っているように、私は1990年代後半から2001年までprocmailの上流のメンテナでした。
したがって、他の解決策が推奨される場合があります。これは、Mail Transport Agent(MTA)に依存します。別のオプションは、MTAを使用してローカルファイルまたはIMAPに配信し、プログラムにそのファイルまたはIMAPを解析させることです。これには、電子メールを受け入れ続け、どこかに保存するというボーナスがあります。プログラムにバグがあるか、実行に失敗するとどうなりますか?ライブメール配信中よりも問題が少ない...
おそらく、Sendmail _.forward
_メソッドをコピーするか、Eximeseでこれを適切に行う方法を理解してください。 (Eximのドキュメントを調査するのにかなりの時間がかかっていたので、中止しました。)SMTP時のスキャンをMILTER方式で実行したい場合、 elspy
があります。 。
長くて複雑そうです。
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をサポートしているか、またはそのようなものを持っています。)
smtpd.conf(5)
を見てください(OpenBSD 6.4の変更に合わせて更新)
_action "mymda" mda "/path/to/your/command" user jdoe
match from any for domain example.com action "mymda"
_
これは十分によくある質問のように見えました...私はこれがすでに回答されていることを発見しました。 Procmailはローカル配信エージェントです。これはI thinkが、ネットワークからメールをすでに受信し、ローカル配信用のprocmailまたはその他にそれを渡したことを意味しますフィルタリング。この場合、postfixがそのことになります。本番環境でpostfixを実行すると、それは堅固なツールであり、カスタムメール処理に非常に柔軟です。