Error message: NO Public namespaces have no owner

open-xchange
german
dovecot

#1

Hallo,
wenn ein User über das Webfrontend des OX einen neuen Unterordner in einem Öffentlichen Ordner anlegen möchte, so kommt die Fehlermeldung,

ERROR [OXWorker-0003687] com.openexchange.ajax.requesthandler.DispatcherServlet.logException(DispatcherServlet.java:713)
Error processing request.
 com.openexchange.ajax.action=new
 com.openexchange.ajax.module=folders
 com.openexchange.database.schema=localhost_5
 com.openexchange.grizzly.method=PUT
 com.openexchange.grizzly.queryString=action=new&autorename=true&folder_id=default0%2Fpersonal%40emailadresse%2FINBOX&session=739ab2f9815e4509a35b20ed2c0ca11a&tree=0
 com.openexchange.grizzly.remoteAddress=127.0.0.1
 com.openexchange.grizzly.remotePort=56094
 com.openexchange.grizzly.requestURI=/ajax/folders
 com.openexchange.grizzly.serverName=mail.intranet
 com.openexchange.grizzly.servletPath=/ajax/folders
 com.openexchange.grizzly.threadName=OXWorker-0003687
 com.openexchange.grizzly.userAgent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
 com.openexchange.hostname=mail.intranet
 com.openexchange.mail.accountId=0
 com.openexchange.mail.host=agwmx01.intranet
 com.openexchange.mail.host.remoteAddress=10.39.2.10
 com.openexchange.mail.login=user@emailadresse
 com.openexchange.mail.session=739ab2f9815e4509a35b20ed2c0ca11a-6-10-tXJt8AQx3ESP
 com.openexchange.request.trackingId=1226004539-613101465
 com.openexchange.session.authId=0b272ef49f084481a8dc61f3dc5fbe50
 com.openexchange.session.clientId=open-xchange-appsuite
 com.openexchange.session.contextId=10
 com.openexchange.session.loginName=user
 com.openexchange.session.sessionId=739ab2f9815e4509a35b20ed2c0ca11a
 com.openexchange.session.userId=6
 com.openexchange.session.userName=user
