昨夜、私はメーリングリストに登録しましたが、今朝、私のprocmailフィルターが多くのメーリングリストメッセージに適用されないことを発見しました。今では、重要度の低いメーリングリストメッセージが、受信トレイにある重要度の高い仕事用メールに散在しています。
Procmailフィルターを介して受信トレイ内のすべての電子メールを再実行することは可能ですか?
注:私はmaildir形式を使用しています
これでうまくいくと思います。メールを再フォーマットしてformail
経由で送り返すには、procmail
を実行する必要があります。
Maildirディレクトリから:
cat * | formail -s procmail
次のように、その場でそれを行うことができるかもしれません:
$ for m in Mail/{cur,new}/*; do echo $m; procmail <$m; rm $m; done
後で元の電子メールをそれぞれ削除する必要があります。そうしないと、procmailがそれを複製します。
また、すべてを新品として記録します。私はそれを処理するための良い方法がわかりません。
Muttを使用している場合は、procmailを介してメールをパイプし、次のようなキーコマンドを使用して受信トレイから元のメールを削除することもできます。
macro index y '<enter-command>unset wait_key<enter><tag-prefix><pipe-entry>/usr/bin/procmail /home/user/.procmailrc<enter><tag-prefix><delete-message><enter-command>set wait_key<enter>'
macro pager y '<enter-command>unset wait_key<enter><pipe-entry>/usr/bin/procmail /home/user/.procmailrc<enter><delete-message><enter-command>set wait_key<enter>'
これには良い解決策がないようです。procmailはstdin
からのメール入力のみを受け入れるようで、maildirアプリケーションを制限します。
私も同様の状況に直面しました。私のニーズに合った最善の解決策は、procmail
に実行させたいことを単純に複製することでしたが、私自身の小さなスクリプトを使用して、それが最も確実に実行できないことを複製することでした。あなたが世話をする必要がある1つまたは2つの簡単なルールがあります:
cd ~/Maildir/
sh -c 'for i in `egrep -l "^Delivered-To: [email protected]" cur/*`; \
do mv $i .FreeBSD.perforce/$i; done'
これも最適ではありませんが、少なくとも、不必要なIOおよび潜在的なデータ損失の問題に悩まされることはありません。