cronジョブを使用したメールフォルダのクリーンアップ

cronジョブを使用したメールフォルダのクリーンアップ

スパム暗殺者スパムを「学習」する機能があります。各ユーザーのメールフォルダには.spamフォルダがあり、すべてのスパムをこのフォルダに移動するように指示されます。 (ユーザーはIMAPを使用しています。)各アカウントの.spamフォルダの内容を次に提供するcronジョブを設定しました。SaLearn

02 02 * * * sa-learn -p ~/.spamassassin/user_prefs --spam ~/mail/*/*/.spam/{cur,new} 

cron確認メールによると、これは期待どおりに機能します。

sa-learn コマンドが正常に完了すると、.spam フォルダーの内容が自動的に削除されます。上記のcronタスクの最後に次のものを追加できると思いますか?

&& rm ~/mail/*/*/.spam/{cur,new}

これは正しいと思いますか?

注:複数のcPanelリセラーホスティングアカウントで使用するためにテストされています。シェルアクセス権がありません。


アップデート1Celadaの回答とコメントは次のとおりです。

これを行う方法は、各メッセージをユーザーが制御し、IMAPサーバーの影響を受けない他のディレクトリに自動的に移動し、その場所でメッセージを処理して削除することです。幸いなことに、この種の原子移動を可能にするMaildirを使用しています。

どうですか?

mkdir -p /tmp/sa_tmp 
  && mv ~/mail/*/*/.spam/{cur,new} /tmp/sa_tmp
  && sa-learn -p ~/.spamassassin/user_prefs --spam /tmp/sa_tmp
  && rm -rf /tmp/sa_tmp

mktempディレクトリを忘れた場合は、次回実行時に削除するように意図的に使用しないでください。


アップデート2Xhienneは次のようにコメントしました。

curとnewディレクトリを移動するのが良いアイデアかどうかはわかりません=>その内容を移動します。また、new と cur という名前の多くのディレクトリを同じ宛先に移動するため、名前の競合が発生します。

ファイル名の競合を避ける方法がわかりません。

最後に、/tmpに移動するとは、別のパーティションに移動することを意味する可能性があります。これにより、追加のI / Oが発生し、ディスク容量が不足する可能性があります(/tmpは時々小さな独立パーティションです)=> ~/特殊フォルダmail/のようなものに移動することをお勧めします。 .sa - 最後に削除される可能性があることを理解します。

mkdir -p ~/mail/.sa-learn 
  && mv ~/mail/*/*/.spam/{cur,new}/* ~/mail/.sa-learn
  && sa-learn -p ~/.spamassassin/user_prefs --spam ~/mail/.sa-learn
  && rm -rf ~/mail/.sa-learn

アップデート3:

newフォルダがなければ動作しないと思います。エラーが発生します。

mv: cannot stat `/home/username/mail/*/*/.spam/new/*': No such file or directory

「無視」スイッチがないようですmv。どんなアイデアがありますか?

ベストアンサー1

あなたが提案した解決策は興味深いです。実行中または実行中に新しいメッセージが追加(または削除または変更)されないことを保証できないため、興味深くてsa-learn不幸なことがたくさんあります。その中で最も明白なのは、メッセージを提供せずにメッセージを削除できることです。 。sa-learnrmsa-learn

これを行う方法は、各メッセージをユーザーが制御し、IMAPサーバーの影響を受けない他のディレクトリに自動的に移動し、その場所でメッセージを処理して削除することです。幸いなことに、この種の原子移動を可能にするMaildirを使用しています。

おすすめ記事