想要查看过去 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,然后我将其通过管道传输到sort
和uniq -c
,这会将它们聚合为一个组并给出一个数字。最后一个sort -nr
只是以反向方式给我按顺序分组的计数(最大数字在前)。
如果你有不同类型的身份验证,比如说dovecot_plain和dovecot_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 字符串。