Liebe Programmverantwortlichinnen und Programmverantwortliche!
Es gibt ein Problem bei der Namenauflösung von IMAP-Ordnern in „emailadmin“. Das Problem manifestiert sich beim Speichern eines Accounts, da wird „Der IMAP-Server hat einen Fehler gemeldet“ angezeigt (anstelle von: „Mail-Konto gespeichert“) und am Reiter „Posteingang-Server“ wird der „Admin user“ als fehlerhaft markiert.
Ursache ist die Namenbildung für „SETQUOTA“ in emailadmin/inc/class.emailadmin_imap.inc.php in den Methoden (function) „getUserMailboxString“ und „getMailBoxUserName“ der Klasse „emailadmin_imap“.
Unter Cyrus sieht die Namenkonvention folgendermaßen aus:
user.[.]@
Obige Methoden bilden aber Namen folgender Art:
user.@@[.]
Da dies (aus EGw-Sicht) wohl ein Cyrus-spezifisches Problem ist, würde ich daher die Methode „getUserMailboxString“ in der Klasse „emailadmin_imap_cyrus“ in „emailadmin/inc/class.emailadmin_imap_cyrus.inc.php“ überschreiben:
…
// MW: Added this function to override the one in the parent class
// MW: which has problems with the creation of the $mailboxString
// MW: for Cyrus. It should be user.$_username[.$_folderName]@$domain
// MW: but it is user.$_username@$domain@$domain[.$folderName]
// MW: This function implements the correct (first) behaviour
/**
* Create mailbox string from given mailbox-name and user-name
*
* @param string $_folderName=’’
* @return string utf-7 encoded (done in getMailboxName)
*/
function getUserMailboxString($_username, $_folderName=’’)
{
$nameSpaces = $this->getNameSpaceArray();
if(!isset($nameSpaces['others'])) {
return false;
}
list($username,$domain) = explode('@',$this->getMailBoxUserName($_username),2);
$domain = (!empty($domain) ? $domain : $this->domainName);
$mailboxString = $nameSpaces['others'][0]['name'] . $username . (!empty($_folderName) ? ($nameSpaces['others'][0]['delimiter']?$nameSpaces['others'][0]['delimiter']:'/') . $_folderName : '');
if($this->loginType == 'vmailmgr' || $this->loginType == 'email' || $this->loginType == 'uidNumber') {
$mailboxString .= '@'. $domain;
}
return $mailboxString;
}
/**
* returns information about a user
* currently only supported information is the current quota
*
* @param string $_username
* @return array userdata
*/
function getUserData($_username)
…
Die Änderungen sind:
- wir nehmen den $username ohne Domain von „getMailBoxUserName“.
- wir nehmen die $domain – so vorhanden – aus „getMailBoxUserName“, sonst $this->domainName
- wir hängen die $domain nicht an $username, sondern an $mailboxString
Ich habe das jetzt nicht vollumfänglich getestet, aber sowohl die Bearbeitung des Accounts (Schaltfläche „Übernehmen“) als auch der Aufruf des Mail-Moduls und das Öffnen einer Nachricht funktionieren.
Systeminformation:
System: Linux … 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u4 (2016-02-29) x86_64
egroupware-epl: 14.3.20160304
Liebe Grüße
Michael Michael Warmuth
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
egroupware-german mailing list
egroupware-german@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/egroupware-german