There are a lot of pages explaining how to move a WordPress blog, for example:
http://codex.wordpress.org/Moving_WordPressIn short, you copy the files (for example, using rsync), and you re-create the database on the new system from a mysqldump of the database in the old system. Usually, the only wordpress file needing to be modified is wp-config.php, as it has the details of the database being used.
BTW: If you use ssh and rsync, there is no need to reupload the files again, you can just rsync them from the old system to the new one, that should be faster.
For email, there is not a general recipe to move it, as there are a lot of different SMTP/POP3/IMAP servers out there and each of them works differently.