This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git


The following commit(s) were added to refs/heads/master by this push:
     new ef8f4fe63c JAMES-3827 Improve indexing of email address domains (#1212)
ef8f4fe63c is described below

commit ef8f4fe63ca3aafd5c8af18fa1a006a6d7176517
Author: Benoit TELLIER <btell...@linagora.com>
AuthorDate: Mon Oct 3 08:36:17 2022 +0700

    JAMES-3827 Improve indexing of email address domains (#1212)
    
    Given an email with `b...@domain.tld`
    
    -> `b...@domain.tld` matches
    -> `bob` (localpart) matches
    -> `domain.tld` (domain) matches
    -> `domain` (part of the domain) do not match.
    
    I think we could easily propose a better 'search experience' by improving 
indexing and searches for domains.
    
    Traps to avoid:
    
    Given `b...@domain.tld` search we should not return results of other 
addresses of `domain.tld` domain.
    
    Given `domain.tld` search we should not return unrelated search results 
from the `tld` top-domain.
    
    migration strategy will be aturaly covered upon the OpenSearch migr
---
 .../mailbox/opensearch/MailboxMappingFactory.java  | 21 ++++++++++++
 .../james/mailbox/opensearch/json/EMailer.java     | 22 ++++++++++--
 .../mailbox/opensearch/json/HeaderCollection.java  |  2 +-
 .../opensearch/json/JsonMessageConstants.java      |  1 +
 .../opensearch/query/CriterionConverter.java       |  2 +-
 .../opensearch/OpenSearchIntegrationTest.java      | 32 +++++++++++++++++
 .../mailbox/opensearch/json/EMailersTest.java      |  8 ++---
 .../opensearch/json/HeaderCollectionTest.java      | 40 +++++++++++-----------
 .../src/test/resources/eml/inlined-mixed.json      |  6 ++--
 ...ithNonIndexableAttachmentWithoutAttachment.json |  6 ++--
 mailbox/store/src/test/resources/eml/htmlMail.json |  6 ++--
 .../src/test/resources/eml/invalidCharset.json     | 12 +++++--
 mailbox/store/src/test/resources/eml/mail.json     |  9 +++--
 .../store/src/test/resources/eml/nonTextual.json   | 12 +++++--
 .../src/test/resources/eml/pgpSignedMail.json      |  6 ++--
 .../src/test/resources/eml/recursiveMail.json      |  6 ++--
 .../eml/recursiveMailWithoutAttachments.json       |  6 ++--
 mailbox/store/src/test/resources/eml/spamMail.json |  6 ++--
 18 files changed, 153 insertions(+), 50 deletions(-)

diff --git 
a/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/MailboxMappingFactory.java
 
b/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/MailboxMappingFactory.java
index 91823e9280..ec9c892f35 100644
--- 
a/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/MailboxMappingFactory.java
+++ 
b/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/MailboxMappingFactory.java
@@ -45,6 +45,7 @@ import org.opensearch.common.xcontent.XContentBuilder;
 
 public class MailboxMappingFactory {
     private static final String STANDARD = "standard";
+    private static final String SIMPLE = "simple";
     private static final String STORE = "store";
 
     public static XContentBuilder getMappingContent() {
@@ -135,6 +136,11 @@ public class MailboxMappingFactory {
                                     .field(TYPE, JsonMessageConstants.TEXT)
                                     .field(ANALYZER, KEEP_MAIL_AND_URL)
                                 .endObject()
+                                
.startObject(JsonMessageConstants.EMailer.DOMAIN)
+                                    .field(TYPE, JsonMessageConstants.TEXT)
+                                    .field(ANALYZER, SIMPLE)
+                                    .field(SEARCH_ANALYZER, KEYWORD)
+                                .endObject()
                                 
.startObject(JsonMessageConstants.EMailer.ADDRESS)
                                     .field(TYPE, JsonMessageConstants.TEXT)
                                     .field(ANALYZER, STANDARD)
@@ -179,6 +185,11 @@ public class MailboxMappingFactory {
                                     .field(TYPE, JsonMessageConstants.TEXT)
                                     .field(ANALYZER, KEEP_MAIL_AND_URL)
                                 .endObject()
+                                
.startObject(JsonMessageConstants.EMailer.DOMAIN)
+                                    .field(TYPE, JsonMessageConstants.TEXT)
+                                    .field(ANALYZER, SIMPLE)
+                                    .field(SEARCH_ANALYZER, KEYWORD)
+                                .endObject()
                                 
.startObject(JsonMessageConstants.EMailer.ADDRESS)
                                     .field(TYPE, JsonMessageConstants.TEXT)
                                     .field(ANALYZER, STANDARD)
@@ -199,6 +210,11 @@ public class MailboxMappingFactory {
                                     .field(TYPE, JsonMessageConstants.TEXT)
                                     .field(ANALYZER, KEEP_MAIL_AND_URL)
                                 .endObject()
+                                
.startObject(JsonMessageConstants.EMailer.DOMAIN)
+                                    .field(TYPE, JsonMessageConstants.TEXT)
+                                    .field(ANALYZER, SIMPLE)
+                                    .field(SEARCH_ANALYZER, KEYWORD)
+                                .endObject()
                                 
.startObject(JsonMessageConstants.EMailer.ADDRESS)
                                     .field(TYPE, JsonMessageConstants.TEXT)
                                     .field(ANALYZER, STANDARD)
@@ -219,6 +235,11 @@ public class MailboxMappingFactory {
                                     .field(TYPE, JsonMessageConstants.TEXT)
                                     .field(ANALYZER, KEEP_MAIL_AND_URL)
                                 .endObject()
+                                
.startObject(JsonMessageConstants.EMailer.DOMAIN)
+                                    .field(TYPE, JsonMessageConstants.TEXT)
+                                    .field(ANALYZER, SIMPLE)
+                                    .field(SEARCH_ANALYZER, KEYWORD)
+                                .endObject()
                                 
.startObject(JsonMessageConstants.EMailer.ADDRESS)
                                     .field(TYPE, JsonMessageConstants.TEXT)
                                     .field(ANALYZER, STANDARD)
diff --git 
a/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/json/EMailer.java
 
b/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/json/EMailer.java
index f299b0719e..9586236cfe 100644
--- 
a/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/json/EMailer.java
+++ 
b/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/json/EMailer.java
@@ -30,10 +30,19 @@ public class EMailer implements SerializableMessage {
 
     private final Optional<String> name;
     private final String address;
+    private final String domain;
 
-    public EMailer(Optional<String> name, String address) {
+    public EMailer(Optional<String> name, String address, String domain) {
         this.name = name;
         this.address = address;
+        this.domain = removeTopDomain(domain);
+    }
+
+    String removeTopDomain(String s) {
+        if (s.contains(".")) {
+            return s.substring(0, s.lastIndexOf('.'));
+        }
+        return s;
     }
 
     @JsonProperty(JsonMessageConstants.EMailer.NAME)
@@ -46,6 +55,11 @@ public class EMailer implements SerializableMessage {
         return address;
     }
 
+    @JsonProperty(JsonMessageConstants.EMailer.DOMAIN)
+    public String getDomain() {
+        return domain;
+    }
+
     @Override
     public String serialize() {
         return Joiner.on(" ").join(name.orElse(" "), address);
@@ -56,14 +70,15 @@ public class EMailer implements SerializableMessage {
         if (o instanceof EMailer) {
             EMailer otherEMailer = (EMailer) o;
             return Objects.equals(name, otherEMailer.name)
-                && Objects.equals(address, otherEMailer.address);
+                && Objects.equals(address, otherEMailer.address)
+                && Objects.equals(domain, otherEMailer.domain);
         }
         return false;
     }
 
     @Override
     public final int hashCode() {
-        return Objects.hash(name, address);
+        return Objects.hash(name, address, domain);
     }
 
     @Override
@@ -71,6 +86,7 @@ public class EMailer implements SerializableMessage {
         return MoreObjects.toStringHelper(this)
             .add("name", name)
             .add("address", address)
+            .add("domain", domain)
             .toString();
     }
 }
diff --git 
a/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/json/HeaderCollection.java
 
b/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/json/HeaderCollection.java
index 6055b2412a..d89603397d 100644
--- 
a/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/json/HeaderCollection.java
+++ 
b/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/json/HeaderCollection.java
@@ -150,7 +150,7 @@ public class HeaderCollection {
                 .parseAddressList(rawHeaderValue)
                 .flatten()
                 .stream()
-                .map(mailbox -> new 
EMailer(Optional.ofNullable(mailbox.getName()), mailbox.getAddress()))
+                .map(mailbox -> new 
EMailer(Optional.ofNullable(mailbox.getName()), mailbox.getAddress(), 
mailbox.getDomain()))
                 .forEach(addressSet::add);
         }
 
diff --git 
a/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/json/JsonMessageConstants.java
 
b/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/json/JsonMessageConstants.java
index c77cf55639..e84be966d0 100644
--- 
a/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/json/JsonMessageConstants.java
+++ 
b/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/json/JsonMessageConstants.java
@@ -58,6 +58,7 @@ public interface JsonMessageConstants {
     interface EMailer {
         String NAME = "name";
         String ADDRESS = "address";
+        String DOMAIN = "domain";
     }
 
     interface HEADER {
diff --git 
a/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/query/CriterionConverter.java
 
b/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/query/CriterionConverter.java
index 1e172ac446..76320a7a8a 100644
--- 
a/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/query/CriterionConverter.java
+++ 
b/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/query/CriterionConverter.java
@@ -93,7 +93,6 @@ public class CriterionConverter {
     }
     
     private void registerHeaderOperatorConverters() {
-
         registerHeaderOperatorConverter(
             SearchQuery.ExistsOperator.class,
             (headerName, operator) ->
@@ -276,6 +275,7 @@ public class CriterionConverter {
         return boolQuery()
             .should(matchQuery(getFieldNameFromHeaderName(headerName) + "." + 
JsonMessageConstants.EMailer.NAME, value))
             .should(matchQuery(getFieldNameFromHeaderName(headerName) + "." + 
JsonMessageConstants.EMailer.ADDRESS, value))
+            .should(matchQuery(getFieldNameFromHeaderName(headerName) + "." + 
JsonMessageConstants.EMailer.DOMAIN, value))
             .should(matchQuery(getFieldNameFromHeaderName(headerName) + "." + 
JsonMessageConstants.EMailer.ADDRESS + "." + RAW, value));
     }
 
diff --git 
a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchIntegrationTest.java
 
b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchIntegrationTest.java
index 1fef96a8e5..19f05f1c78 100644
--- 
a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchIntegrationTest.java
+++ 
b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchIntegrationTest.java
@@ -336,6 +336,38 @@ class OpenSearchIntegrationTest extends 
AbstractMessageSearchIndexTest {
             .containsOnly(messageId2.getUid());
     }
 
+    @Test
+    void addressMatchesShouldMatchDomainPart() throws Exception {
+        MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, INBOX);
+        MailboxSession session = MailboxSessionUtil.create(USERNAME);
+        MessageManager messageManager = 
storeMailboxManager.getMailbox(mailboxPath, session);
+
+        Message.Builder messageBuilder = Message.Builder
+            .of()
+            .setSubject("test")
+            .setBody("testmail", StandardCharsets.UTF_8);
+
+        ComposedMessageId messageId1 = messageManager.appendMessage(
+            MessageManager.AppendCommand.builder().build(
+                messageBuilder
+                    .addField(new RawField("To", "al...@domain.tld"))
+                    .build()),
+            session).getId();
+
+        ComposedMessageId messageId2 = messageManager.appendMessage(
+            MessageManager.AppendCommand.builder().build(
+                messageBuilder
+                    .addField(new RawField("To", "b...@other.tld"))
+                    .build()),
+            session).getId();
+
+        awaitForOpenSearch(QueryBuilders.matchAllQuery(), 15);
+        Thread.sleep(500);
+
+        
assertThat(Flux.from(messageManager.search(SearchQuery.of(SearchQuery.address(SearchQuery.AddressType.To,
 "other")), session)).toStream())
+            .containsOnly(messageId2.getUid());
+    }
+
     @Disabled("MAILBOX-403 Relaxed the matching constraints for email 
addresses in text bodies to reduce OpenSearch disk space usage")
     @Test
     public void textShouldNotMatchOtherAddressesOfTheSameDomain() {
diff --git 
a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/json/EMailersTest.java
 
b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/json/EMailersTest.java
index 8ca87744e3..33e22fd977 100644
--- 
a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/json/EMailersTest.java
+++ 
b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/json/EMailersTest.java
@@ -47,7 +47,7 @@ class EMailersTest {
 
     @Test
     void serializeShouldNotJoinWhenOneElement() {
-        EMailer emailer = new EMailer(Optional.of("name"), "address");
+        EMailer emailer = new EMailer(Optional.of("name"), 
"addr...@domain.tld", "domain.tld");
         EMailers eMailers = EMailers.from(ImmutableSet.of(emailer));
 
         assertThat(eMailers.serialize()).isEqualTo(emailer.serialize());
@@ -55,9 +55,9 @@ class EMailersTest {
 
     @Test
     void serializeShouldJoinWhenMultipleElements() {
-        EMailer emailer = new EMailer(Optional.of("name"), "address");
-        EMailer emailer2 = new EMailer(Optional.of("name2"), "address2");
-        EMailer emailer3 = new EMailer(Optional.of("name3"), "address3");
+        EMailer emailer = new EMailer(Optional.of("name"), 
"addr...@domain.tld", "domain.tld");
+        EMailer emailer2 = new EMailer(Optional.of("name2"), 
"addre...@domain.tld", "domain.tld");
+        EMailer emailer3 = new EMailer(Optional.of("name3"), 
"addre...@domain.tld", "domain.tld");
 
         String expected = Joiner.on(" ").join(emailer.serialize(), 
emailer2.serialize(), emailer3.serialize());
 
diff --git 
a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/json/HeaderCollectionTest.java
 
b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/json/HeaderCollectionTest.java
index 0e8addfa00..f275579a69 100644
--- 
a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/json/HeaderCollectionTest.java
+++ 
b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/json/HeaderCollectionTest.java
@@ -56,7 +56,7 @@ class HeaderCollectionTest {
             .build();
 
         assertThat(headerCollection.getToAddressSet())
-            .containsOnly(new EMailer(Optional.empty(), 
"ben.tell...@linagora.com"));
+            .containsOnly(new EMailer(Optional.empty(), 
"ben.tell...@linagora.com", "linagora.com"));
     }
 
     @Test
@@ -67,8 +67,8 @@ class HeaderCollectionTest {
 
         assertThat(headerCollection.getToAddressSet())
             .containsOnly(
-                new EMailer(Optional.empty(), "ben.tell...@linagora.com"),
-                new EMailer(Optional.empty(), "btell...@minet.net"));
+                new EMailer(Optional.empty(), "ben.tell...@linagora.com", 
"linagora.com"),
+                new EMailer(Optional.empty(), "btell...@minet.net", 
"minet.net"));
     }
 
     @Test
@@ -80,8 +80,8 @@ class HeaderCollectionTest {
 
         assertThat(headerCollection.getToAddressSet())
             .containsOnly(
-                new EMailer(Optional.empty(), "ben.tell...@linagora.com"),
-                new EMailer(Optional.empty(), "btell...@minet.net"));
+                new EMailer(Optional.empty(), "ben.tell...@linagora.com", 
"linagora.com"),
+                new EMailer(Optional.empty(), "btell...@minet.net", 
"minet.net"));
     }
 
     @Test
@@ -91,7 +91,7 @@ class HeaderCollectionTest {
             .build();
 
         assertThat(headerCollection.getToAddressSet())
-            .containsOnly(new EMailer(Optional.of("Christophe Hamerling"), 
"chri.hamerl...@linagora.com"));
+            .containsOnly(new EMailer(Optional.of("Christophe Hamerling"), 
"chri.hamerl...@linagora.com", "linagora.com"));
     }
 
     @ParameterizedTest
@@ -134,8 +134,8 @@ class HeaderCollectionTest {
             .build();
 
         assertThat(headerCollection.getFromAddressSet())
-            .containsOnly(new EMailer(Optional.of("Christophe Hamerling"), 
"chri.hamerl...@linagora.com"),
-                new EMailer(Optional.of("Graham CROSMARIE"), 
"grah.crosma...@linagora.com"));
+            .containsOnly(new EMailer(Optional.of("Christophe Hamerling"), 
"chri.hamerl...@linagora.com", "linagora.com"),
+                new EMailer(Optional.of("Graham CROSMARIE"), 
"grah.crosma...@linagora.com", "linagora.com"));
     }
 
     @Test
@@ -146,8 +146,8 @@ class HeaderCollectionTest {
             .build();
 
         assertThat(headerCollection.getFromAddressSet())
-            .containsOnly(new EMailer(Optional.of("Christophe Hamerling"), 
"chri.hamerl...@linagora.com"),
-                new EMailer(Optional.of("Graham CROSMARIE"), 
"grah.crosma...@linagora.com"));
+            .containsOnly(new EMailer(Optional.of("Christophe Hamerling"), 
"chri.hamerl...@linagora.com", "linagora.com"),
+                new EMailer(Optional.of("Graham CROSMARIE"), 
"grah.crosma...@linagora.com", "linagora.com"));
     }
 
     @Test
@@ -170,8 +170,8 @@ class HeaderCollectionTest {
             .build();
 
         assertThat(headerCollection.getToAddressSet())
-            .containsOnly(new EMailer(Optional.of("Christophe Hamerling"), 
"chri.hamerl...@linagora.com"),
-                new EMailer(Optional.empty(), "grah.crosma...@linagora.com"));
+            .containsOnly(new EMailer(Optional.of("Christophe Hamerling"), 
"chri.hamerl...@linagora.com", "linagora.com"),
+                new EMailer(Optional.empty(), "grah.crosma...@linagora.com", 
"linagora.com"));
     }
 
     @Test
@@ -181,7 +181,7 @@ class HeaderCollectionTest {
             .build();
 
         assertThat(headerCollection.getCcAddressSet())
-            .containsOnly(new EMailer(Optional.of("Christophe Hamerling"), 
"chri.hamerl...@linagora.com"));
+            .containsOnly(new EMailer(Optional.of("Christophe Hamerling"), 
"chri.hamerl...@linagora.com", "linagora.com"));
     }
 
     @Test
@@ -191,7 +191,7 @@ class HeaderCollectionTest {
             .build();
 
         assertThat(headerCollection.getReplyToAddressSet())
-            .containsOnly(new EMailer(Optional.of("Christophe Hamerling"), 
"chri.hamerl...@linagora.com"));
+            .containsOnly(new EMailer(Optional.of("Christophe Hamerling"), 
"chri.hamerl...@linagora.com", "linagora.com"));
     }
 
     @Test
@@ -201,7 +201,7 @@ class HeaderCollectionTest {
             .build();
 
         assertThat(headerCollection.getBccAddressSet())
-            .containsOnly(new EMailer(Optional.of("Christophe Hamerling"), 
"chri.hamerl...@linagora.com"));
+            .containsOnly(new EMailer(Optional.of("Christophe Hamerling"), 
"chri.hamerl...@linagora.com", "linagora.com"));
     }
 
     @Test
@@ -211,7 +211,7 @@ class HeaderCollectionTest {
             .build();
 
         assertThat(headerCollection.getBccAddressSet())
-            .containsOnly(new EMailer(Optional.of("Mickey"), 
"tri...@mouse.com"));
+            .containsOnly(new EMailer(Optional.of("Mickey"), 
"tri...@mouse.com", "mouse.com"));
     }
 
     @Test
@@ -221,8 +221,8 @@ class HeaderCollectionTest {
             .build();
 
         assertThat(headerCollection.getBccAddressSet())
-            .containsOnly(new EMailer(Optional.of("Mickey"), 
"tri...@mouse.com"),
-                new EMailer(Optional.of("Miny"), "he...@polo.com"));
+            .containsOnly(new EMailer(Optional.of("Mickey"), 
"tri...@mouse.com", "mouse.com"),
+                new EMailer(Optional.of("Miny"), "he...@polo.com", 
"polo.com"));
     }
 
     @Test
@@ -232,8 +232,8 @@ class HeaderCollectionTest {
             .build();
 
         assertThat(headerCollection.getBccAddressSet())
-            .containsOnly(new EMailer(Optional.of("Mickey"), 
"tri...@mouse.com"),
-                new EMailer(Optional.of("Miny"), "he...@polo.com"));
+            .containsOnly(new EMailer(Optional.of("Mickey"), 
"tri...@mouse.com", "mouse.com"),
+                new EMailer(Optional.of("Miny"), "he...@polo.com", 
"polo.com"));
     }
 
     @Test
diff --git a/mailbox/opensearch/src/test/resources/eml/inlined-mixed.json 
b/mailbox/opensearch/src/test/resources/eml/inlined-mixed.json
index a1ca64c409..81b5c79042 100644
--- a/mailbox/opensearch/src/test/resources/eml/inlined-mixed.json
+++ b/mailbox/opensearch/src/test/resources/eml/inlined-mixed.json
@@ -21,7 +21,8 @@
     "date": "2015-06-07T00:00:00+0200",
     "from": [{
         "name": "Bob",
-        "address": "b...@domain.tld"
+        "address": "b...@domain.tld",
+        "domain":"domain"
     }],
     "hasAttachment": false,
     "headers": [{
@@ -63,7 +64,8 @@
     "subtype": "text",
     "to": [{
         "name": "Alice",
-        "address": "al...@domain.tld"
+        "address": "al...@domain.tld",
+        "domain":"domain"
     }],
     "uid": 25,
     "userFlags": [],
diff --git 
a/mailbox/store/src/test/resources/eml/emailWithNonIndexableAttachmentWithoutAttachment.json
 
b/mailbox/store/src/test/resources/eml/emailWithNonIndexableAttachmentWithoutAttachment.json
index 6a8c931ef7..eee38cdb52 100644
--- 
a/mailbox/store/src/test/resources/eml/emailWithNonIndexableAttachmentWithoutAttachment.json
+++ 
b/mailbox/store/src/test/resources/eml/emailWithNonIndexableAttachmentWithoutAttachment.json
@@ -23,7 +23,8 @@
    "from" : [
       {
          "address" : "laura...@linagora.com",
-         "name" : "Laura ROYET"
+         "name" : "Laura ROYET",
+         "domain":"linagora"
       }
    ],
    "isUnread" : false,
@@ -69,7 +70,8 @@
    "to" : [
       {
          "address" : "laura...@linagora.com",
-         "name" : "Laura ROYET"
+         "name" : "Laura ROYET",
+         "domain":"linagora"
       }
    ]
 }
diff --git a/mailbox/store/src/test/resources/eml/htmlMail.json 
b/mailbox/store/src/test/resources/eml/htmlMail.json
index a2491426b9..ad60aa9b8b 100644
--- a/mailbox/store/src/test/resources/eml/htmlMail.json
+++ b/mailbox/store/src/test/resources/eml/htmlMail.json
@@ -101,13 +101,15 @@
   "from":[
     {
       "name":"Airbnb",
-      "address":"disco...@airbnb.com"
+      "address":"disco...@airbnb.com",
+      "domain":"airbnb"
     }
   ],
   "to":[
     {
       "name":null,
-      "address":"mis...@james.org"
+      "address":"mis...@james.org",
+      "domain":"james"
     }
   ],
   "cc":[],
diff --git a/mailbox/store/src/test/resources/eml/invalidCharset.json 
b/mailbox/store/src/test/resources/eml/invalidCharset.json
index 637520b459..ec1b4d527e 100644
--- a/mailbox/store/src/test/resources/eml/invalidCharset.json
+++ b/mailbox/store/src/test/resources/eml/invalidCharset.json
@@ -5,7 +5,11 @@
   "textBody":"This is an inline attachment: Cheers!",
   "cc":[],
   "date":"2015-06-07T00:00:00+0200",
-  "from":[{"name":"Antoine DUPRAT","address":"x...@linagora.com"}],
+  "from":[{
+    "name":"Antoine DUPRAT",
+    "address":"x...@linagora.com",
+    "domain":"linagora"
+  }],
   "hasAttachment":false,
   "headers":[
     {"name":"to","value":"Antoine DUPRAT <x...@linagora.com>"},
@@ -26,7 +30,11 @@
   "size":25,
   "subject":["Inline attachment"],
   "subtype":"text",
-  "to":[{"name":"Antoine DUPRAT","address":"x...@linagora.com"}],
+  "to":[{
+    "name":"Antoine DUPRAT",
+    "address":"x...@linagora.com",
+    "domain":"linagora"
+  }],
   "uid":25,
   "userFlags":[],
   "mimeMessageID":"<26d91590-b995-8d45-f66a-0433c6574...@linagora.com>",
diff --git a/mailbox/store/src/test/resources/eml/mail.json 
b/mailbox/store/src/test/resources/eml/mail.json
index 3a3c4d39e6..1e8d6636be 100644
--- a/mailbox/store/src/test/resources/eml/mail.json
+++ b/mailbox/store/src/test/resources/eml/mail.json
@@ -143,17 +143,20 @@
  "from": [
   {
    "name": "Murari",
-   "address": "murari....@gmail.com"
+   "address": "murari....@gmail.com",
+    "domain":"gmail"
   }
  ],
  "to": [
   {
    "name": "General Discussion about Arch Linux",
-   "address": "arch-gene...@archlinux.org"
+   "address": "arch-gene...@archlinux.org",
+    "domain":"archlinux"
   },
   {
    "name": "Üsteliğhan Maşrapa",
-   "address": "ustelighanmasr...@domain.tld"
+   "address": "ustelighanmasr...@domain.tld",
+    "domain":"domain"
   }
  ],
  "cc": [],
diff --git a/mailbox/store/src/test/resources/eml/nonTextual.json 
b/mailbox/store/src/test/resources/eml/nonTextual.json
index 6780dce79a..b39a3111ef 100644
--- a/mailbox/store/src/test/resources/eml/nonTextual.json
+++ b/mailbox/store/src/test/resources/eml/nonTextual.json
@@ -13,7 +13,11 @@
   "textBody":"This mail have a non textual attachment !\r\n",
   "cc":[],
   "date":"2015-06-07T00:00:00+0200",
-  "from":[{"name":"Benoit Tellier","address":"btell...@linagora.com"}],
+  "from":[{
+    "name":"Benoit Tellier",
+    "address":"btell...@linagora.com",
+    "domain":"linagora"
+  }],
   "hasAttachment":false,
   "headers": [{
     "name": "return-path",
@@ -61,7 +65,11 @@
   "size":25,
   "subject":["Test message"],
   "subtype":"text",
-  "to":[{"name":null,"address":"btell...@linagora.com"}],
+  "to":[{
+    "name":null,
+    "address":"btell...@linagora.com",
+    "domain":"linagora"
+  }],
   "uid":25,
   "userFlags":[],
   "mimeMessageID":"<5582a0ce.4020...@linagora.com>",
diff --git a/mailbox/store/src/test/resources/eml/pgpSignedMail.json 
b/mailbox/store/src/test/resources/eml/pgpSignedMail.json
index 339af8292e..403133a36a 100644
--- a/mailbox/store/src/test/resources/eml/pgpSignedMail.json
+++ b/mailbox/store/src/test/resources/eml/pgpSignedMail.json
@@ -146,13 +146,15 @@
   "from": [
        {
          "name": "Markus Koschany",
-         "address": "a...@gambaru.de"
+         "address": "a...@gambaru.de",
+         "domain": "gambaru"
        }
   ],
   "to": [
        {
          "name": null,
-         "address": "debian-security-annou...@lists.debian.org"
+         "address": "debian-security-annou...@lists.debian.org",
+         "domain": "lists.debian"
        }
   ],
   "cc": [],
diff --git a/mailbox/store/src/test/resources/eml/recursiveMail.json 
b/mailbox/store/src/test/resources/eml/recursiveMail.json
index 1b01196a16..3edc9b562a 100644
--- a/mailbox/store/src/test/resources/eml/recursiveMail.json
+++ b/mailbox/store/src/test/resources/eml/recursiveMail.json
@@ -62,13 +62,15 @@
   "from": [
     {
       "name": "Matthieu Baechler",
-      "address": "mbaech...@linagora.com"
+      "address": "mbaech...@linagora.com",
+      "domain": "linagora"
     }
   ],
   "to": [
     {
       "name": null,
-      "address": "btell...@linagora.com"
+      "address": "btell...@linagora.com",
+      "domain": "linagora"
     }
   ],
   "cc": [],
diff --git 
a/mailbox/store/src/test/resources/eml/recursiveMailWithoutAttachments.json 
b/mailbox/store/src/test/resources/eml/recursiveMailWithoutAttachments.json
index 3b63772af7..7713ca273c 100644
--- a/mailbox/store/src/test/resources/eml/recursiveMailWithoutAttachments.json
+++ b/mailbox/store/src/test/resources/eml/recursiveMailWithoutAttachments.json
@@ -62,13 +62,15 @@
   "from": [
     {
       "name": "Matthieu Baechler",
-      "address": "mbaech...@linagora.com"
+      "address": "mbaech...@linagora.com",
+      "domain": "linagora"
     }
   ],
   "to": [
     {
       "name": null,
-      "address": "btell...@linagora.com"
+      "address": "btell...@linagora.com",
+      "domain":"linagora"
     }
   ],
   "cc": [],
diff --git a/mailbox/store/src/test/resources/eml/spamMail.json 
b/mailbox/store/src/test/resources/eml/spamMail.json
index 7617f76600..79367d25db 100644
--- a/mailbox/store/src/test/resources/eml/spamMail.json
+++ b/mailbox/store/src/test/resources/eml/spamMail.json
@@ -101,13 +101,15 @@
   "from": [
        {
          "name": "Content-filter at spam.minet.net",
-         "address": "postmas...@minet.net"
+         "address": "postmas...@minet.net",
+         "domain": "minet"
        }
   ],
   "to": [
        {
          "name": null,
-         "address": "r...@listes.minet.net"
+         "address": "r...@listes.minet.net",
+      "domain": "listes.minet"
        }
   ],
   "cc": [],


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org

Reply via email to