メールサーバーを保守しています。

IMAPサーバーにしているのですが、メールボックスが溢れることに悩んでいました。

社員には、定期的に古いメールをローカルに取り込んで、メールボックスを溢れさせないように気をつけてもらっているのですが、どうもスマートではないため、この度 Google Apps(有料版 Gmail)に契約をして、メールを転送するようにしました。

その為、IMAPサーバーは実質必要なくなったのですが、Googleのサービスの信頼性に多少不安があるため、バックアップとしてこちらでも受信をし続けています。

ただ、そうするといよいよメールボックスを掃除する術がなくなってしまいました。
そこで、例えば数日間メールをため込んで、自動的に削除するといったスクリプトを作って、cronなどで定期的に動作させたいのですが、そのようなことは可能でしょうか?

なにかヒントになるページなど、ご存じでしたら教えてください。
ちなみに、Linuxは上記の通り cronといった知識や、基本的なコマンド操作はできますが、あまり複雑な知識は自信がないといったところです。

どうぞよろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/12/30 04:05:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:y-kawaz No.1

回答回数1422ベストアンサー獲得回数226

ポイント35pt

IMAPサーバのメールの保存形式によりやり方が異なりますが、Maildir 形式のメールボックスをお使いでしたら、find コマンド一発で古いメールの削除は可能です。

その場合、たとえば以下のような cron を設定することで14日以上古いメールを削除することができます。

5 5 * * * find /path/to/Maildir -type f -mtime +14 -exec rm {} \;

この find コマンドの引数の意味は、

・/path/to/Maildir 以下のファイルで、

・ファイルタイプが f (通常のファイル)で、

・更新日時が14日以上前のファイルに対して、

・rm コマンドを実行する。

という感じです。


Maildirではなく、mboxなど他のメールボックス形式の場合は違ったコマンドが必要になると思いますが、考え方は同じかと思います。

id:ttomo No.2

回答回数16ベストアンサー獲得回数0

ポイント35pt

まさにここに書かれている内容でしょうか。

http://d.hatena.ne.jp/sunabako/20071111/1194785707

  • id:ttomo
    id:y-kawaz さんの方法では、
    「14日間メールが届かなかった」メールボックスは削除されますが、
    たとえば「毎日1通ずつメールを受け取る」人のメールはいつまでも消えることがありません。

    mtimeをctimeに変えると、今度は
    メールボックスが空の状態から始めて受信した日を起点に14日間はメールボックスが残りますが、
    14日経過するとメールボックスごと削除される、つまり
    「毎日1通ずつメールを受け取る」人のメールは14日ごとに丸ごと捨てられてしまいます。
    タイミングによっては昨日受け取ったメールも消されてしまいますね。
  • id:ttomo
    失礼しました。
    mbox形式と混同して理解しておりました。
    申し訳ございません。
  • id:y-kawaz
    質問者の方が使っているIMAPサーバやメールサーバソフトの名前が書いてないのでメールボックス形式が不明なので、上の解答では「Maildir形式のメールボックスなら」とケースを限定して書いています。Maildir形式の場合は1メール1ファイルで保存されてmtimeが更新されることは未来永劫ないので上の方法で問題ないのです。
    メールボックスが昔ながらのUNIX標準のmbox形式やCyrusのBerkeleyDB形式などでは id:ttomo さんの言うように mtime が変わるのでfindでは消せんません。上の回答でもMaildir形式以外の場合はfindは使えないので専用コマンドを使えと書いてます。
    というわけでメールボックス形式の違いによって、回答が変わるので質問者の方はメールボックス形式を明示した方がよりよい回答が得られます。詳しいことが分からないのでしたら、せめて現在利用中のメールサーバソフト名とIMAPサーバソフト名を書くべきですね。

  • id:selter
    質問者です。回答やコメントでアドバイスをいただき、ありがとうございます。

    >というわけでメールボックス形式の違いによって、回答が変わるので質問者の方はメールボックス形式を明示した方がよりよい回答が得られます。詳しいことが分からないのでしたら、せめて現在利用中のメールサーバソフト名とIMAPサーバソフト名を書くべきですね。

    そうでしたか。そもそも、IMAPにメールボックスの違いなどがあることを知りませんでした。。申し訳ありません。
    それで、一応 SSHにログインをして、ファイルなどを見てみたのですが、正直どんなメールボックスの形式でどんなメールソフトなのかが分かりませんでした。。

    まず、サーバーソフトですが、telnetで次のようにたたいてログインをしてみました。

    telnet xxx.xxx.xxx 447

    すると、次の記述が出てきました。

    * OK [CAPABILITY IMAP4REV1 LITERAL+ X-NETSCAPE SASL-IR LOGIN-REFERRALS STARTTLS AUTH=LOGIN] xxx.xxx.xxx IMAP4rev1 2004.357w at Sun, 23 Dec 2007 15:54:42 +

    NETSCAPEという文字列が出ているので、NETSCAPEのサーバーかなにかなのでしょうか? これでは種類は分かりませんか??
    また、メールボックスの形式ですが、mboxといったファイルもなければ、メール一通ごとのテキストファイルっぽい物も存在しませんでした。
    /home/フォルダには、「Mail」や「Sent Messages」といったメールボックスっぽいフォルダがあるのですが、「Mail」フォルダの中を見ても「Junk」や「Quarantine」といったファイルはある物の「mbox」という名前のファイルはありません。

    Maildirというフォルダもないので、Maildir形式ではないということでしょうか? それとも、探しているところが違うのでしょうか。。

    ちなみに、レンタルサーバーはラピッドサイトの VPS2というプランです。
    http://www.rapidsite.jp/product/vps/?id=index

    初めから IMAPがセットアップされていたため、それを使っているのですが、マニュアルにも詳しい記述がなく、何となく使ってしまっている現状です。。詳しい情報をお伝えできず、申し訳ありません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません