想要查看过去 24 小时的 exim 日志并总结每个用户的电子邮件总数,请建议我命令
我知道如何查看当前队列中的电子邮件……但我想找出过去 24 小时内哪些用户发送的电子邮件数量最多。
这可能取决于您的日志记录设置方式,但我认为这适用于默认系统:
grep -oP "A=\K([A-Za-z0-9_.:]+)" /var/log/exim4/mainlog | sort | uniq -c | sort -nr
Run Code Online (Sandbox Code Playgroud)
这将输出如下内容:
151 dovecot_plain:grafana
12 dovecot_plain:jolt
6 dovecot_plain:banana
2 dovecot_login:banana
Run Code Online (Sandbox Code Playgroud)
我在这里做的是找到A=,其中包含用户名以及它们是如何从/var/log/exim4/mainlog进行身份验证的,然后我将它传送到sortand 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
Run Code Online (Sandbox Code Playgroud)
和输出:
151 grafana
12 jolt
8 banana
Run Code Online (Sandbox Code Playgroud)
注意:我没有考虑 24 小时的限制,因为这也取决于日志记录的设置方式,而且它变得更加复杂,我认为这是一个好的开始。否则,您需要以某种方式使用 grep 过滤日志时间戳以过滤日期,然后将其通过管道传输到我的 grep 字符串。
| 归档时间: |
|
| 查看次数: |
2019 次 |
| 最近记录: |