Хочу рассказать о грядущем счастье для линуксоидов, в плане поддержки нативного протокола MS Exchange MAPI, а также тем, что уже реализовано и с чем уже сейчас можно поиграться.
Многие, кто пытался настроить доступ к MS Exchange из Linux наверняка всегда в своих поисках приходили лишь к одному решению — Evolution + exchange плагин к нему. Более любопытные. знают, КАК и с помощью какой матери реализована эта поддержка. И всегда становится грустно, потому как Exchange стоит во многих местах, например в гос. органах и обеспечивает совместную работу людей и линуксу без поддержки протокола доступа к Exchange, к сожалению, закрыта туда дорога. Так было раньше, но сейчас…
Есть очень хороший проект, название которому — openchange (http://openchange.org/). По словам разработчиков, это Open Source реализация протокола MAPI (http://ru.wikipedia.org/wiki/MAPI). Как говорит википедия: MAPI — интерфейс программы, работающей с электронной почтой в Microsoft Windows. MAPI позволяет получать, читать, создавать, отправлять почтовые сообщения, присоединять к ним файлы (или получать доступ к присоединенным файлам) и т. д. Кроме того, протокол также предоставляет такие возможности, как общие календари. контакты, общие каталоги, задачи и записки. В общем всё, что необходимо для совместной работы.
До недавнего времени всем этим богатством могли пользоваться по большей части только пользователи Windows и MS Outlook. Но на данный момент, у линукс пользователей имеется во первых сама библиотека реализаующая mapi протокол (libmapi www.openchange.org/index.php?option=com_content&task=view&id=63&Itemid=71), уже доступная во многих дистрибутивах, а во вторых — замечательный KDE4, с его Akonadi. Кроме того, для Akonadi уже имеется ресурс, представляющий собой интерфейс между Akonadi и библиотекой libmapi, уже находящийся в kdepim (http://www.openchange.org/index.php?option=com_content&task=view&id=111&Itemid=87). Вот только есть одна загвоздка — пока что этот ресурс является скорее технологическим проектом, чем чем-то завершённым и в следствие чего, пока не доступен пользователям. Но что делать, если уж сильно приспичит? Как мне например при возникновении острой производственной необходимости =)
Ниже небольшое руководство, на тему «Как достучаться до MS Exchange из под KDE4» =). А если сборка не интересует, можно сразу пролистнуть несколько следующих абзацев и посмотреть на результат.
Во первых, определимся с тем что мы имеем. Имеем мы к примеру, как в моём случае, дистрибутив Debian Lenny, оконную среду KDE 4.2 и libmapi 0.8 в репозитарии experimental. Что мы можем с этим сделать? Для начала, мы должны будем скачать исходники libmapi, немного их изменить, собрать из них пакеты и установить их в системе. Чтобы стало сразу ясно зачем это нужно, скажу, что kdepim использует C++ обёртку над libmapi(в виде набора заголовков), называемую libmapi++. В свою очередь, в оригинальных исходниках библиотеки имеются данные заголовки, но сборщики пакета, видимо решив, что пока эти заголовки никому не нужны не собирают пакет libmapi++-dev. Что же, сделаем это самостоятельно.
Создадим некий каталог в нашей домашней дирректории, например ~/kdepim/libmapi/:
$ mkdir -p ~/kdepim/libmapi/
$ cd ~/kdepim/libmapi/
Теперь, добавим в наш sources.list репозитарии пакетов исходного кода дебиана и выполним sudo apt-get update. Это по понятным причинам описываться не будет =) После этого, находясь в директории ~/kdepim/libmapi/ выполним команду
$ apt-get source libmapi0
После чего получим три файла и каталог с распакованными исходниками и наложенными на них патчем. Перейдём в появившийся каталог, выполним в нём dpkg-checkbuilddeps и до установим все пакеты которых не хватает для сборки, плюс пакет libboost-dev. Внимание: помимо прочего этому пакету для сборки требуется также пакет samba4-dev, который в свою очередь тянет за собой саму samba4 и есть вероятность, что самба просто перестанет работать в системе.
Далее, отроем файл debian/rules и за комментируем строку «rm -rf $(CURDIR)/debian/tmp/usr/include/libmapi++», а в файле debian/control наоборот, добавим несколько новых:
Package: libmapi++-dev
Section: libdevel
Architecture: any
Depends: libc6-dev, libmapi0 (= ${binary:Version}), ${misc:Depends}
Description: Development files for the MAPI client library
This library provides a client-side implementation of the MAPI protocol
that is used by Microsoft Exchange and Outlook.
.
Currently implemented features include sending and receiving mail and
enumerating the address book.
.
This package contains the development files.
Остаётся только собрать библиотеку в пакеты, командой dpkg-buildpackage -rfakeroot. Правда в моём случае появилось несколько проблем. Во первых, в самбе внезапно в некоторых структурах поле private сменили на private_data и поэтому пришлось ещё немного по шаманить с исходниками, а во вторых, заголовки самбы лежат не там где им положено лежать по мнению тех же заголовков других библиотек. то есть не в /usr/include, а запрятаны в /usr/include/samba-4.0 что создаёт некоторые проблемы при компиляиции, когда заголовок найти ну никак не получается =). Кстати, всё это делается только для сборки нового пакета libmapi++-dev содержащего набор заголовков. Так что если лень самостоятельно компилировать всё это дело, то готовый пакет можно забрать здесь: narod.ru/disk/8149428000/libmapi%2B%2B-dev_0.8-2_i386.deb.html. После скачивания устанавливаем пакет в систему и переходим к следующему шагу — патчингу и сборке kdepim.
Создадим ещё один каталог. например ~/kdepim/kdepimOCresource/ и перейдём в него. Выполняем apt-get source kdepim и получаем в своё распоряжение исходники всего kdepim с патчами от дебиана. переходим в каталог исходников. устанавливаем сборочные зависимости. Затем заходим в каталог akonadi/resources и изменяем файл CMakeLists.txt вписав строчку «add_subdirectory( openchange )» после строки " add_subdirectory( distlist )", это где-то 28 строка файла. Теперь открываем файл debian/akonadi-kde.install и дописываем в него строки:
usr/bin/akonadi_oc_resource
usr/share/akonadi/agents/ocresource.desktop
В файле akonadi/resources/openchange/CMakeLists.txt в строку «set( CMAKE_CXX_FLAGS „${CMAKE_CXX_FLAGS} -I%{LIBMAPI_INCLUDE_DIRS} ${KDE4_ENABLE_EXCEPTIONS}“ )» добавим " -lmapi".
Наконец, чтобы всё было по человечески, добавим в файл control новую зависимость для пакета akonadi-kde. Имя ей конечно же — libmapi0. На этом изменение исходников закончено, запускаем сборку бинарных пакетов и ждём её благополучного (надеюсь) окончания. Когда всё завершиться, нужно будет доустановить в систему пересобранный пакет akonadi-kde, после чего в списке его ресурсов появится новый — OpenChange. ЧТобыобойтись без пересборки этот пакет также можно скачать, здесь: narod.ru/disk/8149908000/akonadi-kde_4.2.2-1_i386.deb.html. Последний штрих — в каталоге пользователя нужно создать дирректорию ".openchange", иначе ресурс всё время будет падать =)
— конец руководства по сборке =)
После всех этих мытарств, зайдя в «Параметры системы -> Настройка Akonadi» и жмякнув на вкладке «Настройка источников Akonadi» кнопку «Добавить», в списке предлагаемых ресурсов появится OpenChange, то есть именно то, что нам необходимо =). ВЫберим его, щёлкнем по нему два раза, создадим новый профиль и сделаем этот профиль по умолчанию. После чего останется через консоль запустить akonadiconsole, перейти на вкладку «Resources», нажать «Synchronize -> Synchronize All» и перейти на вкладку Browser, где уже видно, что папки синхронизированы, всё работает и отображается… Правда пока без кириллицы и правда у вас всё это может упасть в любой момент. но тем не мене. кое какие подвижки уже видны и хочется надеятся, что к релизу kde 4.3 большинство ошибок таки будет исправлено и ресурс войдёт в сборки дистрибутивов, одно огрочает, коммиты в его исходниках были довольно давно… (http://websvn.kde.org/trunk/KDE/kdepim/akonadi/resources/openchange/)
Что ещё можно сделать? Пока почти ничего, за исключением может, только попробовать запустить Kontact, который непременно должен падать при попытке добавить новый Akonadi календарь =) В общем, задумка у разработчиков отличная, реализация на данном этапе тоже не плохая, хотя и хромает =) Много дополнительной информации можно найти также по ссылкам в статье, а особенно на ресурсе www.openchange.org
Многие, кто пытался настроить доступ к MS Exchange из Linux наверняка всегда в своих поисках приходили лишь к одному решению — Evolution + exchange плагин к нему. Более любопытные. знают, КАК и с помощью какой матери реализована эта поддержка. И всегда становится грустно, потому как Exchange стоит во многих местах, например в гос. органах и обеспечивает совместную работу людей и линуксу без поддержки протокола доступа к Exchange, к сожалению, закрыта туда дорога. Так было раньше, но сейчас…
Есть очень хороший проект, название которому — openchange (http://openchange.org/). По словам разработчиков, это Open Source реализация протокола MAPI (http://ru.wikipedia.org/wiki/MAPI). Как говорит википедия: MAPI — интерфейс программы, работающей с электронной почтой в Microsoft Windows. MAPI позволяет получать, читать, создавать, отправлять почтовые сообщения, присоединять к ним файлы (или получать доступ к присоединенным файлам) и т. д. Кроме того, протокол также предоставляет такие возможности, как общие календари. контакты, общие каталоги, задачи и записки. В общем всё, что необходимо для совместной работы.
До недавнего времени всем этим богатством могли пользоваться по большей части только пользователи Windows и MS Outlook. Но на данный момент, у линукс пользователей имеется во первых сама библиотека реализаующая mapi протокол (libmapi www.openchange.org/index.php?option=com_content&task=view&id=63&Itemid=71), уже доступная во многих дистрибутивах, а во вторых — замечательный KDE4, с его Akonadi. Кроме того, для Akonadi уже имеется ресурс, представляющий собой интерфейс между Akonadi и библиотекой libmapi, уже находящийся в kdepim (http://www.openchange.org/index.php?option=com_content&task=view&id=111&Itemid=87). Вот только есть одна загвоздка — пока что этот ресурс является скорее технологическим проектом, чем чем-то завершённым и в следствие чего, пока не доступен пользователям. Но что делать, если уж сильно приспичит? Как мне например при возникновении острой производственной необходимости =)
Ниже небольшое руководство, на тему «Как достучаться до MS Exchange из под KDE4» =). А если сборка не интересует, можно сразу пролистнуть несколько следующих абзацев и посмотреть на результат.
Во первых, определимся с тем что мы имеем. Имеем мы к примеру, как в моём случае, дистрибутив Debian Lenny, оконную среду KDE 4.2 и libmapi 0.8 в репозитарии experimental. Что мы можем с этим сделать? Для начала, мы должны будем скачать исходники libmapi, немного их изменить, собрать из них пакеты и установить их в системе. Чтобы стало сразу ясно зачем это нужно, скажу, что kdepim использует C++ обёртку над libmapi(в виде набора заголовков), называемую libmapi++. В свою очередь, в оригинальных исходниках библиотеки имеются данные заголовки, но сборщики пакета, видимо решив, что пока эти заголовки никому не нужны не собирают пакет libmapi++-dev. Что же, сделаем это самостоятельно.
Создадим некий каталог в нашей домашней дирректории, например ~/kdepim/libmapi/:
$ mkdir -p ~/kdepim/libmapi/
$ cd ~/kdepim/libmapi/
Теперь, добавим в наш sources.list репозитарии пакетов исходного кода дебиана и выполним sudo apt-get update. Это по понятным причинам описываться не будет =) После этого, находясь в директории ~/kdepim/libmapi/ выполним команду
$ apt-get source libmapi0
После чего получим три файла и каталог с распакованными исходниками и наложенными на них патчем. Перейдём в появившийся каталог, выполним в нём dpkg-checkbuilddeps и до установим все пакеты которых не хватает для сборки, плюс пакет libboost-dev. Внимание: помимо прочего этому пакету для сборки требуется также пакет samba4-dev, который в свою очередь тянет за собой саму samba4 и есть вероятность, что самба просто перестанет работать в системе.
Далее, отроем файл debian/rules и за комментируем строку «rm -rf $(CURDIR)/debian/tmp/usr/include/libmapi++», а в файле debian/control наоборот, добавим несколько новых:
Package: libmapi++-dev
Section: libdevel
Architecture: any
Depends: libc6-dev, libmapi0 (= ${binary:Version}), ${misc:Depends}
Description: Development files for the MAPI client library
This library provides a client-side implementation of the MAPI protocol
that is used by Microsoft Exchange and Outlook.
.
Currently implemented features include sending and receiving mail and
enumerating the address book.
.
This package contains the development files.
Остаётся только собрать библиотеку в пакеты, командой dpkg-buildpackage -rfakeroot. Правда в моём случае появилось несколько проблем. Во первых, в самбе внезапно в некоторых структурах поле private сменили на private_data и поэтому пришлось ещё немного по шаманить с исходниками, а во вторых, заголовки самбы лежат не там где им положено лежать по мнению тех же заголовков других библиотек. то есть не в /usr/include, а запрятаны в /usr/include/samba-4.0 что создаёт некоторые проблемы при компиляиции, когда заголовок найти ну никак не получается =). Кстати, всё это делается только для сборки нового пакета libmapi++-dev содержащего набор заголовков. Так что если лень самостоятельно компилировать всё это дело, то готовый пакет можно забрать здесь: narod.ru/disk/8149428000/libmapi%2B%2B-dev_0.8-2_i386.deb.html. После скачивания устанавливаем пакет в систему и переходим к следующему шагу — патчингу и сборке kdepim.
Создадим ещё один каталог. например ~/kdepim/kdepimOCresource/ и перейдём в него. Выполняем apt-get source kdepim и получаем в своё распоряжение исходники всего kdepim с патчами от дебиана. переходим в каталог исходников. устанавливаем сборочные зависимости. Затем заходим в каталог akonadi/resources и изменяем файл CMakeLists.txt вписав строчку «add_subdirectory( openchange )» после строки " add_subdirectory( distlist )", это где-то 28 строка файла. Теперь открываем файл debian/akonadi-kde.install и дописываем в него строки:
usr/bin/akonadi_oc_resource
usr/share/akonadi/agents/ocresource.desktop
В файле akonadi/resources/openchange/CMakeLists.txt в строку «set( CMAKE_CXX_FLAGS „${CMAKE_CXX_FLAGS} -I%{LIBMAPI_INCLUDE_DIRS} ${KDE4_ENABLE_EXCEPTIONS}“ )» добавим " -lmapi".
Наконец, чтобы всё было по человечески, добавим в файл control новую зависимость для пакета akonadi-kde. Имя ей конечно же — libmapi0. На этом изменение исходников закончено, запускаем сборку бинарных пакетов и ждём её благополучного (надеюсь) окончания. Когда всё завершиться, нужно будет доустановить в систему пересобранный пакет akonadi-kde, после чего в списке его ресурсов появится новый — OpenChange. ЧТобыобойтись без пересборки этот пакет также можно скачать, здесь: narod.ru/disk/8149908000/akonadi-kde_4.2.2-1_i386.deb.html. Последний штрих — в каталоге пользователя нужно создать дирректорию ".openchange", иначе ресурс всё время будет падать =)
— конец руководства по сборке =)
После всех этих мытарств, зайдя в «Параметры системы -> Настройка Akonadi» и жмякнув на вкладке «Настройка источников Akonadi» кнопку «Добавить», в списке предлагаемых ресурсов появится OpenChange, то есть именно то, что нам необходимо =). ВЫберим его, щёлкнем по нему два раза, создадим новый профиль и сделаем этот профиль по умолчанию. После чего останется через консоль запустить akonadiconsole, перейти на вкладку «Resources», нажать «Synchronize -> Synchronize All» и перейти на вкладку Browser, где уже видно, что папки синхронизированы, всё работает и отображается… Правда пока без кириллицы и правда у вас всё это может упасть в любой момент. но тем не мене. кое какие подвижки уже видны и хочется надеятся, что к релизу kde 4.3 большинство ошибок таки будет исправлено и ресурс войдёт в сборки дистрибутивов, одно огрочает, коммиты в его исходниках были довольно давно… (http://websvn.kde.org/trunk/KDE/kdepim/akonadi/resources/openchange/)
Что ещё можно сделать? Пока почти ничего, за исключением может, только попробовать запустить Kontact, который непременно должен падать при попытке добавить новый Akonadi календарь =) В общем, задумка у разработчиков отличная, реализация на данном этапе тоже не плохая, хотя и хромает =) Много дополнительной информации можно найти также по ссылкам в статье, а особенно на ресурсе www.openchange.org