URLs and Interfaces
-------------------
By default, OWA runs at http://SERVERNAME/exchange/USERNAME, but the
"/exchange" part can be changed by the administrator.

There are roughly three interfaces all running on the same set of
URLs: HTML-only, HTML/XML/ActiveX, and WebDAV. In general, WebDAV-only
methods like PROPPATCH and SEARCH always access the WebDAV interface.
Standard HTTP methods like GET and POST access the WebDAV interface if
you pass "Translate: f" in the request headers, the IE interface if
you claim to be IE in the User-Agent header, and the HTML OWA
interface otherwise:

	HTML-only:
		GET /exchange/danw/Inbox/foo.EML HTTP/1.0
		User-Agent: Mozilla blah blah blah

		200 OK HTTP/1.0
		Content-Type: text/html

	HTML/XML/ActiveX:
		GET /exchange/danw/Inbox/foo.EML HTTP/1.0
		User-Agent: Mozilla blah (compatible; MSIE blah)

		200 OK HTTP/1.0
		Content-Type: text/xml

	WebDAV:
		GET /exchange/danw/Inbox/foo.EML HTTP/1.0
		Translate: f

		200 OK HTTP/1.0
		Content-Type: message/rfc822



HTTP methods
------------
GET - Used with "Translate: f" to fetch message bodies and iCalendar
data. Used with "User-Agent: MSIE..." to access certain bits of XML
OWA functionality (particularly free/busy data and GAL lookup).

PUT - Used (with "Translate: f") to create new messages and calendar
objects, and to send mail using the mail submission URI.

POST - Used to update out-of-office data by posting new values to the
Options page. Not used for anything else: if you POST a message to a
folder, it is marked as being a draft (meaning that if you
double-click on it in Outlook, it opens in a composer window), and
there doesn't seem to be any way to undo that.


WebDAV methods
--------------
PROPFIND - Used in a few places to fetch properties from one or more
objects. SEARCH and BPROPFIND are used more often though, because they
allow easy selection of multiple objects.

SEARCH - This is a proposed extension to WebDAV (see
draft-davis-dasl-protocol-00.txt in the ietf/ subdir), although IIS's
implementation does not match the proposal completely. (In particular,
it only allows SQL searching, while the spec requires a "simple"
search method as well.) Full info about the SQL syntax can be found on
MSDN, but you only need to know the details if you are editing the
sql-construction code in e2k-connection.c or e2k-restriction.c

PROPPATCH - Used to change properties. Also used to create new objects
in some places (eg, contacts and tasks).

MKCOL, DELETE, COPY, MOVE - Used for shell folder ops only

BPROPFIND, BPROPPATCH, BDELETE, BCOPY, BMOVE - Bulk operations.
Another MS extension. These allow you to act on multiple objects at
once.

BDELETE is used for "empty trash".

BCOPY and BMOVE are used for message moves/copies. We also use the MS
"Allow-Rename" header to tell it to rename the messages if needed.
(Messages delivered to your Inbox get the message Subject plus ".EML"
as their name, by default. Duplicate names get "-2", "-3", etc
appended. So if you receive a message with the subject "Re: foo", it
would be called "Re:%20foo.EML". If you delete it, it is moved to the
Deleted Items folder. Then if you get another message with the subject
"Re: foo", it would also be called "Re:%20foo.EML". If you delete
that, since we use the Allow-Rename header, it would be renamed to
"Re:%20foo-2.EML" automatically.)

The bulk operations return the same result codes as their non-bulk
equivalents if you use them on a single object. If you use them on
multiple objects, they return status 207 (multistatus) with an XML
response giving the results for each object.

SUBSCRIBE/UNSUBSCRIBE/POLL - Another MS extension, explained in the
"subscriptions" doc.


