0

procmailを使用してメールをMaildir内の別のフォルダに転送しています。これらの2行を使用して、メールからFROMとTOを取得します。これは、非常にうまく機能します。

FROM=`formail -x"From:"`
TO=`formail -x"To:"`

これらの2つのコマンドは、From:およびTo:プレフィックスなしで行全体を返します。だから私は次のようなものを手に入れます:

Firstname Lastname <firstname.lastname@mail-domain.com>

ここで、<と>の間の電子メールを抽出したいと思います。このために、変数FROMとTOをこのようにパイプします。

FROM_PARSED=`echo $FROM | grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*'`
TO_PARSED=`echo $TO | grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*'`

しかし、LOG = FROM_PARSEDを使用してFROM_PARSEDをprocmailログに出力すると、FROM_PARSEDとTO_PARSEDに空の文字列が表示されます。

しかし、これらのコマンドをコンソールで実行すると、すべて正常に機能します。grep、egrep、sed、さらにはcut(<と>の切り取り)を使用して、他の多くのgreppingメソッドを試しました。すべてコンソールで動作していますが、procmailで使用すると、何も返されません。

procmailがgrepおよびsedコマンドの使用を許可されていない可能性はありますか?chrootのようなものですか?

procmailログにエラーログが記録されません。FROMとTOの行から有効なメールアドレスを抽出したいだけです。formailでの抽出は機能しますが、式が正しい場合でも、grepまたはsedでの解析は失敗します。

誰か助けてもらえますか?多分私はどういうわけかprocmailを設定する必要があります。

4

3 に答える 3

1

変。

これをユーザーの.procmailrcファイルに追加しました

SHELL=/bin/bash

ユーザーシェルは/bin/ falseに設定されました。これは、メールユーザーであり、sshアクセスがまったくないため正しいです。

于 2010-12-10T11:31:20.533 に答える
0

適切に引用"$FROM"して「$TO」を使用する必要があります。

また、26のよく知られた文字+英語のアルファベットの10桁と実際に一致することを確認するために、接頭辞grepを付ける必要があります。LC_ALL=POSIX[:alnum:]

于 2010-12-10T10:40:04.047 に答える
0

あなたはすでにこれを解決しました、しかしあなたの実際の質問に答えるためprocmailに、chrootで実行することは可能です、しかしこれは確かにProcmail自体によって行われていません。Sendmailには、Sendmail Restricted Shell(元々は呼ばれrshていましたが名前が変更されましたremsh)と呼ばれるものが付属していたため、システム管理者は配信プロセスをchrootできました。要約すると、これはMTAの機能であり、Procmailの機能ではありません。

于 2011-09-09T07:28:53.920 に答える