• clientmqueueとは、
sendmailなどMTA(メール転送エージェント)がメールを送信する際になんらかの問題で送信出来なかった時に
/var/spool/clientmqueueにメールが溜まる。
キューなのでここにメールがあると、何度もMTAが再送を試みる。

今回、sendmailを停めているサーバ(RHEL5.5)のclientmqueueが何故かメールが大量に溜まっていた為
調査を実施。

  • ファイルの意味
dfqで始まるファイル … メールの本文
qfqで始まるファイル … メールのヘッダー
dfqxxxxxxxxxxxxxとqfqxxxxxxxxxxxxxの文字列が同じものがペアとなる。


原因①
  • rhn-virtualization-host のパッケージ
rhn-virtualization-hostをインストールするとcronが2分置きに仮想マシンの情報を
RHNに通知する。

メール本文
 libvir: Remote error : unable to connect to '/var/run/libvirt/libvirt-sock':
 No such file or directory
libvir(仮想マシンのライブラリ)に
「リモート出来ないよ。
/var/run/libvirt/libvirt-sockなんてファイルもディレクトリもないよ」
って怒られてます。

rhn-virtualizationパッケージのcronを見てみる。
 # cat /etc/cron.d/rhn-virtualization.cron
 0-59/2 * * * * root python /usr/share/rhn/virtualization/poller.py
仮想マシンも使用していないのに何故かパッケージが入っており、sendmailが起動して無いのに
2分毎にメールを送り続けていた為。今回はこれが一番容量を圧迫していた。

  • 解決方法

「rhn-virtualization-host」パッケージを削除、または/etc/cron.d/rhn-virtualization.cron

のファイルを別のディレクトリに移動する。


原因②
  • Logwatchのログ報告メール

RHEL(他のLinuxも結構そうらしい)に標準でインストールされているLogwatchが毎日のログをメールしてくれます。

デフォルトだとroot宛に送ります。

これもsendmailを使用していないので、毎日のログの報告メールがそのままclientmqueueに溜まってました。

  • 解決方法

1.設定ファイルを書きかえる。

 

/usr/share/logwatch/default.conf/logwatch.confの内容を書き換えます。


初期設定では、

mailto = root

になっているので、とりあえず「mailto = ""」にしてみました。

手動で、/etc/cron.daily/0logwatchを実行してみる。


# /etc/cron.daily/0logwatch

No recipient addresses found in header

ヘッダーにそんなアドレスないです。ってエラー吐かれましたけどclientmqueueを確認してみると
メール届いてないので、問題だったメールは届かなくなりました。

次にメーラーを指定している

mailer = "sendmail -t"

を書き換えてみました。デフォルトだとsendmailが設定されていて-tのオプションが付いています。
-tのオプションはヘッダーを解析するものらしいので「mailer = "sendmail"」に書き換えてみた。
もう一度手動で実行。
# /etc/cron.daily/0logwatch
Recipient names must be specified
今度は、受信者を指定しろ。って言われました。
ここでこの方法を試すのは辞めましたが、そもそもメーラーさえ指定しなければいいのかもしれない。
メールを送らないようにするだけならこの方法でもいい気もする。
送信できない事に関するエラーメール等はなかったかが、ログは確認してない。


2.権限を無くす。

/etc/cron.daily/0logwatchの0logwatchの実行権限をなくしてしまう。
# chmod -x /etc/cron.daily/0logwatch
これで実行が出来なくなりメールも送られないが、それに関してのエラー、ログ等は未確認。

3.0logwatchを消す。

ホントに要らないのであれば、バックアップファイルでも作成してから0logwatchを消してしまう。
# rm /etc/cron.daily/0logwatch
ある意味一番影響範囲が少ない気もするが、現環境では今後どうするかわからないので行わなかった。

こんな感じで、clientmqueueに増えるメールはかなり減少した。
定期的に出力されるものについてはほとんどなくなった。
全メール要らなかったので、
clientmqueueをリネームして、同じ構成でclienetmqueueを作成し
リネームしたディレクトリをディレクトリ毎メールを削除し一応作業完了。

追記:
/var/spool/clientmqueueについてのメモ 2 ※cronのjobについて追記


人気ブログランキングへ

にほんブログ村 IT技術ブログ IT技術メモへ