Linux系统管理工具包 监视邮件的使用情况.docx
- 文档编号:12120485
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:22
- 大小:26.34KB
Linux系统管理工具包 监视邮件的使用情况.docx
《Linux系统管理工具包 监视邮件的使用情况.docx》由会员分享,可在线阅读,更多相关《Linux系统管理工具包 监视邮件的使用情况.docx(22页珍藏版)》请在冰豆网上搜索。
Linux系统管理工具包监视邮件的使用情况
Linux系统管理工具包:
监视邮件的使用情况
本书网络下载内容丰富,分享给大家学习。
本文研究用于报告电子邮件使用情况,以及获得邮箱使用情况统计信息的方法。
电子邮件日志可以提供有关您的用户及其电子邮件使用习惯的大量信息,包括他们使用电子邮件的频繁程度。
根据具体使用的UNIX系统,您甚至可以收集一些更加详细的信息,如确定哪些用户正高效地使用他们的文件夹、哪些用户能够从进一步的培训和建议中受益。
关于本系列
典型的UNIX管理员拥有一套经常用于辅助管理过程的关键实用工具、诀窍和系统。
存在各种用于简化不同过程的关键实用工具、命令行链和脚本。
其中一些工具来自于操作系统,而大部分的诀窍则来源于长期的经验积累和减轻系统管理员工作压力的要求。
本系列文章主要专注于最大限度地利用各种UNIX环境中可用的工具,包括简化异构环境中的管理任务的方法。
分析电子邮件日志
对于不同的电子邮件处理程序所生成的日志,其中可能包含大量有价值的信息。
在这些日志中具体包含哪些信息,这取决于您正使用的邮件系统(sendmail、postfix、qmail等等),但下面列出了一些您可以提取的信息的示例,具体包括:
*电子邮件收发速率和数量
*每个用户的电子邮件收发速率
*发送和接收电子邮件的常用主机和域
*垃圾邮件和病毒的数量,并进行过滤
分析日志可以为您提供有关您的组织如何使用电子邮件的有价值的信息。
对日志进行解析可能是一项非常复杂的处理过程,并且解析结果的质量在很大程度上取决于日志的格式,以及在解析文件以获取相关信息的过程中所涉及的复杂程度。
例如,如果您查看由postfixmailtransferagent(MTA)产生的日志,那么您可以看到,每一条消息的信息分布在多行内容中(请参见清单1)。
清单1.从原始电子邮件日志中提取信息
Nov1703:
17:
34narcissuspostfix/smtpd[14281]:
connectfromlocalhost[127.0.0.1]
Nov1703:
17:
34narcissuspostfix/smtpd[14281]:
4F4CB1109404:
client=localhost[127.0.0.1]
Nov1703:
17:
34narcissuspostfix/cleanup[14278]:
4F4CB1109404:
message-id=
Nov1703:
17:
34narcissuspostfix/qmgr[104]:
4F4CB1109404:
from=
Nov1703:
17:
34narcissuspostfix/smtpd[14281]:
disconnectfromlocalhost[127.0.0.1]
Nov1703:
17:
34narcissuspostfix/smtp[14279]:
DBA5B11093FD:
to=
status=sent(2502.6.0Ok,i
d=08640-07,fromMTA([127.0.0.1]:
10025):
250Ok:
queuedas4F4CB1109404)
Nov1703:
17:
34narcissuspostfix/qmgr[104]:
DBA5B11093FD:
removed
Nov1703:
17:
34narcissuspostfix/pipe[14283]:
4F4CB1109404:
to=
status=sent()
Nov1703:
17:
34narcissuspostfix/qmgr[104]:
4F4CB1109404:
removed
Nov1703:
20:
07narcissuspostfix/smtpd[14355]:
connectfrom[192.168.0.110]
Nov1703:
20:
07narcissuspostfix/smtpd[14355]:
disconnectfrom[192.168.0.110]
Nov1703:
20:
07narcissuspostfix/smtpd[14355]:
connectfrom[192.168.0.110]
Nov1703:
20:
07narcissuspostfix/smtpd[14355]:
disconnectfrom[192.168.0.110]
Nov1703:
23:
16narcissuspostfix/smtpd[14410]:
connectfromf048226119.adsl.alicedsl.de[78.48.226.119]
Nov1703:
23:
17narcissuspostfix/smtpd[14410]:
6CAAE1109461:
client=f048226119.adsl.alicedsl.de[78.48.226.119]
Nov1703:
23:
17narcissuspostfix/cleanup[14411]:
6CAAE1109461:
message-id=<000901c828c9$037c1e48$b9cc3eb7@ggpxddd>
Nov1703:
23:
17narcissuspostfix/qmgr[104]:
6CAAE1109461:
from=
Nov1703:
23:
18narcissuspostfix/smtpd[14410]:
disconnectfromf048226119.adsl.alicedsl.de[78.48.226.119]
Nov1703:
23:
30narcissuspostfix/smtpd[14414]:
connectfromlocalhost[127.0.0.1]
Nov1703:
23:
30narcissuspostfix/smtpd[14414]:
62E941109473:
client=localhost[127.0.0.1]
Nov1703:
23:
30narcissuspostfix/cleanup[14411]:
62E941109473:
message-id=<000901c828c9$037c1e48$b9cc3eb7@ggpxddd>
Nov1703:
23:
30narcissuspostfix/qmgr[104]:
62E941109473:
from=<>,size=3220,nrcpt=1(queueactive)
Nov1703:
23:
30narcissuspostfix/smtpd[14414]:
disconnectfromlocalhost[127.0.0.1]
幸运的是,通过使用为每封电子邮件所给定的唯一引用编号,您可以在系统中标识对每个消息的处理过程。
例如,清单2显示了引用编号为4F4CB1109404的一封电子邮件,您可以使用该编号获得相关的信息,以确定要提取哪些内容。
清单2.从单个邮件传输中提取相关信息
Nov1703:
17:
34narcissuspostfix/smtpd[14281]:
4F4CB1109404:
client=localhost[127.0.0.1]
Nov1703:
17:
34narcissuspostfix/cleanup[14278]:
4F4CB1109404:
message-id=
Nov1703:
17:
34narcissuspostfix/qmgr[104]:
4F4CB1109404:
from=
Nov1703:
17:
34narcissuspostfix/pipe[14283]:
4F4CB1109404:
to=
()
Nov1703:
17:
34narcissuspostfix/qmgr[104]:
4F4CB1109404:
removed
从提取的信息中,您可以看到能够从日志中获取的不同信息类型,如:
*日期和时间
*发送者
*接收者
*消息大小
*消息计数
通过对文件内容进行解析,您可以为这些不同元素的组合创建一些有意义的统计信息,以便更清楚地了解电子邮件的使用方式。
对日志文件进行解析以获取相关信息
要解析相关的内容,您需要标识出每封不同的电子邮件。
要做到这一点是完全可能的,因为MTA为每封电子邮件嵌入了唯一的ID,通常插入到日志文件输出中。
例如,在下面一行内容中:
Nov1703:
17:
34narcissuspostfix/pipe[14283]:
4F4CB1109404:
to=
relay=cyrus,delay=0,status=sent()
唯一的ID是十六进制值4F4CB1109404,并且您还可以从这一行内容中确定接收者的地址。
可以在包含相同的嵌入ID的另一行内容中找到这封电子邮件的发送者:
Nov1703:
17:
34narcissuspostfix/qmgr[104]:
4F4CB1109404:
from=\
这些信息不一定是顺序的,因为MTA可能同时处理多封电子邮件,并且在处理过程的不同部分完成时,会将信息写入到日志中。
从上面的一行内容中,您还可以看到电子邮件的总计大小(7632字节)以及接收者的数目(一个)。
清单3显示了一个Perl脚本,该脚本可以对信息进行整理,然后输出电子邮件数量及其总计大小的汇总统计信息。
清单3.对日志进行解析以获得一些有用的统计信息
1.#!
/usr/bin/perl
2.#
3.#Scripttoextractemailstatisticsfromlogfiles
4.
5.#Time:
:
ParseDatewillbeusedparsethetimeintoanepoch
6.#value,andthenDateTimecanbeusedtoreformatthedate
7.#again
8.
9.useTime:
:
ParseDate;
10.useDateTime;
11.
12.#Parsethefirstfileonthecommandline
13.
14.open(MAIL,$ARGV[0])ordie"Couldn'topen$ARGV[0]:
$!
\n";
15.
16.#Createastructuretoholdthestats
17.
18.my$mails={};
19.
20.#Parseeachlineofthefile
21.
22.while(
23.{
24. chomp;
25. my$mailid=0;
26.
27.#Lookforthe12digithexmailID
28.
29. if(m/:
([A-Z0-9]{12}):
/)
30. {
31. $mailid=$1;
32. }
33.
34.#ExtractthedateandparseitintoanEpochvalue
35.
36. if(m/(\S+\d+\d{2}:
\d{2}:
\d{2}).*?
$mailid/)
37. {
38. $mails->{$mailid}->{date}=parsedate($1);
39. }
40.
41.#Extractthesenderaddressandemailsize
42.
43. if(m/$mailid:
from=<(.*?
)>,size=(\d+),/)
44. {
45. $mails->{$mailid}->{from}=$1;
46. $mails->{$mailid}->{size}=$2;
47. }
48.
49.#Extracttherecipient
50.
51. if(m/$mailid:
to=<(.*?
)>/)
52. {
53. $mails->{$mailid}->{to}=$1;
54. }
55.}
56.
57.close(MAIL);
58.
59.#Compiletogetherthestatsbyparsingtheformatted
60.#informationintoanothersummarystructure
61.
62.my$mailstats={};
63.
64.foreachmy$mailid(keys%{$mails})
65.{
66.
67.#Don'tcreateasummaryentryifwedon'thaveenoughinformation
68.#(sender/recipientisempty)
69.
70. if(!
defined($mails->{$mailid}->{to})||
71. !
defined($mails->{$mailid}->{from})||
72. $mails->{$mailid}->{to}!
~m/[a-z]/||
73. $mails->{$mailid}->{from}!
~m/[a-z]/)
74. {
75. next;
76. }
77.#Countthenumberofemailstoeachrecipient
78. $mailstats->{$mails->{$mailid}->{to}}->{count}++;
79.
80.#Sumuptheemailsizetoeachrecipient
81. $mailstats->{$mails->{$mailid}->{to}}->{size}+=
82. $mails->{$mailid}->{size};
83.
84.#Countthenumberofemailsfromeachsender
85. $mailstats->{$mails->{$mailid}->{from}}->{count}++;
86.
87.#Sumuptheemailsizefromeachsender
88. $mailstats->{$mails->{$mailid}->{from}}->{size}+=
89. $mails->{$mailid}->{size};
90.
91.#Sumupthesameinformation,butorganizedonadatebydatebasis
92. if(defined($mails->{$mailid}->{date}))
93. {
94. my$dt=DateTime->from_epoch(
95. epoch=>$mails->{$mailid}->{date})->ymd('');
96. my$mailto=$mails->{$mailid}->{to};
97. my$mailfrom=$mails->{$mailid}->{from};
98.
99. $mailstats->{$mailto}->{_date}->{$dt}->{count}++;
100. $mailstats->{$mailto}->{_date}->{$dt}->{size}+=
101. $mails->{$mailid}->{size};
102.
103. $mailstats->{$mailfrom}->{_date}->{$dt}->{count}++;
104. $mailstats->{$mailfrom}->{_date}->{$dt}->{size}+=
105. $mails->{$mailid}->{size};
106. }
107.}
108.
109.#Dumpouttheinformationshowmailcountsandmailsizes
110.#onamailaddressbasis
111.
112.foreachmy$address(sortkeys%{$mailstats})
113.{
114.#Onlyshowinformation fromemailaddressesthatare
115.#local
116. if($address=~m/@.*example\.com$/)
117. {
118. printf('%-40s%5d%9d',
119. $address,
120. $mailstats->{$address}->{count},
121. $mailstats->{$address}->{size});
122. print("\n");
123. }
124.}
复制代码
对示例日志文件运行该脚本,将产生一些相关的统计信息,从而显示指定域的邮件数量和大小(请参见清单4)。
您所打印出的实际信息要比您可能产生的信息少得多。
可以对统计信息进行整理,以便输出每天的信息,这样做可以帮助显示每天的邮件数量,以使您可以更好地了解邮件服务器上的负载级别。
清单4.生成的统计信息
023649@ 5 8922
admin@ 5 13141
answersquad@ 50 348712
buy@ 79 806097
buy@ 2 2911
dev@ 165 1010980
dev@ 8 94430
finance@ 4 14493
flummox@ 203 858775
klhxs@ 4 8080
dj@ 96 703754
dj@ 2 2063
mcwhoever@ 7 137185
mlists@ 38 473165
play@ 26 155220
postmaster@ 5 15561
fhf@ 101 836863
fhffilter@
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux系统管理工具包 监视邮件的使用情况 Linux 系统管理 工具包 监视 邮件 使用 情况