我在 CentOS 6.8 上运行 sendmail 服务器。对于端口 25 上的 MTA 连接,我想使用 tcpwrappers 拒绝没有 PTR DNS 记录的主机。
所以我的hosts.allow看起来像:sendmail: ALL EXCEPT UNKNOWN
我的问题是 587 上的邮件提交端口似乎共享此设置。结果是,当前 IP 地址没有 PTR 记录的漫游用户(主要是美国蜂窝网络)在进行身份验证之前就会被拒绝。
我可以通过设置 sendmail:主机中的所有内容允许来解决此问题,但这大约会使端口 25 上的垃圾邮件发送者的垃圾连接数量增加三倍。
有谁知道如何让 sendmail 为端口 25 连接调用 libwrap 但不为将进行身份验证的端口 587 连接调用 libwrap ?
谢谢!
答案1
tcp_wrappers
(最后一个稳定版本:1997 年)可以追溯到互联网的一个尴尬阶段,当时操作系统和应用程序普遍缺乏适当的保护;从那时起,操作系统现在默认配备了防火墙,并且应用程序具有各种可用的业务逻辑(sendmail 的功能和米尔特),以阻止垃圾邮件发送者的沉闷咆哮。这里有问题,因为它是一个单一的库,因此需要两个不同版本的 sendmail ,并且可能需要对 sendmail 进行一些修补,以便一个通过和另一个tcp_wrappers
使用该库。sendmail
sendmailmsp
在这种情况下,sendmail 具有合适的功能,可以拒绝没有 rdns 的连接,但允许通过以下sendmail.mc
定义中继到经过身份验证的连接(cf/README
有关这些的详细信息,以及如何重建,请参阅源代码sendmail.cf
):
FEATURE(`delay_checks')dnl
FEATURE(`require_rdns')dnl
(如果缺乏这样的功能,下一个选择将是通过 milter 执行必要的业务逻辑。)请注意,垃圾邮件发送者的下一个预期举措将是破坏经过身份验证的帐户并通过该帐户发送垃圾邮件,因此日志监控、速率限制和可能需要采取适当的措施来限制和检测此类情况。