This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

OWA and ASL Proxy

When proxy is on (trasparent mode), i can't access to mail server using Microsoft Exchange 2000 Outlook Web Access.

It is possible to fix the problem?

Some search in internet and i have found this doc.

> Using squid-2.4-200011210000 under cygwin1.1.5 modified the http.c file,
> enums.h file and url.c files as below.
> Changes are marked with the comment /* Added this line to accomodate
> Microsoft Exchange 2000 Outlook Web Access*/

> The solution was sourced partially from the archive but i couldn't
> understand all the references to RFC's (Sorry I don't understand much C)
> so found the similiar entries that were talked about eg METHOD_BMOVE and
> METHOD_BDELETE and it worked. so here is   8-)

> Modified http.c
> httpMaybeRemovePublic(StoreEntry * e, http_status status)
> {
>     int remove = 0;
>     int forbidden = 0;
>     StoreEntry *pe;
>     if (!EBIT_TEST(e->flags, KEY_PRIVATE))
>         return;
>     switch (status) {
>     case HTTP_OK:
>     case HTTP_NON_AUTHORITATIVE_INFORMATION:
>     case HTTP_MULTIPLE_CHOICES:
>     case HTTP_MOVED_PERMANENTLY:
>     case HTTP_MOVED_TEMPORARILY:
>     case HTTP_GONE:
>     case HTTP_NOT_FOUND:
>         remove = 1;
>         break;
>     case HTTP_FORBIDDEN:
>     case HTTP_METHOD_NOT_ALLOWED:
>         forbidden = 1;
>         break;
> #if WORK_IN_PROGRESS
>     case HTTP_UNAUTHORIZED:
>         forbidden = 1;
>         break;
> #endif
>     default:
> #if QUESTIONABLE
>         /*
>          * Any 2xx response should eject previously cached entities...
>          */
>         if (status >= 200 && status              remove = 1;
> #endif
>         break;
>     }
>     if (!remove && !forbidden)
>         return;
>     assert(e->mem_obj);
>     if ((pe = storeGetPublic(e->mem_obj->url, e->mem_obj->method)) !=
> NULL) {
>         assert(e != pe);
>         storeRelease(pe);
>     }
>     /*
>      * Also remove any cached HEAD response in case the object has
>      * changed.
>      */
>     if ((pe = storeGetPublic(e->mem_obj->url, METHOD_HEAD)) != NULL) {
>         assert(e != pe);
>         storeRelease(pe);
>     }
>     if (forbidden)
>         return;
>     switch (e->mem_obj->method) {
>     case METHOD_PUT:
>     case METHOD_DELETE:
>     case METHOD_PROPPATCH:
>     case METHOD_MKCOL:
>     case METHOD_MOVE:
>     case METHOD_BMOVE:
>     case METHOD_BDELETE:
>     case METHOD_SEARCH: /* Added this line to accomodate Microsoft
> Exchange 2000 Outlook Web Access*/
>         /*
>          * Remove any cached GET object if it is beleived that the
>          * object may have changed as a result of other methods
>          */
>         if ((pe = storeGetPublic(e->mem_obj->url, METHOD_GET)) != NULL)
> {
>             assert(e != pe);
>             storeRelease(pe);
>         }
>         break;
>     }
> }


> modified the url.c file to look like this:

> const char *RequestMethodStr[] =
> {
>     "NONE",
>     "GET",
>     "POST",
>     "PUT",
>     "HEAD",
>     "CONNECT",
>     "TRACE",
>     "PURGE",
>     "OPTIONS",
>     "DELETE",
>     "PROPFIND",
>     "PROPPATCH",
>     "MKCOL",
>     "COPY",
>     "MOVE",
>     "LOCK",
>     "UNLOCK",
>     "BMOVE",
>     "BDELETE",
>     "BPROPFIND",
>     "%EXT00",
>     "%EXT01",
>     "%EXT02",
>     "%EXT03",
>     "%EXT04",
>     "%EXT05",
>     "%EXT06",
>     "%EXT07",
>     "%EXT08",
>     "%EXT09",
>     "%EXT10",
>     "%EXT11",
>     "%EXT12",
>     "%EXT13",
>     "%EXT14",
>     "%EXT15",
>     "%EXT16",
>     "%EXT17",
>     "%EXT18",
>     "%EXT19",
>     "SEARCH", /* Added this line to accomodate Microsoft Exchange 2000
> Outlook Web Access*/
>     "ERROR"
> };

> The "SEARCH" was the method added.

> and then in enums.h changed
> enum {
>     METHOD_NONE,                /* 000 */
>     METHOD_GET,                 /* 001 */
>     METHOD_POST,                /* 010 */
>     METHOD_PUT,                 /* 011 */
>     METHOD_HEAD,                /* 100 */
>     METHOD_CONNECT,             /* 101 */
>     METHOD_TRACE,               /* 110 */
>     METHOD_PURGE,               /* 111 */
>     METHOD_OPTIONS,
>     METHOD_DELETE,              /* RFC2616 section 9.7 */
>     METHOD_PROPFIND,
>     METHOD_PROPPATCH,
>     METHOD_MKCOL,
>     METHOD_COPY,
>     METHOD_MOVE,
>     METHOD_LOCK,
>     METHOD_UNLOCK,
>     METHOD_BMOVE,
>     METHOD_BDELETE,
>     METHOD_BPROPFIND,
>     METHOD_EXT00,
>     METHOD_EXT01,
>     METHOD_EXT02,
>     METHOD_EXT03,
>     METHOD_EXT04,
>     METHOD_EXT05,
>     METHOD_EXT06,
>     METHOD_EXT07,
>     METHOD_EXT08,
>     METHOD_EXT09,
>     METHOD_EXT10,
>     METHOD_EXT11,
>     METHOD_EXT12,
>     METHOD_EXT13,
>     METHOD_EXT14,
>     METHOD_EXT15,
>     METHOD_EXT16,
>     METHOD_EXT17,
>     METHOD_EXT18,
>     METHOD_EXT19,
>     METHOD_SEARCH, /* Added this line to accomodate Microsoft Exchange
> 2000 Outlook Web Access*/
>     METHOD_ENUM_END

Best Regards
Fabrizio


This thread was automatically locked due to age.
Parents
  • I had the same Problem using Squid as a proxy at a customer site. MS Knowledge Base search returned, that OWA uses WEBDAV, which was at that time not supported by squid. My solution was to enable HTTPS on my OWA-Server, so that the proxy does not see the http-communication between  the OWA-Client and OWA-Server because it is SLL encrypted and does ony a "pass-through" of the https packets. This worked great for me and of course it greatly improves security.
      
  • This has always worked via https for me.  But if you are leary of spending money on a SSL cert for you exchange server you can goto www.freessl.com and get 1 year 128 be ssl certs that are tied to a root CA. 
Reply Children