我想设置一个特殊的 SMTP 环境:两个不同的 SMTP 服务器,应该可以从 SMTP 客户端透明地访问。
假设我有一个在 192.168.0.1:25 运行的符合 RFC 的 Postfix,以及一个在 192.168.0.1:2525 运行的欺骗客户端的 RFC 忽略服务器。
现在我想要以下内容。大多数连接应该由 Postfix 处理,因为它正在监听正确的端口。但是,使用不同的 iptables 规则,我目前会由于 RBL 列表、滥用行为或超出限制而拒绝/丢弃连接;只是为了减少 Postfix 服务器上的负载。现在我不再想丢弃它们,而是将连接转发到端口 2525。第二台服务器将充当 tarpit,然后延迟/拒绝邮件。
我不知道如何根据 INPUT 链中的其他 iptables 规则转发连接。在那里,我使用 xt_recent 和限制过滤器来动态决定 ACCEPT 和 DROP。
答案1
假设 iptables 在 postfix 和其他服务器都运行的同一台机器上运行,您需要一个带有目标 REDIRECT 的 nat 规则:
iptables -t nat -A PREROUTING -p tcp -s [address_matching_rbl] --dport 25 -j REDIRECT --to-ports 2525
还需要过滤规则以允许连接到链 INPUT 中的端口 2525。此规则不必与 RBL 地址匹配。
由于您已经使用 iptables 删除来自黑名单主机的连接,因此您可能已经拥有地址列表并已使用它编写了 iptables 规则。您可以使用模块 ipset (http://ipset.netfilter.org/) 以使这种匹配工作更高效,并且能够重新加载地址列表,而无需重新加载整个 iptables 配置。