How to migrate vpopmail multiple servers (mail
accounts) to single vpopmail (qmail) install
I needed to migrate
vpopmail/domains multiple directories
stored on 2 servers to a single vpopmail install.
Merging the two vpopmails user
Maildir/ stored accounts
actually actually was quite simple, though it needed a bit of
tweaks.
Here is how I migrated the two vpopmail installations to reside on
the one
vpopmail mail storage.
1. I used tar to archive the two vpopmail installations on the
two different
First I logged in with root over
ssh on the first node,
e.g.:
qmail-server1:~# cd /home/vpopmail/
qmail-server1:/home/vpopmail# ionice -c 3 tar -czvf
vpopmail1_$(date +%Y%m%d).tar.gz domains/
...
Then logged in on the second machine:
qmail-server2:~# cd /home/vpopmail
qmail-server2:/home/vpopmail# ionice -c 3 tar -czvf
vpopmail2_$(date +%Y%m%d).tar.gz domains/
I used
ionice -c 3 which instructs the
tar archive of
vpopmail directory to be created using idle (sparing the hard disk)
from I/O overheads.
Sometimes not using
ionice especially the case where
hundreds of mail domains exist in
domains/ could overload
the server and stop the qmail and even sometimes ssh from properly
responding for a very long periods as well as delaying the work of
the mail server and failure to accept some user connections to pop3
or smtp protocols. I found out about the exisnte of
ionice
command just recently, reading some blog online. The command is
absolute "must use", always when have to archive directories with
tens of thousands of files and subdirectories. It's also nice in
general, also on some
copy or
move operations on GNU
/ Linux, ionice is truly great.
Anyways after a while I had my both archives on both servers
existing, so I used sftp (one can use scp as well) to transfer the
archives to the
newly configured qmail + vpopmail
installation.
2. Use sftp or scp to copy the archives to the new configured
vpopmail server
Again on both servers I had to execute, sftp I prefer sftp as I
love being interactive on the shell ;)
qmail-server1:/home/vpopmail# sftp
root@my-vpopmail-server-host.com
Password:
Connected to my-vpopmail-server-host.com.
sftp> cd /home/vpopmail
sftp> put vpopmail1_$(date +%Y%m%d).tar.gz
...
sftp> exit
Once again the same commands has to be issued on the second vpomail
server, where the second
domains/ mail accounts archive was
just made:
qmail-server2:/home/vpopmail# sftp
root@my-vpopmail-server-host.com
Password:
Connected to my-vpopmail-server-host.com.
sftp> cd /home/vpopmail
sftp> put vpopmail2_$(date +%Y%m%d).tar.gz
...
sftp> exit
Now as both of the archives are uploaded, next step is to login to
the
root@my-vpopmail-server-host.com server, where the two
archives were just uploaded:
qmail-server1:/var/domains# ssh
root@my-vpopmail-server-host.com
my-vpopmal-server-host:~# cd /home/vpopmail
my-vpopmail-server-host:/home/vpopmail# tar -zxvf vpopmail1_$(date
+%Y%m%d).tar.gz domains/
...
Next on, the second vpopmail2_$(date +%Y%m%d).tar.gz is
untarred:
3. Unarchive the uploaded vpopmail*.tar.gz archives
my-vpopmail-server-host:/home/vpopmail# tar -zxvf
vpopmail2_$(date +%Y%m%d).tar.gz domains/
...
Now, if the two archives are properly tarred and no errors are
returned (that was my case thx God).
4. Use a shell script to generate a script, to later change all
user emails passwords on the my-vpopmail-server-host.com
The next thing which has to be done is that all email accounts with
passwords are recreated with vpopmail's
/home/vpopmail/bin/vpasswd command. Even though the domains
are existing with the respective
vpasswd and
vpasswd.cdb in each mailbox on the new server
my-vpopmail-server-host still the mailboxes were not visible
by vpopmail. To make all the mailboxes with the correct passwords
be responding on the new vpopmail connections via IMAP and POP3
mail fetch protocols, I wrote a small script which does change the
passwords of all mailboxes just transferred from the two servers to
my-vpopmail-server-host
The script is very simple and actually is not too automated, but at
least it works. I've called my script to
dump
all the user passwords for all the vpopmail filesystem existing
mail domains dump_vpopmail_mail_passwords.sh
To use the script its necessery that the script is downloaded on
both the vpopmail mail servers from which
domains/ directory
is migrated, e.g.:
qmail-server1:/home/vpopmail# wget
http://pc-freak.net/bshscr/dump_vpopmail_mail_passwords.sh
...
qmail-server1:/home/vpopmail# sh dump_vpopmail_mail_passwords.sh
>> change_mail_account_pwds.sh
Same procedure goes on the second vpopmail server
qmail-server2:
qmail-server2:/home/vpopmail# wget
http://pc-freak.net/bshscr/dump_vpopmail_mail_passwords.sh
...
qmail-server2:/home/vpopmail# sh dump_vpopmail_mail_passwords.sh
>> change_mail_account_pwds.sh
5. Upload the change_mail_accounts_pwds.sh shell script
created on the two qmail mail servers to
dump_vpopmail_mail_passwords.sh
Again I used sftp to upload the two change_mail_account_pwds.sh
bash scripts:
qmail-server1:/home/vpopmail# sftp
root@my-vpopmail-server-host.com
Password:
Connected to my-vpopmail-server-host.com.
sftp> put change_mail_account_pwds.sh
change_mail_account_pwds1.sh
...
sftp> exit
sftp>
qmail-serve2:/home/vpopmail# sftp
root@my-vpopmail-server-host.com
Password:
Connected to my-vpopmail-server-host.com.
sftp> put change_mail_account_pwds.sh
change_mail_account_pwds2.sh
...
sftp> exit
6. Execute change_mail_account_pwds1.sh and
change_mail_account_pwds2.sh on
my-vpopmail-server-host.com
On the 3rd server where the two vpopmail domains are migrated
my-vpopmail-server-host.com , from
/home/vpopmail
invoke the above two scripts:
root@my-vpopmail-server-host.com:/home/vpopmail# sh
change_mail_account_pwds1.sh
root@my-vpopmail-server-host.com:/home/vpopmail# sh
change_mail_account_pwds2.sh
The two scripts will contain list with all the two migrated
vpopmail user mail addresses in a format similar to:
vpasswd mail_account@mail-domain.com password1
vpasswd mail_account1@mail-domain.com some_password
vpasswd mail_accountX@mail-domain.com other_password
etc..
After following this steps, all the mail accounts (or most of them
;)) should be merged from the two servers on the new configured
vpopmail on my-vpopmail-server-host.com host.
The up-described procedure could be literally followed with
migratingm any number of vpopmail /home/vpopmail/domains
user email accounts.
If it has to be mass deployed based, its coparatively easy even to
write an automated script to do the various aforementioned steps
without any user interaction.
I've seen also some other explanations on how to migrate
qmail.jsm1.net , but honestly was too lazy to read them, so
I just came up with the ways described here.
One important note to make here is always to make backups, this
steps worked for me but I can't guarantee this migration tutorial
will work at all. I hope this helps somebody out there. Cheers
;)