我需要拒绝所有主机名未知或与其地址不匹配的 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
为什么它不起作用?
从这个答案中发现 smtp 连接没有被 hosts.deny 过滤,因为 Postfix 没有引用 tcp-wrappers 库。
hosts.deny 不做这项工作,因为这不是它的目的。
您必须查看一个名为“fail2ban”的应用程序。这就是你所需要的。使用 fail2ban,您可以创建一个策略,当他们被拒绝 n 次时,他们将无法连接 m 分钟。
例如,如果您的策略定义为在接下来的 24 小时内阻止被拒绝的用户,则尝试连接并被拒绝的 ip 89.33.194.240 在接下来的 24 小时内无法再次连接。
您的 mail.log 显着减小了大小。