For dnsmasq I found this:
You can control how dnsmasq talks to a server: this forces
queries to 10.1.2.3 to be routed via eth1
server=10.1.2.3@eth1
For smtp.inc fsockopen can replaced like in http://stackoverflow.com/questions/4765269/specify-source-ip-using-fsockopen:
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($sock, '192.168.1.100');
socket_connect($sock, 'stackoverflow.com', 80);
I'm not a friend to make the config more complex with unnecessary routing.