web-dev-qa-db-ja.com

procmailフィルターをmaildir受信ボックスに適用するにはどうすればよいですか?

昨夜、私はメーリングリストに登録しましたが、今朝、私のprocmailフィルターが多くのメーリングリストメッセージに適用されないことを発見しました。今では、重要度の低いメーリングリストメッセージが、受信トレイにある重要度の高い仕事用メールに散在しています。

Procmailフィルターを介して受信トレイ内のすべての電子メールを再実行することは可能ですか?

注:私はmaildir形式を使用しています

9
Cory Klein

これでうまくいくと思います。メールを再フォーマットしてformail経由で送り返すには、procmailを実行する必要があります。

Maildirディレクトリから:

cat * | formail -s procmail

3
George M

次のように、その場でそれを行うことができるかもしれません:

$ for m in Mail/{cur,new}/*; do echo $m; procmail <$m; rm $m; done

後で元の電子メールをそれぞれ削除する必要があります。そうしないと、procmailがそれを複製します。

また、すべてを新品として記録します。私はそれを処理するための良い方法がわかりません。

2
Jake

Muttを使用している場合は、procmailを介してメールをパイプし、次のようなキーコマンドを使用して受信トレイから元のメールを削除することもできます。

muttrc:

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>'

https://mikeburnscoder.wordpress.com/2011/06/12/one-big-mutt-inbox-filtered-after-the-fact-using-procmail/ で見つかりました

2
user3630647

これには良い解決策がないようです。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および潜在的なデータ損失の問題に悩まされることはありません。

0
cnst