Exim 查找每个用户过去 24 小时内发送的电子邮件总数

Exim 查找每个用户过去 24 小时内发送的电子邮件总数

想要查看过去 24 小时的 exim 日志并汇总每个用户的电子邮件总数,请向我推荐命令

我知道如何查看当前队列中的电子邮件...但我想找出哪些用户在过去 24 小时内发送了最多的电子邮件。

答案1

这可能取决于您的日志记录设置方式,但我认为这在默认系统上可以起作用:

grep -oP "A=\K([A-Za-z0-9_.:]+)" /var/log/exim4/mainlog | sort | uniq -c | sort -nr

输出内容如下:

151 dovecot_plain:grafana
 12 dovecot_plain:jolt
  6 dovecot_plain:banana
  2 dovecot_login:banana

我在这里做的是寻找答案=其中包含用户名以及他们是如何进行身份验证的/var/log/exim4/mainlog,然后我将其通过管道传输到sortuniq -c,这会将它们聚合为一个组并给出一个数字。最后一个sort -nr只是以反向方式给我按顺序分组的计数(最大数字在前)。

如果你有不同类型的身份验证,比如说dovecot_plaindovecot_login但使用相同的用户名,那么摆脱它的最简单方法是放入另一个 grep,只获取“:”之后的内容,如下所示:

grep -oP "A=\K([A-Za-z0-9_.:]+)" /var/log/exim4/mainlog | grep -oP ":\K(.*)" | sort | uniq -c | sort -nr

输出结果如下:

151 grafana
 12 jolt
  8 banana

笔记:我没有考虑 24 小时的限制,因为这还取决于日志的设置方式,而且会变得更加复杂,我认为这是个好的开始。否则,您需要以某种方式使用 grep 过滤日志时间戳以筛选日期,然后将其通过管道传输到我的 grep 字符串。

相关内容