База знаний

www. IT-Mehanika .ru --  журнал доброго админа

Альтернатива IMAPSYNC. Не дам полтинник евро!!!

При построении резервного почтового сервера, нарвался на то, что 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


Так что как говаривал мой бывший начальник, на такую жадность - "БОЛТ ИМ ОТ БРАТСКОЙ ГЭС!!!"



You have no rights to post comments