- 论坛徽章:
- 1
|
mrtg+procmail 監看個別 user 進信情形
sendmail 的 maillog 相信大家一定看的一頭霧水,更何況從其中抽取出什麼人收了幾封信及其size,
我來為大家介紹一個簡單的功能,使用 mrtg 的方式來監看每個你想要知道的 user 的進信狀況,
這個方法很簡單,不過最好您巳經有 mrtg 的相關知識了,如此用起來才能心應手.
至於 procmail 這個工具,主要使用 MDA, 在 MTA 收到信件時,若往 Local 傳送時用到,基本上在
sendmail/postfix/qmail...等都見得到它的身影(你有沒有用到就看你自己的設定囉)
1. 創建可以記錄的進信狀況的 log 檔
- $>; vi $USER/.procmailrc
- # 裏面只有一行,抄對您所需要的 user 照抄就好了
- LOGFILE=$HOME/procmail.log
复制代码
這個動作的功能主要在 MTA 在收信到 Local user 信箱時,會呼叫 Mlocal (通常為 procmail),而預設
其會讀取 $HOME/.procmailrc 來做規則判斷,講規則可能太複雜(但很好用),所以我們只要記錄其進信
的狀況及信件大小,所以就可以透過它來做,其產生的內容如:
- $>;cat $HOME/procmail.log
- From root Mon Aug 8 15:36:00 2005
- Subject: Cron <root@log>; /home/www/webmail/intra/mrtg/rrd/rrd-TLD-flow
- Folder: /var/spool/mail/root 633
- From root Mon Aug 8 15:36:30 2005
- Subject: Cron <root@log>; (sh /root/study/cisco_3750.sh
- Folder: /var/spool/mail/root 2289
复制代码
所以,這裏我們可以看到, Folder 有幾個,代表信有幾封,而 Folder 字串最後則代表信件大小,不過如此
parser 這樣的內容會略顯複雜,所以我們可以使用 mailstat 這個指令 (這個指令是 procmail rpm 包就
會附帶進來的)
2. 建立可以讀取出,幾封信,大小的 script
- $>;mailstat -ktm $HOME/procmail.log
- 115047 74 /var/spool/mail/root
复制代码
所以我們可以看到,這個兩個數字,第一個代表總 size , 而第二個則是信件數,所以我們再精化一點,
建立一個 script 檔來供 mrtg 使用
- #!/bin/sh
- # Filename: mailstat.sh
- mailstat -ktm $1 | awk '{print $2"\n"$1/1024}'
复制代码
此處,我將信件數排在前面($2), 而大小則以 KB 計算($1/1024), 因為您若不以 KB 計算,那一封信
有 1000Bytes 時 (這應該很平常), 一封信在圖上的表現會太小,以致於看不到!
3. 建立 mrtg 樣版
[code]
# mrtg 的產出資料存放目錄
WorkDir: /www/htdocs/html/mrtg
# 更新時間,我設為 3600, 以時計,不以平常的 5 分計,interval 太小對系統會造成 loading
Refresh: 3600
Interval: 3600
# 我用 Big5 , 視您的環境
Language: Big5
# perhour 表示要小時的值,而非平常的 5 分鐘值
Options[_]: growright, noinfo,perhour,absolute
#-----------------------Target Begin------------------------------------
# Target 取值接取程式
Target[my-sendmail]:`sh /etc/mrtg/mailstat.sh /root/procmail.log`
# 最大值,視您的環境,也可不設這兩個
MaxBytes1[my-sendmail]:1000
MaxBytes2[my-sendmail]: 10000000
Title[my-sendmail]: abel fake SMTP incoming status
Legend1[my-sendmail]: |
|