24 вересня, Неділя, 2023
A- A A+

migratiom exchange to zimbra

Якщо ви задумалися про міграцію з Microsoft Exchange 2013, 2016 на Zimbra, то в перенесенні всіх даних вам допоможе програма ZCS Migration Wizard . Вона дозволяє перенести облікові записи, повідомлення, календарі та адресні книги. А ключові слова в Microsoft Exchange перетворюються в теги Zimbra Collaboration. ZCS Migration Wizard імпортує всі дані з сервера Outlook, крім заміток, завдань і балок з помилками і попередженнями.

Але в нашому випадку ми будем використовувати перенесення даних за допомогою imapsync

Перш, ніж ви зможете використовувати imapsync, потрібно мати як вихідний IMAP-повідомлення, так і ZCS, який працює і доступний користувачам через IMAP. Ви можете перевірити це, використовуючи поштовий клієнт, перш ніж почати міграцію. Вам знадобиться ім'я для входу (тобто адреса електронної пошти) та паролі для користувачів, які потрібно перенести. Крім того, imapsync не зможе автентифікувати на сервері Zimbra, доки ви не активуєте чітке введення тексту для служби IMAP. Ви можете встановити цей параметр на вкладці IMAP глобальних налаштувань або окремі налаштування сервера в інтерфейсі користувача Zimbra Admin Console.

Існує також декілька модульних модулів Perl, в тому числі; igest::MD5, IO::Socket::SSL,Term::ReadKey, Digest:HMAC, libmail:imapclient (Mail :: IMAPClient ™ вимагає саме версії 2.2.9, починаючи з цього запису), а також Date :: Manip. Ви можете встановити їх з вашим улюбленим менеджером пакетів, з RPM або з cpan. Нарешті, врахуйте, що imapsync буде важким навантаженням на процесор та пам'ять; система, що працює під час міграції, буде менш реагувати.

Imapsync може працювати швидше і споживає менше процесорів з більшими буферними входами / виходами, але ніяких порівняльних аналізів цього не було. Розмір буфера за замовчуванням становить 4KB; збільшення його на один-два порядки не є незвичайним для типових конфігурацій Zimbra-ready. Щоб збільшити буферний розмір до 8 Мб, додайте аргументи "--buffersize 8192000" під час запуску imapsync.

У цьому прикладі мій існуючий сервер IMAP працює на exchange.pc-service.cv.ua, і я встановлюю Zimbra на новій машині з назвою mail.pc-service.cv.ua

Для початку необхідно на сервері Exchange увімкнути IMAP4 - якщо він не був включений:

1. Натискаєм Start - Services (Local).

2. В списках сервіссів шукаємо Microsoft Exchange IMAP4, вибравши натискаєм ПКМ і Start.

3. Також, ПКМ на Microsoft Exchange IMAP4 Backend, і ПКМ Start.

Зі сторони старого сервера все нашалтовано, переходимо до нового (Zimbra Server)

Необхідно встановити компоненти для коректнеої роботи imapsync

sudo apt-get install makepasswd rcs perl-doc libio-tee-perl git libmail-imapclient-perl libdigest-md5-file-perl libterm-readkey-perl libfile-copy-recursive-perl build-essential make automake libunicode-string-perl libauthen-ntlm-perl libcrypt-ssleay-perl libdigest-hmac-perl libfile-copy-recursive-perl libio-compress-perl libio-socket-inet6-perl libio-socket-ssl-perl libio-tee-perl libmodule-scandeps-perl libnet-ssleay-perl libpar-packer-perl libreadonly-perl libterm-readkey-perl libtest-pod-perl libtest-simple-perl libunicode-string-perl liburi-perl cpanminus

 Далі стягуємо модулі CPAN

sudo cpanm JSON::WebToken Test::MockObject Unicode::String Data::Uniqid

Тепер клонуємо з github сам imapsync

apt install git
git clone https://github.com/imapsync/imapsync.git

Переходимо в скачану папку та запускаємо команду make

cd imapsync
make install

Можливо він захоче ще деякі модулі CPAN, то їх можно встановити так само як в прикладі вище (наприклад cpanm IO::Socket::INET6 Regexp::Common)

На цьому підготовка серверів завершена, перейдем до самої міграції!

На сервері Zimbra створюємо поштову скриньку з такою ж назвою як на станому exchange

Далі вводимо в командну строку

imapsync --nosyncacls --subscribe --syncinternaldates \
--regextrans2 's,^(Briefcase|Calendar|Contacts|Emailed Contacts|Notebook|Tasks)(?=/|$), $1 Folder,ig' \
--host1 exchange.pc-service.cv.ua --user1 Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її. --password1 MyPassWD1 --nosslcheck \
--host2 mail.pc-service.cv.ua --user2 Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її. --password2 MyPassWD1

