You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ad...@apache.org on 2017/12/05 07:30:49 UTC

[09/19] james-project git commit: JAMES-2242 JamesMailetContext should not fail to bounce when no postmaster address

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 <bt...@linagora.com>
Authored: Wed Nov 29 14:58:56 2017 +0700
Committer: Antoine Duprat <ad...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org