ネットワークトラブルで大量(数十万件)のエラーメールが管理者アドレスに届き、グループウェアWebメールが受信できない。メールデータを取捨選択して整理できるか new!
ネットワークトラブルで大量(数十万件)のエラーメールが管理者アドレスに届き、グループウェアWebメールが受信できない。メールデータを取捨選択して整理できるか、という質問を受けたことがあります。
まず前提として、いったん特定アカウントのメールボックスに“着信済み”となったメールについて、E-Post側で「後から受信フィルタのように自動で振り分け・削除」する機能は用意されていません。
E-Postのメールフィルタ機能(【mail.dat】等)はSMTP受信時に動作するものであり、到達後のメールをその場で再判定して制御する用途に使うことはできません。
ただし、E-Postのメールボックスはメールデータがファイルとして保存される方式のため、OS側の操作(検索→移動→削除)で「整理」することは可能です。
・POP3形式/IMAP4形式共にメールボックスでは、拡張子.MSG(1メール=1ファイル)で保管されます。(※ジャーナル機能は拡張子.MSGと拡張子.RCPの(1メール=2ファイル)セット保存になります。これはBCCを判定する目的で意図的に残してあるものです。)
・IMAP4形式のメールボックスはフォルダの位置が異なります。くわしくは下記記事参照。大量のIMAPメールは、クライアント側が読み込みしきれずエラーになる例も報告されています。そのため、グループウェアWebメールが処理できないほど溜まっている場合は、サーバ上でメールデータファイルを“退避”させて総数を減らすのが現実的です。
(関連FAQ)
●方式の違いによるメールボックスフォルダの作成位置について
●IMAP使用時のメールボックスフォルダと「POP3無効」チェックボックスの関係について
●IMAPデータファイルの基本的な構造について
安全な進め方
1.増え続ける状態ならまず止血する
原因が継続中だと整理しても追いつかないため、可能なら先にネットワーク復旧/誤送信停止などで、これ以上増えない状態を作ります。
2.対象メールボックスをバックアップ
対象アカウントのメールボックスフォルダを丸ごと別領域にコピーしてからの作業を推奨します(誤削除対策)。
3..MSGファイルを検索して、該当ファイルを退避フォルダへ移動する
.MSGファイルを退避させ総数を減らすことにより、まずはWebメールが受信できる状態になるかの確認を行います。
整理方法の例
grepコマンドを利用する
E-Postのメールデータ(.MSG)は基本的に「1メール=1ファイル」です。
そのため、FreeBSDに標準装備されているgrepコマンドでヘッダ文字列をキーに該当メールを抽出し、ファイルを移動/削除することで整理できます。
例:Fromヘッダで該当メールを抽出してファイル一覧を作成する
grep -l -F "From: xxxx <xxxx@xxxx.xxx>" *.MSG > list.txt
作成された list.txt を元に、move/del 等で一括処理します。
※ジャーナル機能を使っている場合、.MSG と .RCP が同番号の対になっているため、移動・削除は 対で行うようにしてください。
※JIS(iso-2022-j)やUTF-8の場合は、エンコード文字列で検索する必要があります。