Fix manual symlink creation for libmapistore, libmapiproxy and libmapiserver.
[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 implementers 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 - 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.
52
53 - doc/  This directory contains documentation - see description above
54 (in DOCUMENTATION) for the various contents of this directory.
55
56 - gen_ndr/  This directory contains routines for handling the Network
57 Data Representation (NDR) for various Exchange 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).
61
62 - libexchange2ical  This directory provides functionality for 
63 converting between Exchange calendar appointments and ICalendar (RFC2445 /
64 RFC5545) format. Exchange -> ICalendar is fairly mature, ICalendar to 
65 Exchange is in work.
66
67 - libmapi/  This directory contains the main client-side library,
68 called libmapi. libmapi closely reflects the underlying protocol
69 operations (Exchange RPC) being performed between the client and the
70 server. For more information, consult the API documentation (either
71 build yourself, or online at
72 http://apidocs.openchange.org/libmapi/index.html)
73
74 - libmapi++/  This directory contains C++ bindings for libmapi. It is
75 not a replacement for libmapi, but is intended to provide easier
76 access to many libmapi functions for C++ programmers. For more
77 information, consult the API documentation (either build yourself, or
78 online at http://apidocs.openchange.org/libmapi++/index.html)
79
80 - libmapiadmin/  This directory contains client-side library functions
81 for administering OpenChange or Exchange servers. For more
82 information, consult the API documentation (either build yourself, or
83 online at http://apidocs.openchange.org/libmapiadmin/index.html). If
84 you are looking for a program you can run, instead of library
85 functions to write your own program, "openchangepfadmin" might be of
86 interest.
87
88 - libocpf/  This directory contains library functions for the
89 OpenChange Property Files (OCPF). This allows building of mail
90 messages, address book entries, appointments and similar objects from
91 text files. For more information, consult the API documentation
92 (either build yourself, or online at
93 http://apidocs.openchange.org/libocpf/index.html) 
94
95 - mapiproxy/ This directory provides an Exchange RPC proxy. You can
96 use this to provide transparent proxying, or to change / monitor 
97 connections between the client and server. For more information,
98 consult the API documentation (either build yourself, or online at
99 http://apidocs.openchange.org/mapiproxy/index.html) 
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 - qt/   This directory contains Qt4 bindings (lib/ subdirectory) and
106 a sample application (demo/ subdirectory). The sample application 
107 is intended for research and development use, not as a complete
108 end-user application.
109
110 - samba4/  This directory will be created during the build process if
111 you call "make samba" or execute the ./script/installsamba4.sh
112 script. It is used to build samba4, if required.
113
114 - script/  This directory contains a range of scripts useful for
115 development or use of OpenChange. [TODO: document the scripts -
116 perhaps write script/README?] 
117
118 - setup/  This directory contains data for setting up ("provisioning")
119 the server.
120
121 - testprogs/  This directory contains developer test tools
122
123 - utils/  This directory contains the source code for a range of
124 applications / utilities that can be used to interact with an exchange
125 server. They include:
126  - utils/backup/        backup and restore tools
127  - utils/exchange2ical  converts Exchange calendar into an ICal file
128  - utils/exchange2mbox  two way conversion between Exchange mail and mbox
129  - utils/mapiprofile    set up client side profiles (login information)
130  - utils/mapitest/      test tools for libmapi functionality
131  - utils/mapitrace/     test tool for tracing MAPI calls
132  - utils/openchangeclient       command line client for Exchange RPC
133  - utils/openchangepfadmin      Public Folders admin tools and 
134                                 administration of Exchange users (add/del) 
135  - utils/schemaIDGUID
136 For more information on these tools, refer to the man(1) pages in doc/man/man1