Я хочу настроить специальную среду SMTP: два разных сервера SMTP, к которым должен быть прозрачный доступ для клиентов SMTP.
Допустим, у меня есть Postfix, совместимый с RFC, работающий на 192.168.0.1:25, и RFC, игнорирующий сервер, обманывающий клиентов, на 192.168.0.1:2525.
Теперь хочу следующее. Большинство соединений должно обрабатываться Postfix, поскольку он прослушивает правильный порт. Но с другими правилами iptables я в настоящее время ОТКЛЮЧАЮ / ОТКЛЮЧАЮ соединения из-за списков RBL, оскорбительного поведения или превышения ограничений; просто для уменьшения нагрузки на сервер Postfix. Теперь я больше не хочу их отбрасывать, а вместо этого перенаправляю соединения на порт 2525. Второй сервер должен действовать как брезент, а затем откладывать / отклонять почту.
Я не могу понять, как пересылать соединения в зависимости от других правил iptables, которые находятся в цепочке INPUT. Там я использую xt_recent и ограничивающие фильтры, чтобы динамически выбирать между ACCEPT и DROP.
Предполагая, что iptables работает на той же машине, где работают и postfix, и другой сервер, вам понадобится правило nat с целевым REDIRECT:
iptables -t nat -A PREROUTING -p tcp -s [address_matching_rbl] --dport 25 -j REDIRECT --to-ports 2525
Также необходимо правило фильтрации для разрешения подключений к порту 2525 в цепочке INPUT. Это правило не обязательно должно соответствовать адресам RBL.
Поскольку вы уже используете iptables для DROP соединений с хостов из черного списка, у вас, вероятно, уже есть список адресов и вы написали правила iptables, использующие его. Вы можете использовать модуль ipset ( http://ipset.netfilter.org/ ), чтобы сделать это сопоставление более эффективным и иметь возможность перезагружать списки адресов без перезагрузки всей конфигурации iptables.