JAMES-1854 Mailets should not have to handle ghosted mails
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/dfb09fec Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/dfb09fec Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/dfb09fec Branch: refs/heads/master Commit: dfb09fec4dbd75c29143d60511498ce7f90f2b0f Parents: 55582f5 Author: Benoit Tellier <[email protected]> Authored: Fri Nov 18 12:48:10 2016 +0700 Committer: Benoit Tellier <[email protected]> Committed: Wed Nov 23 18:19:25 2016 +0700 ---------------------------------------------------------------------- .../james/transport/mailets/LocalDelivery.java | 6 ++---- .../transport/mailets/SieveLocalDelivery.java | 6 ++---- .../mailets/SieveToRecipientFolder.java | 6 ++---- .../transport/mailets/ToRecipientFolder.java | 6 ++---- .../mailets/delivery/MailDispatcher.java | 20 ++++++++++++++------ .../mailets/delivery/MailDispatcherTest.java | 14 +++++++------- 6 files changed, 29 insertions(+), 29 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/dfb09fec/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java index 74c664c..71dd0f5 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java @@ -63,9 +63,7 @@ public class LocalDelivery extends GenericMailet { public void service(Mail mail) throws MessagingException { recipientRewriteTable.service(mail); - if (!mail.getState().equals(Mail.GHOST)) { - mailDispatcher.dispatch(mail); - } + mailDispatcher.dispatch(mail); } public String getMailetInfo() { @@ -82,7 +80,7 @@ public class LocalDelivery extends GenericMailet { .build(); mailDispatcher = MailDispatcher.builder() - .mailStorer(SimpleMailStore.builder() + .mailStore(SimpleMailStore.builder() .mailboxAppender(new MailboxAppender(mailboxManager, getMailetContext().getLogger())) .usersRepository(usersRepository) .folder(MailboxConstants.INBOX) http://git-wip-us.apache.org/repos/asf/james-project/blob/dfb09fec/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveLocalDelivery.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveLocalDelivery.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveLocalDelivery.java index 835da00..99154bc 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveLocalDelivery.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveLocalDelivery.java @@ -66,9 +66,7 @@ public class SieveLocalDelivery extends GenericMailet { public void service(Mail mail) throws MessagingException { recipientRewriteTable.service(mail); - if (!mail.getState().equals(Mail.GHOST)) { - mailDispatcher.dispatch(mail); - } + mailDispatcher.dispatch(mail); } public String getMailetInfo() { @@ -85,7 +83,7 @@ public class SieveLocalDelivery extends GenericMailet { .build(); mailDispatcher = MailDispatcher.builder() - .mailStorer(SieveMailStore.builder() + .mailStore(SieveMailStore.builder() .sievePoster(new SievePoster( new MailboxAppender(mailboxManager, getMailetContext().getLogger()), MailboxConstants.INBOX, http://git-wip-us.apache.org/repos/asf/james-project/blob/dfb09fec/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveToRecipientFolder.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveToRecipientFolder.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveToRecipientFolder.java index 0ce02ef..ca66055 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveToRecipientFolder.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveToRecipientFolder.java @@ -71,9 +71,7 @@ public class SieveToRecipientFolder extends GenericMailet { @Override public void service(Mail mail) throws MessagingException { - if (!mail.getState().equals(Mail.GHOST)) { - mailDispatcher.dispatch(mail); - } + mailDispatcher.dispatch(mail); } @Override @@ -85,7 +83,7 @@ public class SieveToRecipientFolder extends GenericMailet { .build(); String folder = getInitParameter(FOLDER_PARAMETER, MailboxConstants.INBOX); mailDispatcher = MailDispatcher.builder() - .mailStorer(SieveMailStore.builder() + .mailStore(SieveMailStore.builder() .sievePoster(new SievePoster(new MailboxAppender(mailboxManager, getMailetContext().getLogger()), folder, usersRepository)) .usersRepository(usersRepository) .resourceLocator(ResourceLocatorImpl.instanciate(usersRepository, sieveRepository)) http://git-wip-us.apache.org/repos/asf/james-project/blob/dfb09fec/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java index 4644641..9cebeb1 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java @@ -66,9 +66,7 @@ public class ToRecipientFolder extends GenericMailet { @Override public void service(Mail mail) throws MessagingException { - if (!mail.getState().equals(Mail.GHOST)) { - mailDispatcher.dispatch(mail); - } + mailDispatcher.dispatch(mail); } @Override @@ -79,7 +77,7 @@ public class ToRecipientFolder extends GenericMailet { .verbose(getInitParameter("verbose", false)) .build(); mailDispatcher = MailDispatcher.builder() - .mailStorer(SimpleMailStore.builder() + .mailStore(SimpleMailStore.builder() .mailboxAppender(new MailboxAppender(mailboxManager, getMailetContext().getLogger())) .usersRepository(usersRepository) .folder(getInitParameter(FOLDER_PARAMETER, MailboxConstants.INBOX)) http://git-wip-us.apache.org/repos/asf/james-project/blob/dfb09fec/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java index 43ef1a0..21c2b2d 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java @@ -45,7 +45,7 @@ public class MailDispatcher { } public static class Builder { - public static final boolean CONSUME_DEFAULT_VALUE = true; + public static final boolean CONSUME = true; private MailStore mailStore; private Optional<Boolean> consume = Optional.absent(); private MailetContext mailetContext; @@ -56,7 +56,7 @@ public class MailDispatcher { return this; } - public Builder mailStorer(MailStore mailStore) { + public Builder mailStore(MailStore mailStore) { this.mailStore = mailStore; return this; } @@ -75,7 +75,7 @@ public class MailDispatcher { Preconditions.checkNotNull(mailStore); Preconditions.checkNotNull(log); Preconditions.checkNotNull(mailetContext); - return new MailDispatcher(mailStore, consume.or(CONSUME_DEFAULT_VALUE), log, mailetContext); + return new MailDispatcher(mailStore, consume.or(CONSUME), log, mailetContext); } } @@ -116,15 +116,23 @@ public class MailDispatcher { // This only works because there is a placeholder inserted by MimeMessageWrapper message.setHeader(RFC2822Headers.RETURN_PATH, DeliveryUtils.prettyPrint(mail.getSender())); + List<String> deliveredToHeader = removeDeliveryHeaders(message); + Collection<MailAddress> errors = deliver(mail, message); + putDeliveryHeadersBack(message, deliveredToHeader); + + return errors; + } + + private List<String> removeDeliveryHeaders(MimeMessage message) throws MessagingException { List<String> deliveredToHeader = Arrays.asList(Optional.fromNullable(message.getHeader(DELIVERED_TO)).or(NO_HEADERS)); message.removeHeader(DELIVERED_TO); + return deliveredToHeader; + } - Collection<MailAddress> errors = deliver(mail, message); - + private void putDeliveryHeadersBack(MimeMessage message, List<String> deliveredToHeader) throws MessagingException { for (String deliveredTo : deliveredToHeader) { message.addHeader(DELIVERED_TO, deliveredTo); } - return errors; } private Collection<MailAddress> deliver(Mail mail, MimeMessage message) { http://git-wip-us.apache.org/repos/asf/james-project/blob/dfb09fec/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java index 3c8de2b..20f4eb0 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java @@ -69,7 +69,7 @@ public class MailDispatcherTest { MailDispatcher testee = MailDispatcher.builder() .log(mock(Log.class)) .mailetContext(fakeMailContext) - .mailStorer(mailStore) + .mailStore(mailStore) .consume(true) .build(); @@ -91,7 +91,7 @@ public class MailDispatcherTest { MailDispatcher testee = MailDispatcher.builder() .log(mock(Log.class)) .mailetContext(fakeMailContext) - .mailStorer(mailStore) + .mailStore(mailStore) .consume(true) .build(); @@ -110,7 +110,7 @@ public class MailDispatcherTest { MailDispatcher testee = MailDispatcher.builder() .log(mock(Log.class)) .mailetContext(fakeMailContext) - .mailStorer(mailStore) + .mailStore(mailStore) .consume(false) .build(); @@ -130,7 +130,7 @@ public class MailDispatcherTest { MailDispatcher testee = MailDispatcher.builder() .log(mock(Log.class)) .mailetContext(fakeMailContext) - .mailStorer(mailStore) + .mailStore(mailStore) .consume(true) .build(); doThrow(new MessagingException()) @@ -173,7 +173,7 @@ public class MailDispatcherTest { MailDispatcher testee = MailDispatcher.builder() .log(mock(Log.class)) .mailetContext(fakeMailContext) - .mailStorer(mailStore) + .mailStore(mailStore) .consume(false) .build(); @@ -197,7 +197,7 @@ public class MailDispatcherTest { MailDispatcher testee = MailDispatcher.builder() .log(mock(Log.class)) .mailetContext(fakeMailContext) - .mailStorer(mailStore) + .mailStore(mailStore) .consume(false) .build(); @@ -223,7 +223,7 @@ public class MailDispatcherTest { MailDispatcher testee = MailDispatcher.builder() .log(mock(Log.class)) .mailetContext(fakeMailContext) - .mailStorer(accumulator) + .mailStore(accumulator) .consume(false) .build(); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