com.openexchange.exception.OXException: MSG-1031 Categories=ERROR Message='Error processing agwmx01.intranet mail server response for login user@emailadresse (user=6, context=10). The administrator has been informed. Error message: NO Public namespaces have no owner' exceptionID=1226004539-119306
        com.openexchange.exception.locale: de_DE
        at com.openexchange.exception.OXExceptionFactory.create(OXExceptionFactory.java:176)
        at com.openexchange.exception.OXExceptionFactory.create(OXExceptionFactory.java:166)
        at com.openexchange.exception.OXExceptionFactory.create(OXExceptionFactory.java:139)
        at com.openexchange.mail.mime.MimeMailExceptionCode.create(MimeMailExceptionCode.java:448)
        at com.openexchange.mail.mime.MimeMailException.handleMessagingException(MimeMailException.java:524)
        at com.openexchange.imap.IMAPException.handleMessagingException(IMAPException.java:1401)
        at com.openexchange.imap.IMAPException.handleMessagingException(IMAPException.java:1344)
        at com.openexchange.imap.IMAPFolderStorage.handleMessagingException(IMAPFolderStorage.java:213)
        at com.openexchange.imap.IMAPFolderStorage.handleMessagingException(IMAPFolderStorage.java:199)
        at com.openexchange.imap.IMAPFolderStorage.createFolder(IMAPFolderStorage.java:1435)
        at com.openexchange.folderstorage.mail.MailFolderStorage.createFolder(MailFolderStorage.java:647)
        at com.openexchange.folderstorage.internal.performers.CreatePerformer.doCreateReal(CreatePerformer.java:328)
        at com.openexchange.folderstorage.internal.performers.CreatePerformer.doCreate(CreatePerformer.java:231)
        at com.openexchange.folderstorage.cache.CacheFolderStorage.createFolder(CacheFolderStorage.java:542)
        at com.openexchange.folderstorage.internal.performers.CreatePerformer.doCreateReal(CreatePerformer.java:328)
        at com.openexchange.folderstorage.internal.performers.CreatePerformer.doCreate(CreatePerformer.java:231)
        at com.openexchange.folderstorage.internal.FolderServiceImpl.createFolder(FolderServiceImpl.java:147)
        at com.openexchange.folder.json.actions.CreateAction.doPerform(CreateAction.java:127)
        at com.openexchange.folder.json.actions.AbstractFolderAction.perform(AbstractFolderAction.java:130)
        at com.openexchange.ajax.requesthandler.DefaultDispatcher.doCallAction(DefaultDispatcher.java:601)
        at com.openexchange.ajax.requesthandler.DefaultDispatcher.callAction(DefaultDispatcher.java:577)
        at com.openexchange.ajax.requesthandler.DefaultDispatcher.doPerform(DefaultDispatcher.java:545)
        at com.openexchange.ajax.requesthandler.DefaultDispatcher.perform(DefaultDispatcher.java:262)
        at com.openexchange.ajax.requesthandler.DispatcherServlet.handle(DispatcherServlet.java:482)
        at com.openexchange.ajax.requesthandler.DispatcherServlet.doPut(DispatcherServlet.java:380)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
        at com.openexchange.ajax.AJAXServlet.doService(AJAXServlet.java:551)
        at com.openexchange.ajax.SessionServlet.doService(SessionServlet.java:172)
        at com.openexchange.ajax.requesthandler.DispatcherServlet.service(DispatcherServlet.java:275)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.glassfish.grizzly.servlet.FilterChainImpl.doFilter(FilterChainImpl.java:147)
        at com.openexchange.http.grizzly.servletfilter.RequestReportingFilter.doFilter(RequestReportingFilter.java:138)
        at org.glassfish.grizzly.servlet.FilterChainImpl.doFilter(FilterChainImpl.java:137)
        at com.openexchange.http.grizzly.servletfilter.WrappingFilter.doFilter(WrappingFilter.java:204)
        at org.glassfish.grizzly.servlet.FilterChainImpl.doFilter(FilterChainImpl.java:137)
        at com.openexchange.http.grizzly.service.http.OSGiAuthFilter.doFilter(OSGiAuthFilter.java:140)
        at org.glassfish.grizzly.servlet.FilterChainImpl.doFilter(FilterChainImpl.java:137)
        at org.glassfish.grizzly.servlet.FilterChainImpl.invokeFilterChain(FilterChainImpl.java:106)
        at org.glassfish.grizzly.servlet.ServletHandler.doServletService(ServletHandler.java:224)
        at org.glassfish.grizzly.servlet.ServletHandler.service(ServletHandler.java:178)
        at com.openexchange.http.grizzly.service.http.OSGiMainHandler.service(OSGiMainHandler.java:223)
        at org.glassfish.grizzly.http.server.HttpHandler$1.run(HttpHandler.java:224)
        at com.openexchange.threadpool.internal.CustomThreadPoolExecutor$MDCProvidingRunnable.run(CustomThreadPoolExecutor.java:2575)
        at com.openexchange.threadpool.internal.CustomThreadPoolExecutor$Worker.runTask(CustomThreadPoolExecutor.java:841)
        at com.openexchange.threadpool.internal.CustomThreadPoolExecutor$Worker.run(CustomThreadPoolExecutor.java:868)
        at java.lang.Thread.run(Thread.java:748)
Caused by: com.sun.mail.iap.CommandFailedException: A9 NO Public namespaces have no owner
        at com.sun.mail.iap.Protocol.handleResult(Protocol.java:461)
        at com.sun.mail.imap.protocol.IMAPProtocol.setACL(IMAPProtocol.java:3491)
        at com.sun.mail.imap.IMAPFolder$19.doCommand(IMAPFolder.java:3148)
        at com.sun.mail.imap.IMAPFolder.doProtocolCommand(IMAPFolder.java:4014)
        at com.sun.mail.imap.IMAPFolder.doOptionalCommand(IMAPFolder.java:3969)
        at com.sun.mail.imap.IMAPFolder.setACL(IMAPFolder.java:3143)
        at com.sun.mail.imap.IMAPFolder.addACL(IMAPFolder.java:3045)
        at com.openexchange.imap.IMAPFolderStorage.createFolder(IMAPFolderStorage.java:1382)
        ... 36 common frames omitted

An den Berechtigungen vom IMAP kann es nicht liegen, wenn sich selbiger User sich per IMAP verbindet, lassen sich ohne Probleme Unterordner erstellen.

