1

私はこれまで procmail を使用したことがありませんが、(私の研究開発から) procmail が私の謎を解くための最良の選択である可能性が高いと信じています。私たちのシステムは電子メールを受け取ります。そこから次の 3 つの値が必要です。

  1. SUBJECT 行の 4 桁または 5 桁の整数。(「N」と呼びます)

  2. REPLY-TO 行からのメール エイリアス (「R」と呼びます)

  3. それが「ケース」または「プロジェクト」と言う意味の電子メールのタイプを決定します。(「T」と呼びます) この値は SUBJECT 行から解析されます。

誰かがそのレシピで私を助けることができれば、私は最も感謝しています.

次にやらなければならないことは次のとおりです。

  1. これらの 3 つの値を Python スクリプトに送信します (これを procmail から直接行うことはできますか? パイプ? 何か別の方法がありますか?)
  2. 電子メール メッセージを削除する

次のような 4 つのドメイン名からのみこれらのメールを受け入れる必要があります。

(@sjobeck.com|@cases.example.com|@messages.example.com|@bounces.example.com)

最後に、これら 3 つの値を 2 番目のスクリプトにパイプで渡し、そのための最適な構文に関するアドバイスをいくつか示します。ここでのアドバイスは非常にありがたいです。これは次のようなものでしょうか。

this-recipe $N $T $R | second-script.py

または、正確にはどのように見えますか?それとも、これは procmail の問題ではなく、Python の問題ですか? (だったらいいですよ、あちらで処理します。)

本当にありがとう!

ジェイソン

4

1 に答える 1

1

Procmail はこれらの値を抽出できます。または、メッセージ全体を stdin で Python に渡すことができます。

最後の数字が必要で、4 または 5 である必要があると仮定すると、次のようになります。

R=`formail -zxReply-to: | sed 's/.*<//;s/>.*//'`
:0
* ^From:.*@(helpicantfindgoogle\.com|searchengineshateme\.net|disabled\.org)\>
* ^Subject:(.*[^0-9])?\/[0-9][0-9][0-9][0-9][0-9]?$
| scriptname.py --reply-to "$R" --number "$MATCH"

これは、ヘッダー値を抽出するための 2 つの異なる手法を示しています。Reply-To ヘッダーは呼び出しによって抽出されformailます (コメントに従って、これは電子メールの終端のみを抽出します。「エイリアス」で何か他のことを意味する場合は、適切に定義してください)。特殊な演算子を使った条件で対象を掴みます\/

更新:helpicantfindgoogle.com From: ヘッダーがドメイン、searchengineshateme.net、またはのいずれかの送信者を示す電子メールのみを処理する追加条件を追加しましたdisabled.org

パイプ アクションによって暗示されるように、スクリプトはその標準入力でトリガー メッセージを読み取ることができますが、それが必要ない場合は、標準入力を読み取らないでください。

配信が成功した場合、このレシピが終了すると Procmail は処理を停止します。したがって、一致するメッセージを明示的に破棄する必要はありません。(続けたい場合は、:0c代わりに を使用してください:0。)

効率の微調整として (たとえば、大量の電子メールを受信し、そのごく一部のみをこのスクリプトに渡す必要がある場合)、条件が一致したときに Reply-To: のみを抽出するようにリファクタリングすることをお勧めします。

:0
* ^From:.*@(helpicantfindgoogle.com|searchengineshateme\.net|disabled\.org)\>
* ^Subject:(.*[^0-9])?\/[0-9][0-9][0-9][0-9][0-9]?$
{
  R=`formail -zxReply-To: | sed 's/.*<//;s/>.*//'`
  :0
  | scriptname.py --reply-to "$R" --number "$MATCH"
}

ブロック ( と の間のもの{)}は、両方の条件が満たされた場合にのみ入力されます。Subject: ヘッダーからの番号の抽出は、$MATCH以前と同様に機能します。From: 条件が一致し、Subject: 条件が一致した場合、抽出された番号は になります$MATCH

于 2012-12-10T21:22:10.740 に答える