Ubuntu14.04サーバーで次のシナリオを作成したいと思います。
私はメールサーバーについてほとんど何も知らず、Postfix
で少し遊んでみましたが、正しく理解していれば、メールのフィルタリングと処理のためのより良い解決策がいくつかありますか?私はPython
とPHP
を知っているので、これらの言語の1つでフィルタリング/処理を処理できましたが、どこから始めればよいのかまだわかりません。
Pythonスクリプトでcronジョブを実行し、添付ファイルを保存した直後に処理済みメッセージを削除するのではなく、可能であれば受信後すぐに受信メールを処理したいと思います。
この特定の時点では、セキュリティやスパム/ウイルス対策を設定する必要はありません。
このワークフローの設定方法について少し混乱しているので、少なくとも各ステップの開始点を尋ねたいと思います。また、さらに読むためのリンクも大歓迎です!私は完全な解決策を求めていませんが、このシナリオで役立つ可能性のあるパッケージに関するいくつかのヒントは本当にありがたいです。
これをサーバーで実行することを指定します。そのマシンが永続的なIPアドレス上にないため、特定のメールドメインに送信されたメールを処理できる場合は、メールを処理するプロバイダーからのメールをピックアップするように設定する必要があります。
処理後にメッセージを削除することを指定しているため、プロバイダーがすべてのメールを1つのユーザーアカウントに収集する必要はありません。そのため、これを設定する必要があります。
次に、fetchmail
または同様のプログラムを使用してメールを受信できます。このプログラムは、ローカル接続のみをリッスンしているローカルで実行されているpostfix
と通信します。 (サーバーに固定IPアドレスがあり、外部stmp接続を処理できる場合は、この手順をスキップして残りの手順のみを実行できます)。
postfix
は、メールボックスコマンドとしてprocmail
を使用するように構成する必要があります(main.cf
内:
mailbox_command = procmail -a "$EXTENSION"
fetchmail
は、処理を行う一部のユーザーに対して、通常のcronジョブとして実行する必要があります(プロバイダーに毎分確認します)。そのユーザーは、フィルタリングを実行し、次のようなエントリを使用してスクリプトに電子メールを渡すことができる~/.procmailrc
ファイルを持っている必要があります。
:0
$ ^Subject:.*some_text_that_has_to_be_in_the_subject_to_be_valid_for_processing
| /usr/local/bin/your_program
ここで、your_program
はファイル形式(ヘッダーの後に本文が続く)を処理できる必要があります。 MIME添付ファイルの複雑さを処理するために、pythonとその標準 email
モジュールを使用します。
ヒント:開発中に、受信データ(your_program
上)をファイルxyz
に完全に保存するようにsys.stdin
してください。そうすれば、それを確認して、(your_command < xyz
を実行するだけで)独立して開発できるため、実行する必要はありません。プロセスのその段階をテストするために添付ファイル付きの電子メールを送信する手間。