使用 hosts.deny 拒绝来自未知和未经验证的主机的 smtp 连接

使用 hosts.deny 拒绝来自未知和未经验证的主机的 smtp 连接

我需要拒绝所有主机名未知或与其地址不匹配的 smtp 连接。已尝试在 hosts.deny 中设置:

smtpd: UNKNOWN
smtpd: PARANOID

但 Postfix 日志显示他们仍在联系邮件守护进程。

postfix/smtpd[3426]: warning: hostname server1.reselect.org does not resolve to address 89.33.194.240
postfix/smtpd[3426]: connect from unknown[89.33.194.240]
postfix/smtpd[3426]: NOQUEUE: reject: CONNECT from unknown[89.33.194.240]: 450 4.7.25 Client host rejected: cannot find your hostname, [89.33.194.240]; proto=SMTP
...
postfix/smtpd[3997]: connect from unknown[193.56.29.102]
postfix/smtpd[3997]: NOQUEUE: reject: CONNECT from unknown[193.56.29.102]: 450 4.7.25 Client host rejected: cannot find your hostname, [193.56.29.102]; proto=SMTP

为什么它不起作用?

答案1

已经发现这个答案smtp 连接不会被 hosts.deny 过滤,因为 Postfix 没有引用 tcp-wrappers 库。

答案2

hosts.deny 无法完成这个工作,因为这不是它的目的。

您必须研究一个名为“fail2ban”的应用程序。这就是您所需要的。使用 fail2ban,您可以创建一个策略,当它们被拒绝 n 次时,它们将无法在 m 分钟内连接。

例如,如果您的策略定义为在接下来的 24 小时内阻止被拒绝的用户,那么尝试连接并被拒绝的 ip 89.33.194.240 在接下来的 24 小时内将无法再次连接。

您的 mail.log 大小显著减小。

相关内容