mbox形式の任意の電子メールファイルがあります。私の "警告" mboxファイル(新しいフォルダ)から1つの送信者(または特定のトピック)からのメッセージを定期的に(週末)自動的に(cron経由で)削除したいと思います。ある発信者がメッセージを「[Eメール保護]'毎日何十ものメッセージが送信されます。
定期的にこれを行いたいので、毎日手動で入力した作業が行われます。mutt -f alerts; D; [email protected]; $; y (purge)
.procmailrc
まず探してみる必要があるので、オプションではありません。一度見てみると本当に素晴らしかったです。今週末はもう必要ありません。削除したいです。
答え1
このクローン操作は、深夜1日ごとに指定したタスクを実行します。
0 0 * * * script >/dev/null -c 'env TERM=vt100 mutt -F/dev/null -falerts -e "push <delete-pattern>[email protected]<enter><sync-mailbox>y<enter><exit>"' /dev/null
それを分析しましょう。
script -c 'cmd'
cmd
偽のtty(pty)として実行してcmd
考えるカーソルモビリティなどを備えた端末があります。 Muttではこれが必要ですが、cronジョブではこれを行うことはできません。スクリプトはシムを提供します。スクリプトの一般的な作業は、コマンドセッションをファイルに書き込むことです。最後のパラメータは、/dev/null
空のデバイスにレコードを書き込むことを意味します。なぜなら、再生可能な複数の呪いイベントについては気にしないからです。
env TERM=vt100
...muttを実行する前にvt100端末を環境に入れることを意味します。クローン操作にはデフォルトの端末タイプがないため(デフォルトでは端末がないため)これが必要です。
他のすべてはmuttの一部です。私たちはそれを使ってあなたのコンテンツを読まないよう-F/dev/null
にします。.muttrc
読書には問題はありませんが、muttrcの変更によってmuttの対話方法が変わる可能性があります。長期的には、デフォルトのmuttrcを使用する方が安全です-F/dev/null
。
この-e
オプションは、muttに実行時に何をすべきかを伝えます。引数は-e
muttrcファイルに入れることができるコマンドです。set
、、、alternatives
などは、 bind
キーボードバッファにキーストロークを「プッシュ」して、muttに次の内容を入力したかのように解釈させるコマンドです。hdr_order
Push
それでは、仮想キーを見てみましょう。
<delete-pattern>[email protected]<enter>
キーを押してENTERを押すのと同じです[email protected]
が、実際のキーの代わりにキーボードバインディングシンボルを使用します。これは、主キーまたは秘密鍵バインディングの変更からスクリプトを保護するため、マクロとプッシュのベストプラクティスです。インタラクティブヘルプからキーバインディングシンボルを取得できます。中間列のすべての名前(statementsで使用されますbind
)はシンボル名です。
<sync-mailbox>
$
キーを押すのではなく、キー記号をもう一度押すのと同じです。y<enter>
「確実ですか?」という質問にすばやく答えてください。
結局<exit>
あきらめました。これでセッションも終了script
し、cronコマンドも終了します。 cronと同様に、>/dev/null
cronノイズがメールボックスをいじめるのを防ぎます。
文字列全体push
が引用されていることに注意してください!これは重要です。幸いなことに、2つのレベルの引用符が必要なので、とんでもない引用符をエスケープせずに、単一引用符の中に二重引用符を使用できます。
答え2
with(または他の多くの言語の多くの実装の1つ)を使用してmutt
これを行うことができます。cron
expect
#!/usr/bin/env expect
spawn mutt -f alerts
expect -ex "Mutt" # or something if you've customized the display
send -- "D"
send -- "[email protected]"
...
別のオプションは、次のようなことを実行して、同様のことを行うコードを書くことです。メール::メールボックス::Mbox。