查看 Postfix 的实时连接列表

查看 Postfix 的实时连接列表

我在一台 Linux 机器上运行 Postfix,其中有几百个拥有邮箱的本地用户。

有没有办法监控 Postfix 服务的所有传入连接 (SMTP)?例如“IP 地址 xxxx 刚刚连接到 Postfix 服务器”和“IP 地址 yyyy 刚刚断开连接”的实时流?

我想监控所有传入连接,以便我可以查找同一 IP 地址试图向我的用户发送多个垃圾邮件或可能尝试中继的趋势(顺便说一下,它不是开放中继!)。

将所有连接和断开连接(列出 IP 地址)转储到文本文件或系统日志中就很完美了。或者还有其他更好的方法吗?

谢谢!

答案1

postfix 会记录每个进入的连接,日志行如下

Jul  8 16:25:15 swiss postfix/smtpd[11127]: connect from some.host.or.other [192.0.2.1]

因此您可以使用tail -F您的日志文件(在我的系统上是/var/log/mail.log),grep来过滤您想要的行,并观看实时流量。

答案2

上面的海报很接近。

tail允许您查看文件中的最后 10 行。该-f开关允许您查看附加到 maillog 文件的新行。

cd /var/log

tail -f maillog

Ctrl+c逃脱。

看到这已经写入一个名为的文件中/var/log/maillog,不确定为什么要创建另一个文件,除非您想提取特定信息。

如果您只想阅读邮件日志,请使用您最喜欢的编辑器或执行以下操作:

less maillog

按下Enter(回车)键将使文件一次向下移动一行,或者您可以按下该Page Down键进行全屏移动。

按下这个q键你就会逃脱。

答案3

我发现以下内容很有帮助:

tail -f maillog | grep connect

但是如果您愿意的话,您可以 grep 断开连接或特定的 IP 吗?

答案4

这将为您提供 mail.log 文件中所有 IP 的数量,以便您可以识别干扰 IP。

grep connect /var/log/mail.log |grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | sort | uniq -c | sort

使用 ipset 创建黑名单并将其添加到你的 IP 表中

创建黑名单:

ipset create <nameof blacklist> hash:ip (or net) -hashsize 4096

ipset add <nameof blacklist> <IP or network/nn>

匹配黑名单并丢弃:

iptables -I INPUT -m set --match-set <nameof blacklist> src -j DROP
iptables -I FORWARD -m set --match-set <nameof blacklist> src -j DROP

您也许可以编写脚本并自动执行此操作。

相关内容