Fix OpenChange server code and access to Samba4 databases.
[OpenChange-git-clone.git] / README
blob8ee2e77d47b0a0ef1845b07ac39295a008b3c054
1 This is the README file for OpenChange
3 ABOUT OPENCHANGE
5 The OpenChange Project aims to provide a portable Open Source
6 implementation of Microsoft Exchange Server and Exchange
7 protocols. Exchange is a groupware server designed to work with
8 Microsoft Outlook, and providing features such as a messaging server,
9 shared calendars, contact databases, public folders, notes and tasks. 
11 The OpenChange project has three goals:
12 * To provide a library for interoperability with Exchange protocols, and
13 to assist implementers to use this to create groupware that
14 interoperates with both Exchange and other OpenChange-based software. 
16 * To provide an alternative to Microsoft Exchange Server which uses
17 native Exchange protocols and provides exactly equivalent
18 functionality when viewed from Microsoft Outlook clients. 
20 * To develop a body of knowledge about the most popular groupware
21 protocols in use commercially today in order to promote development of
22 a documented and unencumbered standard, with all the benefits that
23 standards bring. 
26 DOCUMENTATION
28 There are two sources of documentation - text files in the doc/
29 directory, and API documentation generated from the source files using
30 doxygen. You can create the API documentation yourself (using "make
31 doxygen" at the top level) or you can refer to the copy on the
32 OpenChange web site at
33 http://apidocs.openchange.org/overview/index.html
35 doc/howto.txt contains instructions on how to install and set up
36 client libraries, client utilities and the server / proxy parts of
37 OpenChange.
38 doc/man/ contains man(1) pages for several OpenChange utilities. Note
39 that man pages for programming (i.e. the parts that would appear in
40 man3) are generated by doxygen, and will be found in apidocs/ if you
41 generate the documentation yourself.
42 doc/doxygen/ provides static content used as part of the doxygen API
43 documentation generation process.
44 doc/examples/ provides programming examples for libmapi.
47 STRUCTURE
48 - bin/  This directory is created during the build process. It
49 contains the binaries (executable programs) that are compiled during
50 the "make" step. The source for most of these is in the utils/
51 directory, described below.
53 - doc/  This directory contains documentation - see description above
54 (in DOCUMENTATION) for the various contents of this directory.
56 - gen_ndr/  This directory contains routines for handling the Network
57 Data Representation (NDR) for various Exhange RPC calls. The contents
58 of this directory are generated (using Samba's pidl IDL compiler) at
59 build time. The main input file is exchange.idl (see top level
60 directory).
62 - libmapi/  This directory contains the main client-side library,
63 called libmapi. libmapi closely reflects the underlying protocol
64 operations (Exchange RPC) being performed between the client and the
65 server. For more information, consult the API documentation (either
66 build yourself, or online at
67 http://apidocs.openchange.org/libmapi/index.html)
69 - libmapi++/  This directory contains C++ bindings for libmapi. It is
70 not a replacement for libmapi, but is intended to provide easier
71 access to many libmapi functions for C++ programmers. For more
72 information, consult the API documentation (either build yourself, or
73 online at http://apidocs.openchange.org/libmapi++/index.html)
75 - libmapiadmin/  This directory contains client-side library functions
76 for administering OpenChange or Exchange servers. For more
77 information, consult the API documentation (either build yourself, or
78 online at http://apidocs.openchange.org/libmapiadmin/index.html). If
79 you are looking for a program you can run, instead of library
80 functions to write your own program, "openchangepfadmin" might be of
81 interest.
83 - libocpf/  This directory contains library functions for the
84 OpenChange Property Files (OCPF). This allows building of mail
85 messages, address book entries, appointments and similar objects from
86 text files. For more information, consult the API documentation
87 (either build yourself, or online at
88 http://apidocs.openchange.org/libocpf/index.html) 
90 - mapiproxy/ This directory provides an Exchange RPC proxy. You can
91 use this to provide transparent proxying, or to change / monitor 
92 connections between the client and server. For more information,
93 consult the API documentation (either build yourself, or online at
94 http://apidocs.openchange.org/mapiproxy/index.html) 
96 - pymapi/  This directory contains hand-written python bindings for
97 libmapi functions. There are also SWIG generated bindings - see the
98 swig/ directory below.
100 - python/  This directory contains python scripts used to set up
101 ("provision") the server side. They are not required for the client
102 side.
104 - samba4/  This directory will be created during the build process if
105 you call "make samba" or execute the ./script/installsamba4.sh
106 script. It is used to build samba4, if required.
108 - script/  This directory contains a range of scripts useful for
109 development or use of OpenChange. [TODO: document the scripts -
110 perhaps write script/README?] 
112 - setup/  This directory contains data for setting up ("provisioning")
113 the server.
115 - swig/  This directory contains support for SWIG
116 (http://www.swig.org/) bindings generation.
118 - testprogs/  This directory contains developer test tools
120 - torture/  This directory contains modules to test openchange
121 functionality using the Samba "smbtorture" framework. This is partly
122 obsoleted by the standalone "mapitest" suite - see utils/mapitest/ below.
124 - utils/  This directory contains the source code for a range of
125 applications / utilities that can be used to interact with an exchange
126 server. They include:
127  - utils/backup/        backup and restore tools
128  - utils/exchange2ical/ converts Exchange calendar into an ICal file
129  - utils/exchange2mbox  two way conversion between Exchange mail and mbox
130  - utils/mapiprofile    set up client side profiles (login information)
131  - utils/mapitest/      test tools for libmapi functionality
132  - utils/mapitrace/     test tool for tracing MAPI calls
133  - utils/openchangeclient       command line client for Exchange RPC
134  - utils/openchangepfadmin      Public Folders admin tools and 
135                                 administration of Exchange users (add/del) 
136  - utils/schemaIDGUID
137 For more information on these tools, refer to the man(1) pages in doc/man/man1