You may want to migrate larger number of email accounts to another server. If there are even different types of mail servers, than imapsync is one of the best solutions for migration. With script below, you’ll be able to migrate multi accounts without repeating and running imapsync again and again.
Here is the script. Just create file, e.g. mail-migration.sh, and paste code below in it.
#!/bin/bash # Source and destination mail server setting SERVER1=post.literal.si SERVER2=cp2.hosterdam.com # Select appropriate auth mechanism. #AUTHMECH1="--authmech1 LOGIN" #AUTHMECH2="--authmech2 LOGIN" # Uncomment if you want to start test/dryrun only. No emails will be transfered! #TESTONLY="--dry" # Path to imapsync imapsync=/usr/bin/imapsync # Users file if [ -z "$1" ] then echo "No users text file given." exit fi if [ ! -f "$1" ] then echo "Given users text file \"$1\" does not exist" exit fi # start loop { while IFS=';' read u1 p1 u2 p2; do $imapsync ${TESTONLY} ${AUTHMECH1} --host1 ${SERVER1} --user1 "$u1" --password1 "$p1" ${AUTHMECH2} --host2 ${SERVER2} --user2 "$u2" --password2 "$p2" done ; } < $1
Don’t forget to chmod your script so that will be executable.
chmod +x mail-migration.sh
Now you’ll have to create a simple text file that will contain login informations for each email account that you want to transfer. Create text file, for example, mail-users.txt and add login informations like shown bellow. Login informations must be separated with ;. username1 is username on old server, username2 is username on new server.
username1@domain.com;password1;username2;password2 anotheruser1@domain.com;password1;anotheruser2@domain.com;password2 . . .
Finaly, lets transfer emails. Simply run your script like shown below. Use text file with login informations that you created. Imapsync will try to transfer all accounts that are in mail-users.txt.
root@myserver [~]# ./migrate-mail.sh mail-users.txt