昨夜、メーリングリストに参加しましたが、今朝私のprocmailフィルタが多くのメーリングリストメッセージに適用されないことがわかりました。今、私の受信トレイは、あまり重要でないメーリングリストメッセージとより重要な仕事のメールでいっぱいです。
私のprocmailフィルタを介して受信トレイにあるすべての電子メールを再度実行できますか?
注:私はmaildir形式を使用しています。
答え1
私はこれがうまくいくと信じています。formail
再フォーマットメッセージを実行してから再送信する必要がありますprocmail
。
Maildirディレクトリから:
cat * | formail -s procmail
答え2
次のように内部でこれを実行できます。
$ for m in Mail/{cur,new}/*; do echo $m; procmail <$m; rm $m; done
その後、各元の電子メールを削除する必要があります。それ以外の場合、procmail はコピーを作成します。
また、すべてを新しいものとして記録します。この問題を処理する良い方法があるかどうかはわかりません。
答え3
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>'
答え4
良い解決策はないようです。 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や潜在的なデータ損失の問題は発生しません。