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を設定する必要があります。