Die Freigegeben Ordner sind über Domäne --> OX Email --> LDAP-Ojekt hinzufügen erstellt worden. In diesem Fall ohne Angabe einer Email Adresse.

Wenn man jetzt einen IMAP Ordner mit Email Adresse nimmt, und dort versucht einen Unterordner zu erstellen, kommt die folgende Fehlermeldung

ERROR [OXWorker-0003636] com.openexchange.ajax.requesthandler.DispatcherServlet.logException(DispatcherServlet.java:713)
Error processing request.
 com.openexchange.ajax.action=new
 com.openexchange.ajax.module=folders
 com.openexchange.database.schema=localhost_5
 com.openexchange.grizzly.method=PUT
 com.openexchange.grizzly.queryString=action=new&autorename=true&folder_id=default0%2Fshared%2Fcam%40emailadresse&session=739ab2f9815e4509a35b20ed2c0ca11a&tree=0
 com.openexchange.grizzly.remoteAddress=127.0.0.1
 com.openexchange.grizzly.remotePort=58142
 com.openexchange.grizzly.requestURI=/ajax/folders
 com.openexchange.grizzly.serverName=mail.intranet
 com.openexchange.grizzly.servletPath=/ajax/folders
 com.openexchange.grizzly.threadName=OXWorker-0003636
 com.openexchange.grizzly.userAgent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
 com.openexchange.hostname=mail.intranet
 com.openexchange.mail.accountId=0
 com.openexchange.mail.host=agwmx01.intranet:143
 com.openexchange.mail.host.remoteAddress=10.39.2.10
 com.openexchange.mail.login=andre.recker@emailadresse
 com.openexchange.mail.session=739ab2f9815e4509a35b20ed2c0ca11a-6-10-EDErhsfZo1us
 com.openexchange.request.trackingId=1226004539-613102808
 com.openexchange.session.authId=0b272ef49f084481a8dc61f3dc5fbe50
 com.openexchange.session.clientId=open-xchange-appsuite
 com.openexchange.session.contextId=10
 com.openexchange.session.loginName=user
 com.openexchange.session.sessionId=739ab2f9815e4509a35b20ed2c0ca11a
 com.openexchange.session.userId=6
 com.openexchange.session.userName=user
