james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From btell...@apache.org
Subject [3/5] james-project git commit: MAILBOX-288 Remove all MIME4J limits on MessageParser while retrieving attachment
Date Tue, 28 Feb 2017 09:40:28 GMT
MAILBOX-288 Remove all MIME4J limits on MessageParser while retrieving attachment


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

Branch: refs/heads/master
Commit: a6bbd9803274c44fa52341f9a642a829bc66efac
Parents: 2d7b78a
Author: benwa <btellier@linagora.com>
Authored: Mon Feb 27 15:09:44 2017 +0700
Committer: benwa <btellier@linagora.com>
Committed: Tue Feb 28 16:39:07 2017 +0700

----------------------------------------------------------------------
 .../store/mail/model/impl/MessageParser.java    |   12 +-
 .../mail/model/impl/MessageParserTest.java      |   14 +
 .../test/resources/eml/mailWithLongHeaders.eml  |   43 +
 .../test/resources/eml/mailWithManyHeaders.eml  | 1044 ++++++++++++++++++
 4 files changed, 1112 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/a6bbd980/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
index 2be3e84..a3cb3af 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
@@ -41,6 +41,7 @@ import org.apache.james.mime4j.dom.field.ParsedField;
 import org.apache.james.mime4j.message.DefaultMessageBuilder;
 import org.apache.james.mime4j.message.DefaultMessageWriter;
 import org.apache.james.mime4j.stream.Field;
+import org.apache.james.mime4j.stream.MimeConfig;
 
 import com.google.common.base.Function;
 import com.google.common.base.Optional;
