Несмотря на радостный оптимизм в сентябре 2012, реальный перенос прошел совсем не так гладко.
Начнем с того, что установить 6.0.15 поверх скопированной с боевого сервера просто не удалось. Как ни бился, но сделать ничего не мог - то вдруг ldap терял данные, несмотря на правильный перенос (через zmslapcat), то zimbramon/64 вдруг начинал обращаться к старой библиотеке, которая еще /486, то еще что-то непонятное вылезало.
В общем, плюнул я на всё и решил ставить с нуля 8.0.6/64 на 12.04. Скоро, правда, появится 14.04, но это уже не так страшно.
По ходу дела выяснилось, что набор зимлетов, активированных в админке по умолчанию несколько отличается от того, что был в 8.0.0. Например, зимлета миграции учетных записей там не оказалось. Однако, сами зимлеты в виде zip-архивов лежали в нужном каталоге в /opt/zimbra.
Лихо жму в админке "инсталляция..." и понимаю, что мне предлагают из браузера выбрать файл на моей рабочей станции, а не из упомянутого каталога. Пришлось скопировать zip-ы к себе и ставить уже отсюда. Вроде поставились, я даже увидел знакомые буквы... Зимлет "просмотр почты" во времена 8.0.0/8.0.1 вызвал неслабое бурление говн на форумах, но в конце концов его официально включили в FOSS-версию, что не может не радовать.
Учетные записи этот мастер переноса создал, молодец. Но почту не перенес. Зато вроде без ошибок указал почтовый сервер каждого пользователя, не пришлось править поломатые.
Сейчас стоят две задачи: перенос сообщений и индивидуальных настроек, а также дополнительных объектов LDAP - списков рассылки и т.п.
Под катом размышления по этому поводу.
Сообщения я попробовал переносить с помощью zmztozmig, но она не перенесла почту во вложенных папках, хотя и перенесла метки и поисковые папки. Буду разбираться, как же скопом перенести вложенное.
По переносу списков рассылки нашел здесь скрипт. Скрипт хороший, но не без недостатков. На выходе получаем несколько неисполняемых скриптов с именами, совпадающими с FQDN имеющихся списков.
Как видно, переносятся только емайлы участников, но не более. Описание, displayname и т.п. пропадают. Пришлось его дорабатывать, чтобы он добавлял в выходные скрипты нужные мне данные. Да, мне проще повозюкаться со скриптом, который всё сделает за несколько секунд, чем потом вручную дописывать все эти данные через админку или выходные скрипты.
Вот как выглядит моя версия. Комментарии ставил для себя. Версия тоже не очень оптимальная, но нужна на 1 раз, поэтому вылизывать сильно не стал.
В таком варианте у нас формируется пачка скриптов, которые потом можно либо выполнять по отдельности, либо слить в один большой и запустить его на довольно длинное выполнение.
Я слил, chmod +x, дописал в начало sha-bang и запустил, наблюдая его результаты в админке: создался список, к нему добавилось описание и т.д.
Начнем с того, что установить 6.0.15 поверх скопированной с боевого сервера просто не удалось. Как ни бился, но сделать ничего не мог - то вдруг ldap терял данные, несмотря на правильный перенос (через zmslapcat), то zimbramon/64 вдруг начинал обращаться к старой библиотеке, которая еще /486, то еще что-то непонятное вылезало.
В общем, плюнул я на всё и решил ставить с нуля 8.0.6/64 на 12.04. Скоро, правда, появится 14.04, но это уже не так страшно.
По ходу дела выяснилось, что набор зимлетов, активированных в админке по умолчанию несколько отличается от того, что был в 8.0.0. Например, зимлета миграции учетных записей там не оказалось. Однако, сами зимлеты в виде zip-архивов лежали в нужном каталоге в /opt/zimbra.
Лихо жму в админке "инсталляция..." и понимаю, что мне предлагают из браузера выбрать файл на моей рабочей станции, а не из упомянутого каталога. Пришлось скопировать zip-ы к себе и ставить уже отсюда. Вроде поставились, я даже увидел знакомые буквы... Зимлет "просмотр почты" во времена 8.0.0/8.0.1 вызвал неслабое бурление говн на форумах, но в конце концов его официально включили в FOSS-версию, что не может не радовать.
Учетные записи этот мастер переноса создал, молодец. Но почту не перенес. Зато вроде без ошибок указал почтовый сервер каждого пользователя, не пришлось править поломатые.
Сейчас стоят две задачи: перенос сообщений и индивидуальных настроек, а также дополнительных объектов LDAP - списков рассылки и т.п.
Под катом размышления по этому поводу.
Сообщения я попробовал переносить с помощью zmztozmig, но она не перенесла почту во вложенных папках, хотя и перенесла метки и поисковые папки. Буду разбираться, как же скопом перенести вложенное.
По переносу списков рассылки нашел здесь скрипт. Скрипт хороший, но не без недостатков. На выходе получаем несколько неисполняемых скриптов с именами, совпадающими с FQDN имеющихся списков.
myPath=$(pwd) /opt/zimbra/bin/zmprov gadl | while read listname; do echo "/opt/zimbra/bin/zmprov cdl $listname" > $myPath/$listname /opt/zimbra/bin/zmprov gdl $listname | grep zimbraMailForwardingAddress > $myPath/$listname.tmp cat $myPath/$listname.tmp | sed 's/zimbraMailForwardingAddress: //g' | while read member; do echo "/opt/zimbra/bin/zmprov adlm $listname $member" >> $myPath/$listname done /bin/rm $myPath/$listname.tmp done
Как видно, переносятся только емайлы участников, но не более. Описание, displayname и т.п. пропадают. Пришлось его дорабатывать, чтобы он добавлял в выходные скрипты нужные мне данные. Да, мне проще повозюкаться со скриптом, который всё сделает за несколько секунд, чем потом вручную дописывать все эти данные через админку или выходные скрипты.
Вот как выглядит моя версия. Комментарии ставил для себя. Версия тоже не очень оптимальная, но нужна на 1 раз, поэтому вылизывать сильно не стал.
#!/bin/bash myPath=$(pwd) /opt/zimbra/bin/zmprov gadl | while read listname; do # создаем новый список рассылки echo "/opt/zimbra/bin/zmprov cdl $listname" > $myPath/$listname # оставляем только данные во временном файле, чтобы не вызывать много раз довольно медленную zmprov /opt/zimbra/bin/zmprov gdl $listname > $myPath/$listname.tmp.preproc # формируем для него поля cn, displayName, описание # состояние - разрешен ли прием почты (zimbraMailStatus:) и виден ли список в GAL (zimbraHideInGal:). # Не очень эффективно из-за странной работы read при передаче данных из echo (abs-book.html#BADREAD0 пример 31-1 в конце) # но работает и ладно # поскольку zmprov позволяет менять несколько атрибутов за раз, то дописывать в выходной файл будем не полные команды, а только # дополнительные атрибуты # вот здесь создаем строку в выходном файле grep cn: $myPath/$listname.tmp.preproc| sed 's/cn: //g'>$myPath/myvar.tmp read <$myPath/myvar.tmp echo -n /opt/zimbra/bin/zmprov mdl $listname cn '"'$REPLY'"'>> $myPath/$listname # а вот здесь её уже используем - дописываем grep displayName: $myPath/$listname.tmp.preproc| sed 's/displayName: //g'>$myPath/myvar.tmp read <$myPath/myvar.tmp echo -n " displayName" '"'$REPLY'"'>> $myPath/$listname grep description: $myPath/$listname.tmp.preproc| sed 's/description: //g'>$myPath/myvar.tmp read <$myPath/myvar.tmp echo -n " description" '"'$REPLY'"'>> $myPath/$listname grep zimbraMailStatus: $myPath/$listname.tmp.preproc| sed 's/zimbraMailStatus: //g'>$myPath/myvar.tmp read <$myPath/myvar.tmp echo -n " zimbraMailStatus" '"'$REPLY'"'>> $myPath/$listname grep zimbraHideInGal: $myPath/$listname.tmp.preproc| sed 's/zimbraHideInGal: //g'>$myPath/myvar.tmp read <$myPath/myvar.tmp echo -n " zimbraHideInGal" '"'$REPLY'"'>> $myPath/$listname # чтобы по запарке следующая команда не записалась в ту же строку, делаем принудительный перевод строки echo >>$myPath/$listname # Эта часть осталась почти неизменной из оригинального скрипта grep zimbraMailForwardingAddress $myPath/$listname.tmp.preproc| sed 's/zimbraMailForwardingAddress: //g' | while read member; do echo "/opt/zimbra/bin/zmprov adlm $listname $member" >> $myPath/$listname done /bin/rm $myPath/$listname.tmp.preproc $myPath/myvar.tmp done
В таком варианте у нас формируется пачка скриптов, которые потом можно либо выполнять по отдельности, либо слить в один большой и запустить его на довольно длинное выполнение.
Я слил, chmod +x, дописал в начало sha-bang и запустил, наблюдая его результаты в админке: создался список, к нему добавилось описание и т.д.
Комментариев нет:
Отправить комментарий
Пожалуйста, воздержитесь от грубостей и персональных нападок.
Я не против матерщины, но она должна быть уместной и использоваться для выражения эмоций, а не в качестве основного средства выражения мыслей.