1

次のような受信メールをフィルタリングするためのprocmailレシピがあります。

  :0
    *^Subject:.*(test)
    * ? egrep -is -f /root/Procmail/whitelist.txt

    {

    :0 fwb
    | formail -I ""


    :0
    myfolder/
    }

上記のレシピ機能は、メールの本文の内容を除外し、そのメールをmyfolderに転送することです。問題は、体の中に入れたい変数があることです。

FROM_=`formail -c -x"From " \
     | expand | sed -e 's/^[ ]*//g' -e 's/[ ]*$//g' \
     | awk '{ print $1 }'`

    SUBJ_=`formail -c -x"Subject:" \
     | expand \
     | sed -e 's/  */ /g' \
     | sed -e 's/^[ ]*//g' -e 's/[ ]*$//g'`

この電子メール本文(変数と一緒に)はmyfolderに転送する必要があります。

私はこのように変数をエコーし​​ようとしましたが、それでも役に立ちません。

:0 fwb
 echo "${SUBJ_}"
 echo "{FROM_}"

私のレシピに何か問題がありますか?誰かが私を助けてくれますか?

4

1 に答える 1

3

シェルスクリプトにパイプする必要があります。プレフィックスのないアクションは、あなたの場合、「echo」という名前のフォルダーに保存されます。

${FROM_}また、変数にドル記号がありませんでした。

:0 fwb
| ( echo "${SUBJ_}";  echo "${FROM_}" )

あなたの割り当てはおそらくかなり最適化される可能性があります。配管sedするsedawk、ほとんど必要ありません。あなたが望むものを処理できない場合は、それをすべてやりsedましょう。awk

FROM_=`formail -c -x"From " \
 | expand \
 | awk '{ gsub (/^[ ]*|[ ]*$/,""); print $1 }'`

SUBJ_=`formail -c -x"Subject:" \
 | expand \
 | sed -e 's/  */ /g' -e 's/^[ ]*//g' -e 's/[ ]*$//g'`

(なぜそこに必要expandになるのかわかりませんが、念のために残しておきました。)

于 2012-06-14T07:22:59.770 に答える