昨晩、メーリング リストに登録したのですが、今朝になって、私の 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 や潜在的なデータ損失の問題は発生しないはずです。