免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3131 | 回复: 7
打印 上一主题 下一主题

[Mail] mrtg+procmail 監看個別 user 進信情形 [复制链接]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-08 16:27 |只看该作者 |倒序浏览
mrtg+procmail 監看個別 user 進信情形

sendmail 的 maillog 相信大家一定看的一頭霧水,更何況從其中抽取出什麼人收了幾封信及其size,
我來為大家介紹一個簡單的功能,使用 mrtg 的方式來監看每個你想要知道的 user 的進信狀況,
這個方法很簡單,不過最好您巳經有 mrtg 的相關知識了,如此用起來才能心應手.
至於 procmail 這個工具,主要使用 MDA, 在 MTA 收到信件時,若往 Local 傳送時用到,基本上在
sendmail/postfix/qmail...等都見得到它的身影(你有沒有用到就看你自己的設定囉)

1. 創建可以記錄的進信狀況的 log 檔

  1. $>; vi $USER/.procmailrc
  2. # 裏面只有一行,抄對您所需要的 user 照抄就好了
  3. LOGFILE=$HOME/procmail.log
复制代码

這個動作的功能主要在 MTA 在收信到 Local user 信箱時,會呼叫 Mlocal (通常為 procmail),而預設
其會讀取 $HOME/.procmailrc 來做規則判斷,講規則可能太複雜(但很好用),所以我們只要記錄其進信
的狀況及信件大小,所以就可以透過它來做,其產生的內容如:

  1. $>;cat $HOME/procmail.log
  2. From root  Mon Aug  8 15:36:00 2005
  3. Subject: Cron <root@log>; /home/www/webmail/intra/mrtg/rrd/rrd-TLD-flow
  4.   Folder: /var/spool/mail/root                                              633
  5. From root  Mon Aug  8 15:36:30 2005
  6. Subject: Cron <root@log>; (sh /root/study/cisco_3750.sh
  7.   Folder: /var/spool/mail/root                                             2289
复制代码

所以,這裏我們可以看到, Folder 有幾個,代表信有幾封,而 Folder 字串最後則代表信件大小,不過如此
parser 這樣的內容會略顯複雜,所以我們可以使用 mailstat 這個指令 (這個指令是 procmail rpm 包就
會附帶進來的)

2. 建立可以讀取出,幾封信,大小的 script

  1. $>;mailstat -ktm $HOME/procmail.log
  2. 115047      74 /var/spool/mail/root
复制代码

所以我們可以看到,這個兩個數字,第一個代表總 size , 而第二個則是信件數,所以我們再精化一點,
建立一個 script 檔來供 mrtg 使用

  1. #!/bin/sh
  2. # Filename: mailstat.sh
  3. 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]:

论坛徽章:
0
2 [报告]
发表于 2005-08-09 11:27 |只看该作者

mrtg+procmail 監看個別 user 進信情形

[quote]原帖由 "abel"][/quote 发表:


赞一个~ 详细+实用~   

论坛徽章:
0
3 [报告]
发表于 2005-08-09 11:42 |只看该作者

mrtg+procmail 監看個別 user 進信情形

[quote]原帖由 "abel"][/quote 发表:


P.S. abel 兄 的做法让我想起,其实maildrop也客实现类似的功能。或者,分析maillog也可以,只不过maillog体积大,而且是全局的。所以效率不如楼主的per user 分析。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2005-08-09 11:50 |只看该作者

mrtg+procmail 監看個別 user 進信情形

原帖由 "hzqbbc" 发表:


P.S. abel 兄 的做法让我想起,其实maildrop也客实现类似的功能。或者,分析maillog也可以,只不过maillog体积大,而且是全局的。所以效率不如楼主的per user 分析。

是的,不走 maillog 是因為這個東西體積大, 跑久了的系統分析起一個 log 都很費
勁, 而且若 by user, 那肯定更加費資源,所以從 user log 著手可能是較容易且實
際. 若 procmail 的 log 跑久了也是會長大,此時刪除之對 procmail 不會有影響
(maillog 會哦,因為它是 syslogd 在控制的).

maildrop 怎麼做我就不清楚了,這需要這方面熱心的人來補充了

论坛徽章:
0
5 [报告]
发表于 2005-08-09 12:02 |只看该作者

mrtg+procmail 監看個別 user 進信情形

原帖由 "abel" 发表:

是的,不走 maillog 是因為這個東西體積大, 跑久了的系統分析起一個 log 都很費
勁, 而且若 by user, 那肯定更加費資源,所以從 user log 著手可能是較容易且實
際. 若 procmail 的 log 跑久了也是會長大,此時刪除?.........


其实分析maillog也是可以的。性能也不会差。不过不能用常规的cat, grep,awk大法,得写个程序,实时的监视log的增长,这样效能就不错了。

至于说log太大,可以logrotate的。问题不大。但是明显要麻烦于cat/grep/awk之类的shell大法  

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2005-08-09 12:20 |只看该作者

mrtg+procmail 監看個別 user 進信情形

原帖由 "hzqbbc" 发表:


其实分析maillog也是可以的。性能也不会差。不过不能用常规的cat, grep,awk大法,得写个程序,实时的监视log的增长,这样效能就不错了。

至于说log太大,可以logrotate的。问题不大。但是明显要麻烦于cat/grep..........

嗯~是的, hzqbbc 兄確實學究天人 .
只是 maillog 要 control 的條件實在太多(log 內容的多樣性,再加上體積 , 及 user 劃分) ...,這是寫時所以不考慮的因素

不過您的 APF 似乎也可以派上用場...尤其又沒有 MTA dependences 的問題
只可惜我對此道並沒有什麼研究

论坛徽章:
0
7 [报告]
发表于 2006-06-01 11:22 |只看该作者
如果是针对一个域呢?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
8 [报告]
发表于 2006-06-01 11:33 |只看该作者
原帖由 牙齿晒太阳 于 2006-6-1 11:22 发表
如果是针对一个域呢?

一個域 ? 我記得沒錯的話你是用 qmail 的 ?
一個域只要在 procmail 的地方做好
LOG="...
"
之類的設定,再用 mailstat 就可以算出來結果了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP