JAMES-2242 JamesMailetContext should not fail to bounce when no postmaster address
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/9cc4c6cb Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9cc4c6cb Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9cc4c6cb Branch: refs/heads/master Commit: 9cc4c6cbce1b272553afded7413ecfb8466fbdbb Parents: b483910 Author: benwa <btell...@linagora.com> Authored: Wed Nov 29 14:58:56 2017 +0700 Committer: Antoine Duprat <adup...@linagora.com> Committed: Mon Dec 4 14:42:17 2017 +0100 ---------------------------------------------------------------------- .../impl/JamesMailetContext.java | 13 +++++++++--- .../impl/JamesMailetContextTest.java | 21 +++++++++++++++++++- 2 files changed, 30 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/9cc4c6cb/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java index 197035e..f460d55 100644 --- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java +++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java @@ -27,6 +27,7 @@ import java.util.Hashtable; import java.util.Iterator; import java.util.List; import java.util.Locale; +import java.util.Optional; import java.util.Vector; import javax.inject.Inject; @@ -40,7 +41,7 @@ import javax.mail.internet.ParseException; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.HierarchicalConfiguration; -import org.apache.james.server.core.MailImpl; +import org.apache.james.core.MailAddress; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.dnsservice.api.TemporaryResolutionException; import org.apache.james.dnsservice.library.MXHostAddressIterator; @@ -50,17 +51,19 @@ import org.apache.james.lifecycle.api.Configurable; import org.apache.james.lifecycle.api.LifecycleUtil; import org.apache.james.queue.api.MailQueue; import org.apache.james.queue.api.MailQueueFactory; +import org.apache.james.server.core.MailImpl; import org.apache.james.user.api.UsersRepository; import org.apache.james.user.api.UsersRepositoryException; import org.apache.mailet.HostAddress; import org.apache.mailet.LookupException; import org.apache.mailet.Mail; -import org.apache.james.core.MailAddress; import org.apache.mailet.MailetContext; import org.apache.mailet.base.RFC2822Headers; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.github.fge.lambdas.Throwing; +import com.github.fge.lambdas.consumers.ConsumerChainer; import com.google.common.collect.ImmutableSet; @SuppressWarnings("deprecation") @@ -193,8 +196,12 @@ public class JamesMailetContext implements MailetContext, Configurable { } MailImpl reply = rawBounce(mail, message); + // Change the sender... - reply.getMessage().setFrom(bouncer.toInternetAddress()); + if (bouncer != null) { + reply.getMessage().setFrom(bouncer.toInternetAddress()); + } + reply.getMessage().saveChanges(); // Send it off ... with null reverse-path reply.setSender(null); http://git-wip-us.apache.org/repos/asf/james-project/blob/9cc4c6cb/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/JamesMailetContextTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/JamesMailetContextTest.java b/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/JamesMailetContextTest.java index f5e5f76..ccb8abd 100644 --- a/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/JamesMailetContextTest.java +++ b/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/JamesMailetContextTest.java @@ -21,19 +21,26 @@ package org.apache.james.mailetcontainer.impl; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.apache.commons.configuration.HierarchicalConfiguration; +import org.apache.james.core.MailAddress; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.domainlist.lib.AbstractDomainList; import org.apache.james.domainlist.memory.MemoryDomainList; +import org.apache.james.queue.api.MailQueue; +import org.apache.james.queue.api.MailQueueFactory; +import org.apache.james.server.core.MailImpl; import org.apache.james.user.memory.MemoryUsersRepository; -import org.apache.james.core.MailAddress; +import org.apache.mailet.base.test.MimeMessageBuilder; import org.junit.Before; import org.junit.Test; +import com.google.common.collect.ImmutableList; + public class JamesMailetContextTest { public static final String DOMAIN_COM = "domain.com"; public static final String USERNAME = "user"; @@ -57,6 +64,9 @@ public class JamesMailetContextTest { usersRepository = MemoryUsersRepository.withVirtualHosting(); usersRepository.setDomainList(domainList); testee = new JamesMailetContext(); + MailQueueFactory mailQueueFactory = mock(MailQueueFactory.class); + when(mailQueueFactory.getQueue(anyString())).thenReturn(mock(MailQueue.class)); + testee.retrieveRootMailQueue(mailQueueFactory); testee.setDomainList(domainList); testee.setUsersRepository(usersRepository); mailAddress = new MailAddress(USERMAIL); @@ -141,4 +151,13 @@ public class JamesMailetContextTest { public void isLocalEmailShouldBeFalseWhenMailIsNull() throws Exception { assertThat(testee.isLocalEmail(null)).isFalse(); } + + @Test + public void bounceShouldNotFailWhenNonConfiguredPostmaster() throws Exception { + MailImpl mail = new MailImpl(); + mail.setSender(mailAddress); + mail.setRecipients(ImmutableList.of(mailAddress)); + mail.setMessage(MimeMessageBuilder.defaultMimeMessage()); + testee.bounce(mail, "message"); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org