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 <btell...@linagora.com> 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: notifications-unsubscr...@james.apache.org For additional commands, e-mail: notifications-h...@james.apache.org