IMAPサーバーにしているのですが、メールボックスが溢れることに悩んでいました。
社員には、定期的に古いメールをローカルに取り込んで、メールボックスを溢れさせないように気をつけてもらっているのですが、どうもスマートではないため、この度 Google Apps(有料版 Gmail)に契約をして、メールを転送するようにしました。
その為、IMAPサーバーは実質必要なくなったのですが、Googleのサービスの信頼性に多少不安があるため、バックアップとしてこちらでも受信をし続けています。
ただ、そうするといよいよメールボックスを掃除する術がなくなってしまいました。
そこで、例えば数日間メールをため込んで、自動的に削除するといったスクリプトを作って、cronなどで定期的に動作させたいのですが、そのようなことは可能でしょうか?
なにかヒントになるページなど、ご存じでしたら教えてください。
ちなみに、Linuxは上記の通り cronといった知識や、基本的なコマンド操作はできますが、あまり複雑な知識は自信がないといったところです。
どうぞよろしくお願いいたします。
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など他のメールボックス形式の場合は違ったコマンドが必要になると思いますが、考え方は同じかと思います。
コメント(4件)
「14日間メールが届かなかった」メールボックスは削除されますが、
たとえば「毎日1通ずつメールを受け取る」人のメールはいつまでも消えることがありません。
mtimeをctimeに変えると、今度は
メールボックスが空の状態から始めて受信した日を起点に14日間はメールボックスが残りますが、
14日経過するとメールボックスごと削除される、つまり
「毎日1通ずつメールを受け取る」人のメールは14日ごとに丸ごと捨てられてしまいます。
タイミングによっては昨日受け取ったメールも消されてしまいますね。
mbox形式と混同して理解しておりました。
申し訳ございません。
メールボックスが昔ながらのUNIX標準のmbox形式やCyrusのBerkeleyDB形式などでは id:ttomo さんの言うように mtime が変わるのでfindでは消せんません。上の回答でもMaildir形式以外の場合はfindは使えないので専用コマンドを使えと書いてます。
というわけでメールボックス形式の違いによって、回答が変わるので質問者の方はメールボックス形式を明示した方がよりよい回答が得られます。詳しいことが分からないのでしたら、せめて現在利用中のメールサーバソフト名とIMAPサーバソフト名を書くべきですね。
>というわけでメールボックス形式の違いによって、回答が変わるので質問者の方はメールボックス形式を明示した方がよりよい回答が得られます。詳しいことが分からないのでしたら、せめて現在利用中のメールサーバソフト名と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がセットアップされていたため、それを使っているのですが、マニュアルにも詳しい記述がなく、何となく使ってしまっている現状です。。詳しい情報をお伝えできず、申し訳ありません。