Чекаємо на завершення синхронгізації!

Мінусом даного способу є те що ваші паролі у відкритому вигляді, але так як в мене не багато поштових скриньок, то цей спосіб нам підійшов.

Для відображення повного списку команд та специфікацій міграції можно переглянути на офф. сайті Zimbra

Якщо синхронізація не проходить, то ви можете погратись із ключами --nosslcheck, --ssl1, --ssl2, --fast, --dry, --tls1, --tls2,

А також рекомендуємо, якщо об'єм ваших поштових скриньок дуже великий, то міграцію можно перевести на задній план, щоб ваша міграція часом не відвалилась із втратою інет підключення

nohup imapsync --nosyncacls --subscribe --syncinternaldates \
--regextrans2 's,^(Briefcase|Calendar|Contacts|Emailed Contacts|Notebook|Tasks)(?=/|$), $1 Folder,ig' \
--host1 exchange.pc-service.cv.ua --user1 Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її. --password1 MyPassWD1 --nosslcheck \
--host2 mail.pc-service.cv.ua --user2 Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її. --password2 MyPassWD1 > /dev/null &

Доповнення до статті:

Налаштування Zimbra FOSS (EAS) -  ActiveSync

Виникла необхідінсть використувувати мою zimbra з додатковими плюшками в безкоштовній версії

Нажаль в безкоштовній версії (FOSS) немає можливості використувати ActiveSync ця функція доступна тільки в Network Edition? або за допомогою зовнішніх плагінів, які теж платні

отже ця стаття для тих хто хоче все і безкоштовно.

Z-Push

Щоб ви могли синхронізувати свій мобільний пристрій з сервером Zimbra, використовуючи протокол Active-Sync, який надається Z-Push.

Z-Push на Zimbra 8
Простий спосіб встановити Z-Push (підтримка ActiveSync) на Zimbra 8. Він не вимагає додаткових серверів. Установка відбувається на сервері Zimbra, де встановлений проксі-сервер.

Оскільки проксі Zimbra є nginx, ми будемо використовувати php-fpm, щоб забезпечити хороший спосіб відокремлення компонентів Z-Push від основних компонентів Zimbra.

Підготовка
Завантажити останню версію Z-Push тут

Я використовував останню версію, 2.3,9 на той час.

Завантажуємо на свій сервер:

wget-O z-push.tar.gz http://download.z-push.org/final/2.3/z-push-2.3.9.tar.gz

Створюєм папку в директорії де буде оброблятись  

# mkdir /var/www/z-push

Розпаковуємо скачаний архів  tar -zxvf z-push-2.3.9.tar.gz

Переміщяємо  файли в папку  /var/www/z-push/

