diff --git a/Documentation/SOGo Installation Guide.odt b/Documentation/SOGo Installation Guide.odt index 8e2804070..d0b0c66fa 100644 Binary files a/Documentation/SOGo Installation Guide.odt and b/Documentation/SOGo Installation Guide.odt differ diff --git a/SoObjects/SOGo/SOGoDomainDefaults.h b/SoObjects/SOGo/SOGoDomainDefaults.h index d7fce3bad..557c86002 100644 --- a/SoObjects/SOGo/SOGoDomainDefaults.h +++ b/SoObjects/SOGo/SOGoDomainDefaults.h @@ -1,6 +1,6 @@ /* SOGoDomainDefaults.h - this file is part of SOGo * - * Copyright (C) 2009-2012 Inverse inc. + * Copyright (C) 2009-2013 Inverse inc. * * Author: Wolfgang Sourdeau * @@ -47,7 +47,7 @@ - (NSString *) imapAclGroupIdPrefix; - (NSString *) imapFolderSeparator; - (BOOL) imapAclConformsToIMAPExt; -- (BOOL) forceIMAPLoginWithEmail; +- (BOOL) forceExternalLoginWithEmail; - (BOOL) sieveScriptsEnabled; - (BOOL) forwardEnabled; - (BOOL) vacationEnabled; diff --git a/SoObjects/SOGo/SOGoDomainDefaults.m b/SoObjects/SOGo/SOGoDomainDefaults.m index 998d43db1..9a4747eca 100644 --- a/SoObjects/SOGo/SOGoDomainDefaults.m +++ b/SoObjects/SOGo/SOGoDomainDefaults.m @@ -171,8 +171,15 @@ return [self stringArrayForKey: @"SOGoContactsDefaultRoles"]; } -- (BOOL) forceIMAPLoginWithEmail +// +// In v2.0.4, SOGoForceIMAPLoginWithEmail was renamed to SOGoForceExternalLoginWithEmail +// but we keep backward compatbility for now with previous versions. +// +- (BOOL) forceExternalLoginWithEmail { + if ([self stringForKey: @"SOGoForceExternalLoginWithEmail"]) + return [self boolForKey: @"SOGoForceExternalLoginWithEmail"]; + return [self boolForKey: @"SOGoForceIMAPLoginWithEmail"]; } diff --git a/SoObjects/SOGo/SOGoMailer.m b/SoObjects/SOGo/SOGoMailer.m index f792669ac..c19d303f9 100644 --- a/SoObjects/SOGo/SOGoMailer.m +++ b/SoObjects/SOGo/SOGoMailer.m @@ -1,6 +1,6 @@ /* SOGoMailer.m - this file is part of SOGo * - * Copyright (C) 2007-2010 Inverse inc. + * Copyright (C) 2007-2013 Inverse inc. * * Author: Wolfgang Sourdeau * @@ -37,6 +37,7 @@ #import "SOGoDomainDefaults.h" #import "SOGoSystemDefaults.h" #import "SOGoUser.h" +#import "SOGoUserManager.h" #import "SOGoMailer.h" @@ -121,17 +122,18 @@ withAuthenticator: (id ) authenticator inContext: (WOContext *) woContext { - NGInternetSocketAddress *addr; NSString *currentTo, *host, *login, *password; + NGInternetSocketAddress *addr; NSMutableArray *toErrors; NSEnumerator *addresses; NGSmtpClient *client; - NSException *result = nil; + NSException *result; NSRange r; unsigned int port; client = [NGSmtpClient smtpClient]; host = smtpServer; + result = nil; port = 25; // We check if there is a port specified in the smtpServer ivar value @@ -151,7 +153,10 @@ [client connectToAddress: addr]; if ([authenticationType isEqualToString: @"plain"]) { - login = [[authenticator userInContext: woContext] login]; + login = [[SOGoUserManager sharedUserManager] + getExternalLoginForUID: [[authenticator userInContext: woContext] loginInDomain] + inDomain: [[authenticator userInContext: woContext] domain]]; + password = [authenticator passwordInContext: woContext]; if ([login length] == 0 || [login isEqualToString: @"anonymous"] diff --git a/SoObjects/SOGo/SOGoUser.m b/SoObjects/SOGo/SOGoUser.m index 06f663c55..ca65498b4 100644 --- a/SoObjects/SOGo/SOGoUser.m +++ b/SoObjects/SOGo/SOGoUser.m @@ -592,8 +592,8 @@ // 1. login imapLogin = [[SOGoUserManager sharedUserManager] - getImapLoginForUID: [self loginInDomain] - inDomain: [self domain]]; + getExternalLoginForUID: [self loginInDomain] + inDomain: [self domain]]; [mailAccount setObject: imapLogin forKey: @"userName"]; // 2. server diff --git a/SoObjects/SOGo/SOGoUserManager.h b/SoObjects/SOGo/SOGoUserManager.h index ef5ca18cd..23ef643df 100644 --- a/SoObjects/SOGo/SOGoUserManager.h +++ b/SoObjects/SOGo/SOGoUserManager.h @@ -1,6 +1,6 @@ /* SOGoUserManager.h - this file is part of SOGo * - * Copyright (C) 2007-2011 Inverse inc. + * Copyright (C) 2007-2013 Inverse inc. * * Author: Wolfgang Sourdeau * Francis Lachapelle @@ -76,8 +76,8 @@ - (NSString *) getCNForUID: (NSString *) uid; - (NSString *) getEmailForUID: (NSString *) uid; - (NSString *) getFullEmailForUID: (NSString *) uid; -- (NSString *) getImapLoginForUID: (NSString *) uid - inDomain: (NSString *) domain; +- (NSString *) getExternalLoginForUID: (NSString *) uid + inDomain: (NSString *) domain; - (NSString *) getUIDForEmail: (NSString *) email; - (NSString *) getLoginForDN: (NSString *) theDN; diff --git a/SoObjects/SOGo/SOGoUserManager.m b/SoObjects/SOGo/SOGoUserManager.m index 4b630213f..a583164f4 100644 --- a/SoObjects/SOGo/SOGoUserManager.m +++ b/SoObjects/SOGo/SOGoUserManager.m @@ -358,8 +358,8 @@ static Class NSNullK; return fullEmail; } -- (NSString *) getImapLoginForUID: (NSString *) uid - inDomain: (NSString *) domain +- (NSString *) getExternalLoginForUID: (NSString *) uid + inDomain: (NSString *) domain { NSDictionary *contactInfos; NSString *login; @@ -375,7 +375,7 @@ static Class NSNullK; else dd = [SOGoSystemDefaults sharedSystemDefaults]; - login = [dd forceIMAPLoginWithEmail] ? [self getEmailForUID: uid] : uid; + login = [dd forceExternalLoginWithEmail] ? [self getEmailForUID: uid] : uid; } return login;