2010-12-08 15 views
0

私は電子メールをMaildirの別のフォルダに転送するためにprocmailを使用しています。 私はこれらの2行を使ってメールからFROMとTOを取得していますが、これはかなりうまく動作します。procmailはchrootされているか、またはlinuxコマンドを使用して制限されていますか?

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

これらの2つのコマンドは、From:とTo:のプレフィックスを付けずに行全体を返します。 >

Firstname Lastname <[email protected]> 

は、今私は<との間で電子メールを抽出したい: だから私のような何かを得ます。 私はこのようにFROMとTOの変数を塗ります。

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

しかし、私はLOG = FROM_PARSEDを使用してprocmailのログにFROM_PARSEDを印刷するとき、私はFROM_PARSEDとTO_PARSEDに空の文字列を取得します。

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

procmailでgrepコマンドとsedコマンドを使用することはできませんか?何かchrootのようなもの?

私のprocmailログにエラーログはありません。私は、FROMとTOの行から有効な電子メールアドレスを抽出したいだけです。 formailを使って抽出しますが、式が正しい場合でもgrepやsedを使って解析することはできません。

誰かが助けてもらえますか?たぶん私は何とかprocmailをセットアップする必要があります。

答えて

1

Strange。

私は、ユーザーの.procmailrcファイルに

SHELL=/bin/bash 

これを追加、ユーザーのシェルは、そのメールユーザー、まったくSSHアクセスので、正しいれ、偽/ binに/に設定しました。

0

​​と "$TO"を正しく引用してください。

が英語のアルファベットの26のよく知られた文字+ 10桁に実際に一致するように、grepの接頭辞をLC_ALL=POSIXにする必要があります。

0

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

関連する問題