私が働いている場所では、多くのグループに電子メールを送信します。つまり、新しいグループがスレッドに追加されると、メールはスレッド内でも任意のディレクトリにフィルタリングされます。メールを送信するすべてのグループフォルダ内のすべての電子メールを表示したいです。これは、より多くのディスク領域を使用することを意味しますが、ディスク領域は安価です。これには「c」フラグがありますが、問題は、各ルールに「c」を追加すると、各電子メールがそのフォルダと最後の受信トレイに配置されることです。だから私はこの電子メールが特定のフォルダに認識/フィルタリングされているかどうかを識別し、そうでない場合は受信トレイに入ることを許可する最後のルールが必要です。 "test -z $LASTFOLDER"を試してみましたが、うまくいくようです。ただし、procmailがfetchmailの失敗を返し、imapサーバーから自分のEメールを削除せず、混乱が発生したことを除いてください。正しい方法は何ですか?メールフィルタリングに別の方法を使用する必要がありますか?私が欲しいものを明確に書くことができますか?
答え1
メッセージをリストフォルダにソートするすべてのルールに対して同様の操作を実行できます。
:0
* ^List-Id:...
{
:0 c:
somefolder
:0 fw
| formail -a X-Chad-Loop: Chad was here
}
そして終わる直前に:
:0
* ^X-Chad-Loop:\ Chad\ was\ here
{
:0
/dev/null
HOST
}
私考えるへの転送も記録されます/dev/null
。気に入らない場合は、プレイする必要がありますLOGABSTRACT
。
参考までに、procmail
長い間メンテナンスされておらず、よく知られているセキュリティ問題があることに注意してください。いくつかの既存の開発者でさえ、代わりに他のものを使用することを提案しています。それだけの価値があるという点で、私の個人的な好みは周波数分割多重、彼の安全記録ははるかに良いです。
答え2
このLASTFOLDER
アイデアは完璧に大丈夫です。呼び出しプロセスに失敗シグナルを送信しないことを確認するだけです。コードは表示しませんが、次のようにすると正常に動作します。
:0
* LASTFOLDER ?? .
/dev/null
このvariable ?? regex
構文は、変数を確認するためのProcmailの組み込みツールです。単一点は、空の文字列(または技術的には改行のみを含む文字列)を除くすべての値と一致します。