JAMES-2015 make mail sent by vacation mailet marked as authenticated
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/2aba6ef3 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/2aba6ef3 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/2aba6ef3 Branch: refs/heads/master Commit: 2aba6ef3a6822a4bbf9504960ba2fb8b77763223 Parents: 469a074 Author: Luc DUZAN <[email protected]> Authored: Fri May 5 11:27:26 2017 +0200 Committer: benwa <[email protected]> Committed: Wed May 17 15:12:48 2017 +0700 ---------------------------------------------------------------------- .../destination/conf/mailetcontainer.xml | 5 +- .../destination/conf/mailetcontainer.xml | 12 ++- .../jpa/destination/conf/mailetcontainer.xml | 2 +- .../spring/destination/conf/mailetcontainer.xml | 9 +- .../src/main/java/org/apache/mailet/Mail.java | 1 + .../mailet/base/test/FakeMailContext.java | 15 +++- .../james/transport/matchers/SentByMailet.java | 41 +++++++++ .../mailets/UseHeaderRecipientsTest.java | 1 + .../transport/matchers/SentByMailetTest.java | 92 +++++++++++++++++++ .../src/test/resources/mailetcontainer.xml | 11 ++- .../src/test/resources/mailetcontainer.xml | 8 +- .../sample-configuration/mailetcontainer.xml | 8 +- .../sample-configuration/mailetcontainer.xml | 12 ++- .../src/test/resources/mailetcontainer.xml | 11 ++- .../resources/defaultJmapMailetContainer.xml | 5 +- .../impl/JamesMailetContext.java | 1 + .../james/transport/mailets/BounceTest.java | 1 + .../RecipientRewriteTableProcessorTest.java | 5 ++ .../mailets/delivery/MailDispatcherTest.java | 1 + .../mailets/delivery/SieveIntegrationTest.java | 7 ++ .../managesieve/ManageSieveMailetTestCase.java | 1 + .../mailets/remoteDelivery/BouncerTest.java | 2 + .../CassandraVacationRelayIntegrationTest.java | 2 - .../src/test/resources/mailetcontainer.xml | 11 ++- .../MemoryVacationRelayIntegrationTest.java | 2 - .../src/test/resources/mailetcontainer.xml | 8 +- .../apache/james/jmap/mailet/SentByJmap.java | 42 +++++++++ .../james/jmap/mailet/SentByJmapTest.java | 94 ++++++++++++++++++++ .../src/test/resources/mailetcontainer.xml | 8 +- 29 files changed, 396 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/dockerfiles/run/guice/cassandra-ldap/destination/conf/mailetcontainer.xml ---------------------------------------------------------------------- diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/mailetcontainer.xml b/dockerfiles/run/guice/cassandra-ldap/destination/conf/mailetcontainer.xml index 681b966..5a45d3e 100644 --- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/mailetcontainer.xml +++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/mailetcontainer.xml @@ -73,7 +73,10 @@ <mailet match="SMTPAuthSuccessful" class="ToProcessor"> <processor>relay</processor> </mailet> - <mailet match="HasMailAttribute=org.apache.james.jmap.send.MailMetaData.messageId" class="ToProcessor"> + <mailet match="org.apache.james.jmap.mailet.SentByJmap" class="ToProcessor"> + <processor>relay</processor> + </mailet> + <mailet match="SentByMailet" class="ToProcessor"> <processor>relay</processor> </mailet> http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/dockerfiles/run/guice/cassandra/destination/conf/mailetcontainer.xml ---------------------------------------------------------------------- diff --git a/dockerfiles/run/guice/cassandra/destination/conf/mailetcontainer.xml b/dockerfiles/run/guice/cassandra/destination/conf/mailetcontainer.xml index 681b966..d766643 100644 --- a/dockerfiles/run/guice/cassandra/destination/conf/mailetcontainer.xml +++ b/dockerfiles/run/guice/cassandra/destination/conf/mailetcontainer.xml @@ -70,10 +70,16 @@ <notice>550 - Requested action not taken: no such user here</notice> </mailet> - <mailet match="SMTPAuthSuccessful" class="ToProcessor"> - <processor>relay</processor> + <mailet match="SMTPAuthSuccessful" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="SentByMailet" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="org.apache.james.jmap.mailet.SentByJmap" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> </mailet> - <mailet match="HasMailAttribute=org.apache.james.jmap.send.MailMetaData.messageId" class="ToProcessor"> + <mailet match="HasMailAttribute=RelayAllowed" class="ToProcessor"> <processor>relay</processor> </mailet> http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/dockerfiles/run/guice/jpa/destination/conf/mailetcontainer.xml ---------------------------------------------------------------------- diff --git a/dockerfiles/run/guice/jpa/destination/conf/mailetcontainer.xml b/dockerfiles/run/guice/jpa/destination/conf/mailetcontainer.xml index 29248b8..cc18299 100644 --- a/dockerfiles/run/guice/jpa/destination/conf/mailetcontainer.xml +++ b/dockerfiles/run/guice/jpa/destination/conf/mailetcontainer.xml @@ -72,7 +72,7 @@ <mailet match="SMTPAuthSuccessful" class="ToProcessor"> <processor>relay</processor> </mailet> - <mailet match="HasMailAttribute=org.apache.james.jmap.send.MailMetaData.messageId" class="ToProcessor"> + <mailet match="SentByMailet" class="ToProcessor"> <processor>relay</processor> </mailet> http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/dockerfiles/run/spring/destination/conf/mailetcontainer.xml ---------------------------------------------------------------------- diff --git a/dockerfiles/run/spring/destination/conf/mailetcontainer.xml b/dockerfiles/run/spring/destination/conf/mailetcontainer.xml index 29248b8..2998503 100644 --- a/dockerfiles/run/spring/destination/conf/mailetcontainer.xml +++ b/dockerfiles/run/spring/destination/conf/mailetcontainer.xml @@ -69,10 +69,13 @@ <notice>550 - Requested action not taken: no such user here</notice> </mailet> - <mailet match="SMTPAuthSuccessful" class="ToProcessor"> - <processor>relay</processor> + <mailet match="SMTPAuthSuccessful" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="SentByMailet" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> </mailet> - <mailet match="HasMailAttribute=org.apache.james.jmap.send.MailMetaData.messageId" class="ToProcessor"> + <mailet match="HasMailAttribute=RelayAllowed" class="ToProcessor"> <processor>relay</processor> </mailet> http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/mailet/api/src/main/java/org/apache/mailet/Mail.java ---------------------------------------------------------------------- diff --git a/mailet/api/src/main/java/org/apache/mailet/Mail.java b/mailet/api/src/main/java/org/apache/mailet/Mail.java index 982e48e..158359a 100644 --- a/mailet/api/src/main/java/org/apache/mailet/Mail.java +++ b/mailet/api/src/main/java/org/apache/mailet/Mail.java @@ -74,6 +74,7 @@ public interface Mail extends Serializable, Cloneable { String ERROR = "error"; String TRANSPORT = "transport"; String SMTP_AUTH_USER_ATTRIBUTE_NAME = "org.apache.james.SMTPAuthUser"; + String SENT_BY_MAILET = "org.apache.james.SentByMailet"; /** * Returns the name of this message. * http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java ---------------------------------------------------------------------- diff --git a/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java b/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java index 1b22e44..9a70622 100644 --- a/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java +++ b/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java @@ -56,13 +56,14 @@ public class FakeMailContext implements MailetContext { return new SentMail.Builder(); } - public static SentMail fromMail(Mail mail ) throws MessagingException { + public static SentMail fromMail(Mail mail) throws MessagingException { return sentMailBuilder() .sender(mail.getSender()) .recipients(mail.getRecipients()) .message(mail.getMessage()) .state(mail.getState()) .attributes(buildAttributesMap(mail)) + .fromMailet() .build(); } @@ -111,6 +112,7 @@ public class FakeMailContext implements MailetContext { private MimeMessage msg; private Map<String, Serializable> attributes = new HashMap<String, Serializable>(); private Optional<String> state = Optional.absent(); + private Optional<Boolean> fromMailet = Optional.absent(); public Builder sender(MailAddress sender) { this.sender = sender; @@ -122,6 +124,11 @@ public class FakeMailContext implements MailetContext { return this; } + public Builder fromMailet() { + this.fromMailet = Optional.of(true); + return this; + } + public Builder recipients(MailAddress... recipients) { this.recipients = Optional.<Collection<MailAddress>>of(ImmutableList.copyOf(recipients)); return this; @@ -153,6 +160,9 @@ public class FakeMailContext implements MailetContext { } public SentMail build() { + if (fromMailet.or(false)) { + this.attribute(Mail.SENT_BY_MAILET, "true"); + } return new SentMail(sender, recipients.or(ImmutableList.<MailAddress>of()), msg, ImmutableMap.copyOf(attributes), state.or(Mail.DEFAULT)); } @@ -371,6 +381,7 @@ public class FakeMailContext implements MailetContext { public void sendMail(MimeMessage mimemessage) throws MessagingException { sentMails.add(sentMailBuilder() .message(mimemessage) + .fromMailet() .build()); } @@ -379,6 +390,7 @@ public class FakeMailContext implements MailetContext { .recipients(recipients) .sender(sender) .message(msg) + .fromMailet() .build()); } @@ -388,6 +400,7 @@ public class FakeMailContext implements MailetContext { .message(msg) .state(state) .sender(sender) + .fromMailet() .build()); } http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/mailet/standard/src/main/java/org/apache/james/transport/matchers/SentByMailet.java ---------------------------------------------------------------------- diff --git a/mailet/standard/src/main/java/org/apache/james/transport/matchers/SentByMailet.java b/mailet/standard/src/main/java/org/apache/james/transport/matchers/SentByMailet.java new file mode 100644 index 0000000..0df6e96 --- /dev/null +++ b/mailet/standard/src/main/java/org/apache/james/transport/matchers/SentByMailet.java @@ -0,0 +1,41 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + + + +package org.apache.james.transport.matchers; + +import java.util.Collection; + +import com.google.common.collect.ImmutableList; +import org.apache.mailet.Mail; +import org.apache.mailet.MailAddress; +import org.apache.mailet.base.GenericMatcher; + +public class SentByMailet extends GenericMatcher { + + public Collection<MailAddress> match(Mail mail) { + String authUser = (String) mail.getAttribute(Mail.SENT_BY_MAILET); + if (authUser != null) { + return mail.getRecipients(); + } else { + return ImmutableList.of(); + } + } +} http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/mailet/standard/src/test/java/org/apache/james/transport/mailets/UseHeaderRecipientsTest.java ---------------------------------------------------------------------- diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/UseHeaderRecipientsTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/UseHeaderRecipientsTest.java index 95d220a..cdcb968 100644 --- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/UseHeaderRecipientsTest.java +++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/UseHeaderRecipientsTest.java @@ -135,6 +135,7 @@ public class UseHeaderRecipientsTest { assertThat(mailetContext.getSentMails()) .containsOnly(FakeMailContext.sentMailBuilder() .recipients(mailAddress1, mailAddress2, mailAddress3) + .fromMailet() .build()); } http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/mailet/standard/src/test/java/org/apache/james/transport/matchers/SentByMailetTest.java ---------------------------------------------------------------------- diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/SentByMailetTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/SentByMailetTest.java new file mode 100644 index 0000000..4f36a98 --- /dev/null +++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/SentByMailetTest.java @@ -0,0 +1,92 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.transport.matchers; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Collection; + +import org.apache.mailet.Mail; +import org.apache.mailet.MailAddress; +import org.apache.mailet.base.test.FakeMail; +import org.apache.mailet.base.test.FakeMailContext; +import org.apache.mailet.base.test.FakeMatcherConfig; +import org.junit.Before; +import org.junit.Test; + +public class SentByMailetTest { + + private SentByMailet testee; + + @Before + public void setUp() throws Exception { + testee = new SentByMailet(); + testee.init(FakeMatcherConfig.builder().matcherName("matcherName") + .mailetContext(FakeMailContext.defaultContext()) + .build()); + } + + @Test + public void matchShouldReturnRecipientsWhenAuthUserAttributeIsPresent() throws Exception{ + MailAddress recipient = new MailAddress("[email protected]"); + FakeMail fakeMail = FakeMail.builder() + .recipient(recipient) + .attribute(Mail.SENT_BY_MAILET, "true") + .build(); + + Collection<MailAddress> results = testee.match(fakeMail); + + assertThat(results).containsOnly(recipient); + } + + @Test + public void matchShouldReturnEmptyCollectionWhenAuthUserAttributeIsAbsent() throws Exception{ + FakeMail fakeMail = FakeMail.builder() + .recipients(new MailAddress("[email protected]")) + .build(); + + Collection<MailAddress> results = testee.match(fakeMail); + + assertThat(results).isEmpty(); + } + + @Test + public void matchShouldReturnEmptyCollectionWhenAuthUserAttributeIsAbsentAndThereIsNoRecipient() throws Exception { + FakeMail fakeMail = FakeMail.builder() + .recipients() + .build(); + + Collection<MailAddress> results = testee.match(fakeMail); + + assertThat(results).isEmpty(); + } + + @Test + public void matchShouldReturnEmptyCollectionWhenAuthUserAttributeIsPresentAndThereIsNoRecipient() throws Exception { + FakeMail fakeMail = FakeMail.builder() + .recipients() + .attribute(Mail.SENT_BY_MAILET, "true") + .build(); + + Collection<MailAddress> results = testee.match(fakeMail); + + assertThat(results).isEmpty(); + } +} http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/container/cli-integration/src/test/resources/mailetcontainer.xml ---------------------------------------------------------------------- diff --git a/server/container/cli-integration/src/test/resources/mailetcontainer.xml b/server/container/cli-integration/src/test/resources/mailetcontainer.xml index 28bdcee..a842eee 100644 --- a/server/container/cli-integration/src/test/resources/mailetcontainer.xml +++ b/server/container/cli-integration/src/test/resources/mailetcontainer.xml @@ -60,7 +60,16 @@ <processor>local-address-error</processor> <notice>550 - Requested action not taken: no such user here</notice> </mailet> - <mailet match="SMTPAuthSuccessful" class="RemoteDelivery"> + <mailet match="SMTPAuthSuccessful" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="SentByMailet" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="org.apache.james.jmap.mailet.SentByJmap" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="HasMailAttribute=RelayAllowed" class="RemoteDelivery"> <outgoingQueue>outgoing</outgoingQueue> <delayTime>5000, 100000, 500000</delayTime> <maxRetries>25</maxRetries> http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/container/guice/jpa-guice/src/test/resources/mailetcontainer.xml ---------------------------------------------------------------------- diff --git a/server/container/guice/jpa-guice/src/test/resources/mailetcontainer.xml b/server/container/guice/jpa-guice/src/test/resources/mailetcontainer.xml index 426cab8..2f1ee37 100644 --- a/server/container/guice/jpa-guice/src/test/resources/mailetcontainer.xml +++ b/server/container/guice/jpa-guice/src/test/resources/mailetcontainer.xml @@ -60,7 +60,13 @@ <processor>local-address-error</processor> <notice>550 - Requested action not taken: no such user here</notice> </mailet> - <mailet match="SMTPAuthSuccessful" class="RemoteDelivery"> + <mailet match="SMTPAuthSuccessful" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="SentByMailet" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="HasMailAttribute=RelayAllowed" class="RemoteDelivery"> <outgoingQueue>outgoing</outgoingQueue> <delayTime>5000, 100000, 500000</delayTime> <maxRetries>25</maxRetries> http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/container/guice/jpa-smtp/sample-configuration/mailetcontainer.xml ---------------------------------------------------------------------- diff --git a/server/container/guice/jpa-smtp/sample-configuration/mailetcontainer.xml b/server/container/guice/jpa-smtp/sample-configuration/mailetcontainer.xml index 968b59c..909c5db 100644 --- a/server/container/guice/jpa-smtp/sample-configuration/mailetcontainer.xml +++ b/server/container/guice/jpa-smtp/sample-configuration/mailetcontainer.xml @@ -86,7 +86,13 @@ <processor>local-address-error</processor> <notice>550 - Requested action not taken: no such user here</notice> </mailet> - <mailet match="SMTPAuthSuccessful" class="RemoteDelivery"> + <mailet match="SMTPAuthSuccessful" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="SentByMailet" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="HasMailAttribute=RelayAllowed" class="RemoteDelivery"> <outgoingQueue>outgoing</outgoingQueue> <delayTime>5000, 100000, 500000</delayTime> <maxRetries>25</maxRetries> http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/container/guice/memory-guice/sample-configuration/mailetcontainer.xml ---------------------------------------------------------------------- diff --git a/server/container/guice/memory-guice/sample-configuration/mailetcontainer.xml b/server/container/guice/memory-guice/sample-configuration/mailetcontainer.xml index 1a4343f..40509a8 100644 --- a/server/container/guice/memory-guice/sample-configuration/mailetcontainer.xml +++ b/server/container/guice/memory-guice/sample-configuration/mailetcontainer.xml @@ -50,6 +50,9 @@ <name>X-UserIsAuth</name> <value>true</value> </mailet> + <mailet match="org.apache.james.jmap.mailet.SentByJmap" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> <mailet match="HasMailAttribute=org.apache.james.SMIMECheckSignature" class="SetMimeHeader"> <name>X-WasSigned</name> <value>true</value> @@ -61,7 +64,14 @@ <mailet match="RecipientIsLocal" class="org.apache.james.jmap.mailet.VacationMailet"/> <mailet match="RecipientIsLocal" class="Sieve"/> <mailet match="RecipientIsLocal" class="LocalDelivery"/> - <mailet match="SMTPAuthSuccessful" class="RemoteDelivery"> + + <mailet match="SMTPAuthSuccessful" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="SentByMailet" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="HasMailAttribute=RelayAllowed" class="RemoteDelivery"> <outgoingQueue>outgoing</outgoingQueue> <delayTime>5000, 100000, 500000</delayTime> <maxRetries>25</maxRetries> http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/container/guice/memory-guice/src/test/resources/mailetcontainer.xml ---------------------------------------------------------------------- diff --git a/server/container/guice/memory-guice/src/test/resources/mailetcontainer.xml b/server/container/guice/memory-guice/src/test/resources/mailetcontainer.xml index b265f93..04ffa3e 100644 --- a/server/container/guice/memory-guice/src/test/resources/mailetcontainer.xml +++ b/server/container/guice/memory-guice/src/test/resources/mailetcontainer.xml @@ -61,7 +61,16 @@ <processor>local-address-error</processor> <notice>550 - Requested action not taken: no such user here</notice> </mailet> - <mailet match="SMTPAuthSuccessful" class="RemoteDelivery"> + <mailet match="SMTPAuthSuccessful" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="SentByMailet" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="org.apache.james.jmap.mailet.SentByJmap" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="HasMailAttribute=RelayAllowed" class="RemoteDelivery"> <outgoingQueue>outgoing</outgoingQueue> <delayTime>5000, 100000, 500000</delayTime> <maxRetries>25</maxRetries> http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/container/guice/protocols/jmap/src/main/resources/defaultJmapMailetContainer.xml ---------------------------------------------------------------------- diff --git a/server/container/guice/protocols/jmap/src/main/resources/defaultJmapMailetContainer.xml b/server/container/guice/protocols/jmap/src/main/resources/defaultJmapMailetContainer.xml index 81386a4..ccf6017 100644 --- a/server/container/guice/protocols/jmap/src/main/resources/defaultJmapMailetContainer.xml +++ b/server/container/guice/protocols/jmap/src/main/resources/defaultJmapMailetContainer.xml @@ -50,7 +50,10 @@ <mailet match="SMTPAuthSuccessful" class="ToProcessor"> <processor>relay</processor> </mailet> - <mailet match="HasMailAttribute=org.apache.james.jmap.send.MailMetaData.messageId" class="ToProcessor"> + <mailet match="org.apache.james.jmap.mailet.SentByJmap" class="ToProcessor"> + <processor>relay</processor> + </mailet> + <mailet match="SentByMailet" class="ToProcessor"> <processor>relay</processor> </mailet> <mailet match="All" class="ToProcessor"> http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java index fca950a..4274727 100644 --- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java +++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java @@ -400,6 +400,7 @@ public class JamesMailetContext implements MailetContext, LogEnabled, Configurab @Override public void sendMail(Mail mail) throws MessagingException { + mail.setAttribute(Mail.SENT_BY_MAILET, "true"); rootMailQueue.enQueue(mail); } http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java index 4ff3ca9..e5b3e97 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java @@ -122,6 +122,7 @@ public class BounceTest { FakeMailContext.SentMail expected = FakeMailContext.sentMailBuilder() .recipient(senderMailAddress) + .fromMailet() .build(); assertThat(fakeMailContext.getSentMails()).containsOnly(expected); } http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessorTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessorTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessorTest.java index 09cd5ef..4e31a6f 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessorTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessorTest.java @@ -164,6 +164,7 @@ public class RecipientRewriteTableProcessorTest { FakeMailContext.SentMail expected = FakeMailContext.sentMailBuilder() .sender(MailAddressFixture.ANY_AT_JAMES) .recipients(ImmutableList.of(MailAddressFixture.ANY_AT_JAMES, MailAddressFixture.OTHER_AT_JAMES)) + .fromMailet() .message(message) .build(); @@ -213,6 +214,7 @@ public class RecipientRewriteTableProcessorTest { FakeMailContext.SentMail expected = FakeMailContext.sentMailBuilder() .sender(MailAddressFixture.ANY_AT_JAMES) .recipients(ImmutableList.of(MailAddressFixture.ANY_AT_JAMES, MailAddressFixture.OTHER_AT_JAMES)) + .fromMailet() .message(message) .build(); @@ -251,6 +253,7 @@ public class RecipientRewriteTableProcessorTest { .sender(MailAddressFixture.ANY_AT_JAMES) .recipient(MailAddressFixture.OTHER_AT_LOCAL) .message(message) + .fromMailet() .state(Mail.ERROR) .build(); @@ -276,6 +279,7 @@ public class RecipientRewriteTableProcessorTest { .recipient(MailAddressFixture.OTHER_AT_LOCAL) .message(message) .state(Mail.ERROR) + .fromMailet() .build(); assertThat(mailetContext.getSentMails()).containsOnly(expected); @@ -299,6 +303,7 @@ public class RecipientRewriteTableProcessorTest { .sender(MailAddressFixture.ANY_AT_JAMES) .recipient(MailAddressFixture.OTHER_AT_LOCAL) .message(message) + .fromMailet() .state(Mail.ERROR) .build(); http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java index 2e2c14c..d08e00c 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java @@ -153,6 +153,7 @@ public class MailDispatcherTest { FakeMailContext.SentMail expected = FakeMailContext.sentMailBuilder() .sender(MailAddressFixture.OTHER_AT_JAMES) .recipient(MailAddressFixture.ANY_AT_JAMES) + .fromMailet() .state(Mail.ERROR).build(); assertThat(actual).containsOnly(expected); assertThat(IOUtils.toString(actual.get(0).getMsg().getInputStream(), Charsets.UTF_8)) http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java index e3bdddf..04a4b6c 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java @@ -411,6 +411,7 @@ public class SieveIntegrationTest { FakeMailContext.SentMail expectedSentMail = FakeMailContext.sentMailBuilder() .sender(new MailAddress("[email protected]")) .recipient(new MailAddress("[email protected]")) + .fromMailet() .build(); assertThat(fakeMailContext.getSentMails()) .containsExactly(expectedSentMail); @@ -777,6 +778,7 @@ public class SieveIntegrationTest { assertThat(fakeMailContext.getSentMails()).containsExactly(FakeMailContext.sentMailBuilder() .recipient(new MailAddress(RECEIVER_DOMAIN_COM)) .sender(new MailAddress(RECEIVER_DOMAIN_COM)) + .fromMailet() .build()); // No action taken assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isNull(); @@ -794,6 +796,7 @@ public class SieveIntegrationTest { FakeMailContext.SentMail expectedSentMail = FakeMailContext.sentMailBuilder() .sender(new MailAddress(RECEIVER_DOMAIN_COM)) .recipient(new MailAddress("[email protected]")) + .fromMailet() .build(); assertThat(fakeMailContext.getSentMails()).containsExactly(expectedSentMail); } @@ -854,6 +857,7 @@ public class SieveIntegrationTest { FakeMailContext.SentMail expectedSentMail = FakeMailContext.sentMailBuilder() .sender(new MailAddress(RECEIVER_DOMAIN_COM)) .recipient(new MailAddress("[email protected]")) + .fromMailet() .build(); assertThat(fakeMailContext.getSentMails()).containsExactly(expectedSentMail); } @@ -869,6 +873,7 @@ public class SieveIntegrationTest { FakeMailContext.SentMail expectedSentMail = FakeMailContext.sentMailBuilder() .sender(new MailAddress(RECEIVER_DOMAIN_COM)) .recipient(new MailAddress("[email protected]")) + .fromMailet() .build(); assertThat(fakeMailContext.getSentMails()).containsExactly(expectedSentMail); } @@ -884,6 +889,7 @@ public class SieveIntegrationTest { FakeMailContext.SentMail expectedSentMail = FakeMailContext.sentMailBuilder() .sender(new MailAddress("[email protected]")) .recipient(new MailAddress("[email protected]")) + .fromMailet() .build(); assertThat(fakeMailContext.getSentMails()).containsExactly(expectedSentMail); } @@ -899,6 +905,7 @@ public class SieveIntegrationTest { FakeMailContext.SentMail expectedSentMail = FakeMailContext.sentMailBuilder() .sender(new MailAddress(RECEIVER_DOMAIN_COM)) .recipient(new MailAddress("[email protected]")) + .fromMailet() .build(); assertThat(fakeMailContext.getSentMails()).containsExactly(expectedSentMail); } http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java index c229052..1f743ba 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java @@ -533,6 +533,7 @@ public class ManageSieveMailetTestCase { FakeMailContext.SentMail sentMail = FakeMailContext.sentMailBuilder() .recipient(new MailAddress(USER)) .sender(new MailAddress(SIEVE_LOCALHOST)) + .fromMailet() .build(); assertThat(fakeMailContext.getSentMails()).containsOnly(sentMail); MimeMessage result = fakeMailContext.getSentMails().get(0).getMsg(); http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/BouncerTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/BouncerTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/BouncerTest.java index cc600ad..f687643 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/BouncerTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/BouncerTest.java @@ -349,6 +349,7 @@ public class BouncerTest { .sender(MailAddressFixture.ANY_AT_JAMES) .attribute(DELIVERY_ERROR, errorMessage) .state(BOUNCE_PROCESSOR) + .fromMailet() .build(); assertThat(mailetContext.getSentMails()).containsOnly(expected); assertThat(mailetContext.getBouncedMails()).isEmpty(); @@ -450,6 +451,7 @@ public class BouncerTest { .sender(MailAddressFixture.ANY_AT_JAMES) .attribute(DELIVERY_ERROR, "null") .state(BOUNCE_PROCESSOR) + .fromMailet() .build(); assertThat(mailetContext.getSentMails()).containsOnly(expected); assertThat(mailetContext.getBouncedMails()).isEmpty(); http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationRelayIntegrationTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationRelayIntegrationTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationRelayIntegrationTest.java index 6559c72..e5555f8 100644 --- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationRelayIntegrationTest.java +++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationRelayIntegrationTest.java @@ -24,10 +24,8 @@ import org.apache.james.GuiceJamesServer; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.dnsservice.api.InMemoryDNSService; import org.apache.james.jmap.VacationRelayIntegrationTest; -import org.junit.Ignore; import org.junit.Rule; -@Ignore public class CassandraVacationRelayIntegrationTest extends VacationRelayIntegrationTest { private final InMemoryDNSService inMemoryDNSService = new InMemoryDNSService(); http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/resources/mailetcontainer.xml ---------------------------------------------------------------------- diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/resources/mailetcontainer.xml b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/resources/mailetcontainer.xml index 6a76330..f26cd89 100644 --- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/resources/mailetcontainer.xml +++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/resources/mailetcontainer.xml @@ -57,7 +57,16 @@ <processor>local-address-error</processor> <notice>550 - Requested action not taken: no such user here</notice> </mailet> - <mailet match="SMTPAuthSuccessful" class="RemoteDelivery"> + <mailet match="SMTPAuthSuccessful" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="SentByMailet" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="org.apache.james.jmap.mailet.SentByJmap" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="HasMailAttribute=RelayAllowed" class="RemoteDelivery"> <outgoingQueue>outgoing</outgoingQueue> <delayTime>5000, 100000, 500000</delayTime> <maxRetries>25</maxRetries> http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryVacationRelayIntegrationTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryVacationRelayIntegrationTest.java b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryVacationRelayIntegrationTest.java index 9eea53a..9095c4d 100644 --- a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryVacationRelayIntegrationTest.java +++ b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryVacationRelayIntegrationTest.java @@ -24,10 +24,8 @@ import org.apache.james.MemoryJmapTestRule; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.dnsservice.api.InMemoryDNSService; import org.apache.james.jmap.VacationRelayIntegrationTest; -import org.junit.Ignore; import org.junit.Rule; -@Ignore public class MemoryVacationRelayIntegrationTest extends VacationRelayIntegrationTest { @Rule http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/resources/mailetcontainer.xml ---------------------------------------------------------------------- diff --git a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/resources/mailetcontainer.xml b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/resources/mailetcontainer.xml index 6a76330..8e66ed5 100644 --- a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/resources/mailetcontainer.xml +++ b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/resources/mailetcontainer.xml @@ -57,7 +57,13 @@ <processor>local-address-error</processor> <notice>550 - Requested action not taken: no such user here</notice> </mailet> - <mailet match="SMTPAuthSuccessful" class="RemoteDelivery"> + <mailet match="SMTPAuthSuccessful" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="SentByMailet" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="HasMailAttribute=RelayAllowed" class="RemoteDelivery"> <outgoingQueue>outgoing</outgoingQueue> <delayTime>5000, 100000, 500000</delayTime> <maxRetries>25</maxRetries> http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/protocols/jmap/src/main/java/org/apache/james/jmap/mailet/SentByJmap.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/mailet/SentByJmap.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/mailet/SentByJmap.java new file mode 100644 index 0000000..68bcb55 --- /dev/null +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/mailet/SentByJmap.java @@ -0,0 +1,42 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + + + +package org.apache.james.jmap.mailet; + +import java.util.Collection; + +import org.apache.james.jmap.send.MailMetadata; +import org.apache.mailet.Mail; +import org.apache.mailet.MailAddress; +import org.apache.mailet.base.GenericMatcher; + +import com.google.common.collect.ImmutableList; + +public class SentByJmap extends GenericMatcher { + public Collection<MailAddress> match(Mail mail) { + String authUser = (String) mail.getAttribute(MailMetadata.MAIL_METADATA_USERNAME_ATTRIBUTE); + if (authUser != null) { + return mail.getRecipients(); + } else { + return ImmutableList.of(); + } + } +} http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/SentByJmapTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/SentByJmapTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/SentByJmapTest.java new file mode 100644 index 0000000..876695d --- /dev/null +++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/SentByJmapTest.java @@ -0,0 +1,94 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.jmap.mailet; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Collection; + +import org.apache.james.jmap.send.MailMetadata; +import org.apache.mailet.Mail; +import org.apache.mailet.MailAddress; +import org.apache.mailet.base.MailAddressFixture; +import org.apache.mailet.base.test.FakeMail; +import org.apache.mailet.base.test.FakeMailContext; +import org.apache.mailet.base.test.FakeMatcherConfig; +import org.junit.Before; +import org.junit.Test; + +public class SentByJmapTest { + + private SentByJmap testee; + + @Before + public void setUp() throws Exception { + testee = new SentByJmap(); + testee.init(FakeMatcherConfig.builder().matcherName("matcherName") + .mailetContext(FakeMailContext.defaultContext()) + .build()); + } + + @Test + public void matchShouldReturnRecipientsWhenUserAttributeIsPresent() throws Exception{ + MailAddress recipient = MailAddressFixture.ANY_AT_JAMES; + FakeMail fakeMail = FakeMail.builder() + .recipient(recipient) + .attribute(MailMetadata.MAIL_METADATA_USERNAME_ATTRIBUTE, "true") + .build(); + + Collection<MailAddress> results = testee.match(fakeMail); + + assertThat(results).containsOnly(recipient); + } + + @Test + public void matchShouldReturnEmptyCollectionWhenUserAttributeIsAbsent() throws Exception{ + FakeMail fakeMail = FakeMail.builder() + .recipients(MailAddressFixture.ANY_AT_JAMES) + .build(); + + Collection<MailAddress> results = testee.match(fakeMail); + + assertThat(results).isEmpty(); + } + + @Test + public void matchShouldReturnEmptyCollectionWhenUserAttributeIsAbsentAndThereIsNoRecipient() throws Exception { + FakeMail fakeMail = FakeMail.builder() + .recipients() + .build(); + + Collection<MailAddress> results = testee.match(fakeMail); + + assertThat(results).isEmpty(); + } + + @Test + public void matchShouldReturnEmptyCollectionWhenUserAttributeIsPresentAndThereIsNoRecipient() throws Exception { + FakeMail fakeMail = FakeMail.builder() + .recipients() + .attribute(MailMetadata.MAIL_METADATA_USERNAME_ATTRIBUTE, "true") + .build(); + + Collection<MailAddress> results = testee.match(fakeMail); + + assertThat(results).isEmpty(); + } +} http://git-wip-us.apache.org/repos/asf/james-project/blob/2aba6ef3/server/protocols/webadmin-integration-test/src/test/resources/mailetcontainer.xml ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin-integration-test/src/test/resources/mailetcontainer.xml b/server/protocols/webadmin-integration-test/src/test/resources/mailetcontainer.xml index f1ea4af..cf90f14 100644 --- a/server/protocols/webadmin-integration-test/src/test/resources/mailetcontainer.xml +++ b/server/protocols/webadmin-integration-test/src/test/resources/mailetcontainer.xml @@ -62,7 +62,13 @@ <processor>local-address-error</processor> <notice>550 - Requested action not taken: no such user here</notice> </mailet> - <mailet match="SMTPAuthSuccessful" class="RemoteDelivery"> + <mailet match="SMTPAuthSuccessful" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="SentByMailet" class="SetMailAttribute"> + <RelayAllowed>true</RelayAllowed> + </mailet> + <mailet match="HasMailAttribute=RelayAllowed" class="RemoteDelivery"> <outgoingQueue>outgoing</outgoingQueue> <delayTime>5000, 100000, 500000</delayTime> <maxRetries>25</maxRetries> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
