web-dev-qa-db-ja.com

Linuxで一定範囲の日付のメールを削除する必要がある

Cronジョブが原因で、Linuxサーバーで100万通のメールが生成されています。メールを削除したいのですが、このcronメールは、cronジョブの実行に関する問題のトラブルシューティングと発見に役立つので、すべてではありません。だから私は1ヶ月のメールを保管し、残りを削除する必要があります。

5
ksk.eaknath

さまざまなコマンドセットを持つさまざまな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)オプションを使用して、何が行われるかを確認することもできます。

2
aaditya1234

私はしばらくの間、この同じ問題に苦労しており、簡単な答えを求めるグーグルは、管理しているメールサーバーに対して予想よりも困難でした。

ファイルシステムを定期的にいっぱいにして、次の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)

1
StuWhitby

muttは、正規表現、詳細 here および here を使用して削除できます。

0
Jan