If it stops all traffic, it's probably a TCL error. What do your logs say?
The iRule also doesn't match your logic as you explained it... Do you always want 118.143.13.0/24 and 203.186.55.0/24 to bypass pool 1? If so you need to do those checks first and not AFTER the checks for port.
Also you're checking the client (source or as the docs say remote) port. You need to be checking the local port (TCP::local_port) if I understand your explanation correctly.
In order for you to understand what's happening, I'd also sprinkle the relevant log messages through the code... e.g.
Oh.. WIth those logic errors, if you don't have a default pool, youll be getting all your other clients falling through. Because your clients will never be coming from port 25 or 110... (Windows will use 1701/1723 for src ports, but Unix won't).
H