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 bt...@apache.org on 2017/06/01 09:05:04 UTC

[6/6] james-project git commit: MAILET-156 AutomaticallySentMailDetectorImpl should not rely on Mime4J default configuration

MAILET-156 AutomaticallySentMailDetectorImpl should not rely on Mime4J default configuration


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/f19648a5
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/f19648a5
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/f19648a5

Branch: refs/heads/master
Commit: f19648a517232337b1c93fdb096590da8d801d41
Parents: 49fbba7
Author: benwa <bt...@linagora.com>
Authored: Wed May 31 09:37:24 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jun 1 16:04:03 2017 +0700

----------------------------------------------------------------------
 .../base/AutomaticallySentMailDetectorImpl.java | 10 +++++++--
 .../AutomaticallySentMailDetectorImplTest.java  | 22 ++++++++++++++++++++
 .../mailet/base/test/MimeMessageBuilder.java    | 13 ++++++++++--
 3 files changed, 41 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/f19648a5/mailet/base/src/main/java/org/apache/mailet/base/AutomaticallySentMailDetectorImpl.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/main/java/org/apache/mailet/base/AutomaticallySentMailDetectorImpl.java b/mailet/base/src/main/java/org/apache/mailet/base/AutomaticallySentMailDetectorImpl.java
index 0d1b634..cdf9e50 100644
--- a/mailet/base/src/main/java/org/apache/mailet/base/AutomaticallySentMailDetectorImpl.java
+++ b/mailet/base/src/main/java/org/apache/mailet/base/AutomaticallySentMailDetectorImpl.java
@@ -36,6 +36,13 @@ import org.apache.mailet.MailAddress;
 
 public class AutomaticallySentMailDetectorImpl implements AutomaticallySentMailDetector {
 
+    private static final MimeConfig MIME_ENTITY_CONFIG = MimeConfig.custom()
+        .setMaxContentLen(-1)
+        .setMaxHeaderCount(-1)
+        .setMaxHeaderLen(-1)
+        .setMaxLineLen(-1)
+        .build();
+
     private static final String[] MAILING_LIST_HEADERS = new String[] {
             "List-Help",
             "List-Subscribe",
@@ -91,8 +98,7 @@ public class AutomaticallySentMailDetectorImpl implements AutomaticallySentMailD
 
     public boolean isMdnSentAutomatically(Mail mail) throws MessagingException {
         ResultCollector resultCollector = new ResultCollector(false);
-        MimeConfig config = MimeConfig.custom().setMaxLineLen(-1).setMaxHeaderLen(-1).build();
-        MimeStreamParser parser = new MimeStreamParser(config);
+        MimeStreamParser parser = new MimeStreamParser(MIME_ENTITY_CONFIG);
         parser.setContentHandler(createMdnContentHandler(resultCollector));
         try {
             parser.parse(mail.getMessage().getInputStream());

http://git-wip-us.apache.org/repos/asf/james-project/blob/f19648a5/mailet/base/src/test/java/org/apache/mailet/base/AutomaticallySentMailDetectorImplTest.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/AutomaticallySentMailDetectorImplTest.java b/mailet/base/src/test/java/org/apache/mailet/base/AutomaticallySentMailDetectorImplTest.java
index 8a0147d..99d0095 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/AutomaticallySentMailDetectorImplTest.java
+++ b/mailet/base/src/test/java/org/apache/mailet/base/AutomaticallySentMailDetectorImplTest.java
@@ -22,6 +22,7 @@ package org.apache.mailet.base;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.io.ByteArrayInputStream;
+import java.util.Collections;
 import java.util.Properties;
 
 import javax.activation.DataHandler;
@@ -33,6 +34,7 @@ import javax.mail.util.ByteArrayDataSource;
 
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
+import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Test;
 
 public class AutomaticallySentMailDetectorImplTest {
@@ -286,4 +288,24 @@ public class AutomaticallySentMailDetectorImplTest {
         assertThat(new AutomaticallySentMailDetectorImpl().isMdnSentAutomatically(fakeMail)).isFalse();
     }
 
+    @Test
+    public void isMdnSentAutomaticallyShouldNotThrowOnBodyPartsWithManyLines() throws Exception {
+        int mime4jDefaultMaxHeaderCount = 1000;
+        int headerCount = mime4jDefaultMaxHeaderCount + 10;
+        MimeMessage message = MimeMessageBuilder.mimeMessageBuilder()
+            .addHeaders()
+            .setMultipartWithBodyParts(MimeMessageBuilder.bodyPartBuilder()
+                .addHeaders(Collections.nCopies(headerCount, new MimeMessageBuilder.Header("name", "value")))
+                .data("The body part have 1010 headers, which overpass MIME4J default limits")
+                .build())
+            .build();
+
+        FakeMail fakeMail = FakeMail.builder()
+            .sender(MailAddressFixture.ANY_AT_JAMES)
+            .mimeMessage(message)
+            .build();
+
+        assertThat(new AutomaticallySentMailDetectorImpl().isMdnSentAutomatically(fakeMail)).isFalse();
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f19648a5/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java b/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
index 666803a..f00d9c9 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
+++ b/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
@@ -23,6 +23,7 @@ import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.List;
 import java.util.Properties;
 
@@ -132,7 +133,11 @@ public class MimeMessageBuilder {
         }
 
         public BodyPartBuilder addHeaders(Header... headers) {
-            this.headers.addAll(Arrays.asList(headers));
+            return addHeaders(Arrays.asList(headers));
+        }
+
+        public BodyPartBuilder addHeaders(Collection<Header> headers) {
+            this.headers.addAll(headers);
             return this;
         }
 
@@ -317,7 +322,11 @@ public class MimeMessageBuilder {
     }
 
     public MimeMessageBuilder addHeaders(Header... headers) {
-        this.headers.addAll(Arrays.asList(headers));
+        return addHeaders(Arrays.asList(headers));
+    }
+
+    public MimeMessageBuilder addHeaders(Collection<Header> headers) {
+        this.headers.addAll(headers);
         return this;
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org