我需要拒绝所有主机名未知或与其地址不匹配的 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 大小显著减小。