You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2022/10/03 01:34:10 UTC
[james-project] 04/08: JAMES-3820 remove RcptHook from SPFHandler because handling SPF happens on MAIL FROM and not RCPT TO
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
commit d9ec6995f149b97428e765f45b218b9dbee527c6
Author: ouvtam <ou...@8n4.pw>
AuthorDate: Sun Sep 25 20:00:59 2022 +0200
JAMES-3820 remove RcptHook from SPFHandler because handling SPF happens on MAIL FROM and not RCPT TO
---
.../james/smtpserver/fastfail/SPFHandler.java | 12 ++++------
.../apache/james/smtpserver/SPFHandlerTest.java | 28 ++++------------------
2 files changed, 9 insertions(+), 31 deletions(-)
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/SPFHandler.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/SPFHandler.java
index 96191d2f57..0596321564 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/SPFHandler.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/SPFHandler.java
@@ -49,7 +49,7 @@ import org.apache.mailet.Mail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class SPFHandler implements JamesMessageHook, MailHook, RcptHook, ProtocolHandler {
+public class SPFHandler implements JamesMessageHook, MailHook, ProtocolHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(SPFHandler.class);
@@ -155,8 +155,10 @@ public class SPFHandler implements JamesMessageHook, MailHook, RcptHook, Protoco
}
@Override
- public HookResult doRcpt(SMTPSession session, MaybeSender sender, MailAddress rcpt) {
+ public HookResult doMail(SMTPSession session, MaybeSender sender) {
if (!session.isRelayingAllowed()) {
+ doSPFCheck(session, sender);
+
// Check if session is blocklisted
if (session.getAttachment(SPF_BLOCKLISTED, State.Transaction).isPresent()) {
@@ -175,12 +177,6 @@ public class SPFHandler implements JamesMessageHook, MailHook, RcptHook, Protoco
return HookResult.DECLINED;
}
- @Override
- public HookResult doMail(SMTPSession session, MaybeSender sender) {
- doSPFCheck(session, sender);
- return HookResult.DECLINED;
- }
-
/**
* Adapts service log.
*/
diff --git a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SPFHandlerTest.java b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SPFHandlerTest.java
index 6cd0ecbe97..c949270966 100644
--- a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SPFHandlerTest.java
+++ b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SPFHandlerTest.java
@@ -183,47 +183,39 @@ public class SPFHandlerTest {
@Test
public void testSPFpass() throws Exception {
MaybeSender sender = MaybeSender.of(new MailAddress("test@spf1.james.apache.org"));
- MailAddress rcpt = new MailAddress("test@localhost");
setupMockedSMTPSession("192.168.100.1", "spf1.james.apache.org");
SPFHandler spf = new SPFHandler();
spf.setDNSService(mockedDnsService);
assertThat(spf.doMail(mockedSMTPSession, sender).getResult()).describedAs("declined").isEqualTo(HookReturnCode.declined());
- assertThat(spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult()).describedAs("declined").isEqualTo(HookReturnCode.declined());
}
@Test
public void testSPFfail() throws Exception {
MaybeSender sender = MaybeSender.of(new MailAddress("test@spf2.james.apache.org"));
- MailAddress rcpt = new MailAddress("test@localhost");
setupMockedSMTPSession("192.168.100.1", "spf2.james.apache.org");
SPFHandler spf = new SPFHandler();
spf.setDNSService(mockedDnsService);
- assertThat(spf.doMail(mockedSMTPSession, sender).getResult()).describedAs("declined").isEqualTo(HookReturnCode.declined());
- assertThat(spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult()).describedAs("fail").isEqualTo(HookReturnCode.deny());
+ assertThat(spf.doMail(mockedSMTPSession, sender).getResult()).describedAs("fail").isEqualTo(HookReturnCode.deny());
}
@Test
public void testSPFsoftFail() throws Exception {
MaybeSender sender = MaybeSender.of(new MailAddress("test@spf3.james.apache.org"));
- MailAddress rcpt = new MailAddress("test@localhost");
setupMockedSMTPSession("192.168.100.1", "spf3.james.apache.org");
SPFHandler spf = new SPFHandler();
spf.setDNSService(mockedDnsService);
- assertThat(spf.doMail(mockedSMTPSession, sender).getResult()).describedAs("declined").isEqualTo(HookReturnCode.declined());
- assertThat(spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult()).describedAs("softfail declined").isEqualTo(HookReturnCode.declined());
+ assertThat(spf.doMail(mockedSMTPSession, sender).getResult()).describedAs("softfail declined").isEqualTo(HookReturnCode.declined());
}
@Test
public void testSPFsoftFailRejectEnabled() throws Exception {
MaybeSender sender = MaybeSender.of(new MailAddress("test@spf3.james.apache.org"));
- MailAddress rcpt = new MailAddress("test@localhost");
-
setupMockedSMTPSession("192.168.100.1", "spf3.james.apache.org");
SPFHandler spf = new SPFHandler();
@@ -231,15 +223,12 @@ public class SPFHandlerTest {
spf.setBlockSoftFail(true);
- assertThat(spf.doMail(mockedSMTPSession, sender).getResult()).describedAs("declined").isEqualTo(HookReturnCode.declined());
- assertThat(spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult()).describedAs("softfail reject").isEqualTo(HookReturnCode.deny());
+ assertThat(spf.doMail(mockedSMTPSession, sender).getResult()).describedAs("softfail reject").isEqualTo(HookReturnCode.deny());
}
@Test
public void testSPFpermError() throws Exception {
MaybeSender sender = MaybeSender.of(new MailAddress("test@spf4.james.apache.org"));
- MailAddress rcpt = new MailAddress("test@localhost");
-
setupMockedSMTPSession("192.168.100.1", "spf4.james.apache.org");
SPFHandler spf = new SPFHandler();
@@ -247,14 +236,12 @@ public class SPFHandlerTest {
spf.setBlockSoftFail(true);
- assertThat(spf.doMail(mockedSMTPSession, sender).getResult()).describedAs("declined").isEqualTo(HookReturnCode.declined());
- assertThat(spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult()).describedAs("permerror reject").isEqualTo(HookReturnCode.deny());
+ assertThat(spf.doMail(mockedSMTPSession, sender).getResult()).describedAs("permerror reject").isEqualTo(HookReturnCode.deny());
}
@Test
public void testSPFtempError() throws Exception {
MaybeSender sender = MaybeSender.of(new MailAddress("test@spf5.james.apache.org"));
- MailAddress rcpt = new MailAddress("test@localhost");
setupMockedSMTPSession("192.168.100.1", "spf5.james.apache.org");
@@ -262,14 +249,12 @@ public class SPFHandlerTest {
spf.setDNSService(mockedDnsService);
- assertThat(spf.doMail(mockedSMTPSession, sender).getResult()).describedAs("declined").isEqualTo(HookReturnCode.declined());
- assertThat(spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult()).describedAs("temperror denysoft").isEqualTo(HookReturnCode.denySoft());
+ assertThat(spf.doMail(mockedSMTPSession, sender).getResult()).describedAs("temperror denysoft").isEqualTo(HookReturnCode.denySoft());
}
@Test
public void testSPFNoRecord() throws Exception {
MaybeSender sender = MaybeSender.of(new MailAddress("test@spf6.james.apache.org"));
- MailAddress rcpt = new MailAddress("test@localhost");
setupMockedSMTPSession("192.168.100.1", "spf6.james.apache.org");
SPFHandler spf = new SPFHandler();
@@ -277,13 +262,11 @@ public class SPFHandlerTest {
spf.setDNSService(mockedDnsService);
assertThat(spf.doMail(mockedSMTPSession, sender).getResult()).describedAs("declined").isEqualTo(HookReturnCode.declined());
- assertThat(spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult()).describedAs("declined").isEqualTo(HookReturnCode.declined());
}
@Test
public void testSPFpermErrorRejectDisabled() throws Exception {
MaybeSender sender = MaybeSender.of(new MailAddress("test@spf4.james.apache.org"));
- MailAddress rcpt = new MailAddress("test@localhost");
setupMockedSMTPSession("192.168.100.1", "spf4.james.apache.org");
SPFHandler spf = new SPFHandler();
@@ -292,6 +275,5 @@ public class SPFHandlerTest {
spf.setBlockPermError(false);
assertThat(spf.doMail(mockedSMTPSession, sender).getResult()).describedAs("declined").isEqualTo(HookReturnCode.declined());
- assertThat(spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult()).describedAs("declined").isEqualTo(HookReturnCode.declined());
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org