Repository: james-project Updated Branches: refs/heads/master 5f8f0d59b -> 1b49712c5
JAMES-2236 Ignore headers with dots for ElasticSearch Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ec5bfaa1 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ec5bfaa1 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ec5bfaa1 Branch: refs/heads/master Commit: ec5bfaa1779943c486b31d8da2c9d96be4ddb97d Parents: ab677d0 Author: Raphael Ouazana <raphael.ouaz...@linagora.com> Authored: Thu Nov 23 17:11:35 2017 +0100 Committer: Raphael Ouazana <raphael.ouaz...@linagora.com> Committed: Thu Nov 23 17:44:41 2017 +0100 ---------------------------------------------------------------------- .../elasticsearch/json/HeaderCollection.java | 4 +++- .../elasticsearch/json/HeaderCollectionTest.java | 10 ++++++++++ .../search/AbstractMessageSearchIndexTest.java | 17 +++++++++++++++++ .../store/src/test/resources/eml/headerWithDot.eml | 7 +++++++ 4 files changed, 37 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/ec5bfaa1/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollection.java ---------------------------------------------------------------------- diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollection.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollection.java index 85782ad..c4c5a5a 100644 --- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollection.java +++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollection.java @@ -71,7 +71,9 @@ public class HeaderCollection { String headerName = field.getName().toLowerCase(Locale.US); String sanitizedValue = MimeUtil.unscrambleHeaderValue(field.getBody()); - headers.put(headerName, sanitizedValue); + if (!headerName.contains(".")) { + headers.put(headerName, sanitizedValue); + } handleSpecificHeader(headerName, sanitizedValue); return this; } http://git-wip-us.apache.org/repos/asf/james-project/blob/ec5bfaa1/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java ---------------------------------------------------------------------- diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java index 93a7b02..52b4002 100644 --- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java +++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java @@ -96,6 +96,16 @@ public class HeaderCollectionTest { } @Test + public void getHeadersShouldIgnoreHeadersWithDots() { + HeaderCollection headerCollection = HeaderCollection.builder() + .add(new FieldImpl("a.b.c", "value")) + .build(); + + assertThat(headerCollection.getHeaders().get("a.b.c")) + .isEmpty(); + } + + @Test public void addressWithTwoDisplayNamesOnTheSameFieldShouldBeRetrieved() { HeaderCollection headerCollection = HeaderCollection.builder() .add(new FieldImpl("From", "Christophe Hamerling <chri.hamerl...@linagora.com>, Graham CROSMARIE <grah.crosma...@linagora.com>")) http://git-wip-us.apache.org/repos/asf/james-project/blob/ec5bfaa1/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java index 7b4676e..ad89eac 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java @@ -405,6 +405,23 @@ public abstract class AbstractMessageSearchIndexTest { } @Test + public void messageWithDotsInHeaderShouldBeIndexed() throws MailboxException { + + ComposedMessageId mailWithDotsInHeader = myFolderMessageManager.appendMessage( + ClassLoader.getSystemResourceAsStream("eml/headerWithDot.eml"), + new Date(1409608900000L), + session, + RECENT, + new Flags()); + await(); + + SearchQuery searchQuery = new SearchQuery(SearchQuery.all()); + + assertThat(messageSearchIndex.search(session, mailbox2, searchQuery)) + .contains(mailWithDotsInHeader.getUid()); + } + + @Test public void hasNoAttachmenShouldOnlyReturnMessageThatHasNoAttachmentWhichAreNotInline() throws MailboxException { SearchQuery searchQuery = new SearchQuery(SearchQuery.hasNoAttachment()); http://git-wip-us.apache.org/repos/asf/james-project/blob/ec5bfaa1/mailbox/store/src/test/resources/eml/headerWithDot.eml ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/resources/eml/headerWithDot.eml b/mailbox/store/src/test/resources/eml/headerWithDot.eml new file mode 100644 index 0000000..b9a41d9 --- /dev/null +++ b/mailbox/store/src/test/resources/eml/headerWithDot.eml @@ -0,0 +1,7 @@ +From: m...@example.com +To: y...@example.com +X-normal-header: normal header +X-header.with.dots: header with dots +Subject: Test me + +Please! --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org