Точно не работает, т.к. решение о маршрутизации пакетов от локальных серверов принимается сразу же, как появился соответствующий пакет, и повлиять на это сложно (т.к. непонятно с какого интерфейса он идет и с какого адреса). См. таблицу, которую я привел выше. Использовал различные вариации на темуiptable -t mangle -A OUTPUT -p tcp -d ! $LOCALNET --dport 25 -j MARK --set-mark 0x64
ip rule add fwmark 0x64 table expensive
ip route add default via expesive_gate_ip dev ppp0 table expensive
ip route flush cache
Пакеты идут по маршруту по умолчанию и действительно маркируются в цепочке output, но никуда не перенаправляются, и с этой меткой покидают интерфейс по умолчанию (метка уничтожается). Вот так-то (((.
Временно проблему решил так: указал smtp серверу смартрелей на сервер провайдера, добавил source route
ip rule add from expensive_inteface_ip table expensive
ip rule add to prov_smart_relay_ip table expensive
ip route add default via expesive_gate_ip dev ppp0 table expensive
ip route flush cache