You can't send mail on port 587 to other servers. They are listening on port 25 for anonymous SMTP connections from other mail servers..
You can only use a different port if you are sending through an outbound SMTP gateway/ smarthost that is listening on that same different port and then sends the mail on port 25.
Also, port 587 is the authenticated submittal port for clients. There was no need to make any changes on the Exchange receive connector. Exchange listens on that automatically.
The reason it works with port 587 for yahoo and gmail is that is the standard client submittal port - but it requires authentication.