Procmail:「ticket@domain」というアドレスにチケット番号を送信しますか?

Procmail:「ticket@domain」というアドレスにチケット番号を送信しますか?

私は次のことをしたいと思います:

  1. ユーザーは次のアドレスに電子メールを送信します。1234@domain
  2. 1234@domain次のアドレスに送信された電子メールとして認識されたProcmailticket+1234@domain
  3. Procmailレシピはチケット番号を処理し、電子メールをバグトラッカーに転送します。

どこ勇敢な私の現在の障害物である。

これは概念証明です。この時点でticket+1234@domain電子メールが正しく配信されるようにするには、ユーザーはチケットをに送信する必要があります。

SUBJECT=`/usr/bin/formail -zx "Subject:"`
:0fhw
* To.*\/([0-9]+)@domain
* MATCH ?? ^\/[0-9]+
|/usr/bin/formail -I "Subject: $SUBJECT (Case $MATCH)"

:0
!tickets@bugtracker

いくつかの背景:

チケットを処理するためのアドレスが作成されますticket@domain,。現在、ユーザーはに送信され、ticket+####@domainProcmailレシピは$MATCHバグトラッカーエントリに関連付けられたチケット番号を取得し、それに応じて転送するために使用されます。これはうまくいきます。

私がしたいこと:

オートコンプリートエラーを防ぎます(ユーザーが受信ticket+者フィールドに入力すると、間違ったチケット番号がオートコンプリートされます)。このようなエラーを回避するには、ユーザーは次のアドレスに電子メールを送信する必要があります。####@domain 代わりにticket+####@domain

重要な質問:

Procmailを使用してから送信された電子メールをフィルタリングしてから送信された電子メール####@domainで処理できますかticket+####@domain.

答え1

あなたの質問はやや混乱しているようですが、最後の行を!ticket+$MATCH@domain

.^TO_^To:.*

:0
* ^TO_\/[0-9]+@domain
* MATCH ?? ^\/[0-9]+
{
 SUBJECT=`/usr/bin/formail -zx "Subject:"`
 :0fhw
 |/usr/bin/formail -I "Subject: $SUBJECT (Case $MATCH)"
 :0
 !ticket+$MATCH@domain
}

ジョブと両方のジョブを条件に入れるために中かっこを追加して、設定されていない項目を取得または渡すために不要な操作をSubject:行わないようにしました。MATCH

(周囲の括弧は[0-9]+役に立たないので除外しました。PATHハードコーディングされたパスではなく正しいパスがあることを確認してくださいformail。)

受信者情報のヘッダー解析は、次の理由で完全に信頼できません。このメッセージは次のように送信できます。Bcc:。繰り返しますが、これは受信者システムがヘッダーではなく受信者情報のエンベロープを正しく確認すると仮定します(もちろん、転送する前に受信者ヘッダーを置き換えることも追加するのは難しくありません)。

関連情報