При построении резервного почтового сервера, нарвался на то, что Imapsync стал платным. Испытав культурный шок, прочитав предложение о покупке сурсов - Buy latest imapsync Perl source code for 50 EUR , я впал задумчивость. На горизонте светил классический вопрос - «ЧТО ДЕЛАТЬ ?». Попробовав предложенную утилитку ImapCopy, я понял — это не мое. Это утилитка разового переноса, где неважно время и внешнее управление. Создать конфиг руками, а потом ждать пока она прожует хотя бы один аккаунт, было грустно. На фоне душащей Жабы, пришла в голову мысль погуглить. Поиск предлагал решения на уровне коллайдера или вопли - «а нафига это надо». Спас меня Rsync .
Учитывая
что письма хранятся в папках в виде
файлов, надо сделать всего два действия.
Первое -монтировать основной сервер
(предположим 192.168.0.2) по sshfs. Второе —
запустить Rsync . Получится что-то такое
:
sshfs Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. .0.2:/home/vmail /media/mail
rsync --log-file=/var/log/msync.log -arh --progress --exclude=.Junk/ --exclude=tmp/ --exclude=.Trash/ --exclude=.Spam/ --ignore-existing /media/mail/bul.bul/mumu /home/vmail/bul.bul/mumu
а если у Вас Postfixadmin и
Mysql, вааще лафа. Делаем файлик mchange.sh и
запускаем в cron.
Файлик типа такого :
#!/bin/sh
mumu=`date +%c`
echo "${mumu} начинаем упражнение с синхронизацией ***************************">>/var/log/mailsync.log
# Параметры подключения к MySQL
mysql_host="localhost"
mysql_user="mail_user"
mysql_passwd="password"
mysql_db="postfixadmin"
# mysql-клиент
mysql="mysql --user=${mysql_user} \
--password=${mysql_passwd} \
--database=${mysql_db} --host=${mysql_host} --batch"
sshfs Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
.0.2:/home/vmail /media/mail
# достаём папки юзеров и в цикле переносим их почту
${mysql} --execute="SELECT maildir FROM mailbox" |
{
while read user_string
do
username_dst="`echo \/home\/vmail\/${user_string} | awk '{print $1}'`"
username_src="/`echo \/media\/mail\/${user_string} | awk '{print $1}'`"
echo "миграция пользователя ${username_src}---->${username_dst}">>/var/log/mailsync.log
rsync --log-file=/var/log/mailsync.ext -arh --progress --exclude=.Junk/ --exclude=tmp/ --exclude=.Trash/ --exclude=.Spam/ --ignore-existing ${username_src} ${username_dst}
echo "=======================================================">>/var/log/mailsync.log
done
}
umount /media/mail
mumu=`date +%c`
echo "${mumu} кончили синхронизировать ***************************">>/var/log/mailsync.log
Так что как говаривал мой бывший начальник, на такую жадность - "БОЛТ ИМ ОТ БРАТСКОЙ ГЭС!!!"