ローカルキューに蓄積されているメールの数を確認する (CentOS 5.4)


ローカルメールキュー

CentOS 5.4 では、Postfix というメールシステムを用いて電子メールを配信する仕組みになっていますが、その送信されるメールデータがローカルメールキューに停滞して、システムを圧迫してしまうことがあります。

メールキューに停滞する理由としては、たとえば宛先が不明瞭であったり宛先のメールサーバーが不安定だったりといった要因の他にも、SPAM メールや自動通知メールが多量に送られてきてサーバーの処理が追い付いていない場合があります。また、ローカルアカウント宛のメールの場合にその宛先のメールボックスがいっぱいのため、送れない場合もあるようです。実際、メールボックスが 2GB に達すると、それ以上メールを配信できずに、キューに停滞してしまうという場面もありました。

いずれにしても、キューにメールが蓄積されると、システムに意外と負荷がかかってしまい、他のプログラムに影響を与えてしまう可能性もありますので、メールを良く扱うシステムの場合、メールキューの停滞状況にも注意を払って運用する必要があるかと思います。

 

メールキューに停滞しているメールの数を確認するには、CentOS 5.4 では次のようにすることで行うことができるようになっていました。

mailq

このようにすることで、メールキューに格納されている件数が "Total requests: " として画面に表示されます。

たとえばメールキューに何もデータがない場合には、次のような感じです。

/var/spool/mqueue is empty

Total requests: 0

 

通常はこれで問題なく確認することができるのですが、停滞しているメールの数が多い場合には、mailq コマンドがエラーで終了してしまう場合もあるようです。

そんな時には次のようにして、メールキューに格納されているファイル数を確認することも可能です。

ls /var/spool/mqueue | wc -l

おおよそこれで実際の停滞しているメール数を調べることができるのではないかと思います。何らかの理由で mailq が実行できない場合には、試してみると良いと思います。