diff --unified --recursive SOGo.orig/SoObjects/SOGo/SOGoProxyAuthenticator.h SOGo/SoObjects/SOGo/SOGoProxyAuthenticator.h
--- SOGo.orig/SoObjects/SOGo/SOGoProxyAuthenticator.h	2010-02-08 21:39:16.000000000 +0100
+++ SOGo/SoObjects/SOGo/SOGoProxyAuthenticator.h	2010-02-09 09:23:26.000000000 +0100
@@ -40,8 +40,8 @@
 
 @class SOGoUser;
 
-// @interface SOGoProxyAuthenticator : SoHTTPAuthenticator <SOGoAuthenticator>
-@interface SOGoProxyAuthenticator : NSObject <SOGoAuthenticator>
+@interface SOGoProxyAuthenticator : SoHTTPAuthenticator <SOGoAuthenticator>
+// @interface SOGoProxyAuthenticator : NSObject <SOGoAuthenticator>
 
 + (id) sharedSOGoProxyAuthenticator;
 
diff --unified --recursive SOGo.orig/SoObjects/SOGo/SOGoProxyAuthenticator.m SOGo/SoObjects/SOGo/SOGoProxyAuthenticator.m
--- SOGo.orig/SoObjects/SOGo/SOGoProxyAuthenticator.m	2010-02-08 21:39:16.000000000 +0100
+++ SOGo/SoObjects/SOGo/SOGoProxyAuthenticator.m	2010-02-09 09:25:21.000000000 +0100
@@ -100,14 +100,26 @@
 
 - (NSString *) passwordInContext: (WOContext *) context
 {
-  return @"";
+  NSString  *auth, *password;
+  NSArray   *creds;
+
+  password = nil;
+  auth = [[context request] headerForKey: @"authorization"];
+  if (auth)
+    {
+      creds = [self parseCredentials: auth];
+      if ([creds count] > 1)
+	password = [creds objectAtIndex: 1];
+    }
+
+  return password;
 }
 
 - (NSString *) imapPasswordInContext: (WOContext *) context
                            forServer: (NSString *) imapServer
                           forceRenew: (BOOL) renew
 {
-  return (renew ? nil : @"");
+  return [self passwordInContext: context];
 }
 
 - (WOResponse *) preprocessCredentialsInContext: (WOContext *) context
