You can use the Exchange Migration Wizard to accomplish this. You can perform the work as a 2 step process, (export from first Exchange server, then import to 2nd), or if the 2 Exchange servers have the ability to communicate with each other then you can do it as a single step. The wizard is located on the server with Exchange installed. Go to START – PROGRAMS – MICROSOFT EXCHANGE – DEPLOYMENT and find the Migration Wizard.
Your other option is to use the tool called ExMerge.exe. That tool is located in “C:\Program Files\Exchsrvr\bin” on the Exchange server, or you may need to download it from Microsoft. You must edit the ExMerge.ini file before running the tool. That tool can use a graphical wizard, or command line and relevant switches. You should be aware that if you choose to use ExMerge and dump the emails (export to PST), that the PST files are the older format, and thus have a 2GB limit. If a person’s mailbox is larger than 2GB then you’ll want to export that mailbox by date or some other reasonable criteria into multiple PST files. You can then import those PST’s into the new Exchange server.
In preparation for the work you will need to make sure that you have the required mailbox access on both the old Exchange server and the new Exchange server. The Domain Administrator does NOT have the required permissions by default. You will need to obtain, edit, and run the GrantMailboxPermissions.vbs script file.
For the Public Folders there is an ExchSync tool, but I didn’t have luck using that. When I did this work I connected to the old Exchange server using Outlook and manually exported the Public Folders. I then used Outlook to connect to the new Exchange server and manually imported them. This seemed a LOT faster than all the futzing and fiddling I did trying to get the ExchSync tool to work.