Cronジョブが原因で、Linuxサーバーで100万通のメールが生成されています。メールを削除したいのですが、このcronメールは、cronジョブの実行に関する問題のトラブルシューティングと発見に役立つので、すべてではありません。だから私は1ヶ月のメールを保管し、残りを削除する必要があります。
さまざまなコマンドセットを持つさまざまなmail
コマンドがあります。 POSIXは mailx
コマンドを標準化しています。
通常、メールボックスには、受信した順序で電子メールが含まれます。したがって、古いメールを削除するには、通常、番号の小さいメールを削除します。 d 1-42
(最初の42メッセージを削除する)のようなコマンドを使用して、メッセージの範囲を削除できます。
より詳細な制御が必要な場合は、_ Mutt をお勧めします。これは、mail
コマンドよりもはるかに制御しやすいコマンドラインメールクライアントです。 Muttにはテキストモードのインターフェースがあり、スクリプトを作成することもできます。 Muttでは、 commandD
を使用してメッセージに削除のマークを付け、 pattern~d ->1m
を入力して1を超えるメッセージを選択できます生後1ヶ月。削除するメッセージのリストに満足したら、x
と入力して、削除対象としてマークされたメッセージを削除します。
多くの検索を行った後、古いメールをクリアできる archivemail usingを見つけました。
構文は次のとおりです。
archivemail -d 30 --delete <path-to-mailbox>
(通常、$MAIL
はローカルメールボックスの場所を定義します。確認するにはecho $MAIL
を試してください)。
-n
(-dry-run)オプションを使用して、何が行われるかを確認することもできます。
私はしばらくの間、この同じ問題に苦労しており、簡単な答えを求めるグーグルは、管理しているメールサーバーに対して予想よりも困難でした。
ファイルシステムを定期的にいっぱいにして、次のcronジョブで終わった単一ユーザーのメールボックスからメールを削除する必要がありました。
18 5 * * * /usr/bin/mutt -f /var/spool/mail/developer -e "Push D~d>7d<enter>qy<enter>"
または:毎日05:18に、ファイル(この場合はディレクトリ)/ var/spool/mail/developerでmuttを実行し、muttが起動するまで(プッシュ)、削除のマーク(D)に一致する(〜)日付( d)7日より前(> 7d)、そのコマンドを終了し、終了(q)して削除を確認(y)