发现进出口账户发送大量电子邮件。(垃圾邮件)

发现进出口账户发送大量电子邮件。(垃圾邮件)

我有一台配置了多个域的 Exim 服务器。每个域中我都有多个电子邮件帐户。有时配置了其中一个电子邮件帐户的计算机会受到感染并开始发送垃圾邮件。

我曾经使用 Isoqlog 来获取顶级发送电子邮件帐户的报告,但自从 2005 年最后一次更新后,它就不再起作用了。

我需要一种方法来找出过去 24 小时内排名前 50 的垃圾邮件帐户(不是发件人,而是用于验证身份以发送垃圾邮件的帐户。发件人可能是假的,因此没有有效数据)

有没有什么软件包(如 Isoqlog 或类似软件包)可以做到这一点?谢谢

答案1

您不需要复杂的程序来从日志文件中提取信息。Exim4 日志行收到的邮件如下所示:

2020-01-18 02:19:41 1iscm4-0000Nt-TE <= [email protected]\
H=verified_rdns.example.net (helo.example) [192.0.2.1] P=esmtpsa\
X=TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128 CV=no A=dovecot_gssapi:auth_user\
S=3812 [email protected]

信封 上 写明 发件人[email protected], 发送 主机H=verified_rdns.example.net (helo.example) [192.0.2.1]和 收件人 名单tag=value.

我们最感兴趣的是具有A以下形式的值的标签authenticator:auth_user,其中authenticator是名称Exim4 身份验证器您在配置文件中给出了并且auth_user是经过身份验证的用户。

综合以上所有,我们可以使用一个简单的脚本打印日志文件所跨越时间内每个用户发送的电子邮件数量bash

#!/bin/bash 
if [ $# -lt 1 ]; then
    2>& echo Usage: $0 "<exim_mainlog_file>"
    2>& echo Example: $0 /var/log/exim4/mainlog
    exit 1
fi
# To save typing
d='[[:digit:]]'
a='[[:alnum:]]';
pref="^$d\{4\}-$d\{2\}-$d\{2\} $d\{2\}:$d\{2\}:$d\{2\} $a\{6\}-$a\{6\}-$a\{2\}"
logfile="$1"

zgrep "$pref <=" "$logfile" |
grep -oh "A=[[:alnum:]_]\+:[[:alnum:]_]\+" |
cut -d : -f 2 |
sort |
uniq -c |
sort -rn

相关内容