The thing is how the mangling works in the output chain. First of all, an output packet is routed using the main table, which includes assignment of the source address, which is the pref-src one if specified for the route or the IP address associated to the out-interface otherwise. The mangle rules are only matched afterwards, and if a routing-mark is assigned there, the packet gets routed again using that routing-mark, but its source address remains unchanged unless you use the srcnat table to adjust it.
Ahh. That makes sense.
Exactly, I am assigning a routing-mark for the PPTP tunnel, and in the main table it first matches the 0.0.0.0/0 route, thus assigning the public IP.
So the packets originated in the router output with the correct IP, should I src-nat based on Out-interface, Routing-mark or any of them?
/ip firewall nat
add chain=srcnat action=src-nat to-addresses=192.168.1.250 out-interface=pptp_home2
add chain=srcnat action=src-nat to-addresses=192.168.1.250 routing-mark=rmark_home2
And won't this also affect the src-address of the traffic that is being forwarded?