sendmail の統計を取る mailstats コマンド

2009-11-10 22:00
このエントリーをはてなブックマークに追加

sendmail にはメールの送受信量の統計を取る機能がついています。CentOS の sendmail なら、まず /etc/mail/sendmail.mc で統計ファイルの指定を有効にします。

define(`STATUS_FILE', `/var/log/mail/statistics')dnl #行頭にdnl という文字列があれば削除する。

次に /var/log/mail/statistics を作れば準備完了です。

 # touch /var/log/mail/statistics
 # service sendmail restart

sendmail.mc ファイルで異なるファイルを指定した場合は読み替えてください。なお、sendmail.mc で統計ファイルを指定しない場合は、 /etc/mail/statistics が使われるようです。(CentOS 4.5 の sendmail-8.13.1 の場合)

これで何通かメールを送受信したあと、mailstats コマンドを実行すると、統計データが表示されます。

 mailstats
Statistics from Mon Jun  1 10:12:52 2009
 M   msgsfr  bytes_from   msgsto    bytes_to  msgsrej msgsdis msgsqur  Mailer
 0        0          0K      589       2415K        0       0       0  prog
 4     1884      18827K       20         59K        32       0       0  esmtp
 9  1866578   24076114K    61021     607600K        0       0       0  local
=====================================================================
 T  1868462   24094941K    61630     610074K        32       0       0
 C    20542                 1645                    32

数値の見方は、M はプログラム番号で、Mailer と対応しています。msgsfrはメールプログラムからの送信メッセージ数です。上記であれば esmtp が 1884 通です。bytes_fromはメールプログラムからの送信バイト数です。local プログラムからの送信が多いですが、これはメーリングリストのソフトがローカルの mail コマンドを使って配送しているためだと思われます。

msgsto は、メールプログラムの受信メール数です。bytes_to はメールプログラムの受信バイト数です。
msgsrej は拒否されたメール数です。32通のメールが拒否されています。msgsdis は破棄されたメールの数です。msgsqur は隔離されたメーセージ数です。

自動実行してメールで統計情報を送信する

cron で毎日統計情報を送信するように設定します。root で /etc/cron.d/mailstatsとして、

0 0 * * * /usr/sbin/mailstats | mail -s "Daily mail stats" hoge@example.com && cp /dev/null /var/log/mail/statistics

のように記述しています。/dev/null で統計ファイルを上書きするのは、統計情報をクリアするためです。

また、私の場合は毎日の合計数をテキストファイルに記録するようにしています。

0 0 * * * /usr/sbin/mailstats | mail -s "Daily mail stats" hoge@example.com && echo `date +%Y/%m/%d` `/usr/sbin/mailstats -p | grep " T "` >> /var/tmp/msgsum.dat

mailstats コマンドにオプションで -p を指定すると、プログラムが読み取る形式で情報を出力し、統計情報をクリアします。 このコマンドを実行すれば /dev/null をコピーする手間は省けます。T の行のみ抜き出し、msgsum.dat ファイルに追記していきます。ファイルの中身は次のようになります。

2009/09/29 T 1954 51945 8169 186279 27 0 1
2009/09/30 T 1951 52454 5806 218901 15 0 8
2009/10/01 T 1861 56054 5272 143113 25 0 0
2009/10/02 T 1374 17809 4437 45725 11 0 2
2009/10/03 T 663 6657 3129 25439 21 0 2

半角スペースで区切られていますが、それぞれ日付、T(固定)、msgsfr、bytes_from、msgsto、bytes_to、msgsrej、msgsdis、msgsqur の値となっています。これを加工すればメール送受信量のグラフ作成などに使えるでしょう。

コメントはまだありません

No comments yet.

Sorry, the comment form is closed at this time.

33 queries. HTML convert time: 0.081 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2017 @ futuremix.org ログイン