com.openexchange.exception.OXException: ACL-0008 Categories=ERROR Message='IMAP login cam@emailadresse could not be resolved to a user' exceptionID=1226004539-121332
        com.openexchange.exception.locale: de_DE
        at com.openexchange.exception.OXExceptionFactory.create(OXExceptionFactory.java:176)
        at com.openexchange.exception.OXExceptionFactory.create(OXExceptionFactory.java:166)
        at com.openexchange.exception.OXExceptionFactory.create(OXExceptionFactory.java:139)
        at com.openexchange.imap.entity2acl.Entity2ACLExceptionCode.create(Entity2ACLExceptionCode.java:173)
        at com.openexchange.imap.entity2acl.DovecotEntity2ACL.getUserIDInternal(DovecotEntity2ACL.java:263)
        at com.openexchange.imap.entity2acl.DovecotEntity2ACL.getACLName(DovecotEntity2ACL.java:190)
        at com.openexchange.imap.ACLPermission.getPermissionACL(ACLPermission.java:223)
        at com.openexchange.imap.IMAPFolderStorage.permissions2ACL(IMAPFolderStorage.java:3246)
        at com.openexchange.imap.IMAPFolderStorage.createFolder(IMAPFolderStorage.java:1355)
        at com.openexchange.folderstorage.mail.MailFolderStorage.createFolder(MailFolderStorage.java:647)
        at com.openexchange.folderstorage.internal.performers.CreatePerformer.doCreateReal(CreatePerformer.java:328)
        at com.openexchange.folderstorage.internal.performers.CreatePerformer.doCreate(CreatePerformer.java:231)
        at com.openexchange.folderstorage.cache.CacheFolderStorage.createFolder(CacheFolderStorage.java:542)
        at com.openexchange.folderstorage.internal.performers.CreatePerformer.doCreateReal(CreatePerformer.java:328)
        at com.openexchange.folderstorage.internal.performers.CreatePerformer.doCreate(CreatePerformer.java:231)
        at com.openexchange.folderstorage.internal.FolderServiceImpl.createFolder(FolderServiceImpl.java:147)
        at com.openexchange.folder.json.actions.CreateAction.doPerform(CreateAction.java:127)
        at com.openexchange.folder.json.actions.AbstractFolderAction.perform(AbstractFolderAction.java:130)
        at com.openexchange.ajax.requesthandler.DefaultDispatcher.doCallAction(DefaultDispatcher.java:601)
        at com.openexchange.ajax.requesthandler.DefaultDispatcher.callAction(DefaultDispatcher.java:577)
        at com.openexchange.ajax.requesthandler.DefaultDispatcher.doPerform(DefaultDispatcher.java:545)
        at com.openexchange.ajax.requesthandler.DefaultDispatcher.perform(DefaultDispatcher.java:262)
        at com.openexchange.ajax.requesthandler.DispatcherServlet.handle(DispatcherServlet.java:482)
        at com.openexchange.ajax.requesthandler.DispatcherServlet.doPut(DispatcherServlet.java:380)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
        at com.openexchange.ajax.AJAXServlet.doService(AJAXServlet.java:551)
        at com.openexchange.ajax.SessionServlet.doService(SessionServlet.java:172)
        at com.openexchange.ajax.requesthandler.DispatcherServlet.service(DispatcherServlet.java:275)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.glassfish.grizzly.servlet.FilterChainImpl.doFilter(FilterChainImpl.java:147)
        at com.openexchange.http.grizzly.servletfilter.RequestReportingFilter.doFilter(RequestReportingFilter.java:138)
        at org.glassfish.grizzly.servlet.FilterChainImpl.doFilter(FilterChainImpl.java:137)
        at com.openexchange.http.grizzly.servletfilter.WrappingFilter.doFilter(WrappingFilter.java:204)
        at org.glassfish.grizzly.servlet.FilterChainImpl.doFilter(FilterChainImpl.java:137)
        at com.openexchange.http.grizzly.service.http.OSGiAuthFilter.doFilter(OSGiAuthFilter.java:140)
        at org.glassfish.grizzly.servlet.FilterChainImpl.doFilter(FilterChainImpl.java:137)
        at org.glassfish.grizzly.servlet.FilterChainImpl.invokeFilterChain(FilterChainImpl.java:106)
        at org.glassfish.grizzly.servlet.ServletHandler.doServletService(ServletHandler.java:224)
        at org.glassfish.grizzly.servlet.ServletHandler.service(ServletHandler.java:178)
        at com.openexchange.http.grizzly.service.http.OSGiMainHandler.service(OSGiMainHandler.java:223)
        at org.glassfish.grizzly.http.server.HttpHandler$1.run(HttpHandler.java:224)
        at com.openexchange.threadpool.internal.CustomThreadPoolExecutor$MDCProvidingRunnable.run(CustomThreadPoolExecutor.java:2575)
        at com.openexchange.threadpool.internal.CustomThreadPoolExecutor$Worker.runTask(CustomThreadPoolExecutor.java:841)
        at com.openexchange.threadpool.internal.CustomThreadPoolExecutor$Worker.run(CustomThreadPoolExecutor.java:868)
        at java.lang.Thread.run(Thread.java:748)

Allerdings wird der Ordner Angelegt und ist Abonnierbar.

Weiß jemand einen Rat.
Vielen Dank im Vorraus


#2

Huhu,

Meine Vermutung ist, dass OX beim Anlegen eines Ordners automatisch versucht, bestimmte ACLs auf diesem neuen Ordner zu setzen. Eine der ACLs, die vermutlich gesetzt wird, ist eine mit Identifier owner. Dieser spezielle Identifier gilt für den Besitzer des Ordners. Wenn man z.B. Unterhalb der eigenen Inbox einen Ordner anlegt, so würde owner für den gerade angemeldeten Benutzer stehen.

Leider haben öffentliche Ordner aber generell keinen Besitzer, daher kann man bei Dovecot (und vermutlich bei anderen IMAP-Servern auch) keine owner-ACLs auf öffentlichen Ordnern anwenden. Andere Identifier wie user=someone@else oder anyone (= alle Benutzer) würden hingegen problemlos funktionieren.

Ob man das abstellen kann? Ob das ein Bug ist? Gute Fragen. Leider ist es nicht ganz leicht, sinnvoll nach OpenExchange zu googlen, weil zu viele Treffer zu MS Exchange auftauchen…

Ich würde hierzu schlicht mal in den OX-Foren selber fragen.

Gruß
mosu