@@ -48,6 +49,13 @@ import com.google.common.collect.ImmutableList;
 
 public class MessageParser {
 
+    private static final MimeConfig MIME_ENTITY_CONFIG = MimeConfig.custom()
+        .setMaxContentLen(-1)
+        .setMaxHeaderCount(-1)
+        .setMaxHeaderLen(-1)
+        .setMaxHeaderCount(-1)
+        .setMaxLineLen(-1)
+        .build();
     private static final String TEXT_MEDIA_TYPE = "text";
     private static final String CONTENT_TYPE = "Content-Type";
     private static final String CONTENT_ID = "Content-ID";
@@ -58,7 +66,9 @@ public class MessageParser {
             ContentDispositionField.DISPOSITION_TYPE_INLINE.toLowerCase());
 
     public List<MessageAttachment> retrieveAttachments(InputStream fullContent) throws
MimeException, IOException {
-        Body body = new DefaultMessageBuilder()
+        DefaultMessageBuilder defaultMessageBuilder = new DefaultMessageBuilder();
+        defaultMessageBuilder.setMimeEntityConfig(MIME_ENTITY_CONFIG);
+        Body body = defaultMessageBuilder
                 .parseMessage(fullContent)
                 .getBody();
         try {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a6bbd980/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java
index a3a97b1..855235b 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java
@@ -104,6 +104,20 @@ public class MessageParserTest {
     }
 
     @Test
+    public void retrieveAttachmentsShouldNotFailOnMessagesWithManyHeaders() throws Exception
{
+        List<MessageAttachment> messageAttachments = testee.retrieveAttachments(ClassLoader.getSystemResourceAsStream("eml/mailWithManyHeaders.eml"));
+
+        assertThat(messageAttachments).hasSize(1);
+    }
+
+    @Test
+    public void retrieveAttachmentsShouldNotFailOnMessagesWithLongHeaders() throws Exception
{
+        List<MessageAttachment> messageAttachments = testee.retrieveAttachments(ClassLoader.getSystemResourceAsStream("eml/mailWithLongHeaders.eml"));
+
+        assertThat(messageAttachments).hasSize(1);
+    }
+
+    @Test
     public void getAttachmentsShouldRetrieveTheAttachmentContentTypeWhenOneAttachmentWithSimpleContentType()
throws Exception {
         List<MessageAttachment> attachments = testee.retrieveAttachments(ClassLoader.getSystemResourceAsStream("eml/oneAttachmentWithSimpleContentType.eml"));
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a6bbd980/mailbox/store/src/test/resources/eml/mailWithLongHeaders.eml
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/resources/eml/mailWithLongHeaders.eml b/mailbox/store/src/test/resources/eml/mailWithLongHeaders.eml
new file mode 100644
index 0000000..0f722c4
--- /dev/null
+++ b/mailbox/store/src/test/resources/eml/mailWithLongHeaders.eml
@@ -0,0 +1,43 @@
+Mail content:
+To: "=?utf-8?B?UmFuaSBBc3NhZg==?=" <rani.assaf@jri.obm.lng.org>
+Subject: =?utf-8?B?VHIuIDogUGhvdG9zICE=?=
+Importance: Normal
+MIME-Version: 1.0
+Content-Type: multipart/mixed;
+	boundary="----=_Part_0_1330682067197"
+
+------=_Part_0_1330682067197
+Content-Type: multipart/alternative;
+	boundary="----=_Part_2_1330682067197"
+
+------=_Part_2_1330682067197
+Content-Type: text/plain;
+	charset= utf-8
+Content-Transfer-Encoding: 8bit
+Content-Disposition: inline
+
+Content of part 1-1
+------=_Part_2_1330682067197
+Content-Type: text/html;
+	charset= utf-8
+Content-Transfer-Encoding: 8bit
+Content-Disposition: inline
+
+<b>Content of part 1-2</b>
+------=_Part_2_1330682067197--
+
+------=_Part_0_1330682067197
+Content-Type: text/html;
+	charset= utf-8
+Content-Transfer-Encoding: 8bit
+Content-Disposition: attachment
+header: 01234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679
 8012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345
 6798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012
 3456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798
 0123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456
 7980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123
 4567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980
 1234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567
 980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798012345679801234567980123456798
+
+# Hello
+
+```
+Code snipset
+```
+
+------=_Part_0_1330682067197--
+

http://git-wip-us.apache.org/repos/asf/james-project/blob/a6bbd980/mailbox/store/src/test/resources/eml/mailWithManyHeaders.eml
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/resources/eml/mailWithManyHeaders.eml b/mailbox/store/src/test/resources/eml/mailWithManyHeaders.eml
new file mode 100644
index 0000000..e3edf71
--- /dev/null
+++ b/mailbox/store/src/test/resources/eml/mailWithManyHeaders.eml
@@ -0,0 +1,1044 @@
+Mail content:
+To: "=?utf-8?B?UmFuaSBBc3NhZg==?=" <rani.assaf@jri.obm.lng.org>
+Subject: =?utf-8?B?VHIuIDogUGhvdG9zICE=?=
+Importance: Normal
+MIME-Version: 1.0
+Content-Type: multipart/mixed;
+	boundary="----=_Part_0_1330682067197"
+
+------=_Part_0_1330682067197
+Content-Type: multipart/alternative;
+	boundary="----=_Part_2_1330682067197"
+
+------=_Part_2_1330682067197
+Content-Type: text/plain;
+	charset= utf-8
+Content-Transfer-Encoding: 8bit
+Content-Disposition: inline
+
+Content of part 1-1
+------=_Part_2_1330682067197
+Content-Type: text/html;
+	charset= utf-8
+Content-Transfer-Encoding: 8bit
+Content-Disposition: inline
+
+<b>Content of part 1-2</b>
+------=_Part_2_1330682067197--
+
+------=_Part_0_1330682067197
+Content-Type: text/html;
+	charset= utf-8
+Content-Transfer-Encoding: 8bit
+Content-Disposition: attachment
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+header: toto
+
+# Hello
+
+```
+Code snipset
+```
+
+------=_Part_0_1330682067197--
+


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


Mime
View raw message