You want the technical details? You got it! We use the IMAP implementation in PHP with a Javascript incrementing engine. Throw in some jQuery, a little bit of Ajax, and some CSS styling to make it look pretty. It lets us connect to an IMAP server and list folders, email headers, and transfer them all from inside the script. It doesn’t actually physically download the emails, what happens is the script allocates a certain amount of memory for the use of a PHP-based IMAP client. The client connects to both servers, then fetches the header and body into variables. It then pushes those variables to the second connection, making sure to preserve the “read” attribute and timestamp. It also uses the PEEK feature of the PHP implementation if IMAP so it won’t mark all of your emails as “read” on the new server. We increment it so that it doesn’t use too much memory – otherwise it would run out if it tried to take a bunch of attachments into memory!