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