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 950134a56f [FIX] AbstractValidRcptHandler fix error handling on
invalid username (#2122)
950134a56f is described below
commit 950134a56f4a07c017a2ca709ee9705f4eb7db5b
Author: Benoit TELLIER <[email protected]>
AuthorDate: Fri Mar 15 09:01:08 2024 +0100
[FIX] AbstractValidRcptHandler fix error handling on invalid username
(#2122)
Syntactically valid email address but invalid username.
The best is to advertise "no such person here".
---
.../protocols/smtp/core/fastfail/AbstractValidRcptHandler.java | 8 ++++----
.../java/org/apache/james/smtpserver/ValidRcptHandlerTest.java | 8 ++++++++
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git
a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java
b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java
index 8f9a043372..7709157dc9 100644
---
a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java
+++
b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java
@@ -47,12 +47,12 @@ public abstract class AbstractValidRcptHandler implements
RcptHook {
return reject(rcpt);
}
return HookResult.DECLINED;
- } catch (IllegalAccessException e) {
- LOGGER.warn("Encounter an error upon RCPT validation ({}),
deny-soft", rcpt.asString());
+ } catch (IllegalArgumentException e) {
+ LOGGER.info("Encounter an error upon RCPT validation ({}), deny",
rcpt.asString());
return HookResult.builder()
.hookReturnCode(HookReturnCode.deny())
- .smtpReturnCode(SMTPRetCode.SYNTAX_ERROR_ARGUMENTS)
- .smtpDescription(DSNStatus.getStatus(DSNStatus.PERMANENT,
DSNStatus.DELIVERY_SYNTAX) + " Unexpected error for " + rcpt.asString())
+ .smtpReturnCode(SMTPRetCode.MAILBOX_PERM_UNAVAILABLE)
+ .smtpDescription(DSNStatus.getStatus(DSNStatus.PERMANENT,
DSNStatus.ADDRESS_MAILBOX) + " Unknown user: " + rcpt.asString())
.build();
} catch (Exception e) {
LOGGER.error("Encounter an error upon RCPT validation ({}),
deny-soft", rcpt.asString(), e);
diff --git
a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java
b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java
index 378650caef..7536077d74 100644
---
a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java
+++
b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java
@@ -236,4 +236,12 @@ class ValidRcptHandlerTest {
assertThat(rCode).isEqualTo(HookReturnCode.denySoft());
}
+ @Test
+ void doRcptShouldReturnDeclineWhenInvalidUsername() throws Exception {
+ SMTPSession session = setupMockedSMTPSession(!RELAYING_ALLOWED);
+
+ HookReturnCode rCode = handler.doRcpt(session, MAYBE_SENDER, new
MailAddress("\"abc@\"@localhost")).getResult();
+
+ assertThat(rCode).isEqualTo(HookReturnCode.deny());
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]