diff --git a/full/repository-common/src/main/java/de/acosix/alfresco/utility/repo/email/imap/Config.java b/full/repository-common/src/main/java/de/acosix/alfresco/utility/repo/email/imap/Config.java index bfb3e79..23bb7f1 100644 --- a/full/repository-common/src/main/java/de/acosix/alfresco/utility/repo/email/imap/Config.java +++ b/full/repository-common/src/main/java/de/acosix/alfresco/utility/repo/email/imap/Config.java @@ -280,7 +280,6 @@ public String getPassword() */ public void setPassword(final String password) { - ParameterCheck.mandatoryString("password", password); this.password = password; } diff --git a/full/repository-subetha3/src/main/java/de/acosix/alfresco/utility/repo/subetha3/email/imap/JavaMailClient.java b/full/repository-subetha3/src/main/java/de/acosix/alfresco/utility/repo/subetha3/email/imap/JavaMailClient.java index 94ae6db..88b8ba0 100644 --- a/full/repository-subetha3/src/main/java/de/acosix/alfresco/utility/repo/subetha3/email/imap/JavaMailClient.java +++ b/full/repository-subetha3/src/main/java/de/acosix/alfresco/utility/repo/subetha3/email/imap/JavaMailClient.java @@ -358,6 +358,7 @@ private Folder openFolder(final String folderPath) } catch (final MessagingException e) { + LOGGER.warn("Failed to resolve folder", e); throw new EmailMessageException("Failed to resolve folder " + folderPath); } diff --git a/full/repository-subetha6/src/main/java/de/acosix/alfresco/utility/repo/subetha6/email/imap/JakartaMailClient.java b/full/repository-subetha6/src/main/java/de/acosix/alfresco/utility/repo/subetha6/email/imap/JakartaMailClient.java index 052e87e..3410f3f 100644 --- a/full/repository-subetha6/src/main/java/de/acosix/alfresco/utility/repo/subetha6/email/imap/JakartaMailClient.java +++ b/full/repository-subetha6/src/main/java/de/acosix/alfresco/utility/repo/subetha6/email/imap/JakartaMailClient.java @@ -358,6 +358,7 @@ private Folder openFolder(final String folderPath) } catch (final MessagingException e) { + LOGGER.warn("Failed to resolve folder", e); throw new EmailMessageException("Failed to resolve folder " + folderPath); } diff --git a/full/repository/src/main/java/de/acosix/alfresco/utility/repo/email/imap/SynchJob.java b/full/repository/src/main/java/de/acosix/alfresco/utility/repo/email/imap/SynchJob.java index 75d622b..8e22953 100644 --- a/full/repository/src/main/java/de/acosix/alfresco/utility/repo/email/imap/SynchJob.java +++ b/full/repository/src/main/java/de/acosix/alfresco/utility/repo/email/imap/SynchJob.java @@ -296,7 +296,7 @@ public String getIdentifier(final SynchWork entry) public void beforeProcess() throws Throwable { AuthenticationUtil.pushAuthentication(); - AuthenticationUtil.clearCurrentSecurityContext(); + AuthenticationUtil.setRunAsUserSystem(); this.originalLocale.set(I18NUtil.getLocaleOrNull()); I18NUtil.setLocale(this.importLocale); } @@ -320,7 +320,20 @@ public void process(final SynchWork entry) throws Throwable final ImprovedEmailMessage message = this.imapClient.toImprovedEmailMessage(emailMessage); try { - this.emailService.importMessage(delivery, message); + // necessary to allow permissions for user mapped via from-address to take effect + // and user to be marked as creator + AuthenticationUtil.pushAuthentication(); + AuthenticationUtil.clearCurrentSecurityContext(); + try + { + this.emailService.importMessage(delivery, message); + } + finally + { + // restoration required to allow TRANSACTION_COMMIT policies to work without permission issues + // specifically ImapContentPolicy + AuthenticationUtil.popAuthentication(); + } TransactionSupportUtil.bindListener(new TransactionListenerAdapter() {