Update docs for mapiproxy entry.
[jelmer/openchange.git] / README
1 This is the README file for OpenChange
2
3 ABOUT OPENCHANGE
4
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. 
10
11 The OpenChange project has three goals:
12 * To provide a library for interoperability with Exchange protocols, and
13 to assist implementors to use this to create groupware that
14 interoperates with both Exchange and other OpenChange-based software. 
15
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. 
19
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. 
24
25
26 DOCUMENTATION
27
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
34
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.
45
46
47 STRUCTURE
48 [TODO: add description of each directory]
49 - bin/  This directory is created during the build process. It
50 contains the binaries (executable programs) that are compiled during
51 the "make" step. The source for most of these is in the utils/
52 directory, described below.
53
54 - doc/  This directory contains documentation - see description above
55 (in DOCUMENTATION) for the various contents of this directory.
56
57 - gen_ndr/  This directory contains routines for handling the Network
58 Data Representation (NDR) for various Exhange RPC calls. The contents
59 of this directory are generated (using Samba's pidl IDL compiler) at
60 build time. The main input file is exchange.idl (see top level
61 directory).
62
63 - libmapi/  This directory contains the main client-side library,
64 called libmapi. libmapi closely reflects the underlying protocol
65 operations (Exchange RPC) being performed between the client and the
66 server. For more information, consult the API documentation (either
67 build yourself, or online at
68 http://apidocs.openchange.org/libmapi/index.html)
69
70 - libmapi++/  This directory contains C++ bindings for libmapi. It is
71 not a replacement for libmapi, but is intended to provide easier
72 access to many libmapi functions for C++ programmers. For more
73 information, consult the API documentation (either build yourself, or
74 online at http://apidocs.openchange.org/libmapi++/index.html)
75
76 - libmapiadmin/  This directory contains client-side library functions
77 for administering OpenChange or Exchange servers. For more
78 information, consult the API documentation (either build yourself, or
79 online at http://apidocs.openchange.org/libmapiadmin/index.html). If
80 you are looking for a program you can run, instead of library
81 functions to write your own program, "openchangepfadmin" might be of
82 interest.
83
84 - libocpf/  This directory contains library functions for the
85 OpenChange Property Files (OCPF). This allows building of mail
86 messages, address book entries, appointments and similar objects from
87 text files. For more information, consult the API documentation
88 (either build yourself, or online at
89 http://apidocs.openchange.org/libocpf/index.html) 
90
91 - mapiproxy/ This directory provides an Exchange RPC proxy. You can
92 use this to provide transparent proxying, or to change / monitor 
93 connections between the client and server. For more information,
94 consult the API documentation (either build yourself, or online at
95 http://apidocs.openchange.org/mapiproxy/index.html) 
96
97 - pymapi/  This directory contains hand-written python bindings for
98 libmapi functions. There are also SWIG generated bindings - see the
99 swig/ directory below.
100
101 - python/  This directory contains python scripts used to set up
102 ("provision") the server side. They are not required for the client
103 side.
104
105 - samba4/  This directory will be created during the build process if
106 you call "make samba" or execute the ./script/installsamba4.sh
107 script. It is used to build samba4, if required.
108
109 - script/  This directory contains a range of scripts useful for
110 development or use of OpenChange. [TODO: document the scripts -
111 perhaps write script/README?] 
112
113 - setup/  This directory contains data for setting up ("provisioning")
114 the server.
115
116 - swig/  This directory contains support for SWIG
117 (http://www.swig.org/) bindings generation.
118
119 - testprogs/  This directory contains developer test tools
120
121 - torture/  This directory contains modules to test openchange
122 functionality using the Samba "smbtorture" framework. This is partly
123 obsoleted by the standalone "mapitest" suite - see utils/mapitest/ below.
124
125 - utils/  This directory contains the source code for a range of
126 applications / utilities that can be used to interact with an exchange
127 server. They include:
128  - utils/backup/        backup and restore tools
129  - utils/exchange2ical/ converts Exchange calendar into an ICal file
130  - utils/exchange2mbox  two way conversion between Exchange mail and mbox
131  - utils/mapiprofile    set up client side profiles (login information)
132  - utils/mapitest/      test tools for libmapi functionality
133  - utils/mapitrace/
134  - utils/openchangeclient       command line client for Exchange RPC
135  - utils/openchangepfadmin      Public Folders admin tools and 
136                                 administration of Exchange users (add/del) 
137  - utils/schemaIDGUID
138 For more information on these tools, refer to the man(1) pages in doc/man/man1