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