I'm afraid this is not the best idea, IMO. Mainly because in order to get the old password for the mail account change, you would have to store it as plaintext somewhere. This can be done of course, but it is a breach of the basic trust of keeping user passwords secure.
Another problem is the backend is short of useful hooks, so doing what you suggest could very likely involve core hacks. never a good idea. Also how do you handle the mail account if the user forgets their password? Easy enough to reset the WP password, but the old plaintext password does not (or should not) exist anywhere.
To get around the lack of hooks and core hacks, you could build your own new user form to handle the mail signups, and even the password changes could be handled similarly, but depending on how the mail account handles forgotten passwords, this could still prove to be very difficult.