最近サーバのメールスプールを掃除しました. 作業内容を備忘録的にまとめておきます.


メールスプール

メールスプールとは,メールサーバにおけるメールのバッファのこと. メールサーバに所属するクライアントに対して送信されたメールを, クライアントがメーラを使ってローカルにダウンロードしない,あるいは(かつ)サーバ上のメールを削除しない状況が続くと, サーバにはメールが溜まる一方となり,そのデータがサーバの容量を圧迫します.

参考: [メールサーバーの役割と動作] http://misia.sakura.ne.jp/Mail_Server.htm

他に,procmail(とか.forward)というメール振り分け/転送アプリケーションを使っている時にもメールスプールを圧迫し得る場合があります. 具体的には, 1. a@a_mail.com というアドレス宛のメールをb@b_mail.comというアドレスに転送する設定をしている 2. b@b_mail.comというアドレスが何らかの理由で利用不可能になった場合

この時,サーバは「メールをb@b_mail.comに転送できないよ!」という旨の通知メール(いわゆるメーラーデーモン)をa@a_mail.comに転送する. サーバはそのa@a_mail.com宛の通知メールをb@b_mail.comに転送しようとするため,サーバは 「「メールをb@b_mail.comに転送できないよ!」という内容の通知メールをb@b_mail.comに転送できないよ!」 という通知メールをa@a_mail.comに送信する.

その通知メールをサーバは… と繰り返され,結果してaのメールスプールにはメーラーデーモンが溜まり続け,メールスプールが膨れあがっていく結果となる.

メール転送アプリケーションを使うときには,ループを防ぐ対策が必要となります. エラーメールを転送しないとか,管理者宛に回すとか.


 

メールスプールの削除

理由はともかく,膨れあがったメールスプールはサーバ容量を圧迫するため害となります. そのため,サーバ管理者はどうにかして対応する必要があります.

今回は 1. 大容量のメールスプールをtar.gz形式に圧縮する 2. 圧縮前のメールスプールを削除する 3. 圧縮前のメールスプールと同名のファイルをtouchコマンドで作成 4. 作成したファイルの属性を調整 ,という作業を行います

[mail]$ pwd
/var/spool/mail
[mail]$ ls -la
合計 174006
drwxrwxr-x 2 root mail 4096 11月 6 18:37 .
drwxr-xr-x 14 root root 4096 5月 11 2011 ..
-rw-rw—- 1 user mail 78544511 11月 6 17:06 user

userという名前のユーザが結構多めのメールを抱え込んでいる.

[mail]$ sudo tar cvzf user_old.tar.gz user //step1
[mail]$ sudo rm user //step2
[mail]$ sudo touch user //step3
[mail]$ ls -la
合計 1703440
drwxrwxr-x 2 root mail 4096 11月 6 19:34 .
drwxr-xr-x 14 root root 4096 5月 11 2011 ..
-rw-rw—- 1 user mail 41579958 11月 6 17:06 user_old.tar.gz
-rw-r–r– 1 root root 0 11月 6 19:34 user //パーミッション・所有者・グループが合っていない
[mail]$ sudo chmod 660 user //step4
[mail]$ sudo chown user user //step4
[mail]$ sudo chgrp mail user //step4
[mail]$ ls -la
合計 170344
drwxrwxr-x 2 root mail 4096 11月 6 19:34 .
drwxr-xr-x 14 root root 4096 5月 11 2011 ..
-rw-rw—- 1 user mail 41579958 11月 6 17:06 user_old.tar.gz
-rw-rw—- 1 user mail 0 11月 6 19:34 user

まぁ,圧縮せずに削除してもいいんじゃないかという場合もあるかと思います.

以上