You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2018/12/11 07:01:22 UTC
[3/7] james-project git commit: JAMES-2557 SMTP session should use an
Optional as a sender
JAMES-2557 SMTP session should use an Optional<MailAddress> as a sender
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/0bdffec1
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/0bdffec1
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/0bdffec1
Branch: refs/heads/master
Commit: 0bdffec1d3bac025f8c2517609a78195b110bb7a
Parents: 5b673a0
Author: Benoit Tellier <bt...@linagora.com>
Authored: Thu Dec 6 11:30:28 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Tue Dec 11 13:59:20 2018 +0700
----------------------------------------------------------------------
...tSenderAuthIdentifyVerificationRcptHook.java | 34 +++++++++++++-------
.../protocols/smtp/core/DataCmdHandler.java | 4 +--
.../protocols/smtp/core/MailCmdHandler.java | 33 +++++++++++--------
.../protocols/smtp/core/RcptCmdHandler.java | 11 +++----
.../smtp/core/esmtp/MailSizeEsmtpExtension.java | 13 +++++---
.../fastfail/ValidSenderDomainHandlerTest.java | 9 +++---
.../org/apache/james/server/core/MailImpl.java | 8 +++--
.../DataLineJamesMessageHookHandler.java | 5 +--
.../smtpserver/SpamAssassinHandlerTest.java | 9 +++++-
.../james/smtpserver/URIRBLHandlerTest.java | 9 +++++-
10 files changed, 86 insertions(+), 49 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/0bdffec1/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java
index dea7d52..9265833 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java
@@ -31,6 +31,8 @@ import org.apache.james.protocols.smtp.hook.HookResult;
import org.apache.james.protocols.smtp.hook.HookReturnCode;
import org.apache.james.protocols.smtp.hook.RcptHook;
+import com.google.common.base.Preconditions;
+
/**
* Handler which check if the authenticated user is the same as the one used as MAIL FROM
*/
@@ -45,28 +47,36 @@ public abstract class AbstractSenderAuthIdentifyVerificationRcptHook implements
@Override
public HookResult doRcpt(SMTPSession session, MaybeSender sender, MailAddress rcpt) {
if (session.getUser() != null) {
- String authUser = (session.getUser()).toLowerCase(Locale.US);
- MailAddress senderAddress = (MailAddress) session.getAttachment(
- SMTPSession.SENDER, ProtocolSession.State.Transaction);
- String username = retrieveSender(sender, senderAddress);
+ MaybeSender senderAddress = (MaybeSender) session.getAttachment(SMTPSession.SENDER, ProtocolSession.State.Transaction);
// Check if the sender address is the same as the user which was used to authenticate.
// Its important to ignore case here to fix JAMES-837. This is save todo because if the handler is called
// the user was already authenticated
- if ((senderAddress == null)
- || (!authUser.equalsIgnoreCase(username))
- || (!isLocalDomain(senderAddress.getDomain()))) {
+ if (isAnonymous(sender)
+ || !senderMatchSessionUser(sender, session)
+ || !belongsToLocalDomain(senderAddress)) {
return INVALID_AUTH;
}
}
return HookResult.DECLINED;
}
- public String retrieveSender(MaybeSender sender, MailAddress senderAddress) {
- if (senderAddress != null && !sender.isNullSender()) {
- return getUser(senderAddress);
- }
- return null;
+ private boolean isAnonymous(MaybeSender maybeSender) {
+ return maybeSender == null || maybeSender.isNullSender();
+ }
+
+ private boolean senderMatchSessionUser(MaybeSender maybeSender, SMTPSession session) {
+ Preconditions.checkArgument(!maybeSender.isNullSender());
+
+ String authUser = session.getUser().toLowerCase(Locale.US);
+ String username = getUser(maybeSender.get());
+
+ return username.equals(authUser);
+ }
+
+ private boolean belongsToLocalDomain(MaybeSender maybeSender) {
+ Preconditions.checkArgument(!maybeSender.isNullSender());
+ return isLocalDomain(maybeSender.get().getDomain());
}
/**
http://git-wip-us.apache.org/repos/asf/james-project/blob/0bdffec1/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
index 00f1128..de3d001 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
@@ -172,8 +172,8 @@ public class DataCmdHandler implements CommandHandler<SMTPSession>, ExtensibleHa
*/
@SuppressWarnings("unchecked")
protected Response doDATA(SMTPSession session, String argument) {
- MailAddress sender = (MailAddress) session.getAttachment(SMTPSession.SENDER, ProtocolSession.State.Transaction);
- MailEnvelope env = createEnvelope(session, MaybeSender.of(sender), new ArrayList<>((Collection<MailAddress>) session.getAttachment(SMTPSession.RCPT_LIST, ProtocolSession.State.Transaction)));
+ MaybeSender sender = (MaybeSender) session.getAttachment(SMTPSession.SENDER, ProtocolSession.State.Transaction);
+ MailEnvelope env = createEnvelope(session, sender, new ArrayList<>((Collection<MailAddress>) session.getAttachment(SMTPSession.RCPT_LIST, ProtocolSession.State.Transaction)));
session.setAttachment(MAILENV, env,ProtocolSession.State.Transaction);
session.pushLineHandler(lineHandler);
http://git-wip-us.apache.org/repos/asf/james-project/blob/0bdffec1/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java
index 5a18476..4ba8374 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java
@@ -115,13 +115,12 @@ public class MailCmdHandler extends AbstractHookableCmdHandler<MailHook> {
*/
private Response doMAIL(SMTPSession session, String argument) {
StringBuilder responseBuffer = new StringBuilder();
- MailAddress sender = (MailAddress) session.getAttachment(
- SMTPSession.SENDER, State.Transaction);
+ MaybeSender sender = (MaybeSender) session.getAttachment(SMTPSession.SENDER, State.Transaction);
responseBuffer.append(
DSNStatus.getStatus(DSNStatus.SUCCESS, DSNStatus.ADDRESS_OTHER))
.append(" Sender <");
if (sender != null) {
- responseBuffer.append(sender);
+ responseBuffer.append(sender.asString());
}
responseBuffer.append("> OK");
return new SMTPResponse(SMTPRetCode.MAIL_OK, responseBuffer);
@@ -214,7 +213,7 @@ public class MailCmdHandler extends AbstractHookableCmdHandler<MailHook> {
LOGGER.info("Error parsing sender address: {}: did not start and end with < >", sender);
return SYNTAX_ERROR;
}
- MailAddress senderAddress = null;
+ MaybeSender senderAddress = MaybeSender.nullSender();
if (session.getConfiguration().useAddressBracketsEnforcement()
|| (sender.startsWith("<") && sender.endsWith(">"))) {
@@ -223,7 +222,7 @@ public class MailCmdHandler extends AbstractHookableCmdHandler<MailHook> {
}
if (sender.length() == 0) {
- // This is the <> case. Let senderAddress == null
+ // This is the <> case. Let senderAddress == MaybeSender.nullSender()
} else {
if (!sender.contains("@")) {
@@ -233,34 +232,40 @@ public class MailCmdHandler extends AbstractHookableCmdHandler<MailHook> {
}
try {
- senderAddress = new MailAddress(sender);
+ senderAddress = MaybeSender.of(new MailAddress(sender));
} catch (Exception pe) {
LOGGER.info("Error parsing sender address: {}", sender, pe);
return SYNTAX_ERROR_ADDRESS;
}
}
- if ((senderAddress == null) ||
- ((senderAddress.getLocalPart().length() == 0) && (senderAddress.getDomain().name().length() == 0))) {
- senderAddress = MailAddress.nullSender();
+ if (isNullSender(senderAddress)) {
+ senderAddress = MaybeSender.nullSender();
}
// Store the senderAddress in session map
session.setAttachment(SMTPSession.SENDER, senderAddress, State.Transaction);
}
return null;
}
-
+
+ private boolean isNullSender(MaybeSender senderAddress) {
+ if (senderAddress.isNullSender()) {
+ return true;
+ }
+ boolean hasEmptyLocalPart = senderAddress.get().getLocalPart().length() == 0;
+ boolean hasEmptyDomainPart = senderAddress.get().getDomain().name().length() == 0;
+ return hasEmptyLocalPart && hasEmptyDomainPart;
+ }
+
@Override
protected Class<MailHook> getHookInterface() {
return MailHook.class;
}
-
@Override
protected HookResult callHook(MailHook rawHook, SMTPSession session, String parameters) {
- MailAddress sender = (MailAddress) session.getAttachment(SMTPSession.SENDER, State.Transaction);
- return rawHook.doMail(session, MaybeSender.of(sender));
+ MaybeSender sender = (MaybeSender) session.getAttachment(SMTPSession.SENDER, State.Transaction);
+ return rawHook.doMail(session, sender);
}
-
@Override
public List<Class<?>> getMarkerInterfaces() {
http://git-wip-us.apache.org/repos/asf/james-project/blob/0bdffec1/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
index 2640564..c8fc16b 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
@@ -211,9 +211,9 @@ public class RcptCmdHandler extends AbstractHookableCmdHandler<RcptHook> impleme
} else if (null != recipient) {
sb.append(" [to:").append(recipient).append(']');
}
- if (null != session.getAttachment(SMTPSession.SENDER, State.Transaction)) {
- MailAddress mailAddress = (MailAddress) session.getAttachment(SMTPSession.SENDER, State.Transaction);
- sb.append(" [from:").append(mailAddress.asString()).append(']');
+ MaybeSender sender = (MaybeSender) session.getAttachment(SMTPSession.SENDER, State.Transaction);
+ if (null != sender && !sender.isNullSender()) {
+ sb.append(" [from:").append(sender.asString()).append(']');
}
return sb.toString();
}
@@ -230,9 +230,8 @@ public class RcptCmdHandler extends AbstractHookableCmdHandler<RcptHook> impleme
@Override
protected HookResult callHook(RcptHook rawHook, SMTPSession session, String parameters) {
- MailAddress sender = (MailAddress) session.getAttachment(SMTPSession.SENDER, State.Transaction);
- return rawHook.doRcpt(session,
- MaybeSender.of(sender),
+ MaybeSender sender = (MaybeSender) session.getAttachment(SMTPSession.SENDER, State.Transaction);
+ return rawHook.doRcpt(session, sender,
(MailAddress) session.getAttachment(CURRENT_RECIPIENT, State.Transaction));
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0bdffec1/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java
index 19f6012..02e63d8 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java
@@ -26,6 +26,7 @@ import java.util.List;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
+import org.apache.james.core.MaybeSender;
import org.apache.james.protocols.api.ProtocolSession.State;
import org.apache.james.protocols.api.Response;
import org.apache.james.protocols.api.handler.LineHandler;
@@ -79,8 +80,8 @@ public class MailSizeEsmtpExtension implements MailParametersHook, EhloExtension
@Override
public HookResult doMailParameter(SMTPSession session, String paramName,
String paramValue) {
- return doMailSize(session, paramValue,
- (String) session.getAttachment(SMTPSession.SENDER, State.Transaction));
+ MaybeSender tempSender = (MaybeSender) session.getAttachment(SMTPSession.SENDER, State.Transaction);
+ return doMailSize(session, paramValue, tempSender);
}
@Override
@@ -114,7 +115,7 @@ public class MailSizeEsmtpExtension implements MailParametersHook, EhloExtension
* @return true if further options should be processed, false otherwise
*/
private HookResult doMailSize(SMTPSession session,
- String mailOptionValue, String tempSender) {
+ String mailOptionValue, MaybeSender tempSender) {
int size = 0;
try {
size = Integer.parseInt(mailOptionValue);
@@ -128,7 +129,11 @@ public class MailSizeEsmtpExtension implements MailParametersHook, EhloExtension
long maxMessageSize = session.getConfiguration().getMaxMessageSize();
if ((maxMessageSize > 0) && (size > maxMessageSize)) {
// Let the client know that the size limit has been hit.
- LOGGER.error("Rejected message from {} from {} of size {} exceeding system maximum message size of {} based on SIZE option.", (tempSender != null ? tempSender : null), session.getRemoteAddress().getAddress().getHostAddress(), size, maxMessageSize);
+ LOGGER.error("Rejected message from {} to {} of size {} exceeding system maximum message size of {} based on SIZE option.",
+ tempSender,
+ session.getRemoteAddress().getAddress().getHostAddress(),
+ size,
+ maxMessageSize);
return QUOTA_EXCEEDED;
} else {
http://git-wip-us.apache.org/repos/asf/james-project/blob/0bdffec1/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java
index 3d5da19..71cd15e 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java
@@ -25,7 +25,6 @@ import java.util.HashMap;
import java.util.Map;
import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationException;
import org.apache.james.core.MailAddress;
import org.apache.james.core.MaybeSender;
import org.apache.james.protocols.api.ProtocolSession.State;
@@ -40,7 +39,7 @@ public class ValidSenderDomainHandlerTest {
return new ValidSenderDomainHandler() {
@Override
- public void init(Configuration config) throws ConfigurationException {
+ public void init(Configuration config) {
}
@@ -66,7 +65,7 @@ public class ValidSenderDomainHandlerTest {
@Override
public Map<String,Object> getState() {
- map.put(SMTPSession.SENDER, sender);
+ map.put(SMTPSession.SENDER, MaybeSender.of(sender));
return map;
}
@@ -116,8 +115,8 @@ public class ValidSenderDomainHandlerTest {
public void testInvalidSenderDomainReject() throws Exception {
ValidSenderDomainHandler handler = createHandler();
SMTPSession session = setupMockedSession(new MailAddress("invalid@invalid"));
- MailAddress sender = (MailAddress) session.getAttachment(SMTPSession.SENDER, State.Transaction);
- HookReturnCode response = handler.doMail(session, MaybeSender.of(sender)).getResult();
+ MaybeSender sender = (MaybeSender) session.getAttachment(SMTPSession.SENDER, State.Transaction);
+ HookReturnCode response = handler.doMail(session, sender).getResult();
assertThat(HookReturnCode.deny()).describedAs("Blocked cause we use reject action").isEqualTo(response);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0bdffec1/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java
----------------------------------------------------------------------
diff --git a/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java b/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java
index 9eaf52a..5720c0a 100644
--- a/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java
+++ b/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java
@@ -417,9 +417,13 @@ public class MailImpl implements Disposable, Mail {
* @param recipients the collection of recipients of this MailImpl
*/
public MailImpl(String name, MailAddress sender, Collection<MailAddress> recipients) {
+ this(name, Optional.ofNullable(sender), recipients);
+ }
+
+ public MailImpl(String name, Optional<MailAddress> sender, Collection<MailAddress> recipients) {
this();
setName(name);
- setSender(sender);
+ sender.ifPresent(this::setSender);
// Copy the recipient list
if (recipients != null) {
@@ -427,7 +431,7 @@ public class MailImpl implements Disposable, Mail {
}
}
- @SuppressWarnings({"unchecked", "deprecation"})
+ @SuppressWarnings({"unchecked", "deprecated"})
private MailImpl(Mail mail, String newName) throws MessagingException {
this(newName, mail.getSender(), mail.getRecipients(), mail.getMessage());
setRemoteHost(mail.getRemoteHost());
http://git-wip-us.apache.org/repos/asf/james-project/blob/0bdffec1/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java
index b90d603..de9a3ca 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java
@@ -25,6 +25,7 @@ import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.util.LinkedList;
import java.util.List;
+import java.util.Optional;
import javax.mail.MessagingException;
@@ -99,9 +100,9 @@ public class DataLineJamesMessageHookHandler implements DataLineFilter, Extensib
@SuppressWarnings("unchecked")
List<MailAddress> recipientCollection = (List<MailAddress>) session.getAttachment(SMTPSession.RCPT_LIST, State.Transaction);
- MailAddress mailAddress = (MailAddress) session.getAttachment(SMTPSession.SENDER, State.Transaction);
+ MaybeSender sender = (MaybeSender) session.getAttachment(SMTPSession.SENDER, State.Transaction);
- MailImpl mail = new MailImpl(MailImpl.getId(), mailAddress, recipientCollection);
+ MailImpl mail = new MailImpl(MailImpl.getId(), Optional.ofNullable(sender).flatMap(MaybeSender::asOptional), recipientCollection);
// store mail in the session so we can be sure it get disposed later
session.setAttachment(SMTPConstants.MAIL, mail, State.Transaction);
http://git-wip-us.apache.org/repos/asf/james-project/blob/0bdffec1/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SpamAssassinHandlerTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SpamAssassinHandlerTest.java b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SpamAssassinHandlerTest.java
index eb56867..db8b783 100644
--- a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SpamAssassinHandlerTest.java
+++ b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SpamAssassinHandlerTest.java
@@ -24,8 +24,11 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.HashMap;
import javax.mail.MessagingException;
+import javax.mail.internet.AddressException;
import javax.mail.internet.MimeMessage;
+import org.apache.james.core.MailAddress;
+import org.apache.james.core.MaybeSender;
import org.apache.james.core.builder.MimeMessageBuilder;
import org.apache.james.metrics.api.NoopMetricFactory;
import org.apache.james.protocols.smtp.SMTPSession;
@@ -72,7 +75,11 @@ public class SpamAssassinHandlerTest {
@Override
public Object getAttachment(String key, State state) {
- sstate.put(SMTPSession.SENDER, "sender@james.apache.org");
+ try {
+ sstate.put(SMTPSession.SENDER, MaybeSender.of(new MailAddress("sender@james.apache.org")));
+ } catch (AddressException e) {
+ throw new RuntimeException(e);
+ }
if (state == State.Connection) {
return connectionState.get(key);
} else {
http://git-wip-us.apache.org/repos/asf/james-project/blob/0bdffec1/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/URIRBLHandlerTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/URIRBLHandlerTest.java b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/URIRBLHandlerTest.java
index 93edf95..0a632e8 100644
--- a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/URIRBLHandlerTest.java
+++ b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/URIRBLHandlerTest.java
@@ -29,8 +29,11 @@ import java.util.HashMap;
import java.util.List;
import javax.mail.MessagingException;
+import javax.mail.internet.AddressException;
import javax.mail.internet.MimeMessage;
+import org.apache.james.core.MailAddress;
+import org.apache.james.core.MaybeSender;
import org.apache.james.core.builder.MimeMessageBuilder;
import org.apache.james.dnsservice.api.DNSService;
import org.apache.james.dnsservice.api.mock.MockDNSService;
@@ -78,7 +81,11 @@ public class URIRBLHandlerTest {
@Override
public Object getAttachment(String key, State state) {
- sstate.put(SMTPSession.SENDER, "sender@james.apache.org");
+ try {
+ sstate.put(SMTPSession.SENDER, MaybeSender.of(new MailAddress("sender@james.apache.org")));
+ } catch (AddressException e) {
+ throw new RuntimeException(e);
+ }
if (state == State.Connection) {
return connectionState.get(key);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org