mv z-push-2.0.6-1616/* /var/www/z-push/

Тепер нам потрібно отримати Z-Push Zimbra Backend:

wget -O zpushzimbra.tar.gz https://sourceforge.net/projects/zimbrabackend/files/latest/download

Створити додаткові папки для логування /var/lib/z-push та /var/log/z-push

mkdir /var/lib/z-push

mkdir /var/log/z-push

Надати права доступа 

chown www-data: /var/log/z-push /var/lib/z-push # on Debian/Ubuntu

Ми також встановимо php-fpm, залежно від вашого дистрибутиву

php5-memcached php5.6-cli php-soap php5.6-fpm

Пробував класти новішу версію PHP 7* в мене не працювало 

Конфігурація

Z-Push в Zimbra Backend. Змінити вміст файлу /var/www/z-push/config.php та замінити на::

Шукаєм стрічку: define('USE_X_FORWARDED_FOR_HEADER', false);
змінюємо на: define('USE_X_FORWARDED_FOR_HEADER', true);
шукаєм: define('BACKEND_PROVIDER', '');
змінюєм: define('BACKEND_PROVIDER', 'BackendZimbra');

// Update existing fields in config
define('TIMEZONE', 'Europe/London"');
define('PROVISIONING', false);
$BACKEND_PROVIDER = "BackendZimbra";

 

Логування

Включити логування Z-Push logs,  Створити  # cd /etc/logrotate.d,. # nano  /etc/logrotate.d/z-push 

/var/log/z-push/*.log {
        daily
        missingok
        rotate 14
        compress
        delaycompress
        notifempty
}

Тепер редагуєм наступний файл /var/www/z-push/backend/zimbra/config.php

розкоментовуємо та змінюємо стрічку з адресою до такого виглядуt: define('ZIMBRA_URL', 'https://mail.pc-service.cv.ua');

define('ZIMBRA_URL', 'https://mail.domain.com');
define('ZIMBRA_USER_DIR', 'zimbra');
define('ZIMBRA_SYNC_CONTACT_PICTURES', true);
define('ZIMBRA_VIRTUAL_CONTACTS',true);
define('ZIMBRA_VIRTUAL_APPOINTMENTS',true);
define('ZIMBRA_VIRTUAL_TASKS',true);
define('ZIMBRA_IGNORE_EMAILED_CONTACTS',true);
define('ZIMBRA_HTML',true);

define('ZIMBRA_ENFORCE_VALID_EMAIL', true);

define('ZIMBRA_SMART_FOLDERS',false);
define('ZIMBRA_RETRIES_ON_HOST_CONNECT_ERROR',5);

define('ZIMBRA_LOCAL_CACHE', true);

define('ZIMBRA_DEBUG',false);

Тепер необхідно змінити обробник із Zimbra Proxy use Z-Push. Змінити файл /opt/zimbra/conf/nginx/templates/nginx.conf.web.https.default.template

     location ^~ /Microsoft-Server-ActiveSync
     {
         # Begin stray redirect hack
          
       ......

         # End stray redirect hack
 
-        # Proxy to Zimbra Upstream
-        proxy_pass          ${web.upstream.target};
-        proxy_read_timeout  ${web.upstream.polling.timeout};
-        proxy_buffering     off;
+        # Z-PUSH start
+        include /etc/nginx-php-fpm.conf;
+        # Z-PUSH end

         # For audit
       .......
   }

Це посилання на файл /etc/nginx-php-fpm.conf, який повинен мати цей вміст:

fastcgi_param   QUERY_STRING            $query_string;
fastcgi_param   REQUEST_METHOD          $request_method;
fastcgi_param   CONTENT_TYPE            $content_type;
fastcgi_param   CONTENT_LENGTH          $content_length;

fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;
fastcgi_param   PATH_INFO               $fastcgi_path_info;
fastcgi_param   PATH_TRANSLATED         $document_root$fastcgi_path_info;
fastcgi_param   REQUEST_URI             $request_uri;
fastcgi_param   DOCUMENT_URI            $document_uri;
fastcgi_param   DOCUMENT_ROOT           $document_root;
fastcgi_param   SERVER_PROTOCOL         $server_protocol;

fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;

fastcgi_param   REMOTE_ADDR             $remote_addr;
fastcgi_param   REMOTE_PORT             $remote_port;
fastcgi_param   SERVER_ADDR             $server_addr;
fastcgi_param   SERVER_PORT             $server_port;
fastcgi_param   SERVER_NAME             $server_name;

fastcgi_param   HTTPS                   $https;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param   REDIRECT_STATUS         200;

fastcgi_param HTTP_PROXY "";
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /var/www/z-push/index.php;

client_max_body_size 20m;
client_body_buffer_size 128k;
keepalive_timeout  65;

# max_execution_time is 900
proxy_read_timeout 910;
fastcgi_read_timeout 910;

sendfile  on;

Зверніть увагу, що ми твердо кодуємо SCRIPT_FILENAME до index.php Z-Push, тому немає потреби в перенаправленні. Тепер ми відновлюємо конфігурацію проксі:

sudo -u zimbra /opt/zimbra/bin/zmconfigdctl restart

Включаємо PHP-FPM

systemctl enable php-fpm # or php5-fpm for Debian/Ubuntu
systemctl start php-fpm # or php5-fpm for Debian/Ubuntu

Рестарт проксі:

sudo -u zimbra /opt/zimbra/bin/zmproxyctl restart

Тестування

У теорії вона повинна працювати зараз, щоб перевірити ...

Перегляньте на свій сервер, наприклад http://mail.pc-service.cv.ua/Microsoft-Server-ActiveSync
Вам слід запропонувати ввести ім'я користувача та пароль (для облікового запису на вашому сервері Zimbra)

Якщо все пройшло успішно то ви отримаєте ось таку картинку:

z push


Якщо Apache не вдалося доставити вам запит, перевірте журнал веб-сервера. Ваш веб-сайт не налаштовується належним чином або Z-Push зазнає помилку PHP.
Введіть дійсний користувач / пароль пропуску Zimbra
Ви повинні отримати сторінку з "Z-Push - Open Source ActiveSync", яка не містить помилок - це підтверджує, що зв'язок існує між усіма необхідними компонентами (Apache, Z-Push, Zimbra), і що вони в основному ОК.

Статті які допомогли все реалізувати:

vwiki.co.uk

 Z-Push_on_Zimbra_8