<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1517574815508134913</id><updated>2011-08-05T13:21:32.625-07:00</updated><title type='text'>Openchange GUI Tools (SoC 2009)</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://openchange2009.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1517574815508134913/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://openchange2009.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Makokal</name><uri>http://www.blogger.com/profile/08649243289697802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='8' src='http://3.bp.blogspot.com/_d1-kJNkHtH4/S4MHdynGngI/AAAAAAAAAGA/Up9iGw2zQEo/S220/lakobot_logo_1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1517574815508134913.post-7509052173555480886</id><published>2009-08-27T07:50:00.000-07:00</published><updated>2009-08-27T07:53:00.922-07:00</updated><title type='text'>Openchange Tools done</title><content type='html'>I a writting this piece to mark the last efforts in the development of openchangetools extensions for gsoc 2009 which I conluded a week ago. The is now over and further efforts may include gui for other tools in next years gsoc. But let all wait till then. The code for the project is available from the openchange repo and will also be available from google soon, after code sample submissions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1517574815508134913-7509052173555480886?l=openchange2009.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://openchange2009.blogspot.com/feeds/7509052173555480886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://openchange2009.blogspot.com/2009/08/openchange-tools-done.html#comment-form' title='36 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1517574815508134913/posts/default/7509052173555480886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1517574815508134913/posts/default/7509052173555480886'/><link rel='alternate' type='text/html' href='http://openchange2009.blogspot.com/2009/08/openchange-tools-done.html' title='Openchange Tools done'/><author><name>Makokal</name><uri>http://www.blogger.com/profile/08649243289697802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='8' src='http://3.bp.blogspot.com/_d1-kJNkHtH4/S4MHdynGngI/AAAAAAAAAGA/Up9iGw2zQEo/S220/lakobot_logo_1.jpg'/></author><thr:total>36</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1517574815508134913.post-8059810413710321196</id><published>2009-07-16T02:36:00.000-07:00</published><updated>2009-07-16T02:57:41.242-07:00</updated><title type='text'>Mapiprofile Tool done</title><content type='html'>Hello all,&lt;br /&gt;&lt;br /&gt;I am very delighted to say today that I have finished making the mapiprofile tool. This is a tool that directly mimics the commandline options provided by mapiprofile. It has been a long journey, sometimes rough, but we are here now and its done. The next tool which I am already working on is the mapiadmin tool which has an few more functionalties compared to the mapiprofie tool that I just finished. This is indeed a great experience especually the pressure mounts towards the evaluation deadlines, I got to work continusly for the longest time in my life. But the ultimate feeling after cracking it is really good. I will keep you posted on the developments of the mapiadmin tool. Now I show some shots of the new tool just finished. This tool is integrated into the desktop using a deskbar applet written again in Qt.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_d1-kJNkHtH4/Sl73vztniSI/AAAAAAAAAD4/XXIMRRK6WP8/s1600-h/welcome_page.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 225px;" src="http://3.bp.blogspot.com/_d1-kJNkHtH4/Sl73vztniSI/AAAAAAAAAD4/XXIMRRK6WP8/s320/welcome_page.jpg" alt="" id="BLOGGER_PHOTO_ID_5358993007324924194" border="0" /&gt;&lt;/a&gt;This is the welcome screen from which the user selects to either create a new database stored as dbname.ldb in $HOME/.openchange/ or select one that is already existing. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_d1-kJNkHtH4/Sl74VNK56lI/AAAAAAAAAEA/x3uKgLfWNNs/s1600-h/create_newdb.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 229px;" src="http://2.bp.blogspot.com/_d1-kJNkHtH4/Sl74VNK56lI/AAAAAAAAAEA/x3uKgLfWNNs/s320/create_newdb.jpg" alt="" id="BLOGGER_PHOTO_ID_5358993649813809746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is the create new database option, where the user gets to enter a name of the database to create. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_d1-kJNkHtH4/Sl74sIhhYMI/AAAAAAAAAEI/MM50g4dS6Cs/s1600-h/open_database.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 223px;" src="http://2.bp.blogspot.com/_d1-kJNkHtH4/Sl74sIhhYMI/AAAAAAAAAEI/MM50g4dS6Cs/s320/open_database.jpg" alt="" id="BLOGGER_PHOTO_ID_5358994043703484610" border="0" /&gt;&lt;/a&gt;This is what the user gets in case he/she selects the select  an existing database option, one can then navigate to select the database of choice in the folder of choice. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_d1-kJNkHtH4/Sl75EHHnPTI/AAAAAAAAAEQ/FVGGpsSvjfo/s1600-h/list_profiles.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 234px;" src="http://4.bp.blogspot.com/_d1-kJNkHtH4/Sl75EHHnPTI/AAAAAAAAAEQ/FVGGpsSvjfo/s320/list_profiles.jpg" alt="" id="BLOGGER_PHOTO_ID_5358994455643241778" border="0" /&gt;&lt;/a&gt;This is the result after selecting a database, where a user gets to view all profiles in that database and gets the options to  manipulate these profiles accordingly. In case of a new database, with no profile, only the add profile option is available.&lt;br /&gt;&lt;br /&gt;This is about the main features of the tool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1517574815508134913-8059810413710321196?l=openchange2009.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://openchange2009.blogspot.com/feeds/8059810413710321196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://openchange2009.blogspot.com/2009/07/mapiprofile-tool-done.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1517574815508134913/posts/default/8059810413710321196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1517574815508134913/posts/default/8059810413710321196'/><link rel='alternate' type='text/html' href='http://openchange2009.blogspot.com/2009/07/mapiprofile-tool-done.html' title='Mapiprofile Tool done'/><author><name>Makokal</name><uri>http://www.blogger.com/profile/08649243289697802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='8' src='http://3.bp.blogspot.com/_d1-kJNkHtH4/S4MHdynGngI/AAAAAAAAAGA/Up9iGw2zQEo/S220/lakobot_logo_1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_d1-kJNkHtH4/Sl73vztniSI/AAAAAAAAAD4/XXIMRRK6WP8/s72-c/welcome_page.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1517574815508134913.post-2508080207848566032</id><published>2009-06-16T06:59:00.000-07:00</published><updated>2009-06-16T07:08:27.357-07:00</updated><title type='text'>Major functionalities identified</title><content type='html'>Following the start of the project work. I have identified major functionalities of the gui tools that I am about to build. The following are the major functionalities identified;&lt;br /&gt;&lt;br /&gt;mapiprofile gui:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Should instantiate a mapi profile by creating a new database&lt;/li&gt;&lt;li&gt;Instantiate users for a given profile mentioned (these include details such as username, password, workstation, domain...) which are used to create a user&lt;/li&gt;&lt;li&gt;List all users, profiles with associated elements&lt;/li&gt;&lt;li&gt;Perform profile dump&lt;/li&gt;&lt;li&gt;Manage default profile (be able to set a certain profile to be default)&lt;/li&gt;&lt;li&gt;Deleting profiles&lt;/li&gt;&lt;/ul&gt;openchangepfadmin:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Public folder management (creation, removal and listing)&lt;/li&gt;&lt;li&gt;User management (addition and removal of users)&lt;/li&gt;&lt;li&gt;Permissions and Delegation (addition, removal and modification of user permissions)&lt;/li&gt;&lt;/ul&gt;The third gui for openchangeproxy will be posted lator&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1517574815508134913-2508080207848566032?l=openchange2009.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://openchange2009.blogspot.com/feeds/2508080207848566032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://openchange2009.blogspot.com/2009/06/major-functionalities-identified.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1517574815508134913/posts/default/2508080207848566032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1517574815508134913/posts/default/2508080207848566032'/><link rel='alternate' type='text/html' href='http://openchange2009.blogspot.com/2009/06/major-functionalities-identified.html' title='Major functionalities identified'/><author><name>Makokal</name><uri>http://www.blogger.com/profile/08649243289697802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='8' src='http://3.bp.blogspot.com/_d1-kJNkHtH4/S4MHdynGngI/AAAAAAAAAGA/Up9iGw2zQEo/S220/lakobot_logo_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1517574815508134913.post-4351412155645292302</id><published>2009-06-13T10:02:00.000-07:00</published><updated>2009-06-13T10:11:09.098-07:00</updated><title type='text'>About Openchange Project</title><content type='html'>&lt;pre&gt;Administrating Public Folders with OpenChange&lt;br /&gt;OpenChange MAPI Library&lt;br /&gt;&lt;br /&gt;The OpenChange project provides a portable Open Source&lt;br /&gt;implementation of the protocols used by Microsoft Exchange. The&lt;br /&gt;client-side &lt;c&gt;libmapi&lt;c&gt; and &lt;c&gt;libmapiadmin&lt;c&gt; libraries are an&lt;br /&gt;early result, and usable today.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Microsoft Exchange is probably the most popular groupware system&lt;br /&gt;in the world, and many people never use any other tool of its&lt;br /&gt;type. Exchange-centric work habits are central to the way millions of&lt;br /&gt;people perform their daily work. However Microsoft Exchange is&lt;br /&gt;currently fully utilised only in conjunction with Microsoft groupware&lt;br /&gt;clients running on Microsoft operating systems.  End users, system&lt;br /&gt;administrators and developers need alternative tools so they can&lt;br /&gt;continue to use Microsoft Exchange working methods, but improve their&lt;br /&gt;efficiency and safety, and reduce their cost. This article offers an&lt;br /&gt;overview of the OpenChange MAPI library features and its related tools&lt;br /&gt;needed to administrate and use Microsoft Exchange Server and its&lt;br /&gt;Public Folders.&lt;br /&gt;&lt;br /&gt;Why Use Microsoft Exchange Protocols?&lt;br /&gt;&lt;br /&gt;The main reason today for a client to use Exchange protocols is to&lt;br /&gt;communicate with Microsoft Exchange as if it were Outlook. Microsoft&lt;br /&gt;have even recently started to licence limited access to these&lt;br /&gt;protocols so that developers can emulate Outlook functions. The&lt;br /&gt;fundamental problem is interoperability, normally best addressed by&lt;br /&gt;Internet standards. But Exchange may be a special case. There is a&lt;br /&gt;huge installed based which has been trained to expect a certain kind&lt;br /&gt;of functionality, and there is no single Internet standard that can&lt;br /&gt;deliver that functionality -- many are needed, largely unrelated to&lt;br /&gt;each other.&lt;br /&gt;&lt;br /&gt;The OpenChange project believes the fastest way to a&lt;br /&gt;global groupware standard is to first provide an open implementation&lt;br /&gt;of Exchange, and move on from there. The OpenChange project is&lt;br /&gt;encouraging mail, calendaring and other groupware client developers to&lt;br /&gt;consider integrating libmapi and has produced functional commandline&lt;br /&gt;and GUI reference examples. We are developing OpenChange Server, a&lt;br /&gt;drop-in replacement to Exchange. We are planning a gateway strategy to&lt;br /&gt;integrate with Internet and other standards. All this improves the&lt;br /&gt;number and quality of options available to people with Microsoft&lt;br /&gt;Exchange-centric work habits.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What is MAPI?&lt;br /&gt;&lt;br /&gt;MAPI originally referred to a proprietary set of function call&lt;br /&gt;interfaces developed by Microsoft before Microsoft Exchange&lt;br /&gt;existed. When Microsoft Exchange 5.5 was developed in 1997, the&lt;br /&gt;decision was taken to create a proprietary transport protocol for MAPI&lt;br /&gt;which closely matches the MAPI calling interface. This protocol is&lt;br /&gt;often called ExchangeRPC and is used in Outlook-Exchange&lt;br /&gt;communications.&lt;br /&gt;&lt;br /&gt;The term "MAPI application" on Windows means an application that&lt;br /&gt;is using the MAPI API to call Microsoft's MAPI provider, usually&lt;br /&gt;called MAPI.DLL. These applications know nothing about how MAPI&lt;br /&gt;works. In exactly the same way, &lt;c&gt;libmapi&lt;c&gt; isolates applications&lt;br /&gt;from knowledge about the underlying Microsoft networking. While the&lt;br /&gt;OpenChange project has written a number of clients that use&lt;br /&gt;&lt;c&gt;libmapi&lt;c&gt;, the intention is to enable groupware application&lt;br /&gt;authors to use &lt;c&gt;libmapi&lt;c&gt; to let them deliver Exchange-style&lt;br /&gt;groupware functions efficiently.&lt;br /&gt;&lt;br /&gt;Why Not Buy MAPI from Microsoft?&lt;br /&gt;&lt;br /&gt;OpenChange could have partially implemented &lt;c&gt;libmapi&lt;c&gt; by&lt;br /&gt;buying access to some of the specifications from Microsoft. Due to EU&lt;br /&gt;requests Microsoft now license Exchange protocols [1]. The license is&lt;br /&gt;of course incompatible with Open Source Software, and in addition it&lt;br /&gt;is not possible to buy access at any price to a full top-to-bottom&lt;br /&gt;protocol stack. Neither is Microsoft's work supported on non-Microsoft&lt;br /&gt;operating systems. These are yet more good reasons why &lt;c&gt;libmapi&lt;c&gt;&lt;br /&gt;needs to exist.&lt;br /&gt;&lt;br /&gt;Exchange Protocols (Briefly)&lt;br /&gt;&lt;br /&gt;When OpenChange team members first looked at the network network&lt;br /&gt;traffic these generated by calling MAPI functions on Windows operating&lt;br /&gt;systems, we noticed blobs of data first either compressed or&lt;br /&gt;obfuscated, then encapsulated by an MSRPC transport protocol function&lt;br /&gt;and finally pushed on the wire. As it happened, a large amount of the&lt;br /&gt;decoding work had already been done by the Samba project.&lt;br /&gt;&lt;br /&gt;The Samba project has a great deal of experience handling&lt;br /&gt;Interface Definition Language (IDL) descriptions of RPC traffic, and&lt;br /&gt;encapsulation of the Network Data Representation (NDR) format used&lt;br /&gt;with RPC, and debugging these.  In 2007, Samba is the result of&lt;br /&gt;fifteen years of continuous implementation of Microsoft networking&lt;br /&gt;protocols, and hundreds of man-years of effort.&lt;br /&gt;&lt;br /&gt;libmapi Design&lt;br /&gt;&lt;br /&gt;The libmapi design goals were developed after carefully studying&lt;br /&gt;the public Microsoft MAPI programming documentation and considering&lt;br /&gt;Exchange protocols on the wire. The goals are:&lt;br /&gt;&lt;br /&gt;* To provide a set of functions with similar semantics to the&lt;br /&gt; Microsoft C++ API, maximising the benefit of shared information&lt;br /&gt; across the two implementations. libmapi needs to be easily usable by&lt;br /&gt; Linux developers and Windows developers alike, including Windows&lt;br /&gt; developers who already know MAPI.&lt;br /&gt;&lt;br /&gt;* To improve on the state of the art in MAPI implementations,&lt;br /&gt; maximising the efficiency of programmers who use libmapi. Wherever&lt;br /&gt; possible libmapi hides implementation details from the user, so that&lt;br /&gt; all they have to know is that they are passing in a&lt;br /&gt; groupware-related object and getting back a response in order to&lt;br /&gt; have a groupware conversation.&lt;br /&gt;&lt;br /&gt;The similar API function names help in comparing programming&lt;br /&gt;resources, from the Microsoft MSDN website, the online OpenChange&lt;br /&gt;resources and in discussion groups. They also help administrators&lt;br /&gt;track down errors.&lt;br /&gt;&lt;br /&gt;The implementation involved some difficult decisions. Exchange is&lt;br /&gt;implemented by instantiating MAPI objects on the server and then&lt;br /&gt;operating on these objects by means of unique handles.  libmapi has&lt;br /&gt;retained this design, but the implementation is significantly&lt;br /&gt;different in two ways:&lt;br /&gt;&lt;br /&gt;* libmapi has a global context, rather than separately instantiated&lt;br /&gt; objects with private members.  This gives less work for libmapi&lt;br /&gt; users and reduced risk of making common programming errors. It also&lt;br /&gt; allows libmapi to have substantial internal reworking without&lt;br /&gt; impacting public function prototypes.&lt;br /&gt;&lt;br /&gt;* libmapi hides internal mechanisms. MAPI objects are opaque, and&lt;br /&gt; passed by reference between MAPI functions. Although the API is very&lt;br /&gt; similar to Microsoft MAPI, the Microsoft MAPI C++ object hierarchy&lt;br /&gt; is not implemented.&lt;br /&gt;&lt;br /&gt;This architecture has served OpenChange well so far. The&lt;br /&gt;development team concentrates on implementing core MAPI functionality&lt;br /&gt;rather than building an object hierarchy that may later turn out to be&lt;br /&gt;suboptimal.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Installation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The OpenChange project is quite young and has not yet produced any&lt;br /&gt;binary distributions. To compile from source you'll need a reasonably&lt;br /&gt;modern Linux distribution. To test you will also need Microsoft&lt;br /&gt;Exchange Server 2000, 2003 or 2007. You need to compile both libmapi&lt;br /&gt;and the Samba4 suite whose libraries libmapi uses. We will install&lt;br /&gt;Samba4 first, which will give you the libraries, headers and tools&lt;br /&gt;required to build OpenChange.&lt;br /&gt;&lt;br /&gt;Before attempting the Samba build, make sure you have installed the&lt;br /&gt;necessary development tools including automake. The Samba wiki has&lt;br /&gt;more details[3].&lt;br /&gt;&lt;br /&gt;$ rsync -avz samba.org::ftp/unpacked/samba4 .&lt;br /&gt;$ ./configure --prefix=/usr/local/samba&lt;br /&gt;$ make&lt;br /&gt;# make installlib &amp;amp;&amp;amp; make installheader  # &lt;- as root!&lt;br /&gt;&lt;br /&gt;Since the libraries will be installed in &lt;c&gt;/usr/local/samba/lib&lt;c&gt;,&lt;br /&gt;ldconfig needs to know about it. Make sure this directory is listed in&lt;br /&gt;&lt;c&gt;/etc/ld.so.conf&lt;c&gt; and run &lt;c&gt;ldconfig -v&lt;c&gt;. Similarly, you need&lt;br /&gt;&lt;c&gt;/usr/local/samba/bin&lt;c&gt; in your PATH for the pidl[4] and OpenChange&lt;br /&gt;binaries. You will also need to set the path for the man pages.&lt;br /&gt;If your shell is &lt;c&gt;bash&lt;c&gt;:&lt;br /&gt;&lt;br /&gt;$ export PATH=$PATH:/usr/local/samba/bin&lt;br /&gt;$ export MANPATH=$MANPATH:/usr/local/samba/share/man&lt;br /&gt;&lt;br /&gt;You need to install pidl from the Samba4 source directory, as root:&lt;br /&gt;&lt;br /&gt;# cd pidl &amp;amp;&amp;amp; perl Makefile.PL &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;br /&gt;&lt;br /&gt;Before attempting the OpenChange build, install libmagic using your&lt;br /&gt;distribution's package mangement tools, for example with Debian/Ubuntu:&lt;br /&gt;&lt;br /&gt;$ apt-get install libmagic libmagic-dev&lt;br /&gt;&lt;br /&gt;This should be the only development library you need, although you will&lt;br /&gt;also need the packages &lt;c&gt;automake&lt;c&gt;,&lt;c&gt;flex&lt;c&gt; and &lt;c&gt;libpopt&lt;c&gt;.&lt;br /&gt;The OpenChange wiki has more details.[5] First you need to get the&lt;br /&gt;OpenChange source code, then the usual configuration steps.&lt;br /&gt;&lt;br /&gt;$ svn co https://svn.openchange.org/openchange&lt;br /&gt;$ cd trunk&lt;br /&gt;$ ./autogen.sh&lt;br /&gt;$ ./configure --prefix=/usr/local/samba&lt;br /&gt;$ make&lt;br /&gt;# make install    #   &lt;-- as root!&lt;br /&gt;&lt;br /&gt;If all went well, you should be able to test some commands:&lt;br /&gt;&lt;br /&gt;$ openchangeclient --help&lt;br /&gt;$ mapiprofile --help&lt;br /&gt;$ man openchangeclient&lt;br /&gt;&lt;br /&gt;Make sure you have a working Exchange Administrator[6] account --&lt;br /&gt;can you see your inbox from Outlook? You are now ready to use libmapi&lt;br /&gt;for the first time.&lt;br /&gt;&lt;br /&gt;Initialising libmapi&lt;br /&gt;&lt;br /&gt;The job of the MAPI library is to use Microsoft Exchange protocols&lt;br /&gt;to send and receive groupware information. As designed by Microsoft,&lt;br /&gt;MAPI has no knowledge of how to locate an Exchange server, or store&lt;br /&gt;information. This is the purpose of MAPI profiles: to store the&lt;br /&gt;information MAPI needs about servers, users and networks. libmapi&lt;br /&gt;implements functions to do this work, which have been exposed in the&lt;br /&gt;commandline tool &lt;c&gt;mapiprofile&lt;c&gt;.&lt;br /&gt;&lt;br /&gt;First, initialise the mapiprofile database:&lt;br /&gt;&lt;br /&gt;$ mapiprofile --database=$HOME/.openchange/profiles.ldb   \&lt;br /&gt;             --ldif=/usr/local/samba/share/setup \&lt;br /&gt;             --newdb&lt;br /&gt;&lt;br /&gt;This uses template information stored in the LDAP dump files to&lt;br /&gt;create a new mapiprofile database. Any destination filename can be&lt;br /&gt;given, however the one specified is the default. If you store your&lt;br /&gt;mapiprofiles here, you do not need to supply the name to any libmapi&lt;br /&gt;utilities. The location of the ldif files is also the default, set (it&lt;br /&gt;is relative to the &lt;c&gt;--prefix&lt;c&gt; parameter specified at build&lt;br /&gt;time. As you will see later, these defaults can save some very long&lt;br /&gt;commandlines!&lt;br /&gt;&lt;br /&gt;Now you need to initialise a new user. Note that the &lt;c&gt;--database&lt;c&gt;&lt;br /&gt;parameter is not required here either, it will use the default&lt;br /&gt;location.)&lt;br /&gt;&lt;br /&gt;$ mapiprofile --profile=MAPIAdmin               \&lt;br /&gt;             --username=Administrator          \&lt;br /&gt;             --password=openchange             \&lt;br /&gt;             --workstation=LOCALHOST           \&lt;br /&gt;             --domain=OPENCHANGE               \&lt;br /&gt;             -I 192.168.194.22                 \&lt;br /&gt;             --create&lt;br /&gt;&lt;br /&gt;This specifies all the information required to find and use a&lt;br /&gt;Microsoft Exchange server. The parameters &lt;c&gt;--workstation&lt;c&gt; and&lt;br /&gt;&lt;c&gt;--domain&lt;c&gt; refer to Microsoft networking names, as used by Samba&lt;br /&gt;and Windows workstations. This command attempts to contact the&lt;br /&gt;Exchange server and verify the credentials, so if there is a network&lt;br /&gt;problem or you specify the wrong password, the profile creation will&lt;br /&gt;fail.&lt;br /&gt;&lt;br /&gt;libmapi asks the Exchange server for any usernames that match the&lt;br /&gt;one you supplied, so in this example if the accounts&lt;br /&gt;&lt;c&gt;Administrator&lt;c&gt; and &lt;c&gt;Administrator2&lt;c&gt; both exist you&lt;br /&gt;will be asked to select which one you mean. This is implemented in&lt;br /&gt;libmapi as a callback, so if you are developing a GUI groupware client&lt;br /&gt;libmapi will pass a list of usernames to your dialog function, and&lt;br /&gt;then resume control when the user has made a selection.&lt;br /&gt;&lt;br /&gt;&lt;c&gt;mapiprofile&lt;c&gt; has other actions, all of which should work now:&lt;br /&gt;&lt;br /&gt;$ mapiprofile --list&lt;br /&gt;$ mapiprofile --MAPIAdmin --dump&lt;br /&gt;$ mapiprofile --MAPIAdmin --default&lt;br /&gt;&lt;br /&gt;The last command sets the default profile, so when some other&lt;br /&gt;&lt;c&gt;libmapi&lt;c&gt; application attempts to perform an operation without&lt;br /&gt;specifying any details, this is the one that is used.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Using libmapi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We have already used one &lt;c&gt;libmapi&lt;c&gt; application,&lt;br /&gt;&lt;c&gt;mapiprofile&lt;c&gt;.  &lt;c&gt;openchangeclient&lt;c&gt; is another example, a&lt;br /&gt;commandline utility that offers all the functions of Outlook as&lt;br /&gt;atoms. Email, folders, calendaring, notes and newmail notification,&lt;br /&gt;with a single function callable per invocation.  For example:&lt;br /&gt;&lt;br /&gt;$ openchangeclient --mailbox&lt;br /&gt;&lt;br /&gt;will list the folder summary for the mailbox associated (at the&lt;br /&gt;Exchange server) with the default profile (as set in the database&lt;br /&gt;stored in the default database.) We recommend you experiment with the&lt;br /&gt;&lt;c&gt;openchangeclient&lt;c&gt; options to get a feel for how complete the&lt;br /&gt;support is.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Introducing libmapiadmin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;c&gt;libmapi&lt;c&gt; implements MAPI functions as Microsoft intended. But&lt;br /&gt;what about administration? A Windows administrator has a graphical&lt;br /&gt;Microsoft Management Console plugin for adding and deleting users,&lt;br /&gt;assigning rights to users and folders and so on. OpenChange provides&lt;br /&gt;an alternative approach through &lt;c&gt;libmapiadmin&lt;c&gt;. This library makes&lt;br /&gt;Active Directory calls to manage user properties, using knowledge from&lt;br /&gt;OpenChange research to add Exchange semantics to normal Active&lt;br /&gt;Directory objects. This ability to manipulate Exchange Objects is&lt;br /&gt;exposed in the sample OpenChange program &lt;c&gt;openchangepfadmin&lt;c&gt;.&lt;br /&gt;&lt;br /&gt;About Exchange Objects&lt;br /&gt;&lt;br /&gt;Exchange objects are assigned to classes.  E-mails typically use&lt;br /&gt;the message class IPM.Note [8], while posts to a public folder have&lt;br /&gt;IPM.Post. Message classes are used by Outlook to determine how to&lt;br /&gt;present a message to a user (eg a note is very different to an&lt;br /&gt;appointment!) but also what logical operations should be permitted or&lt;br /&gt;automatically applied (comparing with other appointments, expiring,&lt;br /&gt;etc.)&lt;br /&gt;&lt;br /&gt;Collection Classes, or Public Folders, are a kind of Exchange&lt;br /&gt;object that enable many of the most-used groupware functions. Public&lt;br /&gt;Folders have classnames that tell Exchange clients what kinds of&lt;br /&gt;message classes it will find within them:&lt;br /&gt;- IPF.Note for emails&lt;br /&gt;- IPF.Appointment for calendaring&lt;br /&gt;- IPF.Task for task&lt;br /&gt;- IPF.Contact for contacts&lt;br /&gt;&lt;br /&gt;You have seen collection classes already, listed in the response to&lt;br /&gt;the &lt;c&gt;openchangeclient --mailbox&lt;c&gt; command.&lt;br /&gt;&lt;br /&gt;Therefore, despite the very ordinary-sounding name, Exchange&lt;br /&gt;Public folders are the primary technical mechanism by which Microsoft&lt;br /&gt;Exchange stops non-MAPI groupware systems from interoperability. They&lt;br /&gt;are also the prime mechanism for delivering the functionality that&lt;br /&gt;millions of people rely on every day.&lt;br /&gt;&lt;br /&gt;openchangepfadmin overview&lt;br /&gt;&lt;br /&gt;We will now use openchangepfadmin to setup our test environment and&lt;br /&gt;operate on Public Folders. To do this we need a Windows user account&lt;br /&gt;with sufficient access rights. We will use the MAPIAdmin profile we&lt;br /&gt;previously created with &lt;c&gt;mapiprofile&lt;c&gt;, which is associated with&lt;br /&gt;the Administrator account. We made this the default profile in the&lt;br /&gt;default profile database, so we will not need to specify these details&lt;br /&gt;again in this article.&lt;br /&gt;&lt;br /&gt;We need to create two users account in Active Directory:&lt;br /&gt;linuxowner and linuxreader. openchangepfadmin will automate the whole&lt;br /&gt;process through public functions from OpenChange libmapiadmin and its&lt;br /&gt;adduser command:&lt;br /&gt;* AD user account created through SAMR [7]&lt;br /&gt;* User attributes extended in LDAP to match what Exchange needs&lt;br /&gt;* Exchange mailbox created for the new user.&lt;br /&gt;&lt;br /&gt;This account creation operation operation is performed through an&lt;br /&gt;asynchronous call and can take up to 60 seconds. The Exchange account is&lt;br /&gt;usable once &lt;c&gt;openchangepfadmin --adduser&lt;c&gt; returns.&lt;br /&gt;&lt;br /&gt;The only mandatory parameter is the username.  If no user-defined&lt;br /&gt;account password is specified a random generated password will be used&lt;br /&gt;and its value displayed on standard output if the operation&lt;br /&gt;succeeds. Default values are supplied for any parameters omitted&lt;br /&gt;including description (&lt;c&gt;--adesc&lt;c&gt;), comment (&lt;c&gt;--acomment&lt;c&gt;) or&lt;br /&gt;full name (&lt;c&gt;--afullname&lt;c&gt;).&lt;br /&gt;&lt;br /&gt;You can verify that the operation succeeded in the Windows Active&lt;br /&gt;Directory Users and Computers console (Figure 1).&lt;br /&gt;&lt;br /&gt;$ openchangepfadmin --adduser=linuxowner --apassword=linuxowner \&lt;br /&gt;                   --adesc="Linux Owner Test account"  \&lt;br /&gt;      --afullname="Linux Owner"&lt;br /&gt;   mapiadmin_user_add       : MAPI_E_SUCCESS (0x0)&lt;br /&gt;username: linuxowner&lt;br /&gt;password: linuxowner&lt;br /&gt;$ openchangepfadmin --adduser=linuxreader --apassword=linuxreader \&lt;br /&gt;                   --adesc="Linux Reader Test account"    \&lt;br /&gt;      --afullname="Linux Reader"&lt;br /&gt;   mapiadmin_user_add       : MAPI_E_SUCCESS (0x0)&lt;br /&gt;username: linuxreader&lt;br /&gt;password: linuxreader&lt;br /&gt;&lt;br /&gt;Bi: screenshots/01_openchangepfadmin_accounts.png&lt;br /&gt;B: Figure 1: User add operation results in Windows Active Directory&lt;br /&gt;Users and Computers console&lt;br /&gt;&lt;br /&gt;For the second step of this demonstration we will create a public&lt;br /&gt;folder under &lt;c&gt;All Public Folders&lt;c&gt;. &lt;c&gt;openchangepfadmin&lt;c&gt;&lt;br /&gt;doesn't yet allow Administrators to create subdirectories, but&lt;br /&gt;you can specify the class of collection the folder will handle.&lt;br /&gt;In this example, we will create a public and shared calendar named&lt;br /&gt;&lt;c&gt;public_events&lt;c&gt; (Figure 2). If you ommit &lt;c&gt;dirclass&lt;c&gt;, the&lt;br /&gt;folder collection class will be set to IPM.Post by default.&lt;br /&gt;&lt;br /&gt;$ openchangepfadmin --mkdir --folder=public_events --dirclass=IPF.Appointment&lt;br /&gt;&lt;br /&gt;Bi: screenshots/02_openchangepfadmin_newcalendar.png&lt;br /&gt;B: Figure 2: Public calendar creation in Public Folder store&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We will now set permissions for our two new users with different&lt;br /&gt;access rights to the&lt;c&gt;public_events&lt;c&gt; public folder. The full list&lt;br /&gt;of Exchange access rights is very long, so there are some predefined&lt;br /&gt;roles that users can have. In this case we use the roles of Owner (can&lt;br /&gt;do anything with a calendar entry) and Reviewer (can read but not&lt;br /&gt;modify calendar entries.). We will also assign the role of None (no&lt;br /&gt;rights at all) to &lt;c&gt;Default&lt;c&gt; and &lt;c&gt;Anonymous&lt;c&gt; preventing any&lt;br /&gt;users but linuxowner and linuxreader from accessing the folder&lt;br /&gt;content. These two particular names are not mapped to any AD accounts,&lt;br /&gt;are language dependent (&lt;c&gt;Default&lt;c&gt; is generally represented with an&lt;br /&gt;empty string while &lt;c&gt;Anonymous&lt;c&gt; depends on the Windows language),&lt;br /&gt;and their permissions can only be modified. Any attempt to delete or&lt;br /&gt;add permissions for these particular names will cause&lt;br /&gt;&lt;c&gt;openchangepfadmin&lt;c&gt; to return an error.&lt;br /&gt;&lt;br /&gt;$ openchangepfadmin --username=linuxowner --folder=public_events \&lt;br /&gt;                   --addright=RoleOwner&lt;br /&gt;Permission RoleOwner added for linuxowner on folder public_events&lt;br /&gt;&lt;br /&gt;$ openchangepfadmin --username=linuxreader --folder=public_events \&lt;br /&gt;       --addright=RoleReviewer&lt;br /&gt;Permission RoleReviewer added for linuxreader on folder public_events&lt;br /&gt;&lt;br /&gt;$ openchangepfadmin --username="" --folder=public_events \&lt;br /&gt;       --modright=RoleNone&lt;br /&gt;Permission changed to RoleNone for  on folder appointment&lt;br /&gt;&lt;br /&gt;$ openchangepfadmin --username=Anonymous --folder=public_events \&lt;br /&gt;       --modright=RoleNone&lt;br /&gt;Permission changed to RoleNone for Anonymous on folder appointment&lt;br /&gt;&lt;br /&gt;Bi: screenshots/03_openchangepfadmin_acls.png&lt;br /&gt;B: Figure3: public_events folder sharing window&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;openchangeclient Revisited&lt;br /&gt;&lt;br /&gt;&lt;c&gt;openchangeclient&lt;c&gt; provides atomic operations for all Outlook&lt;br /&gt;functionality. Many of these features deal with the message class,&lt;br /&gt;such as the contents of the Inbox (which is a container class of type&lt;br /&gt;IPM.Post and holds IPM.Note items):&lt;br /&gt;&lt;br /&gt;$ openchangeclient --fetchmail&lt;br /&gt;&lt;br /&gt;Now we are going to operate on Public Folders, specifically the&lt;br /&gt;container class IPF.Appointment. To do this we need to be two users in&lt;br /&gt;succession, both having write access to this shared object, so we will&lt;br /&gt;no longer use the default profile feature of openchangeclient.&lt;br /&gt;&lt;br /&gt;$ openchangeclient --profile=linuxowner --pf --folder=public_events \&lt;br /&gt;      --sendappointment --subject="Coffee Break"      \&lt;br /&gt;     --location="Coffee Machine" --busystatus=BUSY    \&lt;br /&gt;     --dtstart="2007-09-01 10:00:00"      \&lt;br /&gt;     --dtend="2007-09-01 10:45:00"&lt;br /&gt;   sendappointment          : MAPI_E_SUCCESS (0x0)&lt;br /&gt;&lt;br /&gt;Bi: screenshots/04_outlook_calview.png&lt;br /&gt;B: sendappointment operation result in Microsoft Outlook&lt;br /&gt;&lt;br /&gt;$ openchangeclient --profile=linuxreader --pf --folder=public_events \&lt;br /&gt;      --sendappointment --subject="Coffee Break Extension" \&lt;br /&gt;     --location="Coffee Machine" --busystatus=BUSY  \&lt;br /&gt;     --dtstart="2007-09-01 10:45:00"   \&lt;br /&gt;     --dtend="2007-09-01 12:00:00"&lt;br /&gt;   sendappointment          : UNKNOWN_ENUM_VALUE (0x4FF)&lt;br /&gt;&lt;br /&gt;$ openchangeclient --profile=linuxreader --pf --folder=public_events \&lt;br /&gt;      --fetch-items=Appointment&lt;br /&gt;|== Coffee Break ==|&lt;br /&gt;       Location: Coffee Machine&lt;br /&gt;       Start time     :   Sat Sep  1 10:00:00 2007 CEST&lt;br /&gt;       End time       :   Sat Sep  1 10:45:00 2007 CEST&lt;br /&gt;       Private: False&lt;br /&gt;   fetchitems               : MAPI_E_SUCCESS (0x0)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the console output above, we can see linuxowner can create&lt;br /&gt;appointment entries in &lt;c&gt;public_events&lt;c&gt; while linuxreader can't&lt;br /&gt;(error returned). In the meantime linuxreader can fetch folder&lt;br /&gt;content.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cleaning up the test environment&lt;br /&gt;&lt;br /&gt;You would never perform testing on an important server, of course, but in&lt;br /&gt;case you do want to reset the Exchange server, here's how:&lt;br /&gt;&lt;br /&gt;$ openchangepfadmin --rmdir --folder=public_events&lt;br /&gt;$ openchangepfadmin --rmuser=linuxowner&lt;br /&gt;   mapiadmin_user_del       : MAPI_E_SUCCESS (0x0)&lt;br /&gt;$ openchangepfadmin --rmuser=linuxreader&lt;br /&gt;   mapiadmin_user_del       : MAPI_E_SUCCESS (0x0)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And After All That...&lt;br /&gt;&lt;br /&gt;In our tour of &lt;c&gt;libmapi&lt;c&gt; and related code we have always been&lt;br /&gt;working relative to Microsoft Exchange Server. As the OpenChange&lt;br /&gt;project progresses, and as other projects start to use our code, that&lt;br /&gt;situation will change. Interoperability is when many dissimilar&lt;br /&gt;systems can communicate using a common language. By making the&lt;br /&gt;language of MAPI easily accessible, we hope the number of dissimilar&lt;br /&gt;systems speaking it will increase greatly.&lt;br /&gt;&lt;br /&gt;And in practical terms for the near future? OpenChange is planning&lt;br /&gt;to release &lt;c&gt;libmapi&lt;c&gt; around November 2007, with support from at&lt;br /&gt;least one GUI groupware tool. Work is continuing on the server, and a&lt;br /&gt;demonstration release should be ready some time in 2007. In the&lt;br /&gt;meantime, the client code we already have is likely to find a role&lt;br /&gt;with Microsoft Exchange administrators who are looking for a simple&lt;br /&gt;tool to automate simple tasks -- perhaps especially now there are Perl&lt;br /&gt;bindings for &lt;c&gt;libmapi&lt;c&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Julien Kerihuel leads the OpenChange project, which he founded in&lt;br /&gt;2003. Dan Shearer handles technical interoperability and strategy issues&lt;br /&gt;for OpenChange, drawing on his twenty years of experience in Open Source.&lt;br /&gt;&lt;br /&gt;I   currently work with OpenChange to build graphical front ends for&lt;br /&gt;OpenChangeTools such as mapiprofile, mapiproxy, openchangepfadmin and&lt;br /&gt;integrating these front ends into the gnome desktop.&lt;br /&gt;&lt;br /&gt;For questions contact us on freenode at #openchange or write me an email&lt;br /&gt;at engmakokal@gmail.com or visit openchange.org&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1517574815508134913-4351412155645292302?l=openchange2009.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://openchange2009.blogspot.com/feeds/4351412155645292302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://openchange2009.blogspot.com/2009/06/about-openchange-project.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1517574815508134913/posts/default/4351412155645292302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1517574815508134913/posts/default/4351412155645292302'/><link rel='alternate' type='text/html' href='http://openchange2009.blogspot.com/2009/06/about-openchange-project.html' title='About Openchange Project'/><author><name>Makokal</name><uri>http://www.blogger.com/profile/08649243289697802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='8' src='http://3.bp.blogspot.com/_d1-kJNkHtH4/S4MHdynGngI/AAAAAAAAAGA/Up9iGw2zQEo/S220/lakobot_logo_1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1517574815508134913.post-8425827238857970503</id><published>2009-06-06T12:17:00.000-07:00</published><updated>2009-06-06T12:21:29.236-07:00</updated><title type='text'>Development Environment Set, ...</title><content type='html'>I have managed to set up the development environment for this project successfully. I also tested basic openchange features such as openchange client, creating profiles, sending mails (variety of types). I am now working on the base structure for mapiproxy gui which will be my next task. For this, I am in the process of identifying the capabilties of mapiproxy, what it does, and what can do but does not do, and collect all these info to use in forming the structure of the gui.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1517574815508134913-8425827238857970503?l=openchange2009.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://openchange2009.blogspot.com/feeds/8425827238857970503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://openchange2009.blogspot.com/2009/06/development-environment-set.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1517574815508134913/posts/default/8425827238857970503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1517574815508134913/posts/default/8425827238857970503'/><link rel='alternate' type='text/html' href='http://openchange2009.blogspot.com/2009/06/development-environment-set.html' title='Development Environment Set, ...'/><author><name>Makokal</name><uri>http://www.blogger.com/profile/08649243289697802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='8' src='http://3.bp.blogspot.com/_d1-kJNkHtH4/S4MHdynGngI/AAAAAAAAAGA/Up9iGw2zQEo/S220/lakobot_logo_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1517574815508134913.post-4872192749265967832</id><published>2009-06-01T08:21:00.000-07:00</published><updated>2009-06-01T08:30:56.708-07:00</updated><title type='text'>Introducing the project</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;strong&gt;&lt;span style="font-family: courier new;"&gt;&lt;a href="http://openchange.org"&gt;OpenChange&lt;/a&gt; aims to provide a portable Open Source implementation of Microsoft Exchange Server and Exchange protocols&lt;/span&gt; &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Exchange is a groupware server designed to work with Microsoft Outlook, and providing features such as a messaging server, shared calendars, contact databases, public folders, notes and tasks.During this year's SoC, I will be building the graphical front end to openchangetools. This will encompass a number of tasks such as building GUI for &lt;a href="http://mapiproxy.openchange.org/"&gt;mapiproxy&lt;/a&gt;, openchangepfadmin and openchangeproxy. These guis then need to be integrated into the gnome desktop under System &gt; Administration. Some of the changes by on these guis need to be kept in a database accessible to other programs such as evolution. Look at the full proposal &lt;a href="http://www.openchange.org/index.php?option=com_content&amp;amp;task=view&amp;amp;id=137&amp;amp;Itemid=91"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Check out the openchange wiki &lt;a href="http://wiki.openchange.org/index.php/Main_Page"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I will be posting relevant updates on the project as I progress.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1517574815508134913-4872192749265967832?l=openchange2009.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://openchange2009.blogspot.com/feeds/4872192749265967832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://openchange2009.blogspot.com/2009/06/introducing-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1517574815508134913/posts/default/4872192749265967832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1517574815508134913/posts/default/4872192749265967832'/><link rel='alternate' type='text/html' href='http://openchange2009.blogspot.com/2009/06/introducing-project.html' title='Introducing the project'/><author><name>Makokal</name><uri>http://www.blogger.com/profile/08649243289697802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='8' src='http://3.bp.blogspot.com/_d1-kJNkHtH4/S4MHdynGngI/AAAAAAAAAGA/Up9iGw2zQEo/S220/lakobot_logo_1.jpg'/></author><thr:total>0</thr:total></entry